Plugin Directory

Changeset 2407349


Ignore:
Timestamp:
10/27/2020 08:02:22 AM (5 years ago)
Author:
ptmbg
Message:

Update plugin

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gf-move-fields/trunk/index.php

    r2407344 r2407349  
    11<?php
    22/*
    3 Plugin Name: Mobilize Forms
    4 Description: Auto update any form to look better on desktop and mobile devices
     3Plugin Name: Move Fields for Gravity Forms
     4Description: Fast Move Fields for Gravity Forms
    55Author: Plamen Marinov
    66Version: 1.0
    7 Author URI: https://mobizeforms.webwapstudio.com/
     7Author URI: https://www.webwapstudio.com/grafity_forms_move_field.html
    88*/
    99
    1010if ( ! defined( 'ABSPATH' ) ) exit;
    1111
    12 if( ! class_exists( 'Mobize_Forms' ) ):
     12if( ! class_exists( 'GF_Move_Fields' ) ):
    1313/**
    14 * Main The Mobize Forms class
     14* Main The Move Fields class
    1515*/
    16 class Mobize_Forms {
     16class GF_Move_Fields {
    1717   public function __construct() {}
    1818   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'));
    2121      }
    2222   }
    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') {
    2427?>
    2528<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;
    2940}
    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
    5348}
    5449
    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>
     54window.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();
    8363}
    8464
    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;
     65function 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";
    11983}
    12084
    121 .ui-checkbox-off::after, .ui-radio-off::after {
    122     opacity: .3 !important;
    123 }
    124 .ui-btn-icon-left::after {
    125     left: .5625em;
     85function 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";
    12689}
    12790
    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");
     91function 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;
    129109}
    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);
     110function ptmGFMoveField(from) {
     111   var to = document.getElementById("ptm-select-field").value;
     112   if (to=='') {
     113     return;
    187114   }
    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();
    306124}
    307125
    308126</script>
    309127<?php
    310 
     128         }
     129      }
    311130   }
    312131}
    313132endif; // End If class exists check.
    314133
    315 $mobilize_forms=new Mobize_Forms;
    316 add_action( 'plugins_loaded', array( $mobilize_forms, 'load_plugin' ) );
     134$gf_move_fields=new GF_Move_Fields;
     135add_action( 'plugins_loaded', array( $gf_move_fields, 'load_plugin' ) );
    317136
Note: See TracChangeset for help on using the changeset viewer.