Custom Contact Forms - Version 7.2

Version Description

  • Conditional asset loading
Download this release

Release Info

Developer tlovett1
Plugin Icon 128x128 Custom Contact Forms
Version 7.2
Comparing to
See all releases

Code changes from version 7.1 to 7.2

build/css/settings.css ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ccf-asset-restrictions .add,
2
+ .ccf-asset-restrictions .delete {
3
+ font-weight: bold;
4
+ cursor: pointer;
5
+ vertical-align: middle;
6
+ font-size: 200%; }
7
+
8
+ .ccf-asset-restrictions input,
9
+ .ccf-asset-restrictions select {
10
+ margin-right: 1em; }
11
+
12
+ .ccf-hide-field {
13
+ display: none; }
14
+
15
+ /*# sourceMappingURL=settings.css.map */
build/css/settings.css.map ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ {
2
+ "version": 3,
3
+ "mappings": "AAAA;+BAEA;EACC,WAAW,EAAE,IAAI;EACjB,MAAM,EAAE,OAAO;EACf,cAAc,EAAE,MAAM;EACtB,SAAS,EAAE,IAAI;;AAGhB;8BAC+B;EAC9B,YAAY,EAAE,GAAG;;AAGlB,eAAgB;EACf,OAAO,EAAE,IAAI",
4
+ "sources": ["../../scss/settings.scss"],
5
+ "names": [],
6
+ "file": "settings.css"
7
+ }
build/css/settings.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .ccf-asset-restrictions .add,.ccf-asset-restrictions .delete{font-weight:700;cursor:pointer;vertical-align:middle;font-size:200%}.ccf-asset-restrictions input,.ccf-asset-restrictions select{margin-right:1em}.ccf-hide-field{display:none}
build/js/settings.min.js ADDED
@@ -0,0 +1 @@
 
1
+ (function(e){var t=e(document.querySelectorAll(".ccf-asset-restrictions")),i=document.querySelectorAll(".ccf-asset-loading-restrictions-wrap")[0],l=e(document.querySelectorAll(".ccf-asset-loading-restriction-enabled")),s=t.find(".asset").length;l.on("change",function(e){i.className="0"===e.target.value?"ccf-asset-loading-restrictions-wrap ccf-hide-field":"ccf-asset-loading-restrictions-wrap"}),t.on("click",".add",function(){var i=event.target.parentNode.cloneNode(!0),l=i.querySelectorAll(".asset-location")[0],r=i.querySelectorAll(".restriction-type")[0];l.value="",r.value="url",l.name="ccf_settings[asset_loading_restrictions]["+s+"][location]",r.name="ccf_settings[asset_loading_restrictions]["+s+"][type]",s++,t.append(e(i))}),t.on("click",".delete",function(e){var t=document.querySelectorAll(".ccf-asset-restrictions .asset");2>t.length?(e.target.parentNode.querySelectorAll(".asset-location")[0].value="",e.target.parentNode.querySelectorAll(".restriction-type")[0].value="url"):e.target.parentNode.parentNode.removeChild(e.target.parentNode)})})(jQuery);
classes/class-ccf-form-manager.php CHANGED
@@ -1651,8 +1651,6 @@ class CCF_Form_Manager {
1651
  global $pagenow;
1652
 
1653
  if ( 'post.php' == $pagenow || 'post-new.php' == $pagenow ) {
1654
- $version = '7.0.2';
1655
-
1656
  if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
1657
  $js_manager_path = '/build/js/form-manager.js';
1658
  $js_mce_path = '/js/form-mce.js';
@@ -1688,13 +1686,13 @@ class CCF_Form_Manager {
1688
  'recaptcha' => __( 'reCAPTCHA', 'custom-contact-forms' ),
1689
  ));
1690
 
1691
- wp_register_script( 'moment', plugins_url( '/bower_components/moment/moment.js', dirname( __FILE__ ) ), array(), $version );
1692
 
1693
  if ( ! wp_script_is( 'wp-api', 'registered' ) ) {
1694
- wp_register_script( 'wp-api', plugins_url( '/vendor/wp-api/wp-api/wp-api.js', dirname( __FILE__ ) ), array(), $version );
1695
  }
1696
 
1697
- wp_enqueue_script( 'ccf-form-manager', plugins_url( $js_manager_path, dirname( __FILE__ ) ), array( 'json2', 'jquery', 'jquery-ui-core', 'jquery-ui-datepicker', 'underscore', 'backbone', 'jquery-ui-core', 'jquery-ui-draggable', 'jquery-ui-sortable', 'jquery-ui-droppable', 'wp-api', 'moment' ), $version, true );
1698
  wp_localize_script( 'ccf-form-manager', 'ccfSettings', array(
1699
  'apiRoot' => site_url( 'wp-json' ),
1700
  'nonce' => wp_create_nonce( 'ccf_nonce' ),
@@ -1720,10 +1718,10 @@ class CCF_Form_Manager {
1720
  'skipFields' => apply_filters( 'ccf_no_submission_display_fields', array( 'html', 'section-header', 'recaptcha' ) ),
1721
  ) );
1722
 
1723
- wp_enqueue_style( 'ccf-form-manager', plugins_url( $css_path, dirname( __FILE__ ) ), array(), $version );
1724
 
1725
  if ( apply_filters( 'ccf_enable_tinymce_previews', true ) && 'ccf_form' !== get_post_type() ) {
1726
- wp_enqueue_script( 'ccf-form-mce', plugins_url( $js_mce_path, dirname( __FILE__ ) ), array( 'mce-view', 'jquery', 'ccf-form-manager' ), $version, true );
1727
  }
1728
  }
1729
  }
1651
  global $pagenow;
1652
 
1653
  if ( 'post.php' == $pagenow || 'post-new.php' == $pagenow ) {
 
 
1654
  if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
1655
  $js_manager_path = '/build/js/form-manager.js';
1656
  $js_mce_path = '/js/form-mce.js';
1686
  'recaptcha' => __( 'reCAPTCHA', 'custom-contact-forms' ),
1687
  ));
1688
 
1689
+ wp_register_script( 'moment', plugins_url( '/bower_components/moment/moment.js', dirname( __FILE__ ) ), array(), CCF_VERSION );
1690
 
