Plugin Directory

Changeset 2173326


Ignore:
Timestamp:
10/15/2019 12:22:05 AM (6 years ago)
Author:
modcodingcom
Message:

v.2.00

Location:
gf-mc-unique-id-generator-field/trunk
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • gf-mc-unique-id-generator-field/trunk/assets/js/editor-full.js

    r1693957 r2173326  
    1 var mc_cur_field_id = 0;
    2 
    3 function mcgfuidgen_generate_id(len,t,sep,freq,seq_start,seq_step){
    4     var separator = "",abc="",abc_len,x, i, c,s="";
    5     if (seq_start >= 0) {
    6         abc = "" +  (seq_start + seq_step);
    7     } else {
    8         if (t == "digits")
    9          abc = MCGFUIDGEN_DIGITS;
    10         else
    11         if (t == "upper")
    12          abc = MCGFUIDGEN_ABC.toUpperCase();
    13         else
    14         if (t == "lower")
    15          abc = MCGFUIDGEN_ABC.toLowerCase();
    16         else
    17         if (t == "mixed")
    18          abc = MCGFUIDGEN_ABC.toUpperCase()+MCGFUIDGEN_ABC.toLowerCase();
    19         else
    20         if (t == "upper_digits")
    21          abc = MCGFUIDGEN_DIGITS+MCGFUIDGEN_ABC.toUpperCase();
    22         else
    23         if (t == "lower_digits")
    24          abc = MCGFUIDGEN_DIGITS+MCGFUIDGEN_ABC.toLowerCase();
    25         else
    26         if (t == "mixed_digits")
    27          abc = MCGFUIDGEN_DIGITS+MCGFUIDGEN_ABC.toUpperCase()+MCGFUIDGEN_ABC.toLowerCase();
    28         else
    29          abc = MCGFUIDGEN_DIGITS+MCGFUIDGEN_ABC.toUpperCase()+MCGFUIDGEN_ABC.toLowerCase()+MCGFUIDGEN_SYMBOLS;
    30     }
    31     if (sep == "space") separator = " ";
    32     else
    33     if (sep == "dash") separator = "-";
    34     else
    35     if (sep == "comma") separator = ",";
    36     else
    37     if (sep == "dot") separator = ".";
    38     else
    39     if (sep == "quote") separator = "'";
    40     else
    41     if (sep == "quote2") separator = """;
    42     else
    43     if (sep == "underscore") separator = "_";
    44     abc_len = abc.length;
    45     var dt = new Date();
    46 // console.log("rand len = "+len+" separator = "+separator+" freq = "+freq);
    47 // console.log(abc);
    48     for (i = 1; i <= len; i++ ) {
    49         if (seq_start >= 0) {
    50             c = abc.substr(i-1,1);
    51         } else {
    52             x = Math.round(Math.random() * 1000000 + dt.getMilliseconds() ) % abc_len;
    53 // console.log("i = "+i+" x = "+x);
    54             c = abc.substr(x,1);
    55         }
    56 // console.log("c = "+c);
    57         s += c;
    58         if (freq > 0)
    59             if ((((len-i) % freq) == 0) && (i < len))
    60              s += separator;
    61     }
    62 // console.log("res = "+s);
    63     return s;
     1function mcgfuidgen_render_preview(field_id, data){
     2    var prefix = "#field_" +field_id+" ";
     3    jQuery.post(MCGFUIDGEN_SETTINGS.ajax_url, {
     4        "action":       "mcgfuidgen_generate_value_preview",
     5        "form_id":      parseInt(jQuery(".gf_admin_page_formid").html().replace("ID:").trim()),
     6        "field_id":     field_id,
     7        "settings":     data
     8    }, function (s){       
     9    jQuery(prefix + ".mcgfuidgen_preview").remove();
     10    jQuery(prefix + ".gfield_description").append('<div class="mcgfuidgen_preview"><label>Preview: </label><span class="mcgfuidgen_value"></span></div>');
     11        jQuery(".mcgfuidgen_preview .mcgfuidgen_value").html(s);
     12    });
    6413}
    6514
    66 function mcgfuidgen_render_preview(){
    67     var prefix = "#field_"+mc_cur_field_id+" ";
    68 // console.log(prefix);
    69     var len = parseInt(jQuery(prefix + ".field_uidgen_length").val());
    70 // console.log("len = "+len+" adr = "+prefix + ".field_uidgen_length");
    71     if (isNaN(len) || (len < 1) || (len > 100)) len = 6;
    72     var pr_type = jQuery(prefix + ".field_uidgen_render").val();
    73     var s = "";
    74     if (pr_type == "html")  {
    75         s += jQuery(prefix + ".field_uidgen_render_custom_html").val();
    76         if (s.indexOf(MCGFUIDGEN_UNQIUEID_TAG) < 0) s += MCGFUIDGEN_UNQIUEID_TAG;
    77     } else
    78     if (pr_type == "span")  {
    79         s = '<span>'+MCGFUIDGEN_UNQIUEID_TAG+'</span>';
    80     } else
    81     if (pr_type == "div")  {
    82         s = '<div>'+MCGFUIDGEN_UNQIUEID_TAG+'</div>';
    83     } else
    84     if (pr_type == "hidden")  {
    85         s = '<input type="hidden" value="'+MCGFUIDGEN_UNQIUEID_TAG+'"/>';
    86     } else {
    87         s = '<input type="text" value="'+MCGFUIDGEN_UNQIUEID_TAG+'" readonly="readonly"/>';
    88     }
    89 // console.log(s);
    90     var t = jQuery(prefix + ".field_uidgen_chartype").val();
    91     var sep = jQuery(prefix + ".field_uidgen_separator").val();
    92     var freq = jQuery(prefix + ".field_uidgen_separatorfreq").val();
    93         if (jQuery(prefix + ".field_uidgen_separator").length <= 0) {
    94            sep = "none";
    95            freq = 0;
    96         }
    97     var seq_start = -1;
    98     var seq_step = 1;
    99 // console.log("t = "+t+" sep = "+sep+" freq = "+freq+" seq_start = "+seq_start+" seq_step = "+seq_step);
    100     if (jQuery(prefix + ".field_sequence_enabled").is(":checked")) {
    101         seq_start = parseInt(jQuery(prefix + ".field_sequence_start").val());
    102         seq_step = parseInt(jQuery(prefix + ".field_sequence_step").val());
    103     }
    104     var val = mcgfuidgen_generate_id(len,t,sep,freq,seq_start,seq_step);
    105 // console.log("val = "+val);
    106     s = s.replace(MCGFUIDGEN_UNQIUEID_TAG,val);
    107     jQuery(prefix + ".mcgfuidgen_preview").remove();
    108     jQuery(prefix + ".gfield_description").append('<div class="mcgfuidgen_preview"><label>Preview: </label>'+s+'</div>');
    109 // console.log(jQuery(prefix + ".mcgfuidgen_preview").html());
     15function mcgfuidgen_get_settings_from_html(field_id){
     16    var prefix = "#field_" +field_id+" ";
     17    var data = {
     18            "max_length":       jQuery(prefix + ".field_uidgen_length").val(),
     19            "char_type":        jQuery(prefix + ".field_uidgen_chartype").val(),
     20            "separator":        jQuery(prefix + ".field_uidgen_separator").val(),
     21            "separator_freq":           jQuery(prefix + ".field_uidgen_separatorfreq").val(),
     22            "sequence_on":      (jQuery(prefix + ".field_sequence_enabled").is(":checked"))?1:0,
     23            "sequence_start":           jQuery(prefix + ".field_sequence_start").val(),
     24            "sequence_step":            jQuery(prefix + ".field_sequence_step").val(),
     25
     26            /* added in v.2.00 */
     27            "generation":           jQuery(prefix + ".field_uidgen_generation").val(),
     28            "custom_value":         ( jQuery(prefix + ".field_uidgen_custom_value").length > 0 )
     29                                    ?  jQuery(prefix + ".field_uidgen_custom_value").val() : "",
     30            /* added in v.2.00 */
     31
     32            "render_type":      jQuery(prefix + ".field_uidgen_render").val(),
     33            "render_html":      jQuery(prefix + ".field_uidgen_render_custom_html").val()
     34    };
     35    return data;
    11036}
    11137
    112 function mcgfuidgen_save_settings(){
    113 // console.log("save id = "+mc_cur_field_id);
    114     var prefix = "#field_" +mc_cur_field_id+" ";
    115 // console.log(prefix);
     38function mcgfuidgen_save_settings(el){
     39        var field_id = parseInt(jQuery(el).closest("li.gfield").attr("id").replace("field_",""));
     40    var prefix = "#field_" +field_id+" ";
    11641    var len = parseInt(jQuery(prefix + ".field_uidgen_length").val());
    11742    if (isNaN(len) || (len < 1) || (len > 100)) len = 6;
     
    11944    var ct = "" + jQuery(prefix + ".field_uidgen_chartype").val();
    12045    if ((ct == "digits") && (len <= 10)) {
    121         jQuery(prefix + ".field_sequence_enabled").prop("disabled",false);
    122         jQuery(prefix + ".field_sequence_start").prop("disabled",false);
     46            jQuery(prefix + ".field_sequence_enabled").prop("disabled",false);
     47            jQuery(prefix + ".field_sequence_start").prop("disabled",false);
    12348
    124  var v = ""+jQuery(prefix + ".field_sequence_start").val();
    125 // console.log("v.length = "+v.length);// console.log("len = "+len);
    126         if (v.length != len) {
    127             var x = Math.pow(10,(len-1));
    128             if (x <= 1)
    129              x = 0;
    130 // console.log("old len = "+v.length+", len = "+len+", x = " +x);
    131             jQuery(prefix + ".field_sequence_start").val(x);
    132         }
    133 
    134         jQuery(prefix + ".field_sequence_step").prop("disabled",false);
     49             var v = ""+jQuery(prefix + ".field_sequence_start").val();
     50            if (v.length != len) {
     51                var x = Math.pow(10,(len-1));
     52                if (x <= 1)
     53                    x = 0;
     54                jQuery(prefix + ".field_sequence_start").val(x);
     55            }
     56            jQuery(prefix + ".field_sequence_step").prop("disabled",false);
    13557    } else {
    136         jQuery(prefix + ".field_sequence_enabled").prop("checked",false).prop("disabled",true);
    137         jQuery(prefix + ".field_sequence_start").prop("disabled",true);
    138         jQuery(prefix + ".field_sequence_step").prop("disabled",true);
     58            jQuery(prefix + ".field_sequence_enabled").prop("checked",false).prop("disabled",true);
     59            jQuery(prefix + ".field_sequence_start").prop("disabled",true);
     60            jQuery(prefix + ".field_sequence_step").prop("disabled",true);
    13961    }
    14062    if (jQuery(prefix + ".field_sequence_enabled").is(":checked")) {
    141         jQuery(prefix + ".field_uidgen_chartype").val("digits");
    142         var step = parseInt(jQuery(prefix + ".field_sequence_step").val());
    143         if (isNaN(step) || (step < 1)) step = 1;
    144         jQuery(prefix + ".field_sequence_step").val(step);
    145         var start = parseInt(jQuery(prefix + ".field_sequence_start").val());
    146 // console.log("start = "+start);
    147         if (isNaN(start) || (start < 1)) start = 100000;
    148         jQuery(prefix + ".field_sequence_start").val(start);
     63            jQuery(prefix + ".field_uidgen_chartype").val("digits");
     64            var step = parseInt(jQuery(prefix + ".field_sequence_step").val());
     65            if (isNaN(step) || (step < 1)) step = 1;
     66            jQuery(prefix + ".field_sequence_step").val(step);
     67            var start = parseInt(jQuery(prefix + ".field_sequence_start").val());
     68            if (isNaN(start) || (start < 1)) start = 100000;
     69            jQuery(prefix + ".field_sequence_start").val(start);
    14970    }
    150     var data = {
    151         "max_length":       jQuery(prefix + ".field_uidgen_length").val(),
    152         "char_type":        jQuery(prefix + ".field_uidgen_chartype").val(),
    153         "separator":        jQuery(prefix + ".field_uidgen_separator").val(),
    154         "separator_freq":   jQuery(prefix + ".field_uidgen_separatorfreq").val(),
    155         "sequence_on":      (jQuery(prefix + ".field_sequence_enabled").is(":checked"))?1:0,
    156         "sequence_start":   jQuery(prefix + ".field_sequence_start").val(),
    157         "sequence_step":    jQuery(prefix + ".field_sequence_step").val(),
    158         "render_type":      jQuery(prefix + ".field_uidgen_render").val(),
    159         "render_html":      jQuery(prefix + ".field_uidgen_render_custom_html").val()
    160     };
    161     var str = jQuery.stringify(data);
     71        var data = mcgfuidgen_get_settings_from_html(field_id);
     72    var str = JSON.stringify(data);
    16273    SetFieldProperty('mcgfuidgen_settings', str);
    163     mcgfuidgen_render_preview();
    164 // console.log("<save "+mc_cur_field_id);// console.log(str);
     74    mcgfuidgen_render_preview(field_id, data);
    16575}
    16676
    167 function  mcgfuidgen_default_settings() {
    168 // console.log("reset default settings");
    169     var prefix = "#field_" + mc_cur_field_id+" ";
    170 // console.log(prefix);
     77function  mcgfuidgen_default_settings(field_id) {
     78    var prefix = "#field_" + field_id+" ";
    17179    jQuery(prefix + ".field_uidgen_length").val(6);
    17280    jQuery(prefix + ".field_uidgen_chartype").val("digits");
     
    17886    jQuery(prefix + ".field_uidgen_render").val("text");
    17987    jQuery(prefix + ".field_uidgen_render_custom_html").val("<div>"+MCGFUIDGEN_UNQIUEID_TAG+"</div>");
    180     mcgfuidgen_save_settings();
     88        /* added in v.2.00 */
     89        jQuery(prefix + ".field_uidgen_generation").val("form_submit");
     90        if ( jQuery(prefix + ".field_uidgen_custom_value").length > 0 )
     91            jQuery(prefix + ".field_uidgen_custom_value").val("");           
     92        /* added in v.2.00 */
     93    mcgfuidgen_save_settings(jQuery(prefix + ".field_uidgen_length").get(0));
    18194}
    18295
    18396function  mcgfuidgen_load_settings(field){
    184     mc_cur_field_id = field.id;
    185 // console.log(">mcgfuidgen_load_settings id = "+mc_cur_field_id);// console.log(field);
    186     var prefix = "#field_" + mc_cur_field_id+" ";
    187 // console.log("prefix = "+prefix);
     97    var field_id = field.id;
     98    var prefix = "#field_" + field_id+" ";
     99        var data = null;
    188100    try {
    189         var data = jQuery.parseJSON(field.mcgfuidgen_settings);
    190 // console.log(data);// console.log("adr = "+prefix + ".field_uidgen_length");// console.log("len = "+jQuery(prefix + ".field_sequence_step").length);// console.log(data.max_length);
    191         if (jQuery(prefix + ".field_sequence_step").length <= 0) {
    192             setTimeout(function (){
    193                 mcgfuidgen_load_settings(field);
    194             },32);
    195 // console.log("<restart controls not created yet!!!");
    196             return;
    197         }
    198         jQuery(prefix + ".field_uidgen_length").val(data.max_length);
    199         jQuery(prefix + ".field_uidgen_chartype").val(data.char_type);
    200         jQuery(prefix + ".field_uidgen_separator").val(data.separator);
    201         jQuery(prefix + ".field_uidgen_separatorfreq").val(data.separator_freq);
    202         jQuery(prefix + ".field_sequence_enabled").prop("checked",(parseInt(data.sequence_on) > 0));
    203         jQuery(prefix + ".field_sequence_start").val(data.sequence_start);
    204         jQuery(prefix + ".field_sequence_step").val(data.sequence_step);
    205         jQuery(prefix + ".field_uidgen_render").val(data.render_type);
    206         jQuery(prefix + ".field_uidgen_render_custom_html").val(data.render_html);
    207 // console.log("all loaded");
     101            data = JSON.parse(field.mcgfuidgen_settings);
     102            if (jQuery(prefix + ".field_sequence_step").length <= 0) {
     103                    setTimeout(function (){
     104                            mcgfuidgen_load_settings(field);
     105                    },32);
     106                    return;
     107            }
     108            jQuery(prefix + ".field_uidgen_length").val(data.max_length);
     109            jQuery(prefix + ".field_uidgen_chartype").val(data.char_type);
     110            jQuery(prefix + ".field_uidgen_separator").val(data.separator);
     111            jQuery(prefix + ".field_uidgen_separatorfreq").val(data.separator_freq);
     112            jQuery(prefix + ".field_sequence_enabled").prop("checked",(parseInt(data.sequence_on) > 0));
     113            jQuery(prefix + ".field_sequence_start").val(data.sequence_start);
     114            jQuery(prefix + ".field_sequence_step").val(data.sequence_step);
     115            jQuery(prefix + ".field_uidgen_render").val(data.render_type);
     116            jQuery(prefix + ".field_uidgen_render_custom_html").val(data.render_html);
     117            /* added in v.2.00 */
     118            jQuery(prefix + ".field_uidgen_generation").val(data.generation);
     119            if ( jQuery(prefix + ".field_uidgen_custom_value").length > 0 )
     120                jQuery(prefix + ".field_uidgen_custom_value").val(data.custom_value);           
     121            /* added in v.2.00 */
    208122    } catch(e) {
    209         mcgfuidgen_default_settings();
    210 // console.log(">mcgfuidgen_load_settings ERROR - DEFAULT LOADED id = "+mc_cur_field_id+"\n"+e.message);
     123            mcgfuidgen_default_settings(field_id);
     124            data = mcgfuidgen_get_settings_from_html(field_id);
    211125    }
    212 // console.log("rendering...");
    213     mcgfuidgen_render_preview();
    214 // console.log("<mcgfuidgen_load_settings OK id = "+mc_cur_field_id);
     126    mcgfuidgen_render_preview(field_id, data);
    215127}
    216128
     
    219131//binding to the load field settings event to initialize the checkbox
    220132jQuery(document).bind("gform_load_field_settings", function(event, field, form){
    221 // console.log("load filed settings",field);
    222133    if (field.type == "uidgen") {
    223         // unhide all udgen settings
    224         jQuery(".field_uidgen").show();
    225         // unhide common settings used in uidgen
    226         jQuery(".label_setting").show();
    227         jQuery(".description_setting").show();
    228         jQuery("#gform_tab_2").parent().show();
    229         jQuery(".admin_label_setting").show();
    230         jQuery(".visibility_setting").show();
    231         jQuery(".post_custom_field_setting").show();
    232         jQuery(".prepopulate_field_setting").show();
    233         jQuery(".conditional_logic_field_setting").show();
    234         jQuery("#gform_tab_3").parent().show();
    235         jQuery(".placeholder_setting").show();
    236         jQuery(".placeholder_textarea_setting").show();
    237         jQuery(".field_description_placement_container").show();
    238         jQuery(".css_class_setting").show();
    239         jQuery(".size_setting").show();
    240         // hide not needed fields
    241         jQuery(".placeholder_setting").hide();
    242         jQuery(".placeholder_textarea_setting").hide();
    243         jQuery(".error_message_setting").hide();
    244         mcgfuidgen_load_settings(field);
    245 // console.log("mcgfuidgen settings loaded")
     134            // unhide all udgen settings
     135            jQuery(".field_uidgen").show();
     136            // unhide common settings used in uidgen
     137            jQuery(".label_setting").show();
     138            jQuery(".description_setting").show();
     139            jQuery("#gform_tab_2").parent().show();
     140            jQuery(".admin_label_setting").show();
     141            jQuery(".visibility_setting").show();
     142            jQuery(".post_custom_field_setting").show();
     143            jQuery(".prepopulate_field_setting").show();
     144            jQuery(".conditional_logic_field_setting").show();
     145            jQuery("#gform_tab_3").parent().show();
     146            jQuery(".placeholder_setting").show();
     147            jQuery(".placeholder_textarea_setting").show();
     148            jQuery(".field_description_placement_container").show();
     149            jQuery(".css_class_setting").show();
     150            jQuery(".size_setting").show();
     151            // hide not needed fields
     152            jQuery(".placeholder_setting").hide();
     153            jQuery(".placeholder_textarea_setting").hide();
     154            jQuery(".error_message_setting").hide();
     155            mcgfuidgen_load_settings(field);
    246156    } else {
    247         jQuery(".field_uidgen").hide();
     157            jQuery(".field_uidgen").hide();
    248158    }
    249 //          SetFieldDescription("my description");
    250159});
    251160
    252161jQuery(document).bind("gform_field_added",function(event, form, field){
    253     // console.log(event);// console.log(field);// console.log(form);// console.log("added");
    254162    if (field.type == "uidgen") {
    255163         jQuery("#field_"+field.id+" .gfield_label").html("Unique ID");
    256164    }
    257     // console.log("fid = "+field.id);
    258165});
  • gf-mc-unique-id-generator-field/trunk/assets/js/editor.js

    r1693957 r2173326  
    1 var mc_cur_field_id=0;
    2 function mcgfuidgen_generate_id(a,b,c,d,h,f){var e="",g,k="";b=0<=h?""+(h+f):"digits"==b?MCGFUIDGEN_DIGITS:"upper"==b?MCGFUIDGEN_ABC.toUpperCase():"lower"==b?MCGFUIDGEN_ABC.toLowerCase():"mixed"==b?MCGFUIDGEN_ABC.toUpperCase()+MCGFUIDGEN_ABC.toLowerCase():"upper_digits"==b?MCGFUIDGEN_DIGITS+MCGFUIDGEN_ABC.toUpperCase():"lower_digits"==b?MCGFUIDGEN_DIGITS+MCGFUIDGEN_ABC.toLowerCase():"mixed_digits"==b?MCGFUIDGEN_DIGITS+MCGFUIDGEN_ABC.toUpperCase()+MCGFUIDGEN_ABC.toLowerCase():MCGFUIDGEN_DIGITS+MCGFUIDGEN_ABC.toUpperCase()+
    3 MCGFUIDGEN_ABC.toLowerCase()+MCGFUIDGEN_SYMBOLS;"space"==c?e=" ":"dash"==c?e="-":"comma"==c?e=",":"dot"==c?e=".":"quote"==c?e="\x26#39;":"quote2"==c?e="\x26#34;":"underscore"==c&&(e="_");c=b.length;var l=new Date;for(f=1;f<=a;f++)0<=h?g=b.substr(f-1,1):(g=Math.round(1E6*Math.random()+l.getMilliseconds())%c,g=b.substr(g,1)),k+=g,0<d&&0==(a-f)%d&&f<a&&(k+=e);return k}
    4 function mcgfuidgen_render_preview(){var a="#field_"+mc_cur_field_id+" ",b=parseInt(jQuery(a+".field_uidgen_length").val());if(isNaN(b)||1>b||100<b)b=6;var c=jQuery(a+".field_uidgen_render").val(),d="";"html"==c?(d+=jQuery(a+".field_uidgen_render_custom_html").val(),0>d.indexOf(MCGFUIDGEN_UNQIUEID_TAG)&&(d+=MCGFUIDGEN_UNQIUEID_TAG)):d="span"==c?"\x3cspan\x3e"+MCGFUIDGEN_UNQIUEID_TAG+"\x3c/span\x3e":"div"==c?"\x3cdiv\x3e"+MCGFUIDGEN_UNQIUEID_TAG+"\x3c/div\x3e":"hidden"==c?'\x3cinput type\x3d"hidden" value\x3d"'+
    5 MCGFUIDGEN_UNQIUEID_TAG+'"/\x3e':'\x3cinput type\x3d"text" value\x3d"'+MCGFUIDGEN_UNQIUEID_TAG+'" readonly\x3d"readonly"/\x3e';var c=jQuery(a+".field_uidgen_chartype").val(),h=jQuery(a+".field_uidgen_separator").val(),f=jQuery(a+".field_uidgen_separatorfreq").val();0>=jQuery(a+".field_uidgen_separator").length&&(h="none",f=0);var e=-1,g=1;jQuery(a+".field_sequence_enabled").is(":checked")&&(e=parseInt(jQuery(a+".field_sequence_start").val()),g=parseInt(jQuery(a+".field_sequence_step").val()));b=mcgfuidgen_generate_id(b,
    6 c,h,f,e,g);d=d.replace(MCGFUIDGEN_UNQIUEID_TAG,b);jQuery(a+".mcgfuidgen_preview").remove();jQuery(a+".gfield_description").append('\x3cdiv class\x3d"mcgfuidgen_preview"\x3e\x3clabel\x3ePreview: \x3c/label\x3e'+d+"\x3c/div\x3e")}
    7 function mcgfuidgen_save_settings(){var a="#field_"+mc_cur_field_id+" ",b=parseInt(jQuery(a+".field_uidgen_length").val());if(isNaN(b)||1>b||100<b)b=6;jQuery(a+".field_uidgen_length").val(b);"digits"==""+jQuery(a+".field_uidgen_chartype").val()&&10>=b?(jQuery(a+".field_sequence_enabled").prop("disabled",!1),jQuery(a+".field_sequence_start").prop("disabled",!1),(""+jQuery(a+".field_sequence_start").val()).length!=b&&(b=Math.pow(10,b-1),1>=b&&(b=0),jQuery(a+".field_sequence_start").val(b)),jQuery(a+
    8 ".field_sequence_step").prop("disabled",!1)):(jQuery(a+".field_sequence_enabled").prop("checked",!1).prop("disabled",!0),jQuery(a+".field_sequence_start").prop("disabled",!0),jQuery(a+".field_sequence_step").prop("disabled",!0));if(jQuery(a+".field_sequence_enabled").is(":checked")){jQuery(a+".field_uidgen_chartype").val("digits");b=parseInt(jQuery(a+".field_sequence_step").val());if(isNaN(b)||1>b)b=1;jQuery(a+".field_sequence_step").val(b);b=parseInt(jQuery(a+".field_sequence_start").val());if(isNaN(b)||
    9 1>b)b=1E5;jQuery(a+".field_sequence_start").val(b)}a={max_length:jQuery(a+".field_uidgen_length").val(),char_type:jQuery(a+".field_uidgen_chartype").val(),separator:jQuery(a+".field_uidgen_separator").val(),separator_freq:jQuery(a+".field_uidgen_separatorfreq").val(),sequence_on:jQuery(a+".field_sequence_enabled").is(":checked")?1:0,sequence_start:jQuery(a+".field_sequence_start").val(),sequence_step:jQuery(a+".field_sequence_step").val(),render_type:jQuery(a+".field_uidgen_render").val(),render_html:jQuery(a+
    10 ".field_uidgen_render_custom_html").val()};a=jQuery.stringify(a);SetFieldProperty("mcgfuidgen_settings",a);mcgfuidgen_render_preview()}
    11 function mcgfuidgen_default_settings(){var a="#field_"+mc_cur_field_id+" ";jQuery(a+".field_uidgen_length").val(6);jQuery(a+".field_uidgen_chartype").val("digits");jQuery(a+".field_uidgen_separator").val("space");jQuery(a+".field_uidgen_separatorfreq").val("3");jQuery(a+".field_sequence_enabled").prop("checked",!0);jQuery(a+".field_sequence_start").val("100001");jQuery(a+".field_sequence_step").val("1");jQuery(a+".field_uidgen_render").val("text");jQuery(a+".field_uidgen_render_custom_html").val("\x3cdiv\x3e"+
    12 MCGFUIDGEN_UNQIUEID_TAG+"\x3c/div\x3e");mcgfuidgen_save_settings()}
    13 function mcgfuidgen_load_settings(a){mc_cur_field_id=a.id;var b="#field_"+mc_cur_field_id+" ";try{var c=jQuery.parseJSON(a.mcgfuidgen_settings);if(0>=jQuery(b+".field_sequence_step").length){setTimeout(function(){mcgfuidgen_load_settings(a)},32);return}jQuery(b+".field_uidgen_length").val(c.max_length);jQuery(b+".field_uidgen_chartype").val(c.char_type);jQuery(b+".field_uidgen_separator").val(c.separator);jQuery(b+".field_uidgen_separatorfreq").val(c.separator_freq);jQuery(b+".field_sequence_enabled").prop("checked",
    14 0<parseInt(c.sequence_on));jQuery(b+".field_sequence_start").val(c.sequence_start);jQuery(b+".field_sequence_step").val(c.sequence_step);jQuery(b+".field_uidgen_render").val(c.render_type);jQuery(b+".field_uidgen_render_custom_html").val(c.render_html)}catch(d){mcgfuidgen_default_settings()}mcgfuidgen_render_preview()}fieldSettings.text+=", .field_uidgen";
    15 jQuery(document).bind("gform_load_field_settings",function(a,b,c){"uidgen"==b.type?(jQuery(".field_uidgen").show(),jQuery(".label_setting").show(),jQuery(".description_setting").show(),jQuery("#gform_tab_2").parent().show(),jQuery(".admin_label_setting").show(),jQuery(".visibility_setting").show(),jQuery(".post_custom_field_setting").show(),jQuery(".prepopulate_field_setting").show(),jQuery(".conditional_logic_field_setting").show(),jQuery("#gform_tab_3").parent().show(),jQuery(".placeholder_setting").show(),
    16 jQuery(".placeholder_textarea_setting").show(),jQuery(".field_description_placement_container").show(),jQuery(".css_class_setting").show(),jQuery(".size_setting").show(),jQuery(".placeholder_setting").hide(),jQuery(".placeholder_textarea_setting").hide(),jQuery(".error_message_setting").hide(),mcgfuidgen_load_settings(b)):jQuery(".field_uidgen").hide()});jQuery(document).bind("gform_field_added",function(a,b,c){"uidgen"==c.type&&jQuery("#field_"+c.id+" .gfield_label").html("Unique ID")});
     1function mcgfuidgen_render_preview(a,c){var b="#field_"+a+" ";jQuery.post(MCGFUIDGEN_SETTINGS.ajax_url,{action:"mcgfuidgen_generate_value_preview",form_id:parseInt(jQuery(".gf_admin_page_formid").html().replace("ID:").trim()),field_id:a,settings:c},function(a){jQuery(b+".mcgfuidgen_preview").remove();jQuery(b+".gfield_description").append('\x3cdiv class\x3d"mcgfuidgen_preview"\x3e\x3clabel\x3ePreview: \x3c/label\x3e\x3cspan class\x3d"mcgfuidgen_value"\x3e\x3c/span\x3e\x3c/div\x3e');jQuery(".mcgfuidgen_preview .mcgfuidgen_value").html(a)})}
     2function mcgfuidgen_get_settings_from_html(a){a="#field_"+a+" ";return{max_length:jQuery(a+".field_uidgen_length").val(),char_type:jQuery(a+".field_uidgen_chartype").val(),separator:jQuery(a+".field_uidgen_separator").val(),separator_freq:jQuery(a+".field_uidgen_separatorfreq").val(),sequence_on:jQuery(a+".field_sequence_enabled").is(":checked")?1:0,sequence_start:jQuery(a+".field_sequence_start").val(),sequence_step:jQuery(a+".field_sequence_step").val(),generation:jQuery(a+".field_uidgen_generation").val(),
     3custom_value:0<jQuery(a+".field_uidgen_custom_value").length?jQuery(a+".field_uidgen_custom_value").val():"",render_type:jQuery(a+".field_uidgen_render").val(),render_html:jQuery(a+".field_uidgen_render_custom_html").val()}}
     4function mcgfuidgen_save_settings(a){a=parseInt(jQuery(a).closest("li.gfield").attr("id").replace("field_",""));var c="#field_"+a+" ",b=parseInt(jQuery(c+".field_uidgen_length").val());if(isNaN(b)||1>b||100<b)b=6;jQuery(c+".field_uidgen_length").val(b);"digits"==""+jQuery(c+".field_uidgen_chartype").val()&&10>=b?(jQuery(c+".field_sequence_enabled").prop("disabled",!1),jQuery(c+".field_sequence_start").prop("disabled",!1),(""+jQuery(c+".field_sequence_start").val()).length!=b&&(b=Math.pow(10,b-1),
     51>=b&&(b=0),jQuery(c+".field_sequence_start").val(b)),jQuery(c+".field_sequence_step").prop("disabled",!1)):(jQuery(c+".field_sequence_enabled").prop("checked",!1).prop("disabled",!0),jQuery(c+".field_sequence_start").prop("disabled",!0),jQuery(c+".field_sequence_step").prop("disabled",!0));if(jQuery(c+".field_sequence_enabled").is(":checked")){jQuery(c+".field_uidgen_chartype").val("digits");b=parseInt(jQuery(c+".field_sequence_step").val());if(isNaN(b)||1>b)b=1;jQuery(c+".field_sequence_step").val(b);
     6b=parseInt(jQuery(c+".field_sequence_start").val());if(isNaN(b)||1>b)b=1E5;jQuery(c+".field_sequence_start").val(b)}c=mcgfuidgen_get_settings_from_html(a);b=JSON.stringify(c);SetFieldProperty("mcgfuidgen_settings",b);mcgfuidgen_render_preview(a,c)}
     7function mcgfuidgen_default_settings(a){a="#field_"+a+" ";jQuery(a+".field_uidgen_length").val(6);jQuery(a+".field_uidgen_chartype").val("digits");jQuery(a+".field_uidgen_separator").val("space");jQuery(a+".field_uidgen_separatorfreq").val("3");jQuery(a+".field_sequence_enabled").prop("checked",!0);jQuery(a+".field_sequence_start").val("100001");jQuery(a+".field_sequence_step").val("1");jQuery(a+".field_uidgen_render").val("text");jQuery(a+".field_uidgen_render_custom_html").val("\x3cdiv\x3e"+MCGFUIDGEN_UNQIUEID_TAG+
     8"\x3c/div\x3e");jQuery(a+".field_uidgen_generation").val("form_submit");0<jQuery(a+".field_uidgen_custom_value").length&&jQuery(a+".field_uidgen_custom_value").val("");mcgfuidgen_save_settings(jQuery(a+".field_uidgen_length").get(0))}
     9function mcgfuidgen_load_settings(a){var c=a.id,b="#field_"+c+" ",d=null;try{d=JSON.parse(a.mcgfuidgen_settings);if(0>=jQuery(b+".field_sequence_step").length){setTimeout(function(){mcgfuidgen_load_settings(a)},32);return}jQuery(b+".field_uidgen_length").val(d.max_length);jQuery(b+".field_uidgen_chartype").val(d.char_type);jQuery(b+".field_uidgen_separator").val(d.separator);jQuery(b+".field_uidgen_separatorfreq").val(d.separator_freq);jQuery(b+".field_sequence_enabled").prop("checked",0<parseInt(d.sequence_on));
     10jQuery(b+".field_sequence_start").val(d.sequence_start);jQuery(b+".field_sequence_step").val(d.sequence_step);jQuery(b+".field_uidgen_render").val(d.render_type);jQuery(b+".field_uidgen_render_custom_html").val(d.render_html);jQuery(b+".field_uidgen_generation").val(d.generation);0<jQuery(b+".field_uidgen_custom_value").length&&jQuery(b+".field_uidgen_custom_value").val(d.custom_value)}catch(e){mcgfuidgen_default_settings(c),d=mcgfuidgen_get_settings_from_html(c)}mcgfuidgen_render_preview(c,d)}
     11fieldSettings.text+=", .field_uidgen";
     12jQuery(document).bind("gform_load_field_settings",function(a,c,b){"uidgen"==c.type?(jQuery(".field_uidgen").show(),jQuery(".label_setting").show(),jQuery(".description_setting").show(),jQuery("#gform_tab_2").parent().show(),jQuery(".admin_label_setting").show(),jQuery(".visibility_setting").show(),jQuery(".post_custom_field_setting").show(),jQuery(".prepopulate_field_setting").show(),jQuery(".conditional_logic_field_setting").show(),jQuery("#gform_tab_3").parent().show(),jQuery(".placeholder_setting").show(),
     13jQuery(".placeholder_textarea_setting").show(),jQuery(".field_description_placement_container").show(),jQuery(".css_class_setting").show(),jQuery(".size_setting").show(),jQuery(".placeholder_setting").hide(),jQuery(".placeholder_textarea_setting").hide(),jQuery(".error_message_setting").hide(),mcgfuidgen_load_settings(c)):jQuery(".field_uidgen").hide()});jQuery(document).bind("gform_field_added",function(a,c,b){"uidgen"==b.type&&jQuery("#field_"+b.id+" .gfield_label").html("Unique ID")});
  • gf-mc-unique-id-generator-field/trunk/gf_mc_unique_id_generator_field.php

    r1693957 r2173326  
    77Plugin URI: https://modcoding.com/product/gravity-forms-mc-unique-id-generator-field-wordpress-plugin/?utm_source=wordpress
    88Description: Unique identifiers generator field - located in Advanced Fields section of Gravity Forms fields editor. Lite version, see readme.md for details
    9 Version: 1.40
     9Version: 2.00
    1010Author: Modular Coding Inc.
    1111Author URI: https://modcoding.com?utm_source=wordpress
    1212License: GNU GPL v.2
    1313*/
    14 define ("MCGFUIDGEN_PLUGIN_VERSION","1.30");
     14define ("MCGFUIDGEN_PLUGIN_VERSION","2.00");
    1515define ("MCGFUIDGEN_TRANSLATE_DOMAIN","mcgfuidgen");
    1616define ("MCGFUIDGEN_UNQIUEID_TAG", "{UniqueID}");
     
    2828define ("MCGFUIDGEN_LEAD_ENTRY_TABLE",$table_prefix."rg_lead_detail");
    2929define ("MCGFUIDGEN_LEAD_LONG_ENTRY_TABLE",$table_prefix."rg_lead_detail_long");
    30 require_once MCGFUIDGEN_PLUGIN_DIR."includes/log.php";
    31 require_once MCGFUIDGEN_PLUGIN_DIR."includes/functions.php";
    32 /////////////////////////////////////////////////////// main code //////////////////////////////////////////////////////
     30// /////////////////////////////////////////////////////// main code //////////////////////////////////////////////////////
    3331function mcgfuidgen_activation(){
    3432    global $wpdb;
     
    3937      post_id BIGINT NULL,
    4038      field_id INT NOT NULL,
    41     id_str VARCHAR(100) NULL,
    42     id_int BIGINT NULL,
     39    id_str VARCHAR(250) NULL,
    4340      PRIMARY KEY(id),
    4441      KEY (id_str),
     
    4643      KEY (entry_id),
    4744      KEY (field_id),
    48       UNIQUE KEY(id_int, id_str, entry_id, form_id)
     45      UNIQUE KEY(id_str, entry_id, form_id)
    4946     ) ENGINE = MyISAM;
    5047    ";
     48    $wpdb->query ( $sql );
     49        $sql = "UPDATE `".MCGFUIDGEN_TABLE_NAME."` SET `id_str` = `id_int` WHERE `id_str` IS NULL";
    5150    $wpdb->query ( $sql );
    5251    //var_dump($res);die($sql);
     
    7675                            <?php gform_tooltip( 'form_field_uidgen_length_tooltip' ) ?>
    7776            </label>
    78             <select class="field_uidgen_length small gfield_select" onchange="mcgfuidgen_save_settings()">
     77            <select class="field_uidgen_length small gfield_select" onchange="mcgfuidgen_save_settings(this)">
    7978                            <?php for ($i = 1; $i <= 100; $i++) { $sel = ($i == 10) ? 'selected="selected"': ""; ?>
    8079                  <option value="<?php echo $i;?>" <?php echo $sel;?>><?php echo $i;?></option>
     
    8786                            <?php gform_tooltip( 'form_field_uidgen_chartype_tooltip' ) ?>
    8887            </label>
    89             <select class="field_uidgen_chartype medium gfield_select" onchange="mcgfuidgen_save_settings()">
     88            <select class="field_uidgen_chartype medium gfield_select" onchange="mcgfuidgen_save_settings(this)">
    9089                <option value="digits" selected="selected">Digits (123)</option>
    9190                <option value="upper">Uppercase (ABC)</option>
     
    104103                Please visit our web site
    105104            </a>
    106             to purchase <B>Full Version</b> with additional functionality (separators and Post Update plugin support).
    107             <select id="field_uidgen_separator" class="small gfield_select" onchange="mcgfuidgen_save_settings()" style="display: none"><option value="none" selected="selected">None</option></select>
    108             <select id="field_uidgen_separatorfreq" class="medium gfield_select" onchange="mcgfuidgen_save_settings()" style="display: none"><option value="0" selected="selected">None</option></select>
     105            to purchase <B>Full Version</b> with additional functionality (separators, id values customization, and Post Update plugin support).
     106            <select id="field_uidgen_separator" class="small gfield_select" onchange="mcgfuidgen_save_settings(this)" style="display: none"><option value="none" selected="selected">None</option></select>
     107            <select id="field_uidgen_separatorfreq" class="medium gfield_select" onchange="mcgfuidgen_save_settings(this)" style="display: none"><option value="0" selected="selected">None</option></select>
    109108        </li>
    110109<?php
    111110?>
    112111        <li class="uidgen_sequence_setting field_uidgen field_setting">
    113             <input type="checkbox" class="field_sequence_enabled"  onclick="mcgfuidgen_save_settings()" />
     112            <input type="checkbox" class="field_sequence_enabled"  onclick="mcgfuidgen_save_settings(this)" />
    114113            <label class="mcgfuidgen_iblock" style="width: 75%!important; margin-bottom: 0 !important; display: inline-block !important;">
    115114                            <?php _e( 'Sequence values', MCGFUIDGEN_TRANSLATE_DOMAIN ); ?>
    116115                            <?php gform_tooltip( 'form_field_uidgen_sequence_tooltip' ) ?>
    117116            </label>
    118             <input type="number" class="field_sequence_start medium" onchange="mcgfuidgen_save_settings()" onblur="mcgfuidgen_save_settings()" placeholder="<?php _e( 'Start value', MCGFUIDGEN_TRANSLATE_DOMAIN ); ?>" min="0" step="1" />
    119             <input type="number" class="field_sequence_step small" onchange="mcgfuidgen_save_settings()" onblur="mcgfuidgen_save_settings()" placeholder="<?php _e( 'Step', MCGFUIDGEN_TRANSLATE_DOMAIN ); ?>"  min="1" step="1" />
     117            <input type="number" class="field_sequence_start medium" onchange="mcgfuidgen_save_settings(this)" onblur="mcgfuidgen_save_settings(this)" placeholder="<?php _e( 'Start value', MCGFUIDGEN_TRANSLATE_DOMAIN ); ?>" min="0" step="1" />
     118            <input type="number" class="field_sequence_step small" onchange="mcgfuidgen_save_settings(this)" onblur="mcgfuidgen_save_settings(this)" placeholder="<?php _e( 'Step', MCGFUIDGEN_TRANSLATE_DOMAIN ); ?>"  min="1" step="1" />
    120119        </li>
     120<?php /* added in v.2.00 */ ?>       
     121        <li class="uidgen_generation_setting field_uidgen field_setting">
     122            <label class="mcgfuidgen_iblock" style="margin-bottom: 0 !important;">
     123                            <?php _e( 'Generate An Unique ID: ', MCGFUIDGEN_TRANSLATE_DOMAIN ); ?>
     124                            <?php gform_tooltip( 'form_field_uidgen_generation_tooltip' ) ?>
     125            </label>
     126            <select class="field_uidgen_generation medium gfield_select" onchange="mcgfuidgen_save_settings(this)">
     127                <option value="form_submit" selected="selected"><?php _e("On Form Submit", MCGFUIDGEN_TRANSLATE_DOMAIN)?></option>
     128                <option value="form_show"><?php _e("On Form Show", MCGFUIDGEN_TRANSLATE_DOMAIN)?></option>
     129            </select>   
     130        </li>
     131<?php
     132?>
     133<?php /* added in v.2.00 */ ?>       
     134       
    121135        <?php
    122136    }
     
    131145                     <?php gform_tooltip( 'form_field_uidgen_render_tooltip' ) ?>
    132146         </label>
    133          <select class="field_uidgen_render medium gfield_select" onchange="mcgfuidgen_save_settings()">
     147         <select class="field_uidgen_render medium gfield_select" onchange="mcgfuidgen_save_settings(this)">
    134148             <option value="text" selected="selected">Text</option>
    135149             <option value="hidden">Hidden</option>
     
    138152             <option value="html">Custom HTML</option>
    139153         </select>
    140          <textarea class="field_uidgen_render_custom_html" placeholder="Custom HTML" style="width:  96%; margin-top: 8px;"  onchange="mcgfuidgen_save_settings()" onblur="mcgfuidgen_save_settings()"><div><?php echo MCGFUIDGEN_UNQIUEID_TAG;?></div></textarea>
     154         <textarea class="field_uidgen_render_custom_html" placeholder="Custom HTML" style="width:  96%; margin-top: 8px;"  onchange="mcgfuidgen_save_settings(this)" onblur="mcgfuidgen_save_settings(this)"><div><?php echo MCGFUIDGEN_UNQIUEID_TAG;?></div></textarea>
    141155     </li>
    142156<?php
     
    145159
    146160function mcgfuidgen_tooltips( $tooltips ) {
    147   $tooltips['form_field_uidgen_length_tooltip'] = "<h6>".__( 'Maximum length', MCGFUIDGEN_TRANSLATE_DOMAIN )."</h6>".__( 'Select number of characters used to generate identifier value.', MCGFUIDGEN_TRANSLATE_DOMAIN );
    148   $tooltips['form_field_uidgen_chartype_tooltip'] = "<h6>".__( 'Characters type', MCGFUIDGEN_TRANSLATE_DOMAIN )."</h6>".__( 'Select type of characters used to generate identifier value. if you will select Digits and length up to 20 characters, an integer value will be stored in the database. It works much faster than strings.', MCGFUIDGEN_TRANSLATE_DOMAIN );
    149   $tooltips['form_field_uidgen_separator_tooltip'] = "<h6>".__( 'Characters separator', MCGFUIDGEN_TRANSLATE_DOMAIN )."</h6>".__( 'Select type of character separator and how much characters in a row should be separated into groups.', MCGFUIDGEN_TRANSLATE_DOMAIN );
    150     $tooltips['form_field_uidgen_sequence_tooltip'] = "<h6>".__( 'Sequence values', MCGFUIDGEN_TRANSLATE_DOMAIN )."</h6>".__( 'If you have selected this option the Identifier value will be generated as sequential number starting from specified value incremented with specified step on every new submit. If option is disabled, then random values will be generated"' );
    151     $tooltips['form_field_uidgen_render_tooltip'] = "<h6>".__( 'Render options', MCGFUIDGEN_TRANSLATE_DOMAIN )."</h6>".__( 'Specifies how this field will be rendered on form. You can use custom HTML, but keep {UniqueID} shortcode.' );
    152   return $tooltips;
     161    $tooltips['form_field_uidgen_length_tooltip'] = "<h6>".__( 'Maximum length', MCGFUIDGEN_TRANSLATE_DOMAIN )."</h6>".__( 'Select number of characters used to generate identifier value.', MCGFUIDGEN_TRANSLATE_DOMAIN );
     162    $tooltips['form_field_uidgen_chartype_tooltip'] = "<h6>".__( 'Characters type', MCGFUIDGEN_TRANSLATE_DOMAIN )."</h6>".__( 'Select type of characters used to generate identifier value. if you will select Digits and length up to 20 characters, an integer value will be stored in the database. It works much faster than strings.', MCGFUIDGEN_TRANSLATE_DOMAIN );
     163    $tooltips['form_field_uidgen_separator_tooltip'] = "<h6>".__( 'Characters separator', MCGFUIDGEN_TRANSLATE_DOMAIN )."</h6>".__( 'Select type of character separator and how much characters in a row should be separated into groups.', MCGFUIDGEN_TRANSLATE_DOMAIN );
     164    $tooltips['form_field_uidgen_sequence_tooltip'] = "<h6>".__( 'Sequence values', MCGFUIDGEN_TRANSLATE_DOMAIN )."</h6>".__( 'If you have selected this option the Identifier value will be generated as sequential number starting from specified value incremented with specified step on every new submit. If option is disabled, then random values will be generated"' );
     165    $tooltips['form_field_uidgen_render_tooltip'] = "<h6>".__( 'Render options', MCGFUIDGEN_TRANSLATE_DOMAIN )."</h6>".__( 'Specifies how this field will be rendered on form. You can use custom HTML, but keep {UniqueID} shortcode.' );
     166    $tooltips['form_field_uidgen_generation_tooltip'] = "<h6>".__( 'Unique ID Generation', MCGFUIDGEN_TRANSLATE_DOMAIN )."</h6>".__( 'Specifies when unqiue id value will be generated. The options supported are: "On Form Show" and "On Form Submit". We recommend last one. Prior versions of the plugin used "On Form Show" that sometimes leads to saving not used values to database.' );
     167    return $tooltips;
    153168}
    154169
    155170function mcgfuidgen_editor_js(){
    156     wp_enqueue_script( 'mcgfuidgen-editor', MCGFUIDGEN_PLUGIN_URL."/assets/js/editor.js", array("jquery"), MCGFUIDGEN_PLUGIN_VERSION, true );
    157     wp_enqueue_script( 'mcgfuidgen-jquery-stringify', MCGFUIDGEN_PLUGIN_URL."/assets/js/jQuery.stringify.js", array("jquery"), MCGFUIDGEN_PLUGIN_VERSION, true );
    158     wp_enqueue_style( 'mcgfuidgen-editor', MCGFUIDGEN_PLUGIN_URL."/assets/css/editor.css", array(), MCGFUIDGEN_PLUGIN_VERSION, true );
    159     echo '
    160         <script type=\'text/javascript\'>
    161         var MCGFUIDGEN_AJAX_URL = "'.MCGFUIDGEN_AJAX_URL.'";
    162         var MCGFUIDGEN_UNQIUEID_TAG = "'.MCGFUIDGEN_UNQIUEID_TAG.'";
    163         var MCGFUIDGEN_DIGITS = "'.MCGFUIDGEN_DIGITS.'";
    164         var MCGFUIDGEN_ABC = "'.MCGFUIDGEN_ABC.'";
    165         var MCGFUIDGEN_SYMBOLS = "'.MCGFUIDGEN_SYMBOLS.'";
    166     </script>
    167     ';
     171    wp_register_script("mcgfuidgen-editor", MCGFUIDGEN_PLUGIN_URL."/assets/js/editor.js", array("jquery"), MCGFUIDGEN_PLUGIN_VERSION, true);
     172
     173    $ar_settings = array(
     174        "plugin_version" => MCGFUIDGEN_PLUGIN_VERSION,
     175        "ajax_url" => MCGFUIDGEN_AJAX_URL
     176    );
     177    wp_localize_script("mcgfuidgen-editor", "MCGFUIDGEN_SETTINGS", $ar_settings);
     178    wp_enqueue_script("mcgfuidgen-editor");
     179       
     180    wp_enqueue_style( 'mcgfuidgen-editor', MCGFUIDGEN_PLUGIN_URL."/assets/css/editor.css", array(), MCGFUIDGEN_PLUGIN_VERSION, true );
    168181}
    169182
     
    181194
    182195function mcgfuidgen_load_value($post_id){
    183     global $wpdb;
    184     // load value from db
     196    global $wpdb;
     197    // load value from db
    185198if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log(">mcgfuidgen_load_value post_id = $post_id");
    186     $sql = $wpdb->prepare("SELECT id_int, id_str FROM `".MCGFUIDGEN_TABLE_NAME."` WHERE post_id = %s", array($post_id));
    187     $qr = $wpdb->get_results($sql);
    188 if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log("1.mcgfuidgen_load_value post_id = $post_id\n$sql\n".print_r($qr,true));
    189     if (count($qr) < 1)  return false;
    190     if (is_array($qr)) {
    191         $value = (strlen(@$qr[0]->id_int) > 0) ? $qr[0]->id_int : $qr[0]->id_str;
    192     }
    193 if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log(">mcgfuidgen_load_value post_id = $post_id value = $value");
    194     return array("value" => $value, "id" => "");
    195 }
    196 
    197 function mcgfuidgen_generate_value($form_id,$entry_id,$field_id,$settings){
     199    $sql = $wpdb->prepare("SELECT id_str FROM `".MCGFUIDGEN_TABLE_NAME."` WHERE post_id = %s", array($post_id));
     200    $value = $wpdb->get_var($sql);
     201if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log("<mcgfuidgen_load_value post_id = $post_id value = $value\n".$sql);
     202    return array("value" => $value, "id" => "");
     203}
     204
     205function mcgfuidgen_generate_value($form_id,$entry_id,$field_id,$settings,$mode="save"){
     206   
     207if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log(">mcgfuidgen_generate_value form_id = $form_id, entry_id = $entry_id, field_id = $field_id, mode = $mode, settings:\n".print_r($settings, true));
    198208    if (!is_array($settings)) return false;
    199209    global $wpdb;
    200     if ((int)$entry_id  == 0)
    201         $entry_id = "";
     210    if ((int)$entry_id  <= 0)
     211        $entry_id = 0;
    202212    $separator = $abc = "";
    203213    $sep = "none";
     
    234244    $abc_len = strlen($abc);
    235245    $retry = 0;
    236 if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log(">mcgfuidgen_generate_value form_id = $form_id, entry_id = $entry_id, field_id = $field_id, abc len = $abc_len, ABC:\n$abc\nsettings:\n".print_r($settings,true));
     246if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log("0.mcgfuidgen_generate_value form_id = $form_id, entry_id = $entry_id, field_id = $field_id, abc len = $abc_len, ABC:\n$abc\nsettings:\n".print_r($settings,true));
    237247    if ((int)@$settings["sequence_on"] > 0)
    238248        $seq_start += $seq_step;
     
    266276            $seq_start += $seq_step;
    267277        }
     278                // check if custom value exists
     279                if (strlen(@$settings["custom_value"]) > 0) {
     280                    $expr = '$value = '.$settings["custom_value"].';';
     281                    $old_value = $value;
     282                    try {
     283                        eval($expr);                       
     284                    } catch (Exception $ex) {
     285                        $value = $old_value;   
     286                    }
     287                }
     288                // check filter
     289                $value = apply_filters("mcgfuidgen_custom_value", $value, $form_id, $entry_id, $settings);
    268290        // check if this is unique value
    269         $wpdb->query("LOCK TABLES `".MCGFUIDGEN_TABLE_NAME."` WRITE");
    270291        $qty = (int)$wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) AS qty FROM `".MCGFUIDGEN_TABLE_NAME."`
    271                         WHERE (form_id = $form_id) AND ((id_str = %s) OR (id_int = %d)) ", $value, $value ));
    272 if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log("1.mcgfuidgen_generate_value form_id = $form_id, entry_id = $entry_id, value = $value, qty = $qty, retry = $retry");
     292                        WHERE (form_id = $form_id) AND (id_str = %s) ", array($value) ));
     293if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log("1.mcgfuidgen_generate_value form_id = $form_id, field_id = $field_id, entry_id = $entry_id, value = $value, qty = $qty, retry = $retry");
    273294        if ($qty <= 0) {
     295                        if ($mode != "save") {
     296if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log("<mcgfuidgen_generate_value OK NOT SAVED! form_id = $form_id, field_id = $field_id, entry_id = $entry_id, value = $value, retry = $retry");
     297                            return $value;
     298                        }
    274299//var_dump($wpdb->prepare("INSERT INTO `".MCGFUIDGEN_TABLE_NAME."`(form_id,entry_id,field_id,id_str) VALUES ( $form_id, %s ,$field_id, %s )", $entry_id, $value ));die;
    275             if (($t == "digits") && ($freq <= 0) && ($len <= 10))
    276                 $wpdb->query($wpdb->prepare( "INSERT INTO `".MCGFUIDGEN_TABLE_NAME."`(form_id,entry_id,field_id,id_int) VALUES ($form_id,%s,$field_id,%d)", $entry_id, $value ));
    277             else
    278                 $wpdb->query($wpdb->prepare( "INSERT INTO `".MCGFUIDGEN_TABLE_NAME."`(form_id,entry_id,field_id,id_str) VALUES ($form_id,%s,$field_id,%s)", $entry_id, $value ));
     300                $wpdb->query($wpdb->prepare( "INSERT INTO `".MCGFUIDGEN_TABLE_NAME."`(form_id,entry_id,field_id,id_str) VALUES ($form_id,$entry_id,$field_id,%s)", array($value) ));
    279301            $wpdb->query("UNLOCK TABLES");
    280302            $id = $wpdb->insert_id;
    281 if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log("<mcgfuidgen_generate_value form_id = $form_id, entry_id = $entry_id, value = $value, id = $id, retry = $retry");
     303if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log("<mcgfuidgen_generate_value OK SAVED! form_id = $form_id, field_id = $field_id, entry_id = $entry_id, value = $value, id = $id, retry = $retry");
    282304            return array("id" => $id, "value" => $value);
    283305        }
    284         $wpdb->query("UNLOCK TABLES");
    285306        $retry++;
    286307    } // loop until value will not be unqiue
    287 if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log("<mcgfuidgen_generate_value ERROR! form_id = $form_id, entry_id = $entry_id, value = $value, retry = $retry");
     308if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log("<mcgfuidgen_generate_value ERROR! form_id = $form_id, field_id = $field_id, entry_id = $entry_id, value = $value, retry = $retry");
    288309    return false;
    289310}
     
    299320        $settings = json_decode($settings_str,true);
    300321if (defined("MCGFUIDGEN_DEBUG")) mcgfuidgen_log("2.mcgfuidgen_field_input value = $value, entry_id = $entry_id, form_id = $form_id, settings:\n".print_r($settings,true));
    301         if (!is_array($settings)) return $input;
    302         if ($post_id > 0) {
    303             $ar = mcgfuidgen_load_value($post_id);
    304             if ($ar === false)
    305                 $ar = mcgfuidgen_generate_value($form_id,$entry_id,$field->id,$settings);
    306         } else {
    307             $ar = mcgfuidgen_generate_value($form_id,$entry_id,$field->id,$settings);
    308         }
     322        if (!is_array($settings)) {
     323if (defined("MCGFUIDGEN_DEBUG")) mcgfuidgen_log("<mcgfuidgen_field_input ERROR - no settings, value = $value, entry_id = $entry_id, form_id = $form_id, settings:\n".print_r($settings,true));
     324                    return $input;
     325                }
     326        if ($settings["generation"] == "form_submit") {
     327                    $ar = array( "value" => __("Value will be generated on submit", MCGFUIDGEN_TRANSLATE_DOMAIN), "id" => 0);
     328                } else {
     329                    if ($post_id > 0) {
     330                        $ar = mcgfuidgen_load_value($post_id);
     331                        if ($ar === false)
     332                                $ar = mcgfuidgen_generate_value($form_id,$entry_id,$field->id,$settings,"save");
     333                    } else {
     334                        $ar = mcgfuidgen_generate_value($form_id,$entry_id,$field->id,$settings,"save");
     335                    }
     336                }
    309337if (defined("MCGFUIDGEN_DEBUG")) mcgfuidgen_log("3.mcgfuidgen_field_input value = $value, entry_id = $entry_id, form_id = $form_id, value - id:\n".print_r($ar,true));
    310338        $pr_type = $settings["render_type"];
     
    349377}
    350378
    351 function mcgfuidgen_post_paging( $form, $source_page_number, $current_page_number ) {
    352 if ( defined( "MCGFUIDGEN_DEBUG" ) ) {
    353      mcgfuidgen_log("mcgfuidgen_post_paging form_id = " . $form["id"]." UIDGEN front =  ".$GLOBALS['MCGFUIDGEN_FRONT'] ." MCGF front = ".$GLOBALS['MCGF_FRONT_INIT']);
    354     file_put_contents( MCGFUIDGEN_PLUGIN_DIR . "submit_page_form_" . $form["id"] . ".txt", print_r( $form, true ) );
    355     file_put_contents( MCGFUIDGEN_PLUGIN_DIR . "submit_page_request_" . $form["id"] . ".txt", print_r( $_REQUEST, true ) );
    356 }
    357     if ((int)@$GLOBALS['MCGF_FRONT_INIT'] <= 0) {
    358          $GLOBALS['MCGF_FRONT_INIT'] = 1;
    359 //       wp_enqueue_script( 'jquery', site_url(). '/wp-includes/js/jquery/jquery.js', array(), MCGFUIDGEN_PLUGIN_VERSION, false );
    360 //       wp_enqueue_script( 'jquery-migrate', site_url(). '/wp-includes/js/jquery/jquery-migrate.min.js', array(), MCGFUIDGEN_PLUGIN_VERSION, false );
    361     } // global init
    362     if ((int)@$GLOBALS['MCGFUIDGEN_FRONT'] <= 0) {
    363         $GLOBALS['MCGFUIDGEN_FRONT'] = 1;
    364     } // MCGFUIDGEN init
    365 }
    366 
    367379function mcgfuidgen_field_css_class($classes, $field, $form){
    368     if( $field["type"] == "uidgen" ){
    369         $classes .= " gform_uidgen";
    370     }
    371     return $classes;
    372 }
    373 
    374 function mcgfuidgen_head(){
    375     @ob_start();
    376 }
    377 
    378 function mcgfuidgen_footer(){
    379     $s = @ob_get_clean();
    380     $form_id = 0;
    381     if ($ar = mcgfuidgen_GetStringBetweenTags("gform_fields_","'",$s))
    382         $form_id = (int)@$ar[0];
    383     if ($form_id > 0) {
    384         // some form rendered
    385         $GLOBALS['MCGF_FRONT_INIT'] = 1;
    386         // render required scripts for front view of submission pages of the form
    387         mcgfuidgen_post_paging(array("id" => $form_id),1,1);
    388     }
    389     echo $s;
     380    if( $field["type"] == "uidgen" ){
     381            $classes .= " gform_uidgen";
     382    }
     383    return $classes;
    390384}
    391385
    392386function mcgfuidgen_after_submission( $entry, $form ){
    393     global $wpdb;
    394     $form_id = $form["id"];
    395     $post_id = $entry["post_id"];
    396     $entry_id = $entry["id"];
    397 if ( defined( "MCGFUIDGEN_DEBUG" ) ) {
    398      mcgfuidgen_log(">mcgfuidgen_after_submission form_id = ".$form["id"]." post_id = $post_id, entry_id = $entry_id");
    399     file_put_contents( MCGFUIDGEN_PLUGIN_DIR . "uidgen_after_submit_form_" . $form["id"] . ".txt", print_r( $form, true ) );
    400     file_put_contents( MCGFUIDGEN_PLUGIN_DIR . "uidgen_after_submit_entry_" . $form["id"] . ".txt", print_r( $entry, true ) );
    401 }
    402     // set post_id on insert new post
    403     foreach ($form["fields"] as $field) {
    404             if ($field->type == "uidgen") {
    405                 $field_id = $field->id;
    406                 $id = @$_REQUEST["input_".$field_id."_id"];
     387    global $wpdb;
     388    $form_id = $form["id"];
     389    $post_id = $entry["post_id"];
     390    $entry_id = $entry["id"];
     391if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log(">mcgfuidgen_after_submission form_id = ".$form["id"]." post_id = $post_id, entry_id = $entry_id\nentry:\n". print_r( $entry, true ));
     392    $entry = GFAPI::get_entry( $entry_id );
     393if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log("1.mcgfuidgen_after_submission form_id = ".$form["id"]." post_id = $post_id, entry_id = $entry_id\nentry:\n". print_r( $entry, true ));
     394    // set post_id on insert new post
     395    foreach ($form["fields"] as $field) {
     396        if ($field->type == "uidgen") {
     397            $field_id = $field->id;
     398
     399            $settings_str = $field->mcgfuidgen_settings;
     400            $settings = json_decode($settings_str,true);
     401if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log("2.mcgfuidgen_after_submission form_id = ".$form["id"]." post_id = $post_id, entry_id = $entry_id\nsettings:\n". print_r( $settings, true ));
     402            if (@$settings["generation"] == "form_submit") {
     403                $ar = mcgfuidgen_generate_value($form_id, $entry_id, $field_id, $settings, "save");
     404                $entry[$field_id] = $ar["value"];
     405                GFAPI::update_entry($entry);
     406if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log("3.mcgfuidgen_after_submission form_id = ".$form["id"]." post_id = $post_id, entry_id = $entry_id\nentry:\n". print_r( $entry, true ));
     407            } else {
     408                $id = @$_REQUEST["input_".$field_id."_id"];
    407409if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log("1.mcgfuidgen_after_submission field_id = $field_id id = $id");
    408                 if (strlen($id) > 0) {
    409                     $sql = $wpdb->prepare( "UPDATE `".MCGFUIDGEN_TABLE_NAME."` SET post_id = %s, entry_id = %s, form_id = %d, field_id = %d WHERE id = %s",$post_id,$entry_id,$form_id,$field_id,$id );
     410                if (strlen($id) > 0) {
     411                        $sql = $wpdb->prepare( "UPDATE `".MCGFUIDGEN_TABLE_NAME."` SET post_id = %s, entry_id = %s, form_id = %d, field_id = %d WHERE id = %s",$post_id,$entry_id,$form_id,$field_id,$id );
    410412if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log("2.mcgfuidgen_after_submission field_id = $field_id query\n".print_r($sql,true));
    411                     $wpdb->query($sql);
    412                 }
    413             }
    414     }
    415 }
    416 
     413                        $wpdb->query($sql);
     414                }
     415            }
     416        }
     417    }
     418}
     419
     420function mcgfuidgen_generate_value_preview(){
     421if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log(">mcgfuidgen_generate_value_preview \n".print_r($_POST, true));   
     422    $form_id = (int)@$_POST["form_id"];
     423    $field_id = (int)@$_POST["field_id"];
     424    $settings = $_POST["settings"];
     425if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log("1.mcgfuidgen_generate_value_preview form_id = $form_id, settings:\n".print_r($settings, true));   
     426    $value = mcgfuidgen_generate_value($form_id, 0, $field_id, $settings, "");
     427    header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
     428    header("Cache-Control: post-check=0, pre-check=0", false);
     429    header("Pragma: no-cache");
     430    echo $value;
     431    exit(0);
     432}
     433
     434function mcgfuidgen_field_container( $field_container, $field, $form, $css_class, $style, $field_content ) {
     435if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log(">mcgfuidgen_field_container css=$css_class style = $style content:\n$field_content\n$field_container\n".print_r($field, true)."\n".print_r($form, true));   
     436   
     437    return $field_container;
     438}
    417439////////////////////////////////////////////////// filters, actions, hooks /////////////////////////////////////////////
    418440register_activation_hook( __FILE__, 'mcgfuidgen_activation' ); // plugin activation
     441// container
     442add_filter( 'gform_field_container', 'mcgfuidgen_field_container', 10, 6 );
    419443// add new field button in fields editor
    420444add_filter( 'gform_add_field_buttons', 'mcgfuidgen_add_field_buttons' );
     
    427451// adds javascript code for new features added to fields editor by this plugin
    428452add_action( 'gform_editor_js', 'mcgfuidgen_editor_js' );
     453// ajax call to generate preview value
     454add_action( "wp_ajax_mcgfuidgen_generate_value_preview", "mcgfuidgen_generate_value_preview");
    429455// Adds title to GF custom field
    430456add_filter( 'gform_field_type_title' , 'mcgfuidgen_field_type_title', 10, 2);
    431457// Renders input element show on form submission page
    432458if (!is_admin()) add_filter('gform_field_input', 'mcgfuidgen_field_input', 10, 5);
    433 // adds front scripts and CSS if form has page breaks
    434 $GLOBALS['MCGFUIDGEN_FRONT'] = 0;
    435 if ((int)@$GLOBALS['MCGF_FRONT_INIT'] <= 0) $GLOBALS['MCGF_FRONT_INIT']= 0;
    436 add_action( 'gform_post_paging', 'mcgfuidgen_post_paging', 10, 3 );
     459
    437460// Add a custom class to the field li
    438461add_action("gform_field_css_class", "mcgfuidgen_field_css_class", 10, 3);
    439462// after form submission
    440463add_action('gform_after_submission', 'mcgfuidgen_after_submission', 10, 2);
    441 // filter page content
    442 add_action('init', 'mcgfuidgen_head', 0);
    443 add_action('wp_footer', 'mcgfuidgen_footer', PHP_INT_MAX);
     464
    444465////////////////////////////////////////////////// end filters, actions, hooks /////////////////////////////////////////
    445 ?>
  • gf-mc-unique-id-generator-field/trunk/readme.txt

    r1693957 r2173326  
    22Contributors: modcodingcom
    33Donate link: https://modcoding.com/product/gravity-forms-mc-unique-id-generator-field-wordpress-plugin/?utm_source=wordpress
    4 Tags: gravity forms, unique identifier generator
     4Tags: gravity forms, unique identifier generator, unique id generator
    55Requires at least: 3.0.1
    6 Tested up to: 4.8.0
    7 Stable tag: 1.40
     6Tested up to: 5.2.4
     7Stable tag: 2.00
     8Requires PHP: 5.2
    89License: GNU GPL v.2
    910License URI: https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html
     
    3031or
    3132[gravityform id="<FORM_ID>" update]
     333) Possibility to customize values being generated using field setting (will be converted to $value using eval PHP function)
     34or using Wordpress filter "mcgfuidgen_custom_value":
     35
     36add_filter("mcgfuidgen_custom_value", "some_function",10,4);
     37function some_function($value, $form_id, $entry_id, $settings){
     38    return @date("d.m.Y H:i:s")." - ".$value; // example adds date and time before unique value
     39}
     40
    3241
    3342NOTE:
     
    5564or
    5665[gravityform id="<FORM_ID>" update]
     663) Possibility to customize values being generated using field setting (will be converted to $value using eval PHP function)
     67or using Wordpress filter "mcgfuidgen_custom_value":
     68
     69add_filter("mcgfuidgen_custom_value", "some_function",10,4);
     70function some_function($value, $form_id, $entry_id, $settings){
     71    return @date("d.m.Y H:i:s")." - ".$value; // example adds date and time before unique value
     72}
    5773
    5874
     
    7187== Screenshots ==
    7288
    73 1. This screenshot shows unqiue id field settings in Gravity Forms editor for numeric id generation.
    74 2. Here is screen with demo form showing unqiue id field.
     891. This screenshot shows unique id field settings in Gravity Forms editor for numeric id generation.
     902. Here is screen with demo form showing unique id field.
    75913. Settings screen with example of text id generation (like serial number).
    76924. Here is screen with alphabetical id generation example.
     
    7995
    8096== Changelog ==
     97v.2.00 - 15 October 2019
     98Code partially rewritten for better operation and clearness, tested under PHP 7.3.
     99Removed preview generation in Javascript, instead AJAX call used to PHP code.
     100Added new generation property - now value can be generated on form show or on form submit, what you prefer.
     101Earlier only on form show was supported.
     102
    81103v.1.40 - 10 July 2017
    82104Bugs with loading settings in editor and regenerating same value multiple times fixed.
     
    98120== Upgrade Notice ==
    99121All upgrades are free lifetime, even for commercial full version.
    100 (c) Modular Coding Inc., 2016-2017
     122(c) Modular Coding Inc., 2016-2019
Note: See TracChangeset for help on using the changeset viewer.