Changeset 2407349
- Timestamp:
- 10/27/2020 08:02:22 AM (5 years ago)
- File:
-
- 1 edited
-
gf-move-fields/trunk/index.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
gf-move-fields/trunk/index.php
r2407344 r2407349 1 1 <?php 2 2 /* 3 Plugin Name: Mo bilizeForms4 Description: Auto update any form to look better on desktop and mobile devices3 Plugin Name: Move Fields for Gravity Forms 4 Description: Fast Move Fields for Gravity Forms 5 5 Author: Plamen Marinov 6 6 Version: 1.0 7 Author URI: https:// mobizeforms.webwapstudio.com/7 Author URI: https://www.webwapstudio.com/grafity_forms_move_field.html 8 8 */ 9 9 10 10 if ( ! defined( 'ABSPATH' ) ) exit; 11 11 12 if( ! class_exists( ' Mobize_Forms' ) ):12 if( ! class_exists( 'GF_Move_Fields' ) ): 13 13 /** 14 * Main The Mo bize Forms class14 * Main The Move Fields class 15 15 */ 16 class Mobize_Forms {16 class GF_Move_Fields { 17 17 public function __construct() {} 18 18 public function load_plugin() { 19 if ( !is_admin()){20 add_action(' wp_footer', array($this,'update_form'));19 if (is_admin()){ 20 add_action('admin_footer', array($this,'update_edit_form')); 21 21 } 22 22 } 23 public function update_form() { 23 public function update_edit_form() { 24 global $pagenow; 25 if ( isset($_GET['page']) ) { 26 if (sanitize_text_field($_GET['page']) == 'gf_edit_forms') { 24 27 ?> 25 28 <style> 26 .ui-corner-all { 27 border-radius: .3125em; 28 background-clip: padding-box; 29 .ptm-button-red {display:block !important;background:rgb(212, 102, 44) !important;color:#fff !important;border-color: rgb(202, 92, 34) !important;margin-bottom:10px !important;text-align:center !important;position:relative !important} 30 .ptm-button-red:hover {background:rgb(202, 92, 34) !important} 31 .ptm-button-red i {position:absolute;left:10px;top:8px} 32 #ptm-gf-move-field { 33 position:fixed; 34 min-width: 500px; 35 border-right:2px solid #23282d; 36 border-bottom:2px solid #23282d; 37 padding:5px; 38 background-color: rgb(255 255 224); 39 display:none; 29 40 } 30 .ui-shadow { 31 box-shadow: 0 1px 3px rgba(0,0,0,.15); 32 } 33 .ui-sel-btn { 34 margin: 0; 35 padding: .3em 0.5em; 36 padding-right: 1em; 37 display: block; 38 position: relative; 39 text-align: center; 40 text-overflow: ellipsis; 41 overflow: hidden; 42 white-space: nowrap; 43 cursor: pointer; 44 box-sizing: border-box; 45 width: 100%; 46 background-color: #f6f6f6; 47 text-decoration: none !important; 48 } 49 .ui-sel-btn-nr { 50 border-bottom-left-radius: 0 !important; 51 border-bottom-right-radius: 0 !important; 52 border-bottom: none !important; 41 .select-field-title {font-weight:bold;margin-right:10px} 42 #ptm-gf-move-field .fa {color:#f00;cursor:pointer;position:absolute;top:3px;right:5px;font-size:24px } 43 .ptm-gf-move-local-field { 44 border: 1px solid #d2e0eb; 45 display:none; 46 position:absolute; 47 padding:0 5px 5px 5px;background:#ffe 53 48 } 54 49 55 .ui-sel-btn:hover { 56 background-color: #ededed; 57 } 58 .ui-border-all { 59 border: 1px solid #ddd; 60 } 61 .ui-left { 62 text-align: left; 63 } 64 .ui-btn-icon-right { 65 padding-right: 2.5em; 66 } 67 .ui-collapsible-content { 68 background-color: #ffe; 69 border-left: 1px solid #ddd; 70 border-right: 1px solid #ddd; 71 text-shadow: 0 1px 0 #f3f3f3; 72 margin: 0; 73 position: relative; 74 display: none; 75 } 76 .ui-corner-bottom { 77 border-bottom-right-radius: .3125em; 78 border-bottom-left-radius: .3125em; 79 border: 1px solid #ddd; 80 } 81 .ui-btn-icon-right::after { 82 right: .5625em; 50 .ptm-gf-move-local-field .fa {color:#f00;cursor:pointer;position:absolute;top:3px;right:5px;font-size:24px } 51 #ptm-gf-move-local-field {padding:0 5px 5px 5px;background:#ffe} 52 </style> 53 <script> 54 window.onload = function() { 55 document.getElementById("sidebarmenu1").insertAdjacentHTML("afterend", '<span id="ptm-btn-add" class="button button-large ptm-button-red" onClick="ptmOpenMoveField()"><i class="fa fa-sort fa-lg"></i>Move Field</span>'); 56 var html='<div id="ptm-gf-move-field">'; 57 html+='<div style="position:relative">'; 58 html+='<div id="ptm-gf-move-field-content"></div>'; 59 html+='<i class="fa fa-times-rectangle" onClick="ptmCloseSelectField()"></i>'; 60 html+='</div></div>'; 61 document.body.insertAdjacentHTML("beforeend",html); 62 SortFields(); 83 63 } 84 64 85 .ui-btn-icon-left::after, .ui-btn-icon-right::after, .ui-btn-icon-top::after, .ui-btn-icon-bottom::after, .ui-btn-icon-notext::after { 86 background-color: rgba(0,0,0,.3); 87 background-position: center center; 88 background-repeat: no-repeat; 89 border-radius: 1em; 90 } 91 .ui-btn-icon-left::after, .ui-btn-icon-right::after, .ui-btn-icon-top::after, .ui-btn-icon-bottom::after, .ui-btn-icon-notext::after { 92 content: ""; 93 position: absolute; 94 display: block; 95 width: 18px !important; 96 height: 18px !important; 97 } 98 .ui-btn-icon-notext::after, .ui-btn-icon-left::after, .ui-btn-icon-right::after { 99 top: 50%; 100 margin-top: -9px; 101 } 102 .ui-btn-icon-right::after { 103 right: .5625em; 104 } 105 .ui-btn-icon-left { 106 padding-left: 2.5em !important; 107 } 108 .ui-radio, .ui-checkbox { 109 margin: 0; 110 margin-top: 0px; 111 text-align: left; 112 white-space: normal; 113 display: block; 114 border-bottom: 1px solid #ddd; 115 cursor: pointer; 116 position: relative; 117 font-size: 16px; 118 background-color: #ffd; 65 function ptmOpenMoveField() { 66 UpdateFormObject(); 67 var rect = document.getElementById('adminmenuwrap').getBoundingClientRect(); 68 var left=rect.width; 69 rect = document.getElementById('wpadminbar').getBoundingClientRect(); 70 var top=rect.height; 71 var fields=form.fields; 72 var html='<span class="select-field-title">Move field:</span><select id="ptm-select-field" onChange="ptmGFSelectField()">'; 73 html+='<option value="">Select Field</option>'; 74 for (var i=0;i<fields.length;i++) { 75 html+='<option value="'+i+'">ID '+fields[i].id+' - ' + fields[i].label + '</option>'; 76 } 77 html+='</select>'; 78 document.getElementById("ptm-gf-move-field-content").innerHTML=html; 79 document.getElementById("ptm-gf-move-field").style.left=left+"px"; 80 document.getElementById("ptm-gf-move-field").style.top=top+"px"; 81 document.getElementById("ptm-gf-move-field").style.display="block"; 82 document.getElementById("ptm-btn-add").style.visibility="hidden"; 119 83 } 120 84 121 .ui-checkbox-off::after, .ui-radio-off::after { 122 opacity: .3 !important; 123 } 124 .ui-btn-icon-left::after { 125 left: .5625em; 85 function ptmCloseSelectField() { 86 document.getElementById("ptm-gf-move-field-content").innerHTML=''; 87 document.getElementById("ptm-gf-move-field").style.display="none"; 88 document.getElementById("ptm-btn-add").style.visibility="visible"; 126 89 } 127 90 128 .ui-icon-carat-d::after {background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2211.949%2C3.404%207%2C8.354%202.05%2C3.404%20-0.071%2C5.525%207%2C12.596%2014.07%2C5.525%20%22%2F%3E%3C%2Fsvg%3E"); 91 function ptmGFSelectField() { 92 var ii=document.getElementById("ptm-select-field").value; 93 if (ii=='') { 94 return; 95 } 96 var html='<div><span class="select-field-title">Move field:</span>'+form.fields[ii].id+' - ' + form.fields[ii].label + '</div>'; 97 html+='<div style="margin-top:10px">'; 98 html+='<span class="select-field-title">Before field:</span><select id="ptm-select-field" onChange="ptmGFMoveField('+"'"+ii+"'"+')">'; 99 html+='<option value="">Select Field</option>'; 100 var fields=form.fields; 101 for (var i=0;i<fields.length;i++) { 102 if (i != ii) { 103 html+='<option value="'+i+'">ID '+fields[i].id+' - ' + fields[i].label + '</option>'; 104 } 105 } 106 html+='</select>'; 107 html+='</div>'; 108 document.getElementById("ptm-gf-move-field-content").innerHTML=html; 129 109 } 130 .ui-icon-carat-u::after {background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%222.051%2C10.596%207%2C5.646%2011.95%2C10.596%2014.07%2C8.475%207%2C1.404%20-0.071%2C8.475%20%22%2F%3E%3C%2Fsvg%3E"); 131 } 132 .ui-checkbox-on::after {background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2214%2C4%2011%2C1%205.003%2C6.997%203%2C5%200%2C8%204.966%2C13%204.983%2C12.982%205%2C13%20%22%2F%3E%3C%2Fsvg%3E"); 133 } 134 .ui-radio-on::after { 135 background-image: none; 136 background-color: #fff; 137 border-width: 5px; 138 border-style: solid; 139 border-color: #38c; 140 } 141 142 .ui-pointer {cursor:pointer} 143 144 .ui-checkbox-off::after, .ui-checkbox-on::after { 145 border-radius: .1875em; 146 } 147 .ui-checkbox-on::after { 148 background-color: #38c !important; 149 border-color: #38c !important; 150 color: #fff !important; 151 text-shadow: 0 1px 0 #059 !important; 152 } 153 154 select {display:none} 155 156 </style> 157 <script> 158 function print_r(arr,level) { 159 var dumped_text = ""; 160 if(!level) level = 0; 161 162 //The padding given at the beginning of the line. 163 var level_padding = ""; 164 for(var j=0;j<level+1;j++) level_padding += " "; 165 166 if(typeof(arr) == 'object') { //Array/Hashes/Objects 167 for(var item in arr) { 168 var value = arr[item]; 169 170 if(typeof(value) == 'object') { //If it is an array, 171 dumped_text += level_padding + "'" + item + "' ...\n"; 172 dumped_text += print_r(value,level+1); 173 } else { 174 dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n"; 175 } 176 } 177 } else { //Stings/Chars/Numbers etc. 178 dumped_text = "===>"+arr+"<===("+typeof(arr)+")"; 179 } 180 return dumped_text; 181 } 182 ///////////////////////////////////////////////////////// 183 window.onload = function() { 184 var elements = document.getElementsByTagName("select"); 185 for (var i=0;i<elements.length;i++) { 186 updateSelect(elements[i],i); 110 function ptmGFMoveField(from) { 111 var to = document.getElementById("ptm-select-field").value; 112 if (to=='') { 113 return; 187 114 } 188 189 var elements = document.getElementsByTagName("input"); 190 for (var i=0;i<elements.length;i++) { 191 if (elements[i].type=='radio') { 192 updateRadio(elements[i]); 193 } else if (elements[i].type=='checkbox') { 194 //updateCheckbox(elements[i],i); 195 } 196 } 197 } 198 function hasClass(element, className) {return (' ' + element.className + ' ').indexOf(' ' + className+ ' ') > -1;} 199 200 function updateSelect(el,id) { 201 var val=''; 202 var html='<div id="sel-box-'+id+'" class="ui-collapsible ui-corner-all ui-shadow">'; 203 html+='<div id="sel-'+id+'" onClick="openSelect('+"'"+id+"'"+')" '; 204 html+='class="ui-sel-btn ui-border-all ui-corner-all ui-btn-icon-right ui-left ui-icon-carat-d">'; 205 if (el.value === "") { 206 html+=el.options[0].text; 207 } else { 208 html+=el.options[el.selectedIndex].text; 209 val=el.options[el.selectedIndex].value; 210 } 211 html+='</div>'; 212 html+='<div id="sel-list-'+id+'" class="ui-collapsible-content ui-corner-bottom">'; 213 for (var i=0; i < el.options.length;i++) { 214 html+='<div class="ui-radio ui-btn-icon-left '; 215 if (val==el.options[i].value) { 216 html+='ui-radio-on'; 217 } else { 218 html+='ui-radio-off'; 219 } 220 html+='" onClick="selectOption('+"'"+id+"','"+el.options[i].value+"'"+')">'+el.options[i].text+'</div>' 221 } 222 223 html+="</div>"; 224 el.insertAdjacentHTML('afterend',html); 225 } 226 227 function openSelect(id) { 228 if (hasClass(document.getElementById('sel-'+id),'ui-icon-carat-d')) { 229 closeAllSelect(); 230 document.getElementById('sel-'+id).classList.remove('ui-icon-carat-d'); 231 document.getElementById('sel-'+id).classList.add('ui-icon-carat-u'); 232 document.getElementById('sel-'+id).classList.add('ui-sel-btn-nr'); 233 document.getElementById('sel-list-'+id).style.display='block'; 234 } else { 235 document.getElementById('sel-'+id).classList.remove('ui-icon-carat-u'); 236 document.getElementById('sel-'+id).classList.remove('ui-sel-btn-nr'); 237 document.getElementById('sel-'+id).classList.add('ui-icon-carat-d'); 238 document.getElementById('sel-list-'+id).style.display='none'; 239 } 240 } 241 242 function closeAllSelect() { 243 var els=document.querySelectorAll('.ui-sel-btn'); 244 for (var i=0; i<els.length;i++) { 245 if (hasClass(els[i],'ui-icon-carat-u')) { 246 els[i].classList.remove('ui-icon-carat-u'); 247 els[i].classList.remove('ui-sel-btn-nr'); 248 els[i].classList.add('ui-icon-carat-d'); 249 els[i].nextElementSibling.style.display='none'; 250 } 251 } 252 } 253 254 function selectOption(id,val) { 255 var sel=document.getElementById('sel-'+id).parentElement.previousElementSibling; 256 var text=''; 257 for (var i=0;i<sel.options.length;i++) { 258 if (sel.options[i].value==val) { 259 sel.selectedIndex=i; 260 text=sel.options[i].text; 261 } 262 } 263 document.getElementById('sel-'+id).innerHTML=text; 264 var els=document.querySelectorAll('#sel-list-'+id+' .ui-radio'); 265 for (var i=0; i < els.length;i++) { 266 if (hasClass(els[i],"ui-radio-on")) { 267 els[i].classList.remove('ui-radio-on'); 268 els[i].classList.add('ui-radio-off'); 269 } 270 if (els[i].innerHTML==text) { 271 els[i].classList.remove('ui-radio-off'); 272 els[i].classList.add('ui-radio-on'); 273 } 274 } 275 closeAllSelect(); 276 } 277 278 function updateRadio(el) { 279 html='<div onclick="checkRadio('+"'"+el.id+"'"+')" id="radio-'+el.id+'" class="ui-pointer ui-btn-icon-left '; 280 if(el.checked) { 281 html+="ui-radio-on"; 282 } else { 283 html+="ui-radio-off"; 284 } 285 html+='">'; 286 html+=document.querySelector("label[for='"+el.id+"']").innerHTML; 287 html+='</div>'; 288 el.insertAdjacentHTML('afterend',html); 289 el.style.display='none'; 290 document.querySelector("label[for='"+el.id+"']").style.display='none'; 291 } 292 293 function checkRadio(id) { 294 var el=document.getElementById(id); 295 296 var els=document.getElementsByName(el.name); 297 for (var i=0;i<els.length;i++) { 298 if (hasClass(document.getElementById('radio-'+els[i].id),"ui-radio-on")) { 299 document.getElementById('radio-'+els[i].id).classList.remove("ui-radio-on"); 300 document.getElementById('radio-'+els[i].id).classList.add("ui-radio-off"); 301 } 302 } 303 document.getElementById('radio-'+id).classList.remove("ui-radio-off"); 304 document.getElementById('radio-'+id).classList.add("ui-radio-on"); 305 el.click(); 115 116 var field=jQuery('#field_'+form.fields[from].id); 117 jQuery('#field_'+form.fields[from].id).remove(); 118 jQuery(field).insertBefore('#field_'+form.fields[to].id); 119 InitializeFields(); 120 var rect = document.getElementById('field_'+form.fields[from].id).getBoundingClientRect(); 121 var top=rect.top+50; 122 window.scrollTo(0, top); 123 ptmCloseSelectField(); 306 124 } 307 125 308 126 </script> 309 127 <?php 310 128 } 129 } 311 130 } 312 131 } 313 132 endif; // End If class exists check. 314 133 315 $ mobilize_forms=new Mobize_Forms;316 add_action( 'plugins_loaded', array( $ mobilize_forms, 'load_plugin' ) );134 $gf_move_fields=new GF_Move_Fields; 135 add_action( 'plugins_loaded', array( $gf_move_fields, 'load_plugin' ) ); 317 136
Note: See TracChangeset
for help on using the changeset viewer.