1691
  if ( ! wp_script_is( 'wp-api', 'registered' ) ) {
1692
+ wp_register_script( 'wp-api', plugins_url( '/vendor/wp-api/wp-api/wp-api.js', dirname( __FILE__ ) ), array(), CCF_VERSION );
1693
  }
1694
 
1695
+ wp_enqueue_script( 'ccf-form-manager', plugins_url( $js_manager_path, dirname( __FILE__ ) ), array( 'json2', 'jquery', 'jquery-ui-core', 'jquery-ui-datepicker', 'underscore', 'backbone', 'jquery-ui-core', 'jquery-ui-draggable', 'jquery-ui-sortable', 'jquery-ui-droppable', 'wp-api', 'moment' ), CCF_VERSION, true );
1696
  wp_localize_script( 'ccf-form-manager', 'ccfSettings', array(
1697
  'apiRoot' => site_url( 'wp-json' ),
1698
  'nonce' => wp_create_nonce( 'ccf_nonce' ),
1718
  'skipFields' => apply_filters( 'ccf_no_submission_display_fields', array( 'html', 'section-header', 'recaptcha' ) ),
1719
  ) );
1720
 
1721
+ wp_enqueue_style( 'ccf-form-manager', plugins_url( $css_path, dirname( __FILE__ ) ), array(), CCF_VERSION );
1722
 
1723
  if ( apply_filters( 'ccf_enable_tinymce_previews', true ) && 'ccf_form' !== get_post_type() ) {
1724
+ wp_enqueue_script( 'ccf-form-mce', plugins_url( $js_mce_path, dirname( __FILE__ ) ), array( 'mce-view', 'jquery', 'ccf-form-manager' ), CCF_VERSION, true );
1725
  }
1726
  }
1727
  }
classes/class-ccf-form-renderer.php CHANGED
@@ -9,6 +9,13 @@ class CCF_Form_Renderer {
9
  */
10
  public function __construct() {}
11
 
 
 
 
 
 
 
 
12
  /**
13
  * Setup shortcode
14
  *
@@ -25,10 +32,53 @@ class CCF_Form_Renderer {
25
  * @since 6.0
26
  */
27
  public function action_wp_enqueue_scripts() {
28
- /**
29
- * Todo: We need away to enqueue all this stuff conditionally. The best idea I
30
- * have is creating a settings page to enter URL's where forms will be added.
31
- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
 
33
  if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
34
  $css_form_path = '/build/css/form.css';
@@ -39,10 +89,10 @@ class CCF_Form_Renderer {
39
  }
40
 
41
  wp_enqueue_style('ccf-jquery-ui', '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css');
42
- wp_enqueue_script( 'ccf-google-recaptcha', '//www.google.com/recaptcha/api.js?ver=2&onload=ccfRecaptchaOnload&render=explicit', array(), '1.0', true );
43
- wp_enqueue_style( 'ccf-form', plugins_url( $css_form_path, dirname( __FILE__ ) ) );
44
 
45
- wp_enqueue_script( 'ccf-form', plugins_url( $js_path, dirname( __FILE__ ) ), array( 'jquery-ui-datepicker', 'underscore' ), '1.1', false );
46
 
47
  $localized = array(
48
  'ajaxurl' => esc_url_raw( admin_url( 'admin-ajax.php' ) ),
@@ -84,7 +134,11 @@ class CCF_Form_Renderer {
84
  return '';
85
  }
86
 
87
- return $this->get_rendered_form( $atts['id'] );
 
 
 
 
88
  }
89
 
90
  /**
9
  */
10
  public function __construct() {}
11
 
12
+ /**
13
+ * Remember if we arent showing assets
14
+ *
15
+ * @since 7.2
16
+ */
17
+ public $no_assets = false;
18
+
19
  /**
20
  * Setup shortcode
21
  *
32
  * @since 6.0
33
  */
34
  public function action_wp_enqueue_scripts() {
35
+ $option = get_option( 'ccf_settings' );
36
+
37
+ // Conditionally load assets
38
+ if ( ! empty( $option ) && ! empty( $option['asset_loading_restriction_enabled'] ) ) {
39
+ if ( empty( $option['asset_loading_restrictions'] ) ) {
40
+ return;
41
+ }
42
+
43
+ $post_id = null;
44
+ $current_path = $_SERVER['REQUEST_URI'];
45
+
46
+ $queried_object = get_queried_object();
47
+ if ( ! empty( $queried_object->ID ) ) {
48
+ $post_id = $queried_object->ID;
49
+ }
50
+
51
+ $match = false;
52
+
53
+ foreach ( $option['asset_loading_restrictions'] as $asset ) {
54
+ if ( ! empty( $asset['location'] ) ) {
55
+ if ( 'post_id' === $asset['type'] ) {
56
+ if ( (int) $asset['location'] === $post_id ) {
57
+ $match = true;
58
+ break;
59
+ }
60
+ } else {
61
+ $asset_url_parts = parse_url( $asset['location'] );
62
+ if ( ! empty( $asset_url_parts['path'] ) ) {
63
+ $asset_path = trailingslashit( $asset_url_parts['path'] );
64
+ if ( ! preg_match( '#^/#', $asset_path ) ) {
65
+ $asset_path = '/' . $asset_path;
66
+ }
67
+
68
+ if ( $asset_path === $current_path ) {
69
+ $match = true;
70
+ break;
71
+ }
72
+ }
73
+ }
74
+ }
75
+ }
76
+
77
+ if ( ! $match ) {
78
+ $this->no_assets = true;
79
+ return;
80
+ }
81
+ }
82
 
83
  if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
84
  $css_form_path = '/build/css/form.css';
89
  }
90
 
91
  wp_enqueue_style('ccf-jquery-ui', '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css');
92
+ wp_enqueue_script( 'ccf-google-recaptcha', '//www.google.com/recaptcha/api.js?ver=2&onload=ccfRecaptchaOnload&render=explicit', array(), CCF_VERSION, true );
93
+ wp_enqueue_style( 'ccf-form', plugins_url( $css_form_path, dirname( __FILE__ ) ), array(), CCF_VERSION );
94
 
95
+ wp_enqueue_script( 'ccf-form', plugins_url( $js_path, dirname( __FILE__ ) ), array( 'jquery-ui-datepicker', 'underscore' ), CCF_VERSION, false );
96
 
97
  $localized = array(
98
  'ajaxurl' => esc_url_raw( admin_url( 'admin-ajax.php' ) ),
134
  return '';
135
  }
136
 
137
+ if ( ! $this->no_assets ) {
138
+ return $this->get_rendered_form( $atts['id'] );
139
+ }
140
+
141
+ return '';
142
  }
143
 
144
  /**
classes/class-ccf-settings.php ADDED
@@ -0,0 +1,188 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class CCF_Settings {
4
+
5
+ /**
6
+ * Placeholder method
7
+ *
8
+ * @since 7.2
9
+ */
10
+ public function __construct() {}
11
+
12
+ /**
13
+ * Setup general plugin stuff. Load API
14
+ *
15
+ * @since 7.2
16
+ */
17
+ public function setup() {
18
+ add_action( 'admin_menu', array( $this, 'register_menu_page' ) );
19
+ add_action( 'admin_init', array( $this, 'register_settings' ) );
20
+ add_action( 'admin_enqueue_scripts', array( $this, 'action_admin_enqueue_scripts' ) );
21
+ }
22
+
23
+ /**
24
+ * Setup JS and CSS
25
+ *
26
+ * @since 7.2
27
+ */
28
+ public function action_admin_enqueue_scripts() {
29
+ if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
30
+ $css_path = '/build/css/settings.css';
31
+ $js_path = '/js/settings.js';
32
+ } else {
33
+ $css_path = '/build/css/settings.min.css';
34
+ $js_path = '/build/js/settings.min.js';
35
+ }
36
+ wp_enqueue_style( 'ccf-settings', plugins_url( $css_path, dirname( __FILE__ ) ), array(), CCF_VERSION );
37
+ wp_enqueue_script( 'ccf-settings', plugins_url( $js_path, dirname( __FILE__ ) ), array( 'jquery' ), CCF_VERSION, true );
38
+ }
39
+
40
+ /**
41
+ * Sanitize settings
42
+ *
43
+ * @since 7.2
44
+ * @return array
45
+ */
46
+ public function sanitize( $option ) {
47
+ $clean_option = array();
48
+
49
+ $clean_option['asset_loading_restriction_enabled'] = ( '1' === $option['asset_loading_restriction_enabled'] ) ? true : false;
50
+
51
+ foreach ( $option['asset_loading_restrictions'] as $asset ) {
52
+ $clean_option['asset_loading_restrictions'][] = array(
53
+ 'type' => sanitize_text_field( $asset['type'] ),
54
+ 'location' => sanitize_text_field( $asset['location'] ),
55
+ );
56
+ }
57
+
58
+ return $clean_option;
59
+ }
60
+
61
+ /**
62
+ * Register settings and settings fields
63
+ *
64
+ * @since 7.2
65
+ */
66
+ public function register_settings() {
67
+ register_setting( 'ccf-settings', 'ccf_settings', array( $this, 'sanitize' ) );
68
+
69
+ $option = get_option( 'ccf_settings' );
70
+ $restriction_classes = 'ccf-asset-loading-restrictions-wrap ccf-hide-field';
71
+ if ( ! empty( $option['asset_loading_restriction_enabled'] ) ) {
72
+ $restriction_classes = 'ccf-asset-loading-restrictions-wrap';
73
+ }
74
+
75
+
76
+ add_settings_section( 'asset-loading-restriction', 'Asset Loading Restriction', array( $this, 'asset_loading_restriction_summary' ), 'custom-contact-forms' );
77
+ add_settings_field( 'asset-loading-restriction-enable', esc_html__( 'Enable Asset Loading Restrictions', 'custom-contact-forms' ), array( $this, 'asset_loading_restriction_enable' ), 'custom-contact-forms', 'asset-loading-restriction' );
78
+ add_settings_field( 'asset-loading-restriction-choose', esc_html__( 'Restrict Asset Loading To', 'custom-contact-forms' ), array( $this, 'asset_loading_restriction_choose' ), 'custom-contact-forms', 'asset-loading-restriction', array( 'class' => $restriction_classes ) );
79
+ }
80
+
81
+ /**
82
+ * Output asset loading summary
83
+ *
84
+ * @since 7.2
85
+ */
86
+ public function asset_loading_restriction_summary() {
87
+ ?>
88
+ <p>
89
+ <?php esc_html_e( "By default, Custom Contact Forms loads all it's assets (JavaScript, CSS, etc.) on every page of your site. The reason for this is that there is no where to determine where you use forms. Asset Page Control allows you to specify the URLs or post IDs where your CCF forms will exist. By specifying where your forms will live, assets will not be unnecessarily loaded on every page of your site.", 'custom-contact-forms' ); ?>
90
+ </p>
91
+ <?php
92
+ }
93
+
94
+ /**
95
+ * Output asset loading enabler field
96
+ *
97
+ * @since 7.2
98
+ */
99
+ public function asset_loading_restriction_enable() {
100
+ $option = get_option( 'ccf_settings' );
101
+
102
+ ?>
103
+ <select class="ccf-asset-loading-restriction-enabled" name="ccf_settings[asset_loading_restriction_enabled]">
104
+ <option value="0"><?php esc_html_e( 'No', 'custom-contact-forms' ); ?></option>
105
+ <option <?php selected( $option['asset_loading_restriction_enabled'], true ); ?> value="1"><?php esc_html_e( 'Yes', 'custom-contact-forms' ); ?></option>
106
+ </select>
107
+ <?php
108
+ }
109
+
110
+ /**
111
+ * Output asset restriction chooser
112
+ *
113
+ * @since 7.2
114
+ */
115
+ public function asset_loading_restriction_choose() {
116
+ $option = get_option( 'ccf_settings' );
117
+
118
+ ?>
119
+ <div class="ccf-asset-restrictions">
120
+ <?php if ( ! empty( $option['asset_loading_restrictions'] ) ) : $i = 0; foreach ( $option['asset_loading_restrictions'] as $asset ) : ?>
121
+ <div class="asset">
122
+ <input value="<?php echo esc_attr( $asset['location'] ); ?>" name="ccf_settings[asset_loading_restrictions][<?php echo $i; ?>][location]" class="asset-location" type="text" placeholder="<?php esc_attr_e( 'URL or post ID', 'custom-contact-forms' ); ?>">
123
+ <?php esc_html_e( 'Restriction type:', 'custom-contact-forms' ); ?>
124
+ <select class="restriction-type" name="ccf_settings[asset_loading_restrictions][<?php echo $i; ?>][type]">
125
+ <option value="url"><?php esc_html_e( 'URL', 'custom-contact-forms' ); ?></option>
126
+ <option <?php selected( $asset['type'], 'post_id' ); ?> value="post_id"><?php esc_html_e( 'Post ID', 'custom-contact-forms' ); ?></option>
127
+ </select>
128
+
129
+ <span class="add">+</span>
130
+ <span class="delete">&times;</span>
131
+ </div>
132
+ <?php $i++; endforeach; else : ?>
133
+ <div class="asset">
134
+ <input name="ccf_settings[asset_loading_restrictions][0][location]" class="asset-location" type="text" placeholder="<?php esc_attr_e( 'URL or post ID', 'custom-contact-forms' ); ?>">
135
+ <?php esc_html_e( 'Restriction type:', 'custom-contact-forms' ); ?>
136
+ <select class="restriction-type" name="ccf_settings[asset_loading_restrictions][0][type]">
137
+ <option value="url"><?php esc_html_e( 'URL', 'custom-contact-forms' ); ?></option>
138
+ <option value="post_id"><?php esc_html_e( 'Post ID', 'custom-contact-forms' ); ?></option>
139
+ </select>
140
+
141
+ <span class="add">+</span>
142
+ <span class="delete">&times;</span>
143
+ </div>
144
+ <?php endif; ?>
145
+ </div>
146
+ <?php
147
+ }
148
+
149
+ public function register_menu_page() {
150
+ add_submenu_page( 'edit.php?post_type=ccf_form', esc_html__( 'Custom Contact Forms Settings', 'custom-contact-forms' ), esc_html__( 'Settings', 'custom-contact-forms' ), 'manage_options', 'custom-contact-forms', array( $this, 'screen_options' ) );
151
+ }
152
+
153
+ /**
154
+ * Output options page wrap
155
+ *
156
+ * @since 7.2
157
+ */
158
+ public function screen_options() {
159
+ ?>
160
+ <div class="wrap">
161
+ <h1><?php esc_html_e( 'Custom Contact Forms Settings', 'custom-contact-forms' ); ?></h1>
162
+
163
+ <form action="options.php" method="post">
164
+ <?php settings_fields( 'ccf-settings' ); ?>
165
+ <?php do_settings_sections( 'custom-contact-forms' ); ?>
166
+ <?php submit_button(); ?>
167
+ </form>
168
+ </div>
169
+ <?php
170
+ }
171
+
172
+ /**
173
+ * Return singleton instance of class
174
+ *
175
+ * @since 7.2
176
+ * @return object
177
+ */
178
+ public static function factory() {
179
+ static $instance;
180
+
181
+ if ( ! $instance ) {
182
+ $instance = new self();
183
+ $instance->setup();
184
+ }
185
+
186
+ return $instance;
187
+ }
188
+ }
custom-contact-forms.php CHANGED
@@ -4,7 +4,7 @@
4
  * Plugin URI: http://www.taylorlovett.com
