Changeset 3454525
- Timestamp:
- 02/05/2026 11:11:26 AM (5 weeks ago)
- Location:
- cross-site-copy-field-for-acf
- Files:
-
- 55 added
- 3 edited
-
tags/1.0.1 (added)
-
tags/1.0.1/LICENSE.txt (added)
-
tags/1.0.1/assets (added)
-
tags/1.0.1/assets/css (added)
-
tags/1.0.1/assets/css/admin-settings.css (added)
-
tags/1.0.1/assets/css/admin-styles.css (added)
-
tags/1.0.1/assets/css/deactivation-popup.css (added)
-
tags/1.0.1/assets/css/json-popup.css (added)
-
tags/1.0.1/assets/css/upgrade-modal.css (added)
-
tags/1.0.1/assets/css/variables.css (added)
-
tags/1.0.1/assets/fonts (added)
-
tags/1.0.1/assets/fonts/Poppins-Black.ttf (added)
-
tags/1.0.1/assets/fonts/Poppins-BlackItalic.ttf (added)
-
tags/1.0.1/assets/fonts/Poppins-Bold.ttf (added)
-
tags/1.0.1/assets/fonts/Poppins-BoldItalic.ttf (added)
-
tags/1.0.1/assets/fonts/Poppins-ExtraBold.ttf (added)
-
tags/1.0.1/assets/fonts/Poppins-ExtraBoldItalic.ttf (added)
-
tags/1.0.1/assets/fonts/Poppins-ExtraLight.ttf (added)
-
tags/1.0.1/assets/fonts/Poppins-ExtraLightItalic.ttf (added)
-
tags/1.0.1/assets/fonts/Poppins-Italic.ttf (added)
-
tags/1.0.1/assets/fonts/Poppins-Light.ttf (added)
-
tags/1.0.1/assets/fonts/Poppins-LightItalic.ttf (added)
-
tags/1.0.1/assets/fonts/Poppins-Medium.ttf (added)
-
tags/1.0.1/assets/fonts/Poppins-MediumItalic.ttf (added)
-
tags/1.0.1/assets/fonts/Poppins-Regular.ttf (added)
-
tags/1.0.1/assets/fonts/Poppins-SemiBold.ttf (added)
-
tags/1.0.1/assets/fonts/Poppins-SemiBoldItalic.ttf (added)
-
tags/1.0.1/assets/fonts/Poppins-Thin.ttf (added)
-
tags/1.0.1/assets/fonts/Poppins-ThinItalic.ttf (added)
-
tags/1.0.1/assets/images (added)
-
tags/1.0.1/assets/images/speedy-go.gif (added)
-
tags/1.0.1/assets/images/wysiwyg-character-limit-for-acf.png (added)
-
tags/1.0.1/assets/js (added)
-
tags/1.0.1/assets/js/admin-field-actions.js (added)
-
tags/1.0.1/assets/js/deactivation-popup.js (added)
-
tags/1.0.1/assets/js/field-json-popup.js (added)
-
tags/1.0.1/cross-site-copy-field-acf.php (added)
-
tags/1.0.1/includes (added)
-
tags/1.0.1/includes/class-admin-ui.php (added)
-
tags/1.0.1/includes/class-deactivation.php (added)
-
tags/1.0.1/includes/class-field-importer.php (added)
-
tags/1.0.1/includes/class-field-serializer.php (added)
-
tags/1.0.1/includes/class-license.php (added)
-
tags/1.0.1/includes/class-rest-api.php (added)
-
tags/1.0.1/includes/class-tracking.php (added)
-
tags/1.0.1/languages (added)
-
tags/1.0.1/readme.txt (added)
-
trunk/assets/css/admin-settings.css (added)
-
trunk/assets/css/deactivation-popup.css (added)
-
trunk/assets/css/variables.css (modified) (1 diff)
-
trunk/assets/images (added)
-
trunk/assets/images/speedy-go.gif (added)
-
trunk/assets/images/wysiwyg-character-limit-for-acf.png (added)
-
trunk/assets/js/deactivation-popup.js (added)
-
trunk/cross-site-copy-field-acf.php (modified) (4 diffs)
-
trunk/includes/class-deactivation.php (added)
-
trunk/includes/class-tracking.php (added)
-
trunk/readme.txt (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
cross-site-copy-field-for-acf/trunk/assets/css/variables.css
r3452604 r3454525 10 10 ======================================== */ 11 11 @font-face { 12 font-family: 'Poppins';13 src: url('../fonts/Poppins-Thin.ttf') format('truetype');14 font-weight: 100;15 font-style: normal;16 font-display: swap;17 } 18 19 @font-face { 20 font-family: 'Poppins';21 src: url('../fonts/Poppins-ExtraLight.ttf') format('truetype');22 font-weight: 200;23 font-style: normal;24 font-display: swap;25 } 26 27 @font-face { 28 font-family: 'Poppins';29 src: url('../fonts/Poppins-Light.ttf') format('truetype');30 font-weight: 300;31 font-style: normal;32 font-display: swap;33 } 34 35 @font-face { 36 font-family: 'Poppins';37 src: url('../fonts/Poppins-Regular.ttf') format('truetype');38 font-weight: 400;39 font-style: normal;40 font-display: swap;41 } 42 43 @font-face { 44 font-family: 'Poppins';45 src: url('../fonts/Poppins-Medium.ttf') format('truetype');46 font-weight: 500;47 font-style: normal;48 font-display: swap;49 } 50 51 @font-face { 52 font-family: 'Poppins';53 src: url('../fonts/Poppins-SemiBold.ttf') format('truetype');54 font-weight: 600;55 font-style: normal;56 font-display: swap;57 } 58 59 @font-face { 60 font-family: 'Poppins';61 src: url('../fonts/Poppins-Bold.ttf') format('truetype');62 font-weight: 700;63 font-style: normal;64 font-display: swap;65 } 66 67 @font-face { 68 font-family: 'Poppins';69 src: url('../fonts/Poppins-ExtraBold.ttf') format('truetype');70 font-weight: 800;71 font-style: normal;72 font-display: swap;73 } 74 75 @font-face { 76 font-family: 'Poppins';77 src: url('../fonts/Poppins-Black.ttf') format('truetype');78 font-weight: 900;79 font-style: normal;80 font-display: swap;12 font-family: 'Poppins'; 13 src: url('../fonts/Poppins-Thin.ttf') format('truetype'); 14 font-weight: 100; 15 font-style: normal; 16 font-display: swap; 17 } 18 19 @font-face { 20 font-family: 'Poppins'; 21 src: url('../fonts/Poppins-ExtraLight.ttf') format('truetype'); 22 font-weight: 200; 23 font-style: normal; 24 font-display: swap; 25 } 26 27 @font-face { 28 font-family: 'Poppins'; 29 src: url('../fonts/Poppins-Light.ttf') format('truetype'); 30 font-weight: 300; 31 font-style: normal; 32 font-display: swap; 33 } 34 35 @font-face { 36 font-family: 'Poppins'; 37 src: url('../fonts/Poppins-Regular.ttf') format('truetype'); 38 font-weight: 400; 39 font-style: normal; 40 font-display: swap; 41 } 42 43 @font-face { 44 font-family: 'Poppins'; 45 src: url('../fonts/Poppins-Medium.ttf') format('truetype'); 46 font-weight: 500; 47 font-style: normal; 48 font-display: swap; 49 } 50 51 @font-face { 52 font-family: 'Poppins'; 53 src: url('../fonts/Poppins-SemiBold.ttf') format('truetype'); 54 font-weight: 600; 55 font-style: normal; 56 font-display: swap; 57 } 58 59 @font-face { 60 font-family: 'Poppins'; 61 src: url('../fonts/Poppins-Bold.ttf') format('truetype'); 62 font-weight: 700; 63 font-style: normal; 64 font-display: swap; 65 } 66 67 @font-face { 68 font-family: 'Poppins'; 69 src: url('../fonts/Poppins-ExtraBold.ttf') format('truetype'); 70 font-weight: 800; 71 font-style: normal; 72 font-display: swap; 73 } 74 75 @font-face { 76 font-family: 'Poppins'; 77 src: url('../fonts/Poppins-Black.ttf') format('truetype'); 78 font-weight: 900; 79 font-style: normal; 80 font-display: swap; 81 81 } 82 82 83 83 :root { 84 /* ========================================84 /* ======================================== 85 85 BRAND COLORS - User Specified 86 86 ======================================== */ 87 --cnc-acf-primary-color: #6167F8;88 /* Primary brand blue */89 --cnc-acf-primary-light: #AECFFF;90 /* Light brand blue */91 --cnc-acf-primary-accent: #9966FF;92 /* Purple accent */93 --cnc-acf-primary-gradient: linear-gradient(135deg, #AECFFF 0%, #6167F8 100%);94 95 /* ========================================87 --cnc-acf-primary-color: #6167F8; 88 /* Primary brand blue */ 89 --cnc-acf-primary-light: #AECFFF; 90 /* Light brand blue */ 91 --cnc-acf-primary-accent: #9966FF; 92 /* Purple accent */ 93 --cnc-acf-primary-gradient: linear-gradient(135deg, #AECFFF 0%, #6167F8 100%); 94 95 /* ======================================== 96 96 TEXT COLORS 97 97 ======================================== */ 98 --cnc-acf-text-black: #000000; 99 /* Black text */ 100 --cnc-acf-text-white: #FFFFFF; 101 /* White text */ 102 103 /* ======================================== 98 --cnc-acf-text-black: #000000; 99 /* Black text */ 100 --cnc-acf-text-white: #FFFFFF; 101 /* White text */ 102 103 --cnc-acf-text-dark: #111827; 104 --cnc-acf-text-gray-dark: #374151; 105 --cnc-acf-text-gray-medium: #4b5563; 106 --cnc-acf-text-gray: #6b7280; 107 --cnc-acf-text-light-gray: #9ca3af; 108 109 /* ======================================== 104 110 STATUS COLORS 105 111 ======================================== */ 106 --cnc-acf-success-color: #22bb67;107 /* Success green */108 --cnc-acf-warning-color: #ed4d4d;109 /* Warning red */110 --cnc-acf-danger-color: #ed4d4d;111 /* Danger red (same as warning) */112 --cnc-acf-info-color: #6167F8;113 /* Info - using primary brand color */114 115 /* ========================================112 --cnc-acf-success-color: #22bb67; 113 /* Success green */ 114 --cnc-acf-warning-color: #ed4d4d; 115 /* Warning red */ 116 --cnc-acf-danger-color: #ed4d4d; 117 /* Danger red (same as warning) */ 118 --cnc-acf-info-color: #6167F8; 119 /* Info - using primary brand color */ 120 121 /* ======================================== 116 122 BACKGROUND COLORS 117 123 ======================================== */ 118 --cnc-acf-white: #FFFFFF; 119 --cnc-acf-black: #000000; 120 --cnc-acf-overlay-bg: rgba(0, 0, 0, 0.8); 121 122 /* ======================================== 124 --cnc-acf-white: #FFFFFF; 125 --cnc-acf-black: #000000; 126 --cnc-acf-overlay-bg: rgba(0, 0, 0, 0.6); 127 --cnc-acf-bg-gray-light: #f9fafb; 128 --cnc-acf-bg-gray-lighter: #f3f4f6; 129 --cnc-acf-bg-purple-light: #faf5ff; 130 --cnc-acf-bg-purple-lighter: #f5f3ff; 131 --cnc-acf-btn-gradient: linear-gradient(135deg, #6167F8 0%, #8b5cf6 100%); 132 133 /* ======================================== 134 BORDER COLORS 135 ======================================== */ 136 --cnc-acf-border-gray: #e5e7eb; 137 --cnc-acf-border-purple-light: #c4b5fd; 138 139 /* ======================================== 123 140 TYPOGRAPHY - Poppins Font 124 141 ======================================== */ 125 --cnc-acf-line-height-tight: 1.25;126 --cnc-acf-line-height-normal: 1.5;127 --cnc-acf-line-height-relaxed: 1.75;128 129 /* ========================================142 --cnc-acf-line-height-tight: 1.25; 143 --cnc-acf-line-height-normal: 1.5; 144 --cnc-acf-line-height-relaxed: 1.75; 145 146 /* ======================================== 130 147 SPACING - Consistent Rhythm 131 148 ======================================== */ 132 --cnc-acf-spacing-xs: 8px;133 --cnc-acf-spacing-sm: 12px;134 --cnc-acf-spacing-md: 16px;135 --cnc-acf-spacing-lg: 24px;136 --cnc-acf-spacing-xl: 32px;137 --cnc-acf-spacing-2xl: 40px;138 139 /* ========================================149 --cnc-acf-spacing-xs: 8px; 150 --cnc-acf-spacing-sm: 12px; 151 --cnc-acf-spacing-md: 16px; 152 --cnc-acf-spacing-lg: 24px; 153 --cnc-acf-spacing-xl: 32px; 154 --cnc-acf-spacing-2xl: 40px; 155 156 /* ======================================== 140 157 BORDER RADIUS - Sharp & Rectangular 141 158 ======================================== */ 142 --cnc-acf-radius-none: 0;143 --cnc-acf-radius-sm: 2px;144 /* Very subtle corners */145 --cnc-acf-radius-md: 3px;146 /* Slightly rounded */147 --cnc-acf-radius-lg: 4px;148 /* Minimal rounding */149 --cnc-acf-radius-xl: 6px;150 /* Modal corners */151 --cnc-acf-radius-full: 9999px;152 /* Only for close button */153 154 155 /* ========================================159 --cnc-acf-radius-none: 0; 160 --cnc-acf-radius-sm: 2px; 161 /* Very subtle corners */ 162 --cnc-acf-radius-md: 3px; 163 /* Slightly rounded */ 164 --cnc-acf-radius-lg: 4px; 165 /* Minimal rounding */ 166 --cnc-acf-radius-xl: 6px; 167 /* Modal corners */ 168 --cnc-acf-radius-full: 9999px; 169 /* Only for close button */ 170 171 172 /* ======================================== 156 173 BORDERS 157 174 ======================================== */ 158 --cnc-acf-border-width: 1px;159 --cnc-acf-border-width-thick: 2px;160 --cnc-acf-border-color: var(--cnc-acf-border-gray);161 --cnc-acf-border-color-hover: #D1D5DB;162 163 /* ========================================175 --cnc-acf-border-width: 1px; 176 --cnc-acf-border-width-thick: 2px; 177 --cnc-acf-border-color: var(--cnc-acf-border-gray); 178 --cnc-acf-border-color-hover: #D1D5DB; 179 180 /* ======================================== 164 181 SHADOWS - Subtle Depth 165 182 ======================================== */ 166 --cnc-acf-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.05);167 --cnc-acf-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06);168 --cnc-acf-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);169 --cnc-acf-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);170 --cnc-acf-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);171 --cnc-acf-shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);172 173 /* ========================================183 --cnc-acf-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.05); 184 --cnc-acf-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06); 185 --cnc-acf-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); 186 --cnc-acf-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); 187 --cnc-acf-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); 188 --cnc-acf-shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25); 189 190 /* ======================================== 174 191 TRANSITIONS - Smooth Interactions 175 192 ======================================== */ 176 --cnc-acf-transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);177 --cnc-acf-transition-normal: 200ms cubic-bezier(0.4, 0, 0.2, 1);178 --cnc-acf-transition-slow: 300ms cubic-bezier(0.4, 0, 0.2, 1);179 180 /* ========================================193 --cnc-acf-transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1); 194 --cnc-acf-transition-normal: 200ms cubic-bezier(0.4, 0, 0.2, 1); 195 --cnc-acf-transition-slow: 300ms cubic-bezier(0.4, 0, 0.2, 1); 196 197 /* ======================================== 181 198 Z-INDEX 182 199 ======================================== */ 183 --cnc-acf-z-dropdown: 1000;184 --cnc-acf-z-sticky: 1020;185 --cnc-acf-z-fixed: 1030;186 --cnc-acf-z-modal-backdrop: 1040;187 --cnc-acf-z-modal: 1050;188 --cnc-acf-z-popover: 1060;189 --cnc-acf-z-tooltip: 1070;190 191 /* ========================================200 --cnc-acf-z-dropdown: 1000; 201 --cnc-acf-z-sticky: 1020; 202 --cnc-acf-z-fixed: 1030; 203 --cnc-acf-z-modal-backdrop: 1040; 204 --cnc-acf-z-modal: 1050; 205 --cnc-acf-z-popover: 1060; 206 --cnc-acf-z-tooltip: 1070; 207 208 /* ======================================== 192 209 BUTTON SPECIFIC 193 210 ======================================== */ 194 --cnc-acf-btn-padding-y: 10px;195 --cnc-acf-btn-padding-x: 24px;196 --cnc-acf-btn-padding-sm-y: 8px;197 --cnc-acf-btn-padding-sm-x: 16px;198 --cnc-acf-btn-padding-lg-y: 12px;199 --cnc-acf-btn-padding-lg-x: 32px;200 201 /* ========================================211 --cnc-acf-btn-padding-y: 10px; 212 --cnc-acf-btn-padding-x: 24px; 213 --cnc-acf-btn-padding-sm-y: 8px; 214 --cnc-acf-btn-padding-sm-x: 16px; 215 --cnc-acf-btn-padding-lg-y: 12px; 216 --cnc-acf-btn-padding-lg-x: 32px; 217 218 /* ======================================== 202 219 POPUP/MODAL SPECIFIC 203 220 ======================================== */ 204 --cnc-acf-popup-max-width: 600px;205 --cnc-acf-popup-max-height: 80vh;206 --cnc-acf-modal-max-width: 480px;207 } 221 --cnc-acf-popup-max-width: 600px; 222 --cnc-acf-popup-max-height: 80vh; 223 --cnc-acf-modal-max-width: 480px; 224 } -
cross-site-copy-field-for-acf/trunk/cross-site-copy-field-acf.php
r3452604 r3454525 3 3 * Plugin Name: Cross Site Copy Field for ACF 4 4 * Description: Duplicate and transfer ACF field definitions between field groups and across WordPress sites. Supports nested fields, automatic key generation, and JSON-based transfer. 5 * Version: 1.0. 05 * Version: 1.0.1 6 6 * Author: Code and Core 7 7 * Author URI: https://codeandcore.com … … 120 120 $rest_api = new CSCF_ACF_Rest_API(); 121 121 $rest_api->init(); 122 123 // Initialize Tracking 124 // Check for "do not track" constant if you want to be nice, but standard is just the option 125 $tracking = new CSCF_ACF_Tracking(); 126 $tracking->init(); 127 128 // Initialize Deactivation Feedback 129 $deactivation = new CSCF_ACF_Deactivation(); 130 $deactivation->init(); 122 131 } 123 132 add_action('plugins_loaded', 'cscf_acf_init'); … … 138 147 // Flush rewrite rules for REST API 139 148 flush_rewrite_rules(); 149 150 // Tracking 151 if (class_exists('CSCF_ACF_Tracking')) { 152 $tracking = new CSCF_ACF_Tracking(); 153 $tracking->send_tracking('Activation'); 154 155 // Save current version for future comparisons 156 if (!function_exists('get_plugin_data')) { 157 require_once(ABSPATH . 'wp-admin/includes/plugin.php'); 158 } 159 $info = get_plugin_data(__FILE__); 160 update_option('cscf_acf_plugin_version', $info['Version']); 161 } 162 163 // Set transient for redirect 164 set_transient('cscf_acf_activation_redirect', true, 30); 140 165 } 141 166 register_activation_hook(__FILE__, 'cscf_acf_activate'); … … 151 176 // Flush rewrite rules 152 177 flush_rewrite_rules(); 178 179 // Tracking 180 if (class_exists('CSCF_ACF_Tracking')) { 181 $tracking = new CSCF_ACF_Tracking(); 182 $tracking->send_tracking('Deactivation'); 183 } 153 184 } 154 185 register_deactivation_hook(__FILE__, 'cscf_acf_deactivate'); 186 187 /** 188 * Uninstall hook 189 */ 190 register_uninstall_hook(__FILE__, ['CSCF_ACF_Tracking', 'uninstall']); -
cross-site-copy-field-for-acf/trunk/readme.txt
r3452604 r3454525 4 4 Requires at least: 5.8 5 5 Tested up to: 6.9 6 Stable tag: 1.0. 06 Stable tag: 1.0.1 7 7 Requires PHP: 7.4 8 8 License: GPLv2 or later … … 53 53 Note: Complex field types like Repeater, Flexible Content, and Group require ACF PRO. 54 54 55 = Privacy & Data Collection = 56 57 **Your Privacy Matters** 58 59 This plugin respects your privacy and operates with full transparency: 60 61 * **No Automatic Data Collection** - The plugin does not collect or transmit any data without your explicit consent 62 * **Opt-In Telemetry** - You can optionally enable anonymous usage tracking from Settings > ACF WYSIWYG Limit to help improve the plugin 63 * **Deactivation Feedback** - When deactivating, you can choose to share feedback to help us improve. This is completely optional 64 * **No Personal Content** - We never collect your post content, user passwords, or sensitive information 65 * **What We Collect (Only if you opt-in)**: 66 - Plugin version and settings 67 - WordPress and PHP versions 68 - Theme information 69 - Site language and multisite status 70 - Anonymous site URL (for duplicate detection only) 71 72 **Deactivation Feedback** 73 74 When you deactivate the plugin, a feedback modal appears asking for your reason. This helps us improve the plugin: 75 76 * **Completely Optional** - You can skip and deactivate immediately 77 * **Contact Consent** - Check the consent box only if you want us to follow up with support 78 * **Your Choice** - Your name and email are only sent if you check the consent checkbox 79 55 80 == Installation == 56 81 … … 99 124 == Changelog == 100 125 126 = 1.0.1 - 2026-02-05 = 127 * Enhanced: Deactivation feedback popup UI with new Dashicons and better hover effects 128 * Fix: Moved deactivation logic to separate class for better organization 129 * Fix: Resolved security lint errors (escaping, sanitization, nonce verification) 130 * Fix: CSS variable usage for easier maintenance 131 * Improvement: Made support contact consent optional in deactivation popup 132 101 133 = 1.0.0 - 2026-02-03 = 102 134 * Initial release … … 112 144 == Upgrade Notice == 113 145 146 = 1.0.1 = 147 Includes UI improvements, security fixes, and enhanced deactivation feedback logic. 148 114 149 = 1.0.0 = 115 150 Initial release of Cross Site Copy Field for ACF.
Note: See TracChangeset
for help on using the changeset viewer.