Changeset 2173326
- Timestamp:
- 10/15/2019 12:22:05 AM (6 years ago)
- Location:
- gf-mc-unique-id-generator-field/trunk
- Files:
-
- 2 added
- 4 edited
-
assets/js/editor-full.js (modified) (4 diffs)
-
assets/js/editor.js (modified) (1 diff)
-
gf_mc_unique_id_generator_field.php (modified) (16 diffs)
-
gf_mc_unique_id_generator_field_lite.png (added)
-
gf_mc_unique_id_generator_field_lite128.png (added)
-
readme.txt (modified) (6 diffs)
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; 1 function 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 }); 64 13 } 65 14 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()); 15 function 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; 110 36 } 111 37 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); 38 function mcgfuidgen_save_settings(el){ 39 var field_id = parseInt(jQuery(el).closest("li.gfield").attr("id").replace("field_","")); 40 var prefix = "#field_" +field_id+" "; 116 41 var len = parseInt(jQuery(prefix + ".field_uidgen_length").val()); 117 42 if (isNaN(len) || (len < 1) || (len > 100)) len = 6; … … 119 44 var ct = "" + jQuery(prefix + ".field_uidgen_chartype").val(); 120 45 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); 123 48 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); 135 57 } 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); 139 61 } 140 62 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); 149 70 } 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); 162 73 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); 165 75 } 166 76 167 function mcgfuidgen_default_settings() { 168 // console.log("reset default settings"); 169 var prefix = "#field_" + mc_cur_field_id+" "; 170 // console.log(prefix); 77 function mcgfuidgen_default_settings(field_id) { 78 var prefix = "#field_" + field_id+" "; 171 79 jQuery(prefix + ".field_uidgen_length").val(6); 172 80 jQuery(prefix + ".field_uidgen_chartype").val("digits"); … … 178 86 jQuery(prefix + ".field_uidgen_render").val("text"); 179 87 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)); 181 94 } 182 95 183 96 function 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; 188 100 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 */ 208 122 } 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); 211 125 } 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); 215 127 } 216 128 … … 219 131 //binding to the load field settings event to initialize the checkbox 220 132 jQuery(document).bind("gform_load_field_settings", function(event, field, form){ 221 // console.log("load filed settings",field);222 133 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); 246 156 } else { 247 jQuery(".field_uidgen").hide();157 jQuery(".field_uidgen").hide(); 248 158 } 249 // SetFieldDescription("my description");250 159 }); 251 160 252 161 jQuery(document).bind("gform_field_added",function(event, form, field){ 253 // console.log(event);// console.log(field);// console.log(form);// console.log("added");254 162 if (field.type == "uidgen") { 255 163 jQuery("#field_"+field.id+" .gfield_label").html("Unique ID"); 256 164 } 257 // console.log("fid = "+field.id);258 165 }); -
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")}); 1 function 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)})} 2 function 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(), 3 custom_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()}} 4 function 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), 5 1>=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); 6 b=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)} 7 function 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))} 9 function 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)); 10 jQuery(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)} 11 fieldSettings.text+=", .field_uidgen"; 12 jQuery(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(), 13 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(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 7 7 Plugin URI: https://modcoding.com/product/gravity-forms-mc-unique-id-generator-field-wordpress-plugin/?utm_source=wordpress 8 8 Description: Unique identifiers generator field - located in Advanced Fields section of Gravity Forms fields editor. Lite version, see readme.md for details 9 Version: 1.409 Version: 2.00 10 10 Author: Modular Coding Inc. 11 11 Author URI: https://modcoding.com?utm_source=wordpress 12 12 License: GNU GPL v.2 13 13 */ 14 define ("MCGFUIDGEN_PLUGIN_VERSION"," 1.30");14 define ("MCGFUIDGEN_PLUGIN_VERSION","2.00"); 15 15 define ("MCGFUIDGEN_TRANSLATE_DOMAIN","mcgfuidgen"); 16 16 define ("MCGFUIDGEN_UNQIUEID_TAG", "{UniqueID}"); … … 28 28 define ("MCGFUIDGEN_LEAD_ENTRY_TABLE",$table_prefix."rg_lead_detail"); 29 29 define ("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 ////////////////////////////////////////////////////// 33 31 function mcgfuidgen_activation(){ 34 32 global $wpdb; … … 39 37 post_id BIGINT NULL, 40 38 field_id INT NOT NULL, 41 id_str VARCHAR(100) NULL, 42 id_int BIGINT NULL, 39 id_str VARCHAR(250) NULL, 43 40 PRIMARY KEY(id), 44 41 KEY (id_str), … … 46 43 KEY (entry_id), 47 44 KEY (field_id), 48 UNIQUE KEY(id_ int, id_str, entry_id, form_id)45 UNIQUE KEY(id_str, entry_id, form_id) 49 46 ) ENGINE = MyISAM; 50 47 "; 48 $wpdb->query ( $sql ); 49 $sql = "UPDATE `".MCGFUIDGEN_TABLE_NAME."` SET `id_str` = `id_int` WHERE `id_str` IS NULL"; 51 50 $wpdb->query ( $sql ); 52 51 //var_dump($res);die($sql); … … 76 75 <?php gform_tooltip( 'form_field_uidgen_length_tooltip' ) ?> 77 76 </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)"> 79 78 <?php for ($i = 1; $i <= 100; $i++) { $sel = ($i == 10) ? 'selected="selected"': ""; ?> 80 79 <option value="<?php echo $i;?>" <?php echo $sel;?>><?php echo $i;?></option> … … 87 86 <?php gform_tooltip( 'form_field_uidgen_chartype_tooltip' ) ?> 88 87 </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)"> 90 89 <option value="digits" selected="selected">Digits (123)</option> 91 90 <option value="upper">Uppercase (ABC)</option> … … 104 103 Please visit our web site 105 104 </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> 109 108 </li> 110 109 <?php 111 110 ?> 112 111 <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)" /> 114 113 <label class="mcgfuidgen_iblock" style="width: 75%!important; margin-bottom: 0 !important; display: inline-block !important;"> 115 114 <?php _e( 'Sequence values', MCGFUIDGEN_TRANSLATE_DOMAIN ); ?> 116 115 <?php gform_tooltip( 'form_field_uidgen_sequence_tooltip' ) ?> 117 116 </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" /> 120 119 </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 121 135 <?php 122 136 } … … 131 145 <?php gform_tooltip( 'form_field_uidgen_render_tooltip' ) ?> 132 146 </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)"> 134 148 <option value="text" selected="selected">Text</option> 135 149 <option value="hidden">Hidden</option> … … 138 152 <option value="html">Custom HTML</option> 139 153 </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> 141 155 </li> 142 156 <?php … … 145 159 146 160 function 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; 153 168 } 154 169 155 170 function 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 ); 168 181 } 169 182 … … 181 194 182 195 function mcgfuidgen_load_value($post_id){ 183 global $wpdb;184 // load value from db196 global $wpdb; 197 // load value from db 185 198 if ( 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); 201 if ( defined( "MCGFUIDGEN_DEBUG" ) ) mcgfuidgen_log("<mcgfuidgen_load_value post_id = $post_id value = $value\n".$sql); 202 return array("value" => $value, "id" => ""); 203 } 204 205 function mcgfuidgen_generate_value($form_id,$entry_id,$field_id,$settings,$mode="save"){ 206 207 if ( 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)); 198 208 if (!is_array($settings)) return false; 199 209 global $wpdb; 200 if ((int)$entry_id == 0)201 $entry_id = "";210 if ((int)$entry_id <= 0) 211 $entry_id = 0; 202 212 $separator = $abc = ""; 203 213 $sep = "none"; … … 234 244 $abc_len = strlen($abc); 235 245 $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));246 if ( 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)); 237 247 if ((int)@$settings["sequence_on"] > 0) 238 248 $seq_start += $seq_step; … … 266 276 $seq_start += $seq_step; 267 277 } 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); 268 290 // check if this is unique value 269 $wpdb->query("LOCK TABLES `".MCGFUIDGEN_TABLE_NAME."` WRITE");270 291 $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) )); 293 if ( 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"); 273 294 if ($qty <= 0) { 295 if ($mode != "save") { 296 if ( 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 } 274 299 //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) )); 279 301 $wpdb->query("UNLOCK TABLES"); 280 302 $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");303 if ( 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"); 282 304 return array("id" => $id, "value" => $value); 283 305 } 284 $wpdb->query("UNLOCK TABLES");285 306 $retry++; 286 307 } // 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");308 if ( 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"); 288 309 return false; 289 310 } … … 299 320 $settings = json_decode($settings_str,true); 300 321 if (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)) { 323 if (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 } 309 337 if (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)); 310 338 $pr_type = $settings["render_type"]; … … 349 377 } 350 378 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 init362 if ((int)@$GLOBALS['MCGFUIDGEN_FRONT'] <= 0) {363 $GLOBALS['MCGFUIDGEN_FRONT'] = 1;364 } // MCGFUIDGEN init365 }366 367 379 function 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; 390 384 } 391 385 392 386 function 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"]; 391 if ( 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 ); 393 if ( 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); 401 if ( 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); 406 if ( 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"]; 407 409 if ( 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 ); 410 412 if ( 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 420 function mcgfuidgen_generate_value_preview(){ 421 if ( 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"]; 425 if ( 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 434 function mcgfuidgen_field_container( $field_container, $field, $form, $css_class, $style, $field_content ) { 435 if ( 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 } 417 439 ////////////////////////////////////////////////// filters, actions, hooks ///////////////////////////////////////////// 418 440 register_activation_hook( __FILE__, 'mcgfuidgen_activation' ); // plugin activation 441 // container 442 add_filter( 'gform_field_container', 'mcgfuidgen_field_container', 10, 6 ); 419 443 // add new field button in fields editor 420 444 add_filter( 'gform_add_field_buttons', 'mcgfuidgen_add_field_buttons' ); … … 427 451 // adds javascript code for new features added to fields editor by this plugin 428 452 add_action( 'gform_editor_js', 'mcgfuidgen_editor_js' ); 453 // ajax call to generate preview value 454 add_action( "wp_ajax_mcgfuidgen_generate_value_preview", "mcgfuidgen_generate_value_preview"); 429 455 // Adds title to GF custom field 430 456 add_filter( 'gform_field_type_title' , 'mcgfuidgen_field_type_title', 10, 2); 431 457 // Renders input element show on form submission page 432 458 if (!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 437 460 // Add a custom class to the field li 438 461 add_action("gform_field_css_class", "mcgfuidgen_field_css_class", 10, 3); 439 462 // after form submission 440 463 add_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 444 465 ////////////////////////////////////////////////// end filters, actions, hooks ///////////////////////////////////////// 445 ?> -
gf-mc-unique-id-generator-field/trunk/readme.txt
r1693957 r2173326 2 2 Contributors: modcodingcom 3 3 Donate link: https://modcoding.com/product/gravity-forms-mc-unique-id-generator-field-wordpress-plugin/?utm_source=wordpress 4 Tags: gravity forms, unique identifier generator 4 Tags: gravity forms, unique identifier generator, unique id generator 5 5 Requires at least: 3.0.1 6 Tested up to: 4.8.0 7 Stable tag: 1.40 6 Tested up to: 5.2.4 7 Stable tag: 2.00 8 Requires PHP: 5.2 8 9 License: GNU GPL v.2 9 10 License URI: https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html … … 30 31 or 31 32 [gravityform id="<FORM_ID>" update] 33 3) Possibility to customize values being generated using field setting (will be converted to $value using eval PHP function) 34 or using Wordpress filter "mcgfuidgen_custom_value": 35 36 add_filter("mcgfuidgen_custom_value", "some_function",10,4); 37 function 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 32 41 33 42 NOTE: … … 55 64 or 56 65 [gravityform id="<FORM_ID>" update] 66 3) Possibility to customize values being generated using field setting (will be converted to $value using eval PHP function) 67 or using Wordpress filter "mcgfuidgen_custom_value": 68 69 add_filter("mcgfuidgen_custom_value", "some_function",10,4); 70 function 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 } 57 73 58 74 … … 71 87 == Screenshots == 72 88 73 1. This screenshot shows un qiue id field settings in Gravity Forms editor for numeric id generation.74 2. Here is screen with demo form showing un qiue id field.89 1. This screenshot shows unique id field settings in Gravity Forms editor for numeric id generation. 90 2. Here is screen with demo form showing unique id field. 75 91 3. Settings screen with example of text id generation (like serial number). 76 92 4. Here is screen with alphabetical id generation example. … … 79 95 80 96 == Changelog == 97 v.2.00 - 15 October 2019 98 Code partially rewritten for better operation and clearness, tested under PHP 7.3. 99 Removed preview generation in Javascript, instead AJAX call used to PHP code. 100 Added new generation property - now value can be generated on form show or on form submit, what you prefer. 101 Earlier only on form show was supported. 102 81 103 v.1.40 - 10 July 2017 82 104 Bugs with loading settings in editor and regenerating same value multiple times fixed. … … 98 120 == Upgrade Notice == 99 121 All upgrades are free lifetime, even for commercial full version. 100 (c) Modular Coding Inc., 2016-201 7122 (c) Modular Coding Inc., 2016-2019
Note: See TracChangeset
for help on using the changeset viewer.