5
  * Description: Build beautiful custom forms the WordPress way. View live previews of your forms while you build them.
6
  * Author: Taylor Lovett
7
- * Version: 7.1
8
  * Author URI: http://www.taylorlovett.com
9
  */
10
 
@@ -12,6 +12,8 @@
12
  * Include plugin reqs
13
  */
14
 
 
 
15
  require_once( dirname( __FILE__ ) . '/classes/class-ccf-constants.php' );
16
  require_once( dirname( __FILE__ ) . '/classes/class-ccf-custom-contact-forms.php' );
17
  require_once( dirname( __FILE__ ) . '/classes/class-ccf-form-cpt.php' );
@@ -27,6 +29,7 @@ require_once( dirname( __FILE__ ) . '/classes/class-ccf-upgrader.php' );
27
  require_once( dirname( __FILE__ ) . '/classes/class-ccf-widget.php' );
28
  require_once( dirname( __FILE__ ) . '/classes/class-ccf-export.php' );
29
  require_once( dirname( __FILE__ ) . '/classes/class-ccf-ads.php' );
 
30
 
31
  CCF_Custom_Contact_Forms::factory();
32
  CCF_Constants::factory();
@@ -41,6 +44,7 @@ CCF_Form_Handler::factory();
41
  CCF_Upgrader::factory();
42
  CCF_Export::factory();
43
  CCF_Ads::factory();
 
44
 
45
  /**
46
  * Setup the widget
4
  * Plugin URI: http://www.taylorlovett.com
5
  * Description: Build beautiful custom forms the WordPress way. View live previews of your forms while you build them.
6
  * Author: Taylor Lovett
7
+ * Version: 7.2
8
  * Author URI: http://www.taylorlovett.com
9
  */
10
 
12
  * Include plugin reqs
13
  */
14
 
15
+ define( 'CCF_VERSION', '7.2' );
16
+
17
  require_once( dirname( __FILE__ ) . '/classes/class-ccf-constants.php' );
18
  require_once( dirname( __FILE__ ) . '/classes/class-ccf-custom-contact-forms.php' );
19
  require_once( dirname( __FILE__ ) . '/classes/class-ccf-form-cpt.php' );
29
  require_once( dirname( __FILE__ ) . '/classes/class-ccf-widget.php' );
30
  require_once( dirname( __FILE__ ) . '/classes/class-ccf-export.php' );
31
  require_once( dirname( __FILE__ ) . '/classes/class-ccf-ads.php' );
32
+ require_once( dirname( __FILE__ ) . '/classes/class-ccf-settings.php' );
33
 
34
  CCF_Custom_Contact_Forms::factory();
