Changeset 2934107
- Timestamp:
- 07/04/2023 08:07:12 PM (3 years ago)
- Location:
- safety-exit
- Files:
-
- 10 added
- 2 deleted
- 14 edited
- 1 copied
-
tags/1.6.5 (copied) (copied from safety-exit/trunk)
-
tags/1.6.5/assets/css/admin.css (modified) (1 diff)
-
tags/1.6.5/assets/css/frontend.css (modified) (1 diff)
-
tags/1.6.5/assets/js/admin.js (modified) (2 diffs)
-
tags/1.6.5/assets/sass (deleted)
-
tags/1.6.5/lib/views/button-settings.php (modified) (1 diff)
-
tags/1.6.5/lib/views/frontend-button.php (modified) (1 diff)
-
tags/1.6.5/postcss.config.js (added)
-
tags/1.6.5/readme.txt (modified) (2 diffs)
-
tags/1.6.5/safety-exit.php (modified) (1 diff)
-
tags/1.6.5/src (added)
-
tags/1.6.5/src/css (added)
-
tags/1.6.5/src/css/admin.css (added)
-
tags/1.6.5/src/css/frontend.css (added)
-
trunk/assets/css/admin.css (modified) (1 diff)
-
trunk/assets/css/frontend.css (modified) (1 diff)
-
trunk/assets/js/admin.js (modified) (2 diffs)
-
trunk/assets/sass (deleted)
-
trunk/lib/views/button-settings.php (modified) (1 diff)
-
trunk/lib/views/frontend-button.php (modified) (1 diff)
-
trunk/postcss.config.js (added)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/safety-exit.php (modified) (1 diff)
-
trunk/src (added)
-
trunk/src/css (added)
-
trunk/src/css/admin.css (added)
-
trunk/src/css/frontend.css (added)
Legend:
- Unmodified
- Added
- Removed
-
safety-exit/tags/1.6.5/assets/css/admin.css
r2837777 r2934107 1 #sftExt_color_picker_btn_bg_color, 2 #sftExt_color_picker_btn_font_color { 3 padding: 10px 20px; 4 border: 1px solid #ddd; 5 box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.07); 6 transition: background .5s linear; 7 display: inline-block; 8 color: #333; 9 text-align: center; 10 cursor: pointer; } 1 #sftExt_color_picker_btn_bg_color,#sftExt_color_picker_btn_font_color{padding:10px 20px;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);display:inline-block;color:#333;text-align:center;cursor:pointer}.sftExt_alert{color:#000000;background:#FFCCCC}.sftExt_alert th{padding-left:10px} -
safety-exit/tags/1.6.5/assets/css/frontend.css
r2837777 r2934107 1 #sftExt-frontend-button { 2 position: fixed; 3 display: inline-block; 4 cursor: pointer; 5 z-index: 999999999999999999; 6 left: 20px; 7 top: 20px; 8 padding: 10px 20px; 9 font-family: inherit; 10 width: 25px; 11 height: 25px; } 12 #sftExt-frontend-button.round { 13 border-radius: 50%; 14 padding: 10px; 15 text-align: center; 16 width: 45px; 17 height: 45px; } 18 #sftExt-frontend-button.round > i { 19 position: relative; 20 display: block; 21 font-size: 25px; 22 top: 50%; 23 transform: translateY(-50%); } 24 #sftExt-frontend-button.square { 25 border-radius: 0; 26 padding: 10px; 27 text-align: center; 28 width: 45px; 29 height: 45px; } 30 #sftExt-frontend-button.square > i { 31 position: relative; 32 display: block; 33 font-size: 25px; 34 top: 50%; 35 transform: translateY(-50%); } 36 #sftExt-frontend-button.rectangle { 37 padding: 10px 20px; 38 height: auto; 39 width: auto; 40 display: inline-flex; 41 flex-direction: column; } 42 #sftExt-frontend-button.rectangle:before, #sftExt-frontend-button.rectangle:after { 43 content: ''; 44 flex: 1; } 45 #sftExt-frontend-button.rectangle .sftExt-inner { 46 position: relative; 47 text-align: center; } 48 #sftExt-frontend-button.rectangle .sftExt-inner > i { 49 margin-right: 10px; } 50 #sftExt-frontend-button.rectangle .sftExt-inner:before { 51 position: absolute; 52 left: 0; 53 top: 0; 54 height: 20px; 55 width: 20px; } 56 #sftExt-frontend-button.bottom { 57 top: auto; 58 bottom: 20px; } 59 #sftExt-frontend-button.top { 60 top: 20px; } 61 #sftExt-frontend-button.right { 62 left: auto; 63 right: 20px; } 64 #sftExt-frontend-button.left { 65 left: 20px; } 1 #sftExt-frontend-button{position:fixed;border:none;display:inline-block;cursor:pointer;z-index:9999;left:20px;top:20px;padding:10px 20px;font-family:inherit;width:25px;height:25px}@media screen,speech{#sftExt-frontend-button .sr-only{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}}#sftExt-frontend-button.round{border-radius:50%;padding:10px;text-align:center;width:45px;height:45px}#sftExt-frontend-button.round>i{position:relative;display:block;font-size:25px;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}#sftExt-frontend-button.square{border-radius:0;padding:10px;text-align:center;width:45px;height:45px}#sftExt-frontend-button.square>i{position:relative;display:block;font-size:25px;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}#sftExt-frontend-button.rectangle{padding:10px 20px;height:auto;width:auto;display:-webkit-inline-box;display:-webkit-inline-flex;display:-moz-inline-box;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-moz-box-orient:vertical;-moz-box-direction:normal;flex-direction:column}#sftExt-frontend-button.rectangle:before,#sftExt-frontend-button.rectangle:after{content:'';-webkit-box-flex:1;-webkit-flex:1;-moz-box-flex:1;flex:1}#sftExt-frontend-button.rectangle .sftExt-inner{position:relative;text-align:center}#sftExt-frontend-button.rectangle .sftExt-inner>i{margin-right:10px}#sftExt-frontend-button.rectangle .sftExt-inner:before{position:absolute;left:0;top:0;height:20px;width:20px}#sftExt-frontend-button.bottom{top:auto;bottom:20px}#sftExt-frontend-button.top{top:20px}#sftExt-frontend-button.right{left:auto;right:20px}#sftExt-frontend-button.left{left:20px} -
safety-exit/tags/1.6.5/assets/js/admin.js
r2837777 r2934107 1 function calculateContrastRatio(color1, color2) { 2 function parseColor(colorString) { 3 const colorArray = colorString.match(/\d+/g); 4 return colorArray.map(Number); 5 } 6 7 function getLuminance(color) { 8 const normalizedColor = color.map(value => { 9 value /= 255; 10 if (value <= 0.03928) { 11 return value / 12.92; 12 } else { 13 return Math.pow((value + 0.055) / 1.055, 2.4); 14 } 15 }); 16 17 return 0.2126 * normalizedColor[0] + 0.7152 * normalizedColor[1] + 0.0722 * normalizedColor[2]; 18 } 19 20 const colorArray1 = parseColor(color1); 21 const colorArray2 = parseColor(color2); 22 23 const luminance1 = getLuminance(colorArray1); 24 const luminance2 = getLuminance(colorArray2); 25 26 const ratio = (Math.max(luminance1, luminance2) + 0.05) / (Math.min(luminance1, luminance2) + 0.05); 27 28 const aaThreshold = 4.5; 29 const aaaThreshold = 7; 30 31 const passesAA = ratio >= aaThreshold; 32 const passesAAA = ratio >= aaaThreshold; 33 34 return { passesAA, passesAAA }; 35 } 36 37 38 function calcContrastError(color1, color2) { 39 const targetElement = document.querySelector('.sftExt_type'); 40 41 // Insert the new row before the target element 42 let accessibilityResults = calculateContrastRatio(color1, color2); 43 if (accessibilityResults.passesAA && accessibilityResults.passesAAA) { 44 if (document.querySelector('.sftExt_alert')) document.querySelector('.sftExt_alert').remove(); 45 return; 46 } 47 48 // Create a new table row element 49 const newRow = document.createElement('tr'); 50 newRow.classList.add('sftExt_alert'); 51 newRow.innerHTML = `<th>Warning:</th><td>The contrast ratio between the background color and text color does not meet the accessibility standards.<br/>AA: ${accessibilityResults.passesAA ? 'Passing' : 'Failing'}<br/>AAA: ${accessibilityResults.passesAAA ? 'Passing' : 'Failing'}`; 52 53 54 if (targetElement && targetElement.parentNode) { 55 if (document.querySelector('.sftExt_alert')) document.querySelector('.sftExt_alert').remove(); 56 targetElement.parentNode.insertBefore(newRow, targetElement); 57 } 58 } 59 60 1 61 jQuery(function($){ 2 62 … … 46 106 color:$('#sftExt_bg_color').val() 47 107 }); 108 109 110 var font_color_picker = new Picker({ 111 parent: $fontParent, 112 color:$('#sftExt_font_color').val() 113 }); 48 114 bg_color_picker.onChange = function(color) { 49 115 $('#sftExt_bg_color').val(color.rgbaString); 116 calcContrastError(color.rgbaString, font_color_picker.color.rgbaString); 50 117 $('#sftExt_color_picker_btn_bg_color').css({ 51 118 'background-color': color.rgbaString 52 119 }); 53 120 }; 54 var font_color_picker = new Picker({55 parent: $fontParent,56 color:$('#sftExt_font_color').val()57 });58 121 font_color_picker.onChange = function(color) { 59 122 $('#sftExt_font_color').val(color.rgbaString); 123 calcContrastError(bg_color_picker.color.rgbaString, color.rgbaString); 60 124 $('#sftExt_color_picker_btn_font_color').css({ 61 125 'background-color': color.rgbaString 62 126 }); 63 127 }; 128 calcContrastError(bg_color_picker.color.rgbaString, font_color_picker.color.rgbaString); 64 129 }) 65 130 // sftExt_icon_display -
safety-exit/tags/1.6.5/lib/views/button-settings.php
r2837777 r2934107 11 11 </form> 12 12 </div> 13 -
safety-exit/tags/1.6.5/lib/views/frontend-button.php
r2838741 r2934107 62 62 } 63 63 </style> 64 < asideid="sftExt-frontend-button" class="<?= $classes; ?>" data-new-tab="<?= $sftExtSettings['sftExt_new_tab_url']; ?>" data-url="<?= $sftExtSettings['sftExt_current_tab_url']; ?>">64 <button id="sftExt-frontend-button" class="<?= $classes; ?>" data-new-tab="<?= $sftExtSettings['sftExt_new_tab_url']; ?>" data-url="<?= $sftExtSettings['sftExt_current_tab_url']; ?>"> 65 65 <?php if($sftExtSettings['sftExt_type'] != 'round' && $sftExtSettings['sftExt_type'] != 'square') { ?> 66 66 <div class="sftExt-inner"><?= $icon; ?><?= $sftExtSettings['sftExt_rectangle_text']; ?></div> 67 67 <?php }else{ ?> 68 <div class="sr-only">Safety Exit</div> 68 69 <?= $icon; ?> 69 70 <?php } ?> 70 </ aside>71 </button> 71 72 72 73 <?php endif; ?> -
safety-exit/tags/1.6.5/readme.txt
r2838741 r2934107 4 4 Donate link: https://tomascordero.com 5 5 Requires at least: 5.2.0 6 Tested up to: 6. 1.16 Tested up to: 6.2.2 7 7 Requires PHP: 5.2.4 8 Stable tag: 1.6. 48 Stable tag: 1.6.5 9 9 License: GPL-2.0+ 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 48 48 49 49 == Changelog == 50 1.6.5: 51 - Refactor: Build pipeline 52 - Improved: Accessibility 50 53 1.6.4: 51 54 - Fix: Fixed Divi bug -
safety-exit/tags/1.6.5/safety-exit.php
r2838741 r2934107 12 12 * Plugin URI: 13 13 * Description: This plugin will inject a button on your website that will allow a website user to quickly navigate away from your website. 14 * Version: 1.6. 414 * Version: 1.6.5 15 15 * Author: Tomas Cordero 16 16 * Author URI: https://tomascordero.com -
safety-exit/trunk/assets/css/admin.css
r2837777 r2934107 1 #sftExt_color_picker_btn_bg_color, 2 #sftExt_color_picker_btn_font_color { 3 padding: 10px 20px; 4 border: 1px solid #ddd; 5 box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.07); 6 transition: background .5s linear; 7 display: inline-block; 8 color: #333; 9 text-align: center; 10 cursor: pointer; } 1 #sftExt_color_picker_btn_bg_color,#sftExt_color_picker_btn_font_color{padding:10px 20px;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);display:inline-block;color:#333;text-align:center;cursor:pointer}.sftExt_alert{color:#000000;background:#FFCCCC}.sftExt_alert th{padding-left:10px} -
safety-exit/trunk/assets/css/frontend.css
r2837777 r2934107 1 #sftExt-frontend-button { 2 position: fixed; 3 display: inline-block; 4 cursor: pointer; 5 z-index: 999999999999999999; 6 left: 20px; 7 top: 20px; 8 padding: 10px 20px; 9 font-family: inherit; 10 width: 25px; 11 height: 25px; } 12 #sftExt-frontend-button.round { 13 border-radius: 50%; 14 padding: 10px; 15 text-align: center; 16 width: 45px; 17 height: 45px; } 18 #sftExt-frontend-button.round > i { 19 position: relative; 20 display: block; 21 font-size: 25px; 22 top: 50%; 23 transform: translateY(-50%); } 24 #sftExt-frontend-button.square { 25 border-radius: 0; 26 padding: 10px; 27 text-align: center; 28 width: 45px; 29 height: 45px; } 30 #sftExt-frontend-button.square > i { 31 position: relative; 32 display: block; 33 font-size: 25px; 34 top: 50%; 35 transform: translateY(-50%); } 36 #sftExt-frontend-button.rectangle { 37 padding: 10px 20px; 38 height: auto; 39 width: auto; 40 display: inline-flex; 41 flex-direction: column; } 42 #sftExt-frontend-button.rectangle:before, #sftExt-frontend-button.rectangle:after { 43 content: ''; 44 flex: 1; } 45 #sftExt-frontend-button.rectangle .sftExt-inner { 46 position: relative; 47 text-align: center; } 48 #sftExt-frontend-button.rectangle .sftExt-inner > i { 49 margin-right: 10px; } 50 #sftExt-frontend-button.rectangle .sftExt-inner:before { 51 position: absolute; 52 left: 0; 53 top: 0; 54 height: 20px; 55 width: 20px; } 56 #sftExt-frontend-button.bottom { 57 top: auto; 58 bottom: 20px; } 59 #sftExt-frontend-button.top { 60 top: 20px; } 61 #sftExt-frontend-button.right { 62 left: auto; 63 right: 20px; } 64 #sftExt-frontend-button.left { 65 left: 20px; } 1 #sftExt-frontend-button{position:fixed;border:none;display:inline-block;cursor:pointer;z-index:9999;left:20px;top:20px;padding:10px 20px;font-family:inherit;width:25px;height:25px}@media screen,speech{#sftExt-frontend-button .sr-only{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}}#sftExt-frontend-button.round{border-radius:50%;padding:10px;text-align:center;width:45px;height:45px}#sftExt-frontend-button.round>i{position:relative;display:block;font-size:25px;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}#sftExt-frontend-button.square{border-radius:0;padding:10px;text-align:center;width:45px;height:45px}#sftExt-frontend-button.square>i{position:relative;display:block;font-size:25px;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}#sftExt-frontend-button.rectangle{padding:10px 20px;height:auto;width:auto;display:-webkit-inline-box;display:-webkit-inline-flex;display:-moz-inline-box;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-moz-box-orient:vertical;-moz-box-direction:normal;flex-direction:column}#sftExt-frontend-button.rectangle:before,#sftExt-frontend-button.rectangle:after{content:'';-webkit-box-flex:1;-webkit-flex:1;-moz-box-flex:1;flex:1}#sftExt-frontend-button.rectangle .sftExt-inner{position:relative;text-align:center}#sftExt-frontend-button.rectangle .sftExt-inner>i{margin-right:10px}#sftExt-frontend-button.rectangle .sftExt-inner:before{position:absolute;left:0;top:0;height:20px;width:20px}#sftExt-frontend-button.bottom{top:auto;bottom:20px}#sftExt-frontend-button.top{top:20px}#sftExt-frontend-button.right{left:auto;right:20px}#sftExt-frontend-button.left{left:20px} -
safety-exit/trunk/assets/js/admin.js
r2837777 r2934107 1 function calculateContrastRatio(color1, color2) { 2 function parseColor(colorString) { 3 const colorArray = colorString.match(/\d+/g); 4 return colorArray.map(Number); 5 } 6 7 function getLuminance(color) { 8 const normalizedColor = color.map(value => { 9 value /= 255; 10 if (value <= 0.03928) { 11 return value / 12.92; 12 } else { 13 return Math.pow((value + 0.055) / 1.055, 2.4); 14 } 15 }); 16 17 return 0.2126 * normalizedColor[0] + 0.7152 * normalizedColor[1] + 0.0722 * normalizedColor[2]; 18 } 19 20 const colorArray1 = parseColor(color1); 21 const colorArray2 = parseColor(color2); 22 23 const luminance1 = getLuminance(colorArray1); 24 const luminance2 = getLuminance(colorArray2); 25 26 const ratio = (Math.max(luminance1, luminance2) + 0.05) / (Math.min(luminance1, luminance2) + 0.05); 27 28 const aaThreshold = 4.5; 29 const aaaThreshold = 7; 30 31 const passesAA = ratio >= aaThreshold; 32 const passesAAA = ratio >= aaaThreshold; 33 34 return { passesAA, passesAAA }; 35 } 36 37 38 function calcContrastError(color1, color2) { 39 const targetElement = document.querySelector('.sftExt_type'); 40 41 // Insert the new row before the target element 42 let accessibilityResults = calculateContrastRatio(color1, color2); 43 if (accessibilityResults.passesAA && accessibilityResults.passesAAA) { 44 if (document.querySelector('.sftExt_alert')) document.querySelector('.sftExt_alert').remove(); 45 return; 46 } 47 48 // Create a new table row element 49 const newRow = document.createElement('tr'); 50 newRow.classList.add('sftExt_alert'); 51 newRow.innerHTML = `<th>Warning:</th><td>The contrast ratio between the background color and text color does not meet the accessibility standards.<br/>AA: ${accessibilityResults.passesAA ? 'Passing' : 'Failing'}<br/>AAA: ${accessibilityResults.passesAAA ? 'Passing' : 'Failing'}`; 52 53 54 if (targetElement && targetElement.parentNode) { 55 if (document.querySelector('.sftExt_alert')) document.querySelector('.sftExt_alert').remove(); 56 targetElement.parentNode.insertBefore(newRow, targetElement); 57 } 58 } 59 60 1 61 jQuery(function($){ 2 62 … … 46 106 color:$('#sftExt_bg_color').val() 47 107 }); 108 109 110 var font_color_picker = new Picker({ 111 parent: $fontParent, 112 color:$('#sftExt_font_color').val() 113 }); 48 114 bg_color_picker.onChange = function(color) { 49 115 $('#sftExt_bg_color').val(color.rgbaString); 116 calcContrastError(color.rgbaString, font_color_picker.color.rgbaString); 50 117 $('#sftExt_color_picker_btn_bg_color').css({ 51 118 'background-color': color.rgbaString 52 119 }); 53 120 }; 54 var font_color_picker = new Picker({55 parent: $fontParent,56 color:$('#sftExt_font_color').val()57 });58 121 font_color_picker.onChange = function(color) { 59 122 $('#sftExt_font_color').val(color.rgbaString); 123 calcContrastError(bg_color_picker.color.rgbaString, color.rgbaString); 60 124 $('#sftExt_color_picker_btn_font_color').css({ 61 125 'background-color': color.rgbaString 62 126 }); 63 127 }; 128 calcContrastError(bg_color_picker.color.rgbaString, font_color_picker.color.rgbaString); 64 129 }) 65 130 // sftExt_icon_display -
safety-exit/trunk/lib/views/button-settings.php
r2837777 r2934107 11 11 </form> 12 12 </div> 13 -
safety-exit/trunk/lib/views/frontend-button.php
r2838741 r2934107 62 62 } 63 63 </style> 64 < asideid="sftExt-frontend-button" class="<?= $classes; ?>" data-new-tab="<?= $sftExtSettings['sftExt_new_tab_url']; ?>" data-url="<?= $sftExtSettings['sftExt_current_tab_url']; ?>">64 <button id="sftExt-frontend-button" class="<?= $classes; ?>" data-new-tab="<?= $sftExtSettings['sftExt_new_tab_url']; ?>" data-url="<?= $sftExtSettings['sftExt_current_tab_url']; ?>"> 65 65 <?php if($sftExtSettings['sftExt_type'] != 'round' && $sftExtSettings['sftExt_type'] != 'square') { ?> 66 66 <div class="sftExt-inner"><?= $icon; ?><?= $sftExtSettings['sftExt_rectangle_text']; ?></div> 67 67 <?php }else{ ?> 68 <div class="sr-only">Safety Exit</div> 68 69 <?= $icon; ?> 69 70 <?php } ?> 70 </ aside>71 </button> 71 72 72 73 <?php endif; ?> -
safety-exit/trunk/readme.txt
r2838741 r2934107 4 4 Donate link: https://tomascordero.com 5 5 Requires at least: 5.2.0 6 Tested up to: 6. 1.16 Tested up to: 6.2.2 7 7 Requires PHP: 5.2.4 8 Stable tag: 1.6. 48 Stable tag: 1.6.5 9 9 License: GPL-2.0+ 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 48 48 49 49 == Changelog == 50 1.6.5: 51 - Refactor: Build pipeline 52 - Improved: Accessibility 50 53 1.6.4: 51 54 - Fix: Fixed Divi bug -
safety-exit/trunk/safety-exit.php
r2838741 r2934107 12 12 * Plugin URI: 13 13 * Description: This plugin will inject a button on your website that will allow a website user to quickly navigate away from your website. 14 * Version: 1.6. 414 * Version: 1.6.5 15 15 * Author: Tomas Cordero 16 16 * Author URI: https://tomascordero.com
Note: See TracChangeset
for help on using the changeset viewer.