35
  CCF_Constants::factory();
44
  CCF_Upgrader::factory();
45
  CCF_Export::factory();
46
  CCF_Ads::factory();
47
+ CCF_Settings::factory();
48
 
49
  /**
50
  * Setup the widget
js/settings.js ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ( function( $ ) {
2
+
3
+ var $assetRestrictions = $( document.querySelectorAll( '.ccf-asset-restrictions' ) );
4
+ var assetRestrictionsWrap = document.querySelectorAll( '.ccf-asset-loading-restrictions-wrap' )[0];
5
+ var $assetRestrictionEnabled = $( document.querySelectorAll( '.ccf-asset-loading-restriction-enabled' ) );
6
+ var nextKey = $assetRestrictions.find( '.asset' ).length;
7
+
8
+ $assetRestrictionEnabled.on( 'change', function( event ) {
9
+ if ( '0' === event.target.value ) {
10
+ assetRestrictionsWrap.className = 'ccf-asset-loading-restrictions-wrap ccf-hide-field';
11
+ } else {
12
+ assetRestrictionsWrap.className = 'ccf-asset-loading-restrictions-wrap';
13
+ }
14
+ } );
15
+
16
+ $assetRestrictions.on( 'click', '.add', function() {
17
+ var newAsset = event.target.parentNode.cloneNode( true );
18
+ var location = newAsset.querySelectorAll( '.asset-location' )[0];
19
+ var type = newAsset.querySelectorAll( '.restriction-type' )[0];
20
+
21
+ location.value = '';
22
+ type.value = 'url';
23
+
24
+ location.name = 'ccf_settings[asset_loading_restrictions][' + nextKey + '][location]';
25
+ type.name = 'ccf_settings[asset_loading_restrictions][' + nextKey + '][type]';
26
+ nextKey++;
27
+
28
+ $assetRestrictions.append( $( newAsset ) );
29
+ } );
30
+
31
+ $assetRestrictions.on( 'click', '.delete', function( event ) {
32
+ var assets = document.querySelectorAll( '.ccf-asset-restrictions .asset' );
33
+
34
+ if ( assets.length < 2 ) {
35
+ event.target.parentNode.querySelectorAll( '.asset-location' )[0].value = '';
36
+ event.target.parentNode.querySelectorAll( '.restriction-type' )[0].value = 'url';
37
+ } else {
38
+ event.target.parentNode.parentNode.removeChild( event.target.parentNode );
39
+ }
40
+ } );
41
+
42
+ } )( jQuery );
languages/custom-contact-forms.mo CHANGED
Binary file
languages/custom-contact-forms.po CHANGED
@@ -5,8 +5,8 @@ msgstr ""
5
  "Project-Id-Version: Custom Contact Forms\n"
6
  "Report-Msgid-Bugs-To: https://github.com/tlovett1/custom-contact-forms/"
7
  "issues\n"
8
- "POT-Creation-Date: 2015-12-31 13:08-0500\n"
9
- "PO-Revision-Date: 2015-12-31 13:08-0500\n"
10
  "Last-Translator: Taylor Lovett <tlovett88@gmail.com>\n"
11
  "Language-Team: \n"
12
  "Language: en\n"
@@ -132,7 +132,7 @@ msgstr ""
132
  #: ../classes/class-ccf-field-renderer.php:802
133
  #: ../classes/class-ccf-form-manager.php:317
134
  #: ../classes/class-ccf-form-manager.php:1380
135
- #: ../classes/class-ccf-form-manager.php:1682
136
  msgid "Email"
137
  msgstr ""
138
 
@@ -328,7 +328,7 @@ msgstr ""
328
  #: ../classes/class-ccf-form-handler.php:376
329
  #: ../classes/class-ccf-form-handler.php:384
330
  #: ../classes/class-ccf-form-handler.php:438
331
- #: ../classes/class-ccf-form-renderer.php:49
332
  msgid "This field is required."
333
  msgstr ""
334
 
@@ -346,7 +346,7 @@ msgid "File contains an invalid extension."
346
  msgstr ""
347
 
348
  #: ../classes/class-ccf-form-handler.php:264
349
- #: ../classes/class-ccf-form-renderer.php:56
350
  msgid "Your reCAPTCHA response was incorrect."
351
  msgstr ""
352
 
@@ -376,7 +376,7 @@ msgid "This is not a valid email"
376
  msgstr ""
377
 
378
  #: ../classes/class-ccf-form-handler.php:379
379
- #: ../classes/class-ccf-form-renderer.php:54
380
  msgid "Emails do not match."
381
  msgstr ""
382
 
@@ -389,49 +389,49 @@ msgid "Last name is required."
389
  msgstr ""
390
 
391
  #: ../classes/class-ccf-form-handler.php:441
392
- #: ../classes/class-ccf-form-renderer.php:66
393
  msgid "This is not a valid URL. URL's must start with http(s)://"
394
  msgstr ""
395
 
396
  #: ../classes/class-ccf-form-handler.php:469
397
  #: ../classes/class-ccf-form-handler.php:501
398
- #: ../classes/class-ccf-form-renderer.php:50
399
  msgid "Date is required."
400
  msgstr ""
401
 
402
  #: ../classes/class-ccf-form-handler.php:472
403
  #: ../classes/class-ccf-form-handler.php:504
404
- #: ../classes/class-ccf-form-renderer.php:61
405
  msgid "This date is not valid."
406
  msgstr ""
407
 
408
  #: ../classes/class-ccf-form-handler.php:477
409
  #: ../classes/class-ccf-form-handler.php:509
410
- #: ../classes/class-ccf-form-renderer.php:51
411
  msgid "Hour is required."
412
  msgstr ""
413
 
414
  #: ../classes/class-ccf-form-handler.php:480
415
  #: ../classes/class-ccf-form-handler.php:512
416
- #: ../classes/class-ccf-form-renderer.php:60
417
  msgid "This is not a valid hour."
418
  msgstr ""
419
 
420
  #: ../classes/class-ccf-form-handler.php:485
421
  #: ../classes/class-ccf-form-handler.php:517
422
- #: ../classes/class-ccf-form-renderer.php:52
423
  msgid "Minute is required."
424
  msgstr ""
425
 
426
  #: ../classes/class-ccf-form-handler.php:488
427
  #: ../classes/class-ccf-form-handler.php:520
428
- #: ../classes/class-ccf-form-renderer.php:62
429
  msgid "This is not a valid minute."
430
  msgstr ""
431
 
432
  #: ../classes/class-ccf-form-handler.php:493
433
  #: ../classes/class-ccf-form-handler.php:525
434
- #: ../classes/class-ccf-form-renderer.php:53
435
  msgid "AM/PM is required."
436
  msgstr ""
437
 
@@ -458,7 +458,7 @@ msgid " to \"%s\""
458
  msgstr ""
459
 
460
  #: ../classes/class-ccf-form-handler.php:907
461
- #: ../classes/class-ccf-form-renderer.php:134
462
  msgid "Thank you for your submission."
463
  msgstr ""
464
 
@@ -534,7 +534,7 @@ msgid "Delete"
534
  msgstr ""
535
 
536
  #: ../classes/class-ccf-form-manager.php:172
537
- #: ../classes/class-ccf-form-manager.php:1718
538
  msgid "Form Submission"
539
  msgstr ""
540
 
@@ -596,6 +596,7 @@ msgstr ""
596
  #: ../classes/class-ccf-form-manager.php:1024
597
  #: ../classes/class-ccf-form-manager.php:1067
598
  #: ../classes/class-ccf-form-manager.php:1110
 
599
  msgid "No"
600
  msgstr ""
601
 
@@ -614,6 +615,7 @@ msgstr ""
614
  #: ../classes/class-ccf-form-manager.php:1023
615
  #: ../classes/class-ccf-form-manager.php:1066
616
  #: ../classes/class-ccf-form-manager.php:1109
 
617
  msgid "Yes"
618
  msgstr ""
619
 
@@ -1089,115 +1091,157 @@ msgstr ""
1089
  msgid "Add Form"
1090
  msgstr ""
1091
 
1092
- #: ../classes/class-ccf-form-manager.php:1667
1093
  msgid "Single Line Text"
1094
  msgstr ""
1095
 
1096
- #: ../classes/class-ccf-form-manager.php:1668
1097
  msgid "Dropdown"
1098
  msgstr ""
1099
 
1100
- #: ../classes/class-ccf-form-manager.php:1669
1101
  msgid "Checkboxes"
1102
  msgstr ""
1103
 
1104
- #: ../classes/class-ccf-form-manager.php:1670
1105
  msgid "Radio Buttons"
1106
  msgstr ""
1107
 
1108
- #: ../classes/class-ccf-form-manager.php:1671
1109
  msgid "Paragraph Text"
1110
  msgstr ""
1111
 
1112
- #: ../classes/class-ccf-form-manager.php:1672
1113
  msgid "Hidden"
1114
  msgstr ""
1115
 
1116
- #: ../classes/class-ccf-form-manager.php:1673
1117
  msgid "File Upload"
1118
  msgstr ""
1119
 
1120
- #: ../classes/class-ccf-form-manager.php:1677
1121
  msgid "HTML"
1122
  msgstr ""
1123
 
1124
- #: ../classes/class-ccf-form-manager.php:1678
1125
  msgid "Section Header"
1126
  msgstr ""
1127
 
1128
- #: ../classes/class-ccf-form-manager.php:1683
1129
  msgid "Name"
1130
  msgstr ""
1131
 
1132
- #: ../classes/class-ccf-form-manager.php:1684
1133
  msgid "Date/Time"
1134
  msgstr ""
1135
 
1136
- #: ../classes/class-ccf-form-manager.php:1685
1137
  msgid "Website"
1138
  msgstr ""
1139
 
1140
- #: ../classes/class-ccf-form-manager.php:1686
1141
  msgid "Address"
1142
  msgstr ""
1143
 
1144
- #: ../classes/class-ccf-form-manager.php:1687
1145
  msgid "Phone"
1146
  msgstr ""
1147
 
1148
- #: ../classes/class-ccf-form-manager.php:1688
1149
  msgid "reCAPTCHA"
1150
  msgstr ""
1151
 
1152
- #: ../classes/class-ccf-form-manager.php:1712
1153
  msgid "You have no email fields"
1154
  msgstr ""
1155
 
1156
- #: ../classes/class-ccf-form-manager.php:1713
1157
  msgid "You have no name fields"
1158
  msgstr ""
1159
 
1160
- #: ../classes/class-ccf-form-manager.php:1714
1161
  msgid "You have no applicable fields"
1162
  msgstr ""
1163
 
1164
- #: ../classes/class-ccf-form-manager.php:1715
1165
  msgid "Invalid date"
1166
  msgstr ""
1167
 
1168
- #: ../classes/class-ccf-form-manager.php:1717
1169
  msgid "Field Label"
1170
  msgstr ""
1171
 
1172
- #: ../classes/class-ccf-form-manager.php:1719
1173
- #: ../classes/class-ccf-form-renderer.php:120
1174
  msgid "This form is paused right now. Check back later!"
1175
  msgstr ""
1176
 
1177
- #: ../classes/class-ccf-form-renderer.php:55
1178
  msgid "This is not a valid email address."
1179
  msgstr ""
1180
 
1181
- #: ../classes/class-ccf-form-renderer.php:58
1182
  msgid "This is not a valid phone number."
1183
  msgstr ""
1184
 
1185
- #: ../classes/class-ccf-form-renderer.php:59
1186
  msgid "This phone number is not 10 digits"
1187
  msgstr ""
1188
 
1189
- #: ../classes/class-ccf-form-renderer.php:63
1190
  msgid "This is not an allowed file extension"
1191
  msgstr ""
1192
 
1193
- #: ../classes/class-ccf-form-renderer.php:64
1194
  msgid "This file is bigger than"
1195
  msgstr ""
1196
 
1197
- #: ../classes/class-ccf-form-renderer.php:65
1198
  msgid "An unknown error occured."
1199
  msgstr ""
1200
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1201
  #: ../classes/class-ccf-submission-cpt.php:41
1202
  msgid "Form Submissions"
1203
  msgstr ""
5
  "Project-Id-Version: Custom Contact Forms\n"
6
  "Report-Msgid-Bugs-To: https://github.com/tlovett1/custom-contact-forms/"
7
  "issues\n"
8
+ "POT-Creation-Date: 2016-01-03 00:39-0500\n"
9
+ "PO-Revision-Date: 2016-01-03 00:39-0500\n"
10
  "Last-Translator: Taylor Lovett <tlovett88@gmail.com>\n"
11
  "Language-Team: \n"
12
  "Language: en\n"
132
  #: ../classes/class-ccf-field-renderer.php:802
133
  #: ../classes/class-ccf-form-manager.php:317
134
  #: ../classes/class-ccf-form-manager.php:1380
135
+ #: ../classes/class-ccf-form-manager.php:1680
136
  msgid "Email"
137
  msgstr ""
138
 
328
  #: ../classes/class-ccf-form-handler.php:376
329
  #: ../classes/class-ccf-form-handler.php:384
330
  #: ../classes/class-ccf-form-handler.php:438
331
+ #: ../classes/class-ccf-form-renderer.php:99
332
  msgid "This field is required."
333
  msgstr ""
334
 
346
  msgstr ""
347
 
348
  #: ../classes/class-ccf-form-handler.php:264
349
+ #: ../classes/class-ccf-form-renderer.php:106
350
  msgid "Your reCAPTCHA response was incorrect."
351
  msgstr ""
352
 
376
  msgstr ""
377
 
378
  #: ../classes/class-ccf-form-handler.php:379
379
+ #: ../classes/class-ccf-form-renderer.php:104
380
  msgid "Emails do not match."
381
  msgstr ""
382
 
389
  msgstr ""
390
 
391
  #: ../classes/class-ccf-form-handler.php:441
392
+ #: ../classes/class-ccf-form-renderer.php:116
393
  msgid "This is not a valid URL. URL's must start with http(s)://"
394
  msgstr ""
395
 
396
  #: ../classes/class-ccf-form-handler.php:469
397
  #: ../classes/class-ccf-form-handler.php:501
398
+ #: ../classes/class-ccf-form-renderer.php:100
399
  msgid "Date is required."
400
  msgstr ""
401
 
402
  #: ../classes/class-ccf-form-handler.php:472
403
  #: ../classes/class-ccf-form-handler.php:504
404
+ #: ../classes/class-ccf-form-renderer.php:111
405
  msgid "This date is not valid."
406
  msgstr ""
407
 
408
  #: ../classes/class-ccf-form-handler.php:477
409
  #: ../classes/class-ccf-form-handler.php:509
410
+ #: ../classes/class-ccf-form-renderer.php:101
411
  msgid "Hour is required."
412
  msgstr ""
413
 
414
  #: ../classes/class-ccf-form-handler.php:480
415
  #: ../classes/class-ccf-form-handler.php:512
416
+ #: ../classes/class-ccf-form-renderer.php:110
417
  msgid "This is not a valid hour."
418
  msgstr ""
419
 
420
  #: ../classes/class-ccf-form-handler.php:485
421
  #: ../classes/class-ccf-form-handler.php:517
422
+ #: ../classes/class-ccf-form-renderer.php:102
423
  msgid "Minute is required."
424
  msgstr ""
425
 
426
  #: ../classes/class-ccf-form-handler.php:488
427
  #: ../classes/class-ccf-form-handler.php:520
428
+ #: ../classes/class-ccf-form-renderer.php:112
429
  msgid "This is not a valid minute."
430
  msgstr ""
431
 
432
  #: ../classes/class-ccf-form-handler.php:493
433
  #: ../classes/class-ccf-form-handler.php:525
434
+ #: ../classes/class-ccf-form-renderer.php:103
435
  msgid "AM/PM is required."
436
  msgstr ""
437
 
458
  msgstr ""
459
 
460
  #: ../classes/class-ccf-form-handler.php:907
461
+ #: ../classes/class-ccf-form-renderer.php:188
462
  msgid "Thank you for your submission."
463
  msgstr ""
464
 
534
  msgstr ""
535
 
536
  #: ../classes/class-ccf-form-manager.php:172
537
+ #: ../classes/class-ccf-form-manager.php:1716
538
  msgid "Form Submission"
539
  msgstr ""
540
 
596
  #: ../classes/class-ccf-form-manager.php:1024
597
  #: ../classes/class-ccf-form-manager.php:1067
598
  #: ../classes/class-ccf-form-manager.php:1110
599
+ #: ../classes/class-ccf-settings.php:104
600
  msgid "No"
601
  msgstr ""
602
 
615
  #: ../classes/class-ccf-form-manager.php:1023
616
  #: ../classes/class-ccf-form-manager.php:1066
617
  #: ../classes/class-ccf-form-manager.php:1109
618
+ #: ../classes/class-ccf-settings.php:105
619
  msgid "Yes"
620
  msgstr ""
621
 
1091
  msgid "Add Form"
1092
  msgstr ""
1093
 
1094
+ #: ../classes/class-ccf-form-manager.php:1665
1095
  msgid "Single Line Text"
1096
  msgstr ""
1097
 
1098
+ #: ../classes/class-ccf-form-manager.php:1666
1099
  msgid "Dropdown"
1100
  msgstr ""
1101
 
1102
+ #: ../classes/class-ccf-form-manager.php:1667
1103
  msgid "Checkboxes"
1104
  msgstr ""
1105
 
1106
+ #: ../classes/class-ccf-form-manager.php:1668
1107
  msgid "Radio Buttons"
1108
  msgstr ""
1109
 
1110
+ #: ../classes/class-ccf-form-manager.php:1669
1111
  msgid "Paragraph Text"
1112
  msgstr ""
1113
 
1114
+ #: ../classes/class-ccf-form-manager.php:1670
1115
  msgid "Hidden"
1116
  msgstr ""
1117
 
1118
+ #: ../classes/class-ccf-form-manager.php:1671
1119
  msgid "File Upload"
1120
  msgstr ""
1121
 
1122
+ #: ../classes/class-ccf-form-manager.php:1675
1123
  msgid "HTML"
1124
  msgstr ""
1125
 
1126
+ #: ../classes/class-ccf-form-manager.php:1676
1127
  msgid "Section Header"
1128
  msgstr ""
1129
 
1130
+ #: ../classes/class-ccf-form-manager.php:1681
1131
  msgid "Name"
1132
  msgstr ""
1133
 
1134
+ #: ../classes/class-ccf-form-manager.php:1682
1135
  msgid "Date/Time"
1136
  msgstr ""
1137
 
1138
+ #: ../classes/class-ccf-form-manager.php:1683
1139
  msgid "Website"
1140
  msgstr ""
1141
 
1142
+ #: ../classes/class-ccf-form-manager.php:1684
1143
  msgid "Address"
1144
  msgstr ""
1145
 
1146
+ #: ../classes/class-ccf-form-manager.php:1685
1147
  msgid "Phone"
1148
  msgstr ""
1149
 
1150
+ #: ../classes/class-ccf-form-manager.php:1686
1151
  msgid "reCAPTCHA"
1152
  msgstr ""
1153
 
1154
+ #: ../classes/class-ccf-form-manager.php:1710
1155
  msgid "You have no email fields"
1156
  msgstr ""
1157
 
1158
+ #: ../classes/class-ccf-form-manager.php:1711
1159
  msgid "You have no name fields"
1160
  msgstr ""
1161
 
1162
+ #: ../classes/class-ccf-form-manager.php:1712
1163
  msgid "You have no applicable fields"
1164
  msgstr ""
1165
 
1166
+ #: ../classes/class-ccf-form-manager.php:1713
1167
  msgid "Invalid date"
1168
  msgstr ""
1169
 
1170
+ #: ../classes/class-ccf-form-manager.php:1715
1171
  msgid "Field Label"
1172
  msgstr ""
1173
 
1174
+ #: ../classes/class-ccf-form-manager.php:1717
1175
+ #: ../classes/class-ccf-form-renderer.php:174
1176
  msgid "This form is paused right now. Check back later!"
1177
  msgstr ""
1178
 
1179
+ #: ../classes/class-ccf-form-renderer.php:105
1180
  msgid "This is not a valid email address."
1181
  msgstr ""
1182
 
1183
+ #: ../classes/class-ccf-form-renderer.php:108
1184
  msgid "This is not a valid phone number."
1185
  msgstr ""
1186
 
1187
+ #: ../classes/class-ccf-form-renderer.php:109
1188
  msgid "This phone number is not 10 digits"
1189
  msgstr ""
1190
 
1191
+ #: ../classes/class-ccf-form-renderer.php:113
1192
  msgid "This is not an allowed file extension"
1193
  msgstr ""
1194
 
1195
+ #: ../classes/class-ccf-form-renderer.php:114
1196
  msgid "This file is bigger than"
1197
  msgstr ""
1198
 
1199
+ #: ../classes/class-ccf-form-renderer.php:115
1200
  msgid "An unknown error occured."
1201
  msgstr ""
1202
 
1203
+ #: ../classes/class-ccf-settings.php:77
1204
+ msgid "Enable Asset Loading Restrictions"
1205
+ msgstr ""
1206
+
1207
+ #: ../classes/class-ccf-settings.php:78
1208
+ msgid "Restrict Asset Loading To"
1209
+ msgstr ""
1210
+
1211
+ #: ../classes/class-ccf-settings.php:89
1212
+ msgid ""
1213
+ "By default, Custom Contact Forms loads all it's assets (JavaScript, CSS, "
1214
+ "etc.) on every page of your site. The reason for this is that there is no "
1215
+ "where to determine where you use forms. Asset Page Control allows you to "
1216
+ "specify the URLs or post IDs where your CCF forms will exist. By specifying "
1217
+ "where your forms will live, assets will not be unnecessarily loaded on every "
1218
+ "page of your site."
1219
+ msgstr ""
1220
+
1221
+ #: ../classes/class-ccf-settings.php:122 ../classes/class-ccf-settings.php:134
1222
+ msgid "URL or post ID"
1223
+ msgstr ""
1224
+
1225
+ #: ../classes/class-ccf-settings.php:123 ../classes/class-ccf-settings.php:135
1226
+ msgid "Restriction type:"
1227
+ msgstr ""
1228
+
1229
+ #: ../classes/class-ccf-settings.php:125 ../classes/class-ccf-settings.php:137
1230
+ msgid "URL"
1231
+ msgstr ""
1232
+
1233
+ #: ../classes/class-ccf-settings.php:126 ../classes/class-ccf-settings.php:138
1234
+ msgid "Post ID"
1235
+ msgstr ""
1236
+
1237
+ #: ../classes/class-ccf-settings.php:150 ../classes/class-ccf-settings.php:161
1238
+ msgid "Custom Contact Forms Settings"
1239
+ msgstr ""
1240
+
1241
+ #: ../classes/class-ccf-settings.php:150
1242
+ msgid "Settings"
1243
+ msgstr ""
1244
+
1245
  #: ../classes/class-ccf-submission-cpt.php:41
1246
  msgid "Form Submissions"
1247
  msgstr ""
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
4
  Tags: contact form, web form, custom contact form, custom forms, captcha form, contact fields, form mailers, forms
5
  Requires at least: 3.9
6
  Tested up to: 4.5
7
- Stable tag: 7.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -37,7 +37,10 @@ For questions, feature requests, and support concerning the Custom Contact Forms
37
 
38
  == Changelog ==
39
 
40
- = 7.1.0 =
 
 
 
41
  * Enable non-American date formats
42
  * Make submissions and forms private so they don't show in sitemaps
43
  * Redo form email notifications and settings UI
4
  Tags: contact form, web form, custom contact form, custom forms, captcha form, contact fields, form mailers, forms
5
  Requires at least: 3.9
6
  Tested up to: 4.5
7
+ Stable tag: 7.2
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
37
 
38
  == Changelog ==
39
 
40
+ = 7.2 =
41
+ * Conditional asset loading
42
+
43
+ = 7.1 =
44
  * Enable non-American date formats
45
  * Make submissions and forms private so they don't show in sitemaps
46
  * Redo form email notifications and settings UI