Custom Field Template - Version 2.5.7

Version Description

  • Multiple validation.
  • Loading limitation by the user id, user login and user role.
  • Bugfix: import options.
Download this release

Release Info

Developer Hiroaki Miyashita
Plugin Icon 128x128 Custom Field Template
Version 2.5.7
Comparing to
See all releases

Code changes from version 2.5.6 to 2.5.7

Files changed (69) hide show
  1. custom-field-template-ja.mo +0 -0
  2. custom-field-template-ja.po +208 -185
  3. custom-field-template.php +135 -14
  4. custom-field-template.pot +194 -181
  5. js/additional-methods.js +1474 -242
  6. js/jquery.validate.js +1661 -1188
  7. js/messages_ar.js +23 -0
  8. js/messages_az.js +23 -0
  9. js/messages_bg.js +23 -0
  10. js/messages_bn_BD.js +23 -0
  11. js/messages_ca.js +20 -20
  12. js/messages_cs.js +24 -0
  13. js/messages_da.js +34 -0
  14. js/messages_de.js +70 -20
  15. js/messages_el.js +23 -0
  16. js/messages_es.js +26 -23
  17. js/messages_es_AR.js +27 -0
  18. js/messages_es_PE.js +27 -0
  19. js/messages_et.js +21 -0
  20. js/messages_eu.js +23 -0
  21. js/messages_fa.js +27 -0
  22. js/messages_fi.js +21 -0
  23. js/messages_fr.js +52 -23
  24. js/messages_ge.js +23 -0
  25. js/messages_gl.js +28 -0
  26. js/messages_he.js +23 -0
  27. js/messages_hr.js +23 -0
  28. js/messages_hu.js +23 -20
  29. js/messages_hy_AM.js +23 -0
  30. js/messages_id.js +22 -0
  31. js/messages_is.js +21 -0
  32. js/messages_it.js +27 -23
  33. js/messages_ja.js +22 -20
  34. js/messages_ka.js +23 -0
  35. js/messages_kk.js +23 -0
  36. js/messages_ko.js +23 -0
  37. js/messages_lt.js +23 -0
  38. js/messages_lv.js +23 -0
  39. js/messages_mk.js +23 -0
  40. js/messages_my.js +23 -0
  41. js/messages_nl.js +34 -23
  42. js/messages_no.js +23 -0
  43. js/messages_pl.js +26 -0
  44. js/messages_pt_BR.js +79 -0
  45. js/messages_pt_PT.js +27 -0
  46. js/messages_ro.js +23 -0
  47. js/messages_ru.js +23 -23
  48. js/messages_sd.js +23 -0
  49. js/messages_si.js +23 -0
  50. js/messages_sk.js +21 -0
  51. js/messages_sl.js +23 -0
  52. js/messages_sr.js +24 -0
  53. js/messages_sr_lat.js +24 -0
  54. js/messages_sv.js +23 -0
  55. js/messages_th.js +23 -0
  56. js/messages_tj.js +23 -0
  57. js/messages_tr.js +25 -23
  58. js/messages_uk.js +23 -0
  59. js/messages_ur.js +23 -0
  60. js/messages_vi.js +23 -0
  61. js/messages_zh.js +24 -0
  62. js/messages_zh_TW.js +25 -0
  63. js/methods_de.js +12 -0
  64. js/methods_es_CL.js +12 -0
  65. js/methods_fi.js +12 -0
  66. js/methods_it.js +12 -0
  67. js/methods_nl.js +12 -0
  68. js/methods_pt.js +9 -0
  69. readme.txt +10 -2
custom-field-template-ja.mo CHANGED
Binary file
custom-field-template-ja.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Custom Field Template\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2019-09-28 06:00+0900\n"
6
- "PO-Revision-Date: 2019-09-28 06:00+0900\n"
7
  "Last-Translator: \n"
8
  "Language-Team: \n"
9
  "Language: ja_JP\n"
@@ -13,51 +13,51 @@ msgstr ""
13
  "X-Poedit-SourceCharset: UTF-8\n"
14
  "X-Poedit-KeywordsList: __;_e;_c;_x:1,2c;_ex:1,2c\n"
15
  "X-Poedit-Basepath: ..\n"
16
- "X-Generator: Poedit 2.2.3\n"
17
  "X-Poedit-SearchPath-0: custom-field-template\n"
18
 
19
- #: custom-field-template/custom-field-template.php:181
20
- #: custom-field-template/custom-field-template.php:204
21
  #: custom-field-template/custom-field-template.php:205
22
- #: custom-field-template/custom-field-template.php:223
23
- #: custom-field-template/custom-field-template.php:869
24
- #: custom-field-template/custom-field-template.php:1166
25
- #: custom-field-template/custom-field-template.php:2717
26
- #: custom-field-template/custom-field-template.php:2810
 
27
  msgid "Custom Field Template"
28
  msgstr "カスタムフィールドテンプレート"
29
 
30
- #: custom-field-template/custom-field-template.php:233
31
  msgid "Media Picker"
32
  msgstr "メディアピッカー"
33
 
34
- #: custom-field-template/custom-field-template.php:235
35
  msgid "Use this"
36
  msgstr "これを使用する"
37
 
38
- #: custom-field-template/custom-field-template.php:349
39
- #: custom-field-template/custom-field-template.php:3023
40
  msgid "Load"
41
  msgstr "読込"
42
 
43
- #: custom-field-template/custom-field-template.php:678
44
  msgid "read more"
45
  msgstr "続きを表示"
46
 
47
- #: custom-field-template/custom-field-template.php:699
48
- #: custom-field-template/custom-field-template.php:711
49
  msgid "Custom Fields"
50
  msgstr "カスタムフィールド"
51
 
52
- #: custom-field-template/custom-field-template.php:743
53
  msgid "Settings"
54
  msgstr "設定"
55
 
56
- #: custom-field-template/custom-field-template.php:786
57
  msgid "Default Template"
58
  msgstr "デフォルトテンプレート"
59
 
60
- #: custom-field-template/custom-field-template.php:1013
61
  msgid ""
62
  "You can not use the following words as the field key: `content`, "
63
  "`post_title`, and `excerpt`, and `action`."
@@ -65,132 +65,145 @@ msgstr ""
65
  "次のキーワードはフィールドキーとして使用できません。 `content`、"
66
  "`post_title`、`excerpt`、`action`"
67
 
68
- #: custom-field-template/custom-field-template.php:1029
69
- #: custom-field-template/custom-field-template.php:1060
70
- #: custom-field-template/custom-field-template.php:1064
71
- #: custom-field-template/custom-field-template.php:1076
72
- #: custom-field-template/custom-field-template.php:1084
73
- #: custom-field-template/custom-field-template.php:1102
 
74
  msgid "Options updated."
75
  msgstr "オプションは更新されました。"
76
 
77
- #: custom-field-template/custom-field-template.php:1106
78
  msgid "Value Counts rebuilt."
79
  msgstr "バリューカウントは再構築されました。"
80
 
81
- #: custom-field-template/custom-field-template.php:1109
82
  msgid "Tags rebuilt."
83
  msgstr "タグは再構築されました。"
84
 
85
- #: custom-field-template/custom-field-template.php:1118
86
  msgid "Options imported."
87
  msgstr "オプションはインポートされました。"
88
 
89
- #: custom-field-template/custom-field-template.php:1125
90
  msgid "Options resetted."
91
  msgstr "オプションはリセットされました。"
92
 
93
- #: custom-field-template/custom-field-template.php:1129
94
  msgid "Options deleted."
95
  msgstr "オプションは削除されました。"
96
 
97
- #: custom-field-template/custom-field-template.php:1173
98
- #: custom-field-template/custom-field-template.php:1233
99
- #: custom-field-template/custom-field-template.php:1354
100
- #: custom-field-template/custom-field-template.php:1373
101
- #: custom-field-template/custom-field-template.php:1404
102
- #: custom-field-template/custom-field-template.php:1437
103
- #: custom-field-template/custom-field-template.php:1482
104
- #: custom-field-template/custom-field-template.php:1503
105
- #: custom-field-template/custom-field-template.php:1520
106
- #: custom-field-template/custom-field-template.php:1697
107
- #: custom-field-template/custom-field-template.php:1713
108
- #: custom-field-template/custom-field-template.php:1729
109
- #: custom-field-template/custom-field-template.php:1745
110
- #: custom-field-template/custom-field-template.php:1764
111
- #: custom-field-template/custom-field-template.php:1780
112
- #: custom-field-template/custom-field-template.php:1789
113
  msgid "Click to toggle"
114
  msgstr "クリックで切替"
115
 
116
- #: custom-field-template/custom-field-template.php:1174
117
  msgid "Custom Field Template Options"
118
  msgstr "カスタムフィールドテンプレートオプション"
119
 
120
- #: custom-field-template/custom-field-template.php:1185
121
- #: custom-field-template/custom-field-template.php:2860
122
- #: custom-field-template/custom-field-template.php:2861
123
  msgid "Disable"
124
  msgstr "無効"
125
 
126
- #: custom-field-template/custom-field-template.php:1187
127
  msgid "Template Title"
128
  msgstr "テンプレートタイトル"
129
 
130
- #: custom-field-template/custom-field-template.php:1189
131
  msgid "Template Instruction"
132
  msgstr "テンプレートインストラクション"
133
 
134
- #: custom-field-template/custom-field-template.php:1191
135
- #: custom-field-template/custom-field-template.php:1456
136
  msgid "Post Type"
137
  msgstr "投稿タイプ"
138
 
139
- #: custom-field-template/custom-field-template.php:1193
140
- #: custom-field-template/custom-field-template.php:1457
141
  msgid "Both"
142
  msgstr "両方"
143
 
144
- #: custom-field-template/custom-field-template.php:1194
145
- #: custom-field-template/custom-field-template.php:1458
146
  msgid "Post"
147
  msgstr "投稿"
148
 
149
- #: custom-field-template/custom-field-template.php:1195
150
- #: custom-field-template/custom-field-template.php:1459
151
  msgid "Page"
152
  msgstr "ページ"
153
 
154
- #: custom-field-template/custom-field-template.php:1196
155
- #: custom-field-template/custom-field-template.php:1460
156
  msgid "Custom Post Type (comma-deliminated)"
157
  msgstr "カスタムポストタイプ (カンマ区切り)"
158
 
159
- #: custom-field-template/custom-field-template.php:1198
160
  msgid "Post ID (comma-deliminated)"
161
  msgstr "Post ID (カンマ区切り)"
162
 
163
- #: custom-field-template/custom-field-template.php:1200
164
- #: custom-field-template/custom-field-template.php:1462
165
  msgid "Category ID (comma-deliminated)"
166
- msgstr "カテゴリーID (カンマ区切り)"
167
 
168
- #: custom-field-template/custom-field-template.php:1202
169
  msgid "Page Template file name(s) (comma-deliminated)"
170
  msgstr "ページテンプレートファイル名 (カンマ区切り)"
171
 
172
- #: custom-field-template/custom-field-template.php:1204
 
 
 
 
 
 
 
 
 
 
 
 
173
  msgid "Template Format"
174
  msgstr "テンプレートフォーマット"
175
 
176
- #: custom-field-template/custom-field-template.php:1217
177
  msgid "Template Content"
178
  msgstr "テンプレートコンテンツ"
179
 
180
- #: custom-field-template/custom-field-template.php:1224
181
- #: custom-field-template/custom-field-template.php:1345
182
- #: custom-field-template/custom-field-template.php:1364
183
- #: custom-field-template/custom-field-template.php:1395
184
- #: custom-field-template/custom-field-template.php:1428
185
- #: custom-field-template/custom-field-template.php:1473
186
  msgid "Update Options »"
187
  msgstr "オプションを更新する »"
188
 
189
- #: custom-field-template/custom-field-template.php:1234
190
  msgid "Global Settings"
191
  msgstr "グローバル設定"
192
 
193
- #: custom-field-template/custom-field-template.php:1249
194
  msgid ""
195
  "In case that you would like to replace custom keys by labels if `label` is "
196
  "set"
@@ -198,30 +211,30 @@ msgstr ""
198
  "`label`がセットされていて、カスタムフィールドのキーの代わりにラベルを表示した"
199
  "い場合"
200
 
201
- #: custom-field-template/custom-field-template.php:1250
202
  msgid "Use labels in place of custom keys"
203
  msgstr "カスタムフィールドのキーの代わりにラベルを使用する"
204
 
205
- #: custom-field-template/custom-field-template.php:1253
206
  msgid ""
207
  "In case that you would like to add p and br tags in textareas automatically"
208
  msgstr "テキストエリアでpタグ、brタグを自動的に追加したい場合"
209
 
210
- #: custom-field-template/custom-field-template.php:1254
211
  msgid "Use wpautop function"
212
  msgstr "wpautop関数を使用する"
213
 
214
- #: custom-field-template/custom-field-template.php:1258
215
  msgid ""
216
  "In case that you would like to save values automatically in switching "
217
  "templates"
218
  msgstr "テンプレート切替時自動で保存したい場合"
219
 
220
- #: custom-field-template/custom-field-template.php:1259
221
  msgid "Use the auto save in switching templates"
222
  msgstr "テンプレート切替時の自動保存を使用する"
223
 
224
- #: custom-field-template/custom-field-template.php:1263
225
  msgid ""
226
  "In case that you would like to disable input fields of the custom field "
227
  "template temporarily"
@@ -229,210 +242,210 @@ msgstr ""
229
  "一時的にカスタムフィールドテンプレートのインプットフィールドを一時的に無効に"
230
  "したい場合"
231
 
232
- #: custom-field-template/custom-field-template.php:1264
233
  msgid "Use the `Disable` button. The default custom fields will be superseded."
234
  msgstr "無効ボタンを使用する。デフォルトのカスタムフィールドが優先されます。"
235
 
236
- #: custom-field-template/custom-field-template.php:1268
237
  msgid "In case that you would like to forbid to use the initialize button."
238
  msgstr "初期化ボタンの使用を禁止する場合"
239
 
240
- #: custom-field-template/custom-field-template.php:1269
241
  msgid "Disable the initialize button"
242
  msgstr "初期化ボタンを無効にする"
243
 
244
- #: custom-field-template/custom-field-template.php:1273
245
  msgid "In case that you would like to forbid to use the save button."
246
  msgstr "保存ボタンの使用を禁止する場合"
247
 
248
- #: custom-field-template/custom-field-template.php:1274
249
  msgid "Disable the save button"
250
  msgstr "保存ボタンを無効にする"
251
 
252
- #: custom-field-template/custom-field-template.php:1278
253
  msgid "In case that you would like to forbid to use the default custom fields."
254
  msgstr "デフォルトのカスタムフィールドの使用を禁止する場合"
255
 
256
- #: custom-field-template/custom-field-template.php:1279
257
  msgid "Disable the default custom fields"
258
  msgstr "デフォルトのカスタムフィールドを無効にする"
259
 
260
- #: custom-field-template/custom-field-template.php:1283
261
  msgid "In case that you would like to forbid to use the quick edit."
262
  msgstr "クイック編集の使用を禁止する場合"
263
 
264
- #: custom-field-template/custom-field-template.php:1284
265
  msgid "Disable the quick edit"
266
  msgstr "クイック編集を無効にする"
267
 
268
- #: custom-field-template/custom-field-template.php:1288
269
  msgid "In case that you would like to forbid to use the admin search."
270
  msgstr "管理画面検索の使用を禁止する場合"
271
 
272
- #: custom-field-template/custom-field-template.php:1289
273
  msgid "Disable the admin search"
274
  msgstr "管理画面検索を無効にする"
275
 
276
- #: custom-field-template/custom-field-template.php:1293
277
  msgid ""
278
  "In case that you would like to forbid to display the custom field column on "
279
  "the edit post list page."
280
  msgstr "編集リストページのカスタムフィールドカラムの表示を禁止する場合"
281
 
282
- #: custom-field-template/custom-field-template.php:1294
283
  msgid "Disable the custom field column (The quick edit also does not work.)"
284
  msgstr "カスタムフィールドカラムを無効にする(クイック編集も動きません)"
285
 
286
- #: custom-field-template/custom-field-template.php:1298
287
  msgid ""
288
  "In case that you would like to replace the box title with the template title."
289
  msgstr "ボックスタイトルをテンプレートタイトルで置き換える場合"
290
 
291
- #: custom-field-template/custom-field-template.php:1299
292
  msgid "Replace the box title"
293
  msgstr "ボックスタイトルを置き換える"
294
 
295
- #: custom-field-template/custom-field-template.php:1303
296
  msgid "In case that you would like to deploy the box in each template."
297
  msgstr "テンプレートごとにボックスを配置する場合"
298
 
299
- #: custom-field-template/custom-field-template.php:1304
300
  msgid "Deploy the box in each template"
301
  msgstr "テンプレートごとにボックスを配置する"
302
 
303
- #: custom-field-template/custom-field-template.php:1308
304
  msgid "In case that you would like to use the shortcode in the widget."
305
  msgstr "ショートコードをウィジェットで使用したい場合"
306
 
307
- #: custom-field-template/custom-field-template.php:1309
308
  msgid "Use the shortcode in the widget"
309
  msgstr "ショートコードをウィジェットで使用する"
310
 
311
- #: custom-field-template/custom-field-template.php:1313
312
  msgid "In case that you would like to use the shortcode in the excerpt."
313
  msgstr "ショートコードを抜粋で使用したい場合"
314
 
315
- #: custom-field-template/custom-field-template.php:1314
316
  msgid "Use the shortcode in the excerpt"
317
  msgstr "ショートコードを抜粋で使用する"
318
 
319
- #: custom-field-template/custom-field-template.php:1318
320
  msgid "In case that you would like to use the jQuery validation."
321
  msgstr "jQuery バリデーションを使用したい場合"
322
 
323
- #: custom-field-template/custom-field-template.php:1319
324
  msgid "Use the jQuery validation"
325
  msgstr "jQuery バリデーションを使用する"
326
 
327
- #: custom-field-template/custom-field-template.php:1329
328
  msgid "Text to place before every list which is called by the cft shortcode"
329
  msgstr "cft ショートコードで呼ばれるリストの前のテキスト"
330
 
331
- #: custom-field-template/custom-field-template.php:1331
332
  msgid "Text to place after every list which is called by the cft shortcode"
333
  msgstr "cft ショートコードで呼ばれるリストの後のテキスト"
334
 
335
- #: custom-field-template/custom-field-template.php:1333
336
  msgid "Text to place before every value which is called by the cft shortcode"
337
  msgstr "cft ショートコードで呼ばれる値の前のテキスト"
338
 
339
- #: custom-field-template/custom-field-template.php:1335
340
  msgid "Text to place after every value which is called by the cft shortcode"
341
  msgstr "cft ショートコードで呼ばれる値の後のテキスト"
342
 
343
- #: custom-field-template/custom-field-template.php:1340
344
  msgid "In case that you would like to hide the advertisement right column."
345
  msgstr "右カラムの広告を隠す場合"
346
 
347
- #: custom-field-template/custom-field-template.php:1341
348
  msgid "I want to use a wider screen."
349
  msgstr "もっと広い画面を使いたい・・・。"
350
 
351
- #: custom-field-template/custom-field-template.php:1355
352
  msgid "ADMIN CSS"
353
  msgstr "ADMIN CSS"
354
 
355
- #: custom-field-template/custom-field-template.php:1374
356
  msgid "[cft] and [cftsearch] Shortcode Format"
357
  msgstr "[cft] and [cftsearch] Shortcode Format"
358
 
359
- #: custom-field-template/custom-field-template.php:1377
360
  msgid "For [cft], [key] will be converted into the value of [key]."
361
  msgstr "[cft]では、[key]は、[key]の値に置換されます。"
362
 
363
- #: custom-field-template/custom-field-template.php:1378
364
  msgid "For [cftsearch], [key] will be converted into the input field."
365
  msgstr "[cftsearch]では、[key]は、インプットフィールドに置換されます。"
366
 
367
- #: custom-field-template/custom-field-template.php:1389
368
- #: custom-field-template/custom-field-template.php:1465
369
  msgid "Use PHP"
370
  msgstr "PHPを使用する"
371
 
372
- #: custom-field-template/custom-field-template.php:1405
373
  msgid "PHP CODE (Experimental Option)"
374
  msgstr "PHP CODE (Experimental Option)"
375
 
376
- #: custom-field-template/custom-field-template.php:1407
377
  msgid "Are you sure to save PHP codes? Please do it at your own risk."
378
  msgstr "PHPコードを保存してよろしいですか?自己責任で実行してください。"
379
 
380
- #: custom-field-template/custom-field-template.php:1408
381
  msgid "For `text` and `textarea`, you must set $value as an string."
382
  msgstr "`text`と`textarea`は$valueを文字列としてセットしてください。"
383
 
384
- #: custom-field-template/custom-field-template.php:1410
385
  msgid ""
386
  "For `checkbox`, `radio`, and `select`, you must set $values as an array."
387
  msgstr ""
388
  "`checkbox`、`radio`、`select`では、配列として$valuesをセットしてください。"
389
 
390
- #: custom-field-template/custom-field-template.php:1438
391
  msgid "Auto Hook of `the_content()` (Experimental Option)"
392
  msgstr "Auto Hook of `the_content()` (Experimental Option)"
393
 
394
- #: custom-field-template/custom-field-template.php:1450
395
  msgid "Position"
396
  msgstr "位置"
397
 
398
- #: custom-field-template/custom-field-template.php:1451
399
  msgid "Before the content"
400
  msgstr "コンテンツの前"
401
 
402
- #: custom-field-template/custom-field-template.php:1452
403
  msgid "Before the more tag"
404
  msgstr "more タグの前"
405
 
406
- #: custom-field-template/custom-field-template.php:1453
407
  msgid "After the content"
408
  msgstr "コンテンツの後"
409
 
410
- #: custom-field-template/custom-field-template.php:1454
411
  #, php-format
412
  msgid "Inside the content ([cfthook hook=%d])"
413
  msgstr "コンテンツの中 ([cfthook hook=%d])"
414
 
415
- #: custom-field-template/custom-field-template.php:1464
416
  msgid "Content"
417
  msgstr "コンテンツ"
418
 
419
- #: custom-field-template/custom-field-template.php:1466
420
  msgid "Apply to feeds"
421
  msgstr "フィードに適用する"
422
 
423
- #: custom-field-template/custom-field-template.php:1467
424
  msgid "Apply also to excerpts"
425
  msgstr "抜粋にも適用する"
426
 
427
- #: custom-field-template/custom-field-template.php:1483
428
  msgid "Rebuild Value Counts"
429
  msgstr "バリューカウントの再構築"
430
 
431
- #: custom-field-template/custom-field-template.php:1485
432
  msgid "Are you sure to rebuild all value counts?"
433
  msgstr "本当に全てのバリューカウントを再構築しますか?"
434
 
435
- #: custom-field-template/custom-field-template.php:1489
436
  msgid ""
437
  "Value Counts are used for temporarily saving how many values in each key. "
438
  "Set `valueCount = true` into fields."
@@ -440,53 +453,53 @@ msgstr ""
440
  "バリューカウントはキーごとに値がどのくらいあるか一時的に保存するのに使用され"
441
  "ます。`valueCount = true`をフィールドにセットしてください。"
442
 
443
- #: custom-field-template/custom-field-template.php:1493
444
  msgid "Rebuild Value Counts »"
445
  msgstr "バリューカウントを再構築する »"
446
 
447
- #: custom-field-template/custom-field-template.php:1504
448
  msgid "Rebuild Tags"
449
  msgstr "タグの再構築"
450
 
451
- #: custom-field-template/custom-field-template.php:1506
452
  msgid "Are you sure to rebuild tags?"
453
  msgstr "本当に全てのタグを再構築しますか?"
454
 
455
- #: custom-field-template/custom-field-template.php:1510
456
  msgid "Rebuild Tags »"
457
  msgstr "タグを再構築する »"
458
 
459
- #: custom-field-template/custom-field-template.php:1521
460
  msgid "Option List"
461
  msgstr "オプションリスト"
462
 
463
- #: custom-field-template/custom-field-template.php:1698
464
  msgid "Export Options"
465
  msgstr "オプションをエクスポートする"
466
 
467
- #: custom-field-template/custom-field-template.php:1704
468
  msgid "Export Options »"
469
  msgstr "オプションをエクスポートする »"
470
 
471
- #: custom-field-template/custom-field-template.php:1714
472
  msgid "Import Options"
473
  msgstr "オプションをインポートする"
474
 
475
- #: custom-field-template/custom-field-template.php:1716
476
  msgid "Are you sure to import options? Options you set will be overwritten."
477
  msgstr ""
478
  "本当にオプションをインポートしてもよろしいですか?設定したオプションは上書き"
479
  "されます。"
480
 
481
- #: custom-field-template/custom-field-template.php:1720
482
  msgid "Import Options »"
483
  msgstr "オプションをインポートする »"
484
 
485
- #: custom-field-template/custom-field-template.php:1730
486
  msgid "Reset Options"
487
  msgstr "オプションをリセットする"
488
 
489
- #: custom-field-template/custom-field-template.php:1732
490
  msgid ""
491
  "Are you sure to reset options? Options you set will be reset to the default "
492
  "settings."
@@ -494,29 +507,29 @@ msgstr ""
494
  "本当にオプションをリセットしてもよろしいですか?設定したオプションはデフォル"
495
  "トの状態に戻ります。"
496
 
497
- #: custom-field-template/custom-field-template.php:1736
498
  msgid "Reset Options »"
499
  msgstr "オプションをリセットする »"
500
 
501
- #: custom-field-template/custom-field-template.php:1746
502
  msgid "Delete Options"
503
  msgstr "オプションを削除する"
504
 
505
- #: custom-field-template/custom-field-template.php:1748
506
  msgid "Are you sure to delete options? Options you set will be deleted."
507
  msgstr ""
508
  "本当にオプションを削除してもよろしいですか?設定したオプションは削除されま"
509
  "す。"
510
 
511
- #: custom-field-template/custom-field-template.php:1752
512
  msgid "Delete Options »"
513
  msgstr "オプションを削除する »"
514
 
515
- #: custom-field-template/custom-field-template.php:1765
516
  msgid "Donation"
517
  msgstr "寄付"
518
 
519
- #: custom-field-template/custom-field-template.php:1767
520
  msgid ""
521
  "If you liked this plugin, please make a donation via paypal! Any amount is "
522
  "welcome. Your support is much appreciated."
@@ -524,22 +537,22 @@ msgstr ""
524
  "このプラグインをお気に召しましたら、Paypalよりご寄付をよろしくお願いいたしま"
525
  "す。"
526
 
527
- #: custom-field-template/custom-field-template.php:1781
528
- #: custom-field-template/custom-field-template.php:1784
529
  msgid "Custom Field Template Manual"
530
  msgstr "カスタムフィールドテンプレートマニュアル"
531
 
532
- #: custom-field-template/custom-field-template.php:1783
533
  msgid ""
534
  "Do you have any trouble with the plugin setup? Please visit the following "
535
  "manual site."
536
  msgstr "プラグインの設定にお困りですか?マニュアルサイトをご活用ください。"
537
 
538
- #: custom-field-template/custom-field-template.php:1790
539
  msgid "CMS x WP"
540
  msgstr "CMS×WP"
541
 
542
- #: custom-field-template/custom-field-template.php:1792
543
  msgid ""
544
  "There are much more plugins which are useful for developing business "
545
  "websites such as membership sites or ec sites. You could totally treat "
@@ -548,88 +561,98 @@ msgstr ""
548
  "会員制サイトやECサイトなどのビジネスサイト構築に役立つプラグインが盛りだくさ"
549
  "ん。CMS×WPのプラグインで WordPress が CMS として大いに活躍します。"
550
 
551
- #: custom-field-template/custom-field-template.php:1793
552
  msgid "WordPress plugin sales site: CMS x WP"
553
  msgstr "WordPress のプラグイン販売サイト CMS×WP"
554
 
555
- #: custom-field-template/custom-field-template.php:1891
556
- #: custom-field-template/custom-field-template.php:2034
557
- #: custom-field-template/custom-field-template.php:2126
558
- #: custom-field-template/custom-field-template.php:2318
559
- #: custom-field-template/custom-field-template.php:2320
560
- #: custom-field-template/custom-field-template.php:2395
561
- #: custom-field-template/custom-field-template.php:2626
562
  msgid "Add New"
563
  msgstr "追加"
564
 
565
- #: custom-field-template/custom-field-template.php:2042
566
  msgid "Clear"
567
  msgstr "解除"
568
 
569
- #: custom-field-template/custom-field-template.php:2144
570
  msgid "Select"
571
  msgstr "選択してください"
572
 
573
- #: custom-field-template/custom-field-template.php:2240
574
  #, fuzzy
575
  msgid "Add an Image"
576
  msgstr "画像を追加"
577
 
578
- #: custom-field-template/custom-field-template.php:2245
579
  #, fuzzy
580
  msgid "Add Video"
581
  msgstr "追加"
582
 
583
- #: custom-field-template/custom-field-template.php:2250
584
  #, fuzzy
585
  msgid "Add Audio"
586
  msgstr "追加"
587
 
588
- #: custom-field-template/custom-field-template.php:2254
589
- #: custom-field-template/custom-field-template.php:2258
590
  #, fuzzy
591
  msgid "Add Media"
592
  msgstr "メディアピッカー"
593
 
594
- #: custom-field-template/custom-field-template.php:2265
595
  msgid "Toggle"
596
  msgstr "切り替え"
597
 
598
- #: custom-field-template/custom-field-template.php:2405
599
  msgid " OR "
600
  msgstr " または "
601
 
602
- #: custom-field-template/custom-field-template.php:2408
603
  msgid "Select by Media Picker"
604
  msgstr "メディアピッカーで選択"
605
 
606
- #: custom-field-template/custom-field-template.php:2433
607
- #: custom-field-template/custom-field-template.php:2628
608
  msgid "Delete"
609
  msgstr "削除"
610
 
611
- #: custom-field-template/custom-field-template.php:2861
612
  msgid "Enable"
613
  msgstr "有効"
614
 
615
- #: custom-field-template/custom-field-template.php:2865
616
  msgid "Initialize"
617
  msgstr "初期化"
618
 
619
- #: custom-field-template/custom-field-template.php:2866
620
  msgid "Are you sure to reset current values? Default values will be loaded."
621
  msgstr "現在値をリセットしてもよろしいですか?初期値が読み込まれます。"
622
 
623
- #: custom-field-template/custom-field-template.php:2871
624
  msgid "Save"
625
  msgstr "保存"
626
 
627
- #: custom-field-template/custom-field-template.php:3633
628
  msgid "Search »"
629
  msgstr "検索 »"
630
 
631
- #~ msgid "Admin Search"
632
- #~ msgstr "管理画面検索"
 
 
 
 
 
 
 
 
 
 
633
 
634
  #~ msgctxt "title"
635
  #~ msgid "Custom Field Template"
2
  msgstr ""
3
  "Project-Id-Version: Custom Field Template\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2022-09-19 09:13+0900\n"
6
+ "PO-Revision-Date: 2022-09-19 09:15+0900\n"
7
  "Last-Translator: \n"
8
  "Language-Team: \n"
9
  "Language: ja_JP\n"
13
  "X-Poedit-SourceCharset: UTF-8\n"
14
  "X-Poedit-KeywordsList: __;_e;_c;_x:1,2c;_ex:1,2c\n"
15
  "X-Poedit-Basepath: ..\n"
16
+ "X-Generator: Poedit 2.4.3\n"
17
  "X-Poedit-SearchPath-0: custom-field-template\n"
18
 
19
+ #: custom-field-template/custom-field-template.php:182
 
20
  #: custom-field-template/custom-field-template.php:205
21
+ #: custom-field-template/custom-field-template.php:206
22
+ #: custom-field-template/custom-field-template.php:224
23
+ #: custom-field-template/custom-field-template.php:873
24
+ #: custom-field-template/custom-field-template.php:1192
25
+ #: custom-field-template/custom-field-template.php:2818
26
+ #: custom-field-template/custom-field-template.php:2911
27
  msgid "Custom Field Template"
28
  msgstr "カスタムフィールドテンプレート"
29
 
30
+ #: custom-field-template/custom-field-template.php:234
31
  msgid "Media Picker"
32
  msgstr "メディアピッカー"
33
 
34
+ #: custom-field-template/custom-field-template.php:236
35
  msgid "Use this"
36
  msgstr "これを使用する"
37
 
38
+ #: custom-field-template/custom-field-template.php:350
39
+ #: custom-field-template/custom-field-template.php:3153
40
  msgid "Load"
41
  msgstr "読込"
42
 
43
+ #: custom-field-template/custom-field-template.php:679
44
  msgid "read more"
45
  msgstr "続きを表示"
46
 
47
+ #: custom-field-template/custom-field-template.php:700
48
+ #: custom-field-template/custom-field-template.php:712
49
  msgid "Custom Fields"
50
  msgstr "カスタムフィールド"
51
 
52
+ #: custom-field-template/custom-field-template.php:744
53
  msgid "Settings"
54
  msgstr "設定"
55
 
56
+ #: custom-field-template/custom-field-template.php:790
57
  msgid "Default Template"
58
  msgstr "デフォルトテンプレート"
59
 
60
+ #: custom-field-template/custom-field-template.php:1027
61
  msgid ""
62
  "You can not use the following words as the field key: `content`, "
63
  "`post_title`, and `excerpt`, and `action`."
65
  "次のキーワードはフィールドキーとして使用できません。 `content`、"
66
  "`post_title`、`excerpt`、`action`"
67
 
68
+ #: custom-field-template/custom-field-template.php:1046
69
+ #: custom-field-template/custom-field-template.php:1077
70
+ #: custom-field-template/custom-field-template.php:1081
71
+ #: custom-field-template/custom-field-template.php:1085
72
+ #: custom-field-template/custom-field-template.php:1097
73
+ #: custom-field-template/custom-field-template.php:1105
74
+ #: custom-field-template/custom-field-template.php:1123
75
  msgid "Options updated."
76
  msgstr "オプションは更新されました。"
77
 
78
+ #: custom-field-template/custom-field-template.php:1127
79
  msgid "Value Counts rebuilt."
80
  msgstr "バリューカウントは再構築されました。"
81
 
82
+ #: custom-field-template/custom-field-template.php:1130
83
  msgid "Tags rebuilt."
84
  msgstr "タグは再構築されました。"
85
 
86
+ #: custom-field-template/custom-field-template.php:1139
87
  msgid "Options imported."
88
  msgstr "オプションはインポートされました。"
89
 
90
+ #: custom-field-template/custom-field-template.php:1146
91
  msgid "Options resetted."
92
  msgstr "オプションはリセットされました。"
93
 
94
+ #: custom-field-template/custom-field-template.php:1150
95
  msgid "Options deleted."
96
  msgstr "オプションは削除されました。"
97
 
98
+ #: custom-field-template/custom-field-template.php:1199
99
+ #: custom-field-template/custom-field-template.php:1291
100
+ #: custom-field-template/custom-field-template.php:1412
101
+ #: custom-field-template/custom-field-template.php:1431
102
+ #: custom-field-template/custom-field-template.php:1462
103
+ #: custom-field-template/custom-field-template.php:1495
104
+ #: custom-field-template/custom-field-template.php:1540
105
+ #: custom-field-template/custom-field-template.php:1561
106
+ #: custom-field-template/custom-field-template.php:1578
107
+ #: custom-field-template/custom-field-template.php:1755
108
+ #: custom-field-template/custom-field-template.php:1771
109
+ #: custom-field-template/custom-field-template.php:1787
110
+ #: custom-field-template/custom-field-template.php:1803
111
+ #: custom-field-template/custom-field-template.php:1822
112
+ #: custom-field-template/custom-field-template.php:1838
113
+ #: custom-field-template/custom-field-template.php:1847
114
  msgid "Click to toggle"
115
  msgstr "クリックで切替"
116
 
117
+ #: custom-field-template/custom-field-template.php:1200
118
  msgid "Custom Field Template Options"
119
  msgstr "カスタムフィールドテンプレートオプション"
120
 
121
+ #: custom-field-template/custom-field-template.php:1211
122
+ #: custom-field-template/custom-field-template.php:2961
123
+ #: custom-field-template/custom-field-template.php:2962
124
  msgid "Disable"
125
  msgstr "無効"
126
 
127
+ #: custom-field-template/custom-field-template.php:1213
128
  msgid "Template Title"
129
  msgstr "テンプレートタイトル"
130
 
131
+ #: custom-field-template/custom-field-template.php:1215
132
  msgid "Template Instruction"
133
  msgstr "テンプレートインストラクション"
134
 
135
+ #: custom-field-template/custom-field-template.php:1217
136
+ #: custom-field-template/custom-field-template.php:1514
137
  msgid "Post Type"
138
  msgstr "投稿タイプ"
139
 
140
+ #: custom-field-template/custom-field-template.php:1219
141
+ #: custom-field-template/custom-field-template.php:1515
142
  msgid "Both"
143
  msgstr "両方"
144
 
145
+ #: custom-field-template/custom-field-template.php:1220
146
+ #: custom-field-template/custom-field-template.php:1516
147
  msgid "Post"
148
  msgstr "投稿"
149
 
150
+ #: custom-field-template/custom-field-template.php:1221
151
+ #: custom-field-template/custom-field-template.php:1517
152
  msgid "Page"
153
  msgstr "ページ"
154
 
155
+ #: custom-field-template/custom-field-template.php:1222
156
+ #: custom-field-template/custom-field-template.php:1518
157
  msgid "Custom Post Type (comma-deliminated)"
158
  msgstr "カスタムポストタイプ (カンマ区切り)"
159
 
160
+ #: custom-field-template/custom-field-template.php:1224
161
  msgid "Post ID (comma-deliminated)"
162
  msgstr "Post ID (カンマ区切り)"
163
 
164
+ #: custom-field-template/custom-field-template.php:1226
165
+ #: custom-field-template/custom-field-template.php:1520
166
  msgid "Category ID (comma-deliminated)"
167
+ msgstr "カテゴリー ID (カンマ区切り)"
168
 
169
+ #: custom-field-template/custom-field-template.php:1228
170
  msgid "Page Template file name(s) (comma-deliminated)"
171
  msgstr "ページテンプレートファイル名 (カンマ区切り)"
172
 
173
+ #: custom-field-template/custom-field-template.php:1230
174
+ msgid "User ID (comma-deliminated)"
175
+ msgstr "ユーザー ID (カンマ区切り)"
176
+
177
+ #: custom-field-template/custom-field-template.php:1232
178
+ msgid "User Login (comma-deliminated)"
179
+ msgstr "ユーザー名 (カンマ区切り)"
180
+
181
+ #: custom-field-template/custom-field-template.php:1234
182
+ msgid "User Role (comma-deliminated)"
183
+ msgstr "ユーザー権限(カンマ区切り)"
184
+
185
+ #: custom-field-template/custom-field-template.php:1236
186
  msgid "Template Format"
187
  msgstr "テンプレートフォーマット"
188
 
189
+ #: custom-field-template/custom-field-template.php:1249
190
  msgid "Template Content"
191
  msgstr "テンプレートコンテンツ"
192
 
193
+ #: custom-field-template/custom-field-template.php:1256
194
+ #: custom-field-template/custom-field-template.php:1403
195
+ #: custom-field-template/custom-field-template.php:1422
196
+ #: custom-field-template/custom-field-template.php:1453
197
+ #: custom-field-template/custom-field-template.php:1486
198
+ #: custom-field-template/custom-field-template.php:1531
199
  msgid "Update Options »"
200
  msgstr "オプションを更新する »"
201
 
202
+ #: custom-field-template/custom-field-template.php:1292
203
  msgid "Global Settings"
204
  msgstr "グローバル設定"
205
 
206
+ #: custom-field-template/custom-field-template.php:1307
207
  msgid ""
208
  "In case that you would like to replace custom keys by labels if `label` is "
209
  "set"
211
  "`label`がセットされていて、カスタムフィールドのキーの代わりにラベルを表示した"
212
  "い場合"
213
 
214
+ #: custom-field-template/custom-field-template.php:1308
215
  msgid "Use labels in place of custom keys"
216
  msgstr "カスタムフィールドのキーの代わりにラベルを使用する"
217
 
218
+ #: custom-field-template/custom-field-template.php:1311
219
  msgid ""
220
  "In case that you would like to add p and br tags in textareas automatically"
221
  msgstr "テキストエリアでpタグ、brタグを自動的に追加したい場合"
222
 
223
+ #: custom-field-template/custom-field-template.php:1312
224
  msgid "Use wpautop function"
225
  msgstr "wpautop関数を使用する"
226
 
227
+ #: custom-field-template/custom-field-template.php:1316
228
  msgid ""
229
  "In case that you would like to save values automatically in switching "
230
  "templates"
231
  msgstr "テンプレート切替時自動で保存したい場合"
232
 
233
+ #: custom-field-template/custom-field-template.php:1317
234
  msgid "Use the auto save in switching templates"
235
  msgstr "テンプレート切替時の自動保存を使用する"
236
 
237
+ #: custom-field-template/custom-field-template.php:1321
238
  msgid ""
239
  "In case that you would like to disable input fields of the custom field "
240
  "template temporarily"
242
  "一時的にカスタムフィールドテンプレートのインプットフィールドを一時的に無効に"
243
  "したい場合"
244
 
245
+ #: custom-field-template/custom-field-template.php:1322
246
  msgid "Use the `Disable` button. The default custom fields will be superseded."
247
  msgstr "無効ボタンを使用する。デフォルトのカスタムフィールドが優先されます。"
248
 
249
+ #: custom-field-template/custom-field-template.php:1326
250
  msgid "In case that you would like to forbid to use the initialize button."
251
  msgstr "初期化ボタンの使用を禁止する場合"
252
 
253
+ #: custom-field-template/custom-field-template.php:1327
254
  msgid "Disable the initialize button"
255
  msgstr "初期化ボタンを無効にする"
256
 
257
+ #: custom-field-template/custom-field-template.php:1331
258
  msgid "In case that you would like to forbid to use the save button."
259
  msgstr "保存ボタンの使用を禁止する場合"
260
 
261
+ #: custom-field-template/custom-field-template.php:1332
262
  msgid "Disable the save button"
263
  msgstr "保存ボタンを無効にする"
264
 
265
+ #: custom-field-template/custom-field-template.php:1336
266
  msgid "In case that you would like to forbid to use the default custom fields."
267
  msgstr "デフォルトのカスタムフィールドの使用を禁止する場合"
268
 
269
+ #: custom-field-template/custom-field-template.php:1337
270
  msgid "Disable the default custom fields"
271
  msgstr "デフォルトのカスタムフィールドを無効にする"
272
 
273
+ #: custom-field-template/custom-field-template.php:1341
274
  msgid "In case that you would like to forbid to use the quick edit."
275
  msgstr "クイック編集の使用を禁止する場合"
276
 
277
+ #: custom-field-template/custom-field-template.php:1342
278
  msgid "Disable the quick edit"
279
  msgstr "クイック編集を無効にする"
280
 
281
+ #: custom-field-template/custom-field-template.php:1346
282
  msgid "In case that you would like to forbid to use the admin search."
283
  msgstr "管理画面検索の使用を禁止する場合"
284
 
285
+ #: custom-field-template/custom-field-template.php:1347
286
  msgid "Disable the admin search"
287
  msgstr "管理画面検索を無効にする"
288
 
289
+ #: custom-field-template/custom-field-template.php:1351
290
  msgid ""
291
  "In case that you would like to forbid to display the custom field column on "
292
  "the edit post list page."
293
  msgstr "編集リストページのカスタムフィールドカラムの表示を禁止する場合"
294
 
295
+ #: custom-field-template/custom-field-template.php:1352
296
  msgid "Disable the custom field column (The quick edit also does not work.)"
297
  msgstr "カスタムフィールドカラムを無効にする(クイック編集も動きません)"
298
 
299
+ #: custom-field-template/custom-field-template.php:1356
300
  msgid ""
301
  "In case that you would like to replace the box title with the template title."
302
  msgstr "ボックスタイトルをテンプレートタイトルで置き換える場合"
303
 
304
+ #: custom-field-template/custom-field-template.php:1357
305
  msgid "Replace the box title"
306
  msgstr "ボックスタイトルを置き換える"
307
 
308
+ #: custom-field-template/custom-field-template.php:1361
309
  msgid "In case that you would like to deploy the box in each template."
310
  msgstr "テンプレートごとにボックスを配置する場合"
311
 
312
+ #: custom-field-template/custom-field-template.php:1362
313
  msgid "Deploy the box in each template"
314
  msgstr "テンプレートごとにボックスを配置する"
315
 
316
+ #: custom-field-template/custom-field-template.php:1366
317
  msgid "In case that you would like to use the shortcode in the widget."
318
  msgstr "ショートコードをウィジェットで使用したい場合"
319
 
320
+ #: custom-field-template/custom-field-template.php:1367
321
  msgid "Use the shortcode in the widget"
322
  msgstr "ショートコードをウィジェットで使用する"
323
 
324
+ #: custom-field-template/custom-field-template.php:1371
325
  msgid "In case that you would like to use the shortcode in the excerpt."
326
  msgstr "ショートコードを抜粋で使用したい場合"
327
 
328
+ #: custom-field-template/custom-field-template.php:1372
329
  msgid "Use the shortcode in the excerpt"
330
  msgstr "ショートコードを抜粋で使用する"
331
 
332
+ #: custom-field-template/custom-field-template.php:1376
333
  msgid "In case that you would like to use the jQuery validation."
334
  msgstr "jQuery バリデーションを使用したい場合"
335
 
336
+ #: custom-field-template/custom-field-template.php:1377
337
  msgid "Use the jQuery validation"
338
  msgstr "jQuery バリデーションを使用する"
339
 
340
+ #: custom-field-template/custom-field-template.php:1387
341
  msgid "Text to place before every list which is called by the cft shortcode"
342
  msgstr "cft ショートコードで呼ばれるリストの前のテキスト"
343
 
344
+ #: custom-field-template/custom-field-template.php:1389
345
  msgid "Text to place after every list which is called by the cft shortcode"
346
  msgstr "cft ショートコードで呼ばれるリストの後のテキスト"
347
 
348
+ #: custom-field-template/custom-field-template.php:1391
349
  msgid "Text to place before every value which is called by the cft shortcode"
350
  msgstr "cft ショートコードで呼ばれる値の前のテキスト"
351
 
352
+ #: custom-field-template/custom-field-template.php:1393
353
  msgid "Text to place after every value which is called by the cft shortcode"
354
  msgstr "cft ショートコードで呼ばれる値の後のテキスト"
355
 
356
+ #: custom-field-template/custom-field-template.php:1398
357
  msgid "In case that you would like to hide the advertisement right column."
358
  msgstr "右カラムの広告を隠す場合"
359
 
360
+ #: custom-field-template/custom-field-template.php:1399
361
  msgid "I want to use a wider screen."
362
  msgstr "もっと広い画面を使いたい・・・。"
363
 
364
+ #: custom-field-template/custom-field-template.php:1413
365
  msgid "ADMIN CSS"
366
  msgstr "ADMIN CSS"
367
 
368
+ #: custom-field-template/custom-field-template.php:1432
369
  msgid "[cft] and [cftsearch] Shortcode Format"
370
  msgstr "[cft] and [cftsearch] Shortcode Format"
371
 
372
+ #: custom-field-template/custom-field-template.php:1435
373
  msgid "For [cft], [key] will be converted into the value of [key]."
374
  msgstr "[cft]では、[key]は、[key]の値に置換されます。"
375
 
376
+ #: custom-field-template/custom-field-template.php:1436
377
  msgid "For [cftsearch], [key] will be converted into the input field."
378
  msgstr "[cftsearch]では、[key]は、インプットフィールドに置換されます。"
379
 
380
+ #: custom-field-template/custom-field-template.php:1447
381
+ #: custom-field-template/custom-field-template.php:1523
382
  msgid "Use PHP"
383
  msgstr "PHPを使用する"
384
 
385
+ #: custom-field-template/custom-field-template.php:1463
386
  msgid "PHP CODE (Experimental Option)"
387
  msgstr "PHP CODE (Experimental Option)"
388
 
389
+ #: custom-field-template/custom-field-template.php:1465
390
  msgid "Are you sure to save PHP codes? Please do it at your own risk."
391
  msgstr "PHPコードを保存してよろしいですか?自己責任で実行してください。"
392
 
393
+ #: custom-field-template/custom-field-template.php:1466
394
  msgid "For `text` and `textarea`, you must set $value as an string."
395
  msgstr "`text`と`textarea`は$valueを文字列としてセットしてください。"
396
 
397
+ #: custom-field-template/custom-field-template.php:1468
398
  msgid ""
399
  "For `checkbox`, `radio`, and `select`, you must set $values as an array."
400
  msgstr ""
401
  "`checkbox`、`radio`、`select`では、配列として$valuesをセットしてください。"
402
 
403
+ #: custom-field-template/custom-field-template.php:1496
404
  msgid "Auto Hook of `the_content()` (Experimental Option)"
405
  msgstr "Auto Hook of `the_content()` (Experimental Option)"
406
 
407
+ #: custom-field-template/custom-field-template.php:1508
408
  msgid "Position"
409
  msgstr "位置"
410
 
411
+ #: custom-field-template/custom-field-template.php:1509
412
  msgid "Before the content"
413
  msgstr "コンテンツの前"
414
 
415
+ #: custom-field-template/custom-field-template.php:1510
416
  msgid "Before the more tag"
417
  msgstr "more タグの前"
418
 
419
+ #: custom-field-template/custom-field-template.php:1511
420
  msgid "After the content"
421
  msgstr "コンテンツの後"
422
 
423
+ #: custom-field-template/custom-field-template.php:1512
424
  #, php-format
425
  msgid "Inside the content ([cfthook hook=%d])"
426
  msgstr "コンテンツの中 ([cfthook hook=%d])"
427
 
428
+ #: custom-field-template/custom-field-template.php:1522
429
  msgid "Content"
430
  msgstr "コンテンツ"
431
 
432
+ #: custom-field-template/custom-field-template.php:1524
433
  msgid "Apply to feeds"
434
  msgstr "フィードに適用する"
435
 
436
+ #: custom-field-template/custom-field-template.php:1525
437
  msgid "Apply also to excerpts"
438
  msgstr "抜粋にも適用する"
439
 
440
+ #: custom-field-template/custom-field-template.php:1541
441
  msgid "Rebuild Value Counts"
442
  msgstr "バリューカウントの再構築"
443
 
444
+ #: custom-field-template/custom-field-template.php:1543
445
  msgid "Are you sure to rebuild all value counts?"
446
  msgstr "本当に全てのバリューカウントを再構築しますか?"
447
 
448
+ #: custom-field-template/custom-field-template.php:1547
449
  msgid ""
450
  "Value Counts are used for temporarily saving how many values in each key. "
451
  "Set `valueCount = true` into fields."
453
  "バリューカウントはキーごとに値がどのくらいあるか一時的に保存するのに使用され"
454
  "ます。`valueCount = true`をフィールドにセットしてください。"
455
 
456
+ #: custom-field-template/custom-field-template.php:1551
457
  msgid "Rebuild Value Counts »"
458
  msgstr "バリューカウントを再構築する »"
459
 
460
+ #: custom-field-template/custom-field-template.php:1562
461
  msgid "Rebuild Tags"
462
  msgstr "タグの再構築"
463
 
464
+ #: custom-field-template/custom-field-template.php:1564
465
  msgid "Are you sure to rebuild tags?"
466
  msgstr "本当に全てのタグを再構築しますか?"
467
 
468
+ #: custom-field-template/custom-field-template.php:1568
469
  msgid "Rebuild Tags »"
470
  msgstr "タグを再構築する »"
471
 
472
+ #: custom-field-template/custom-field-template.php:1579
473
  msgid "Option List"
474
  msgstr "オプションリスト"
475
 
476
+ #: custom-field-template/custom-field-template.php:1756
477
  msgid "Export Options"
478
  msgstr "オプションをエクスポートする"
479
 
480
+ #: custom-field-template/custom-field-template.php:1762
481
  msgid "Export Options »"
482
  msgstr "オプションをエクスポートする »"
483
 
484
+ #: custom-field-template/custom-field-template.php:1772
485
  msgid "Import Options"
486
  msgstr "オプションをインポートする"
487
 
488
+ #: custom-field-template/custom-field-template.php:1774
489
  msgid "Are you sure to import options? Options you set will be overwritten."
490
  msgstr ""
491
  "本当にオプションをインポートしてもよろしいですか?設定したオプションは上書き"
492
  "されます。"
493
 
494
+ #: custom-field-template/custom-field-template.php:1778
495
  msgid "Import Options »"
496
  msgstr "オプションをインポートする »"
497
 
498
+ #: custom-field-template/custom-field-template.php:1788
499
  msgid "Reset Options"
500
  msgstr "オプションをリセットする"
501
 
502
+ #: custom-field-template/custom-field-template.php:1790
503
  msgid ""
504
  "Are you sure to reset options? Options you set will be reset to the default "
505
  "settings."
507
  "本当にオプションをリセットしてもよろしいですか?設定したオプションはデフォル"
508
  "トの状態に戻ります。"
509
 
510
+ #: custom-field-template/custom-field-template.php:1794
511
  msgid "Reset Options »"
512
  msgstr "オプションをリセットする »"
513
 
514
+ #: custom-field-template/custom-field-template.php:1804
515
  msgid "Delete Options"
516
  msgstr "オプションを削除する"
517
 
518
+ #: custom-field-template/custom-field-template.php:1806
519
  msgid "Are you sure to delete options? Options you set will be deleted."
520
  msgstr ""
521
  "本当にオプションを削除してもよろしいですか?設定したオプションは削除されま"
522
  "す。"
523
 
524
+ #: custom-field-template/custom-field-template.php:1810
525
  msgid "Delete Options »"
526
  msgstr "オプションを削除する »"
527
 
528
+ #: custom-field-template/custom-field-template.php:1823
529
  msgid "Donation"
530
  msgstr "寄付"
531
 
532
+ #: custom-field-template/custom-field-template.php:1825
533
  msgid ""
534
  "If you liked this plugin, please make a donation via paypal! Any amount is "
535
  "welcome. Your support is much appreciated."
537
  "このプラグインをお気に召しましたら、Paypalよりご寄付をよろしくお願いいたしま"
538
  "す。"
539
 
540
+ #: custom-field-template/custom-field-template.php:1839
541
+ #: custom-field-template/custom-field-template.php:1842
542
  msgid "Custom Field Template Manual"
543
  msgstr "カスタムフィールドテンプレートマニュアル"
544
 
545
+ #: custom-field-template/custom-field-template.php:1841
546
  msgid ""
547
  "Do you have any trouble with the plugin setup? Please visit the following "
548
  "manual site."
549
  msgstr "プラグインの設定にお困りですか?マニュアルサイトをご活用ください。"
550
 
551
+ #: custom-field-template/custom-field-template.php:1848
552
  msgid "CMS x WP"
553
  msgstr "CMS×WP"
554
 
555
+ #: custom-field-template/custom-field-template.php:1850
556
  msgid ""
557
  "There are much more plugins which are useful for developing business "
558
  "websites such as membership sites or ec sites. You could totally treat "
561
  "会員制サイトやECサイトなどのビジネスサイト構築に役立つプラグインが盛りだくさ"
562
  "ん。CMS×WPのプラグインで WordPress が CMS として大いに活躍します。"
563
 
564
+ #: custom-field-template/custom-field-template.php:1851
565
  msgid "WordPress plugin sales site: CMS x WP"
566
  msgstr "WordPress のプラグイン販売サイト CMS×WP"
567
 
568
+ #: custom-field-template/custom-field-template.php:1949
569
+ #: custom-field-template/custom-field-template.php:2092
570
+ #: custom-field-template/custom-field-template.php:2184
571
+ #: custom-field-template/custom-field-template.php:2376
572
+ #: custom-field-template/custom-field-template.php:2378
573
+ #: custom-field-template/custom-field-template.php:2453
574
+ #: custom-field-template/custom-field-template.php:2715
575
  msgid "Add New"
576
  msgstr "追加"
577
 
578
+ #: custom-field-template/custom-field-template.php:2100
579
  msgid "Clear"
580
  msgstr "解除"
581
 
582
+ #: custom-field-template/custom-field-template.php:2202
583
  msgid "Select"
584
  msgstr "選択してください"
585
 
586
+ #: custom-field-template/custom-field-template.php:2298
587
  #, fuzzy
588
  msgid "Add an Image"
589
  msgstr "画像を追加"
590
 
591
+ #: custom-field-template/custom-field-template.php:2303
592
  #, fuzzy
593
  msgid "Add Video"
594
  msgstr "追加"
595
 
596
+ #: custom-field-template/custom-field-template.php:2308
597
  #, fuzzy
598
  msgid "Add Audio"
599
  msgstr "追加"
600
 
601
+ #: custom-field-template/custom-field-template.php:2312
602
+ #: custom-field-template/custom-field-template.php:2316
603
  #, fuzzy
604
  msgid "Add Media"
605
  msgstr "メディアピッカー"
606
 
607
+ #: custom-field-template/custom-field-template.php:2323
608
  msgid "Toggle"
609
  msgstr "切り替え"
610
 
611
+ #: custom-field-template/custom-field-template.php:2463
612
  msgid " OR "
613
  msgstr " または "
614
 
615
+ #: custom-field-template/custom-field-template.php:2466
616
  msgid "Select by Media Picker"
617
  msgstr "メディアピッカーで選択"
618
 
619
+ #: custom-field-template/custom-field-template.php:2491
620
+ #: custom-field-template/custom-field-template.php:2717
621
  msgid "Delete"
622
  msgstr "削除"
623
 
624
+ #: custom-field-template/custom-field-template.php:2962
625
  msgid "Enable"
626
  msgstr "有効"
627
 
628
+ #: custom-field-template/custom-field-template.php:2966
629
  msgid "Initialize"
630
  msgstr "初期化"
631
 
632
+ #: custom-field-template/custom-field-template.php:2967
633
  msgid "Are you sure to reset current values? Default values will be loaded."
634
  msgstr "現在値をリセットしてもよろしいですか?初期値が読み込まれます。"
635
 
636
+ #: custom-field-template/custom-field-template.php:2972
637
  msgid "Save"
638
  msgstr "保存"
639
 
640
+ #: custom-field-template/custom-field-template.php:3766
641
  msgid "Search »"
642
  msgstr "検索 »"
643
 
644
+ #~ msgid "Premium Settings"
645
+ #~ msgstr "プレミアム設定"
646
+
647
+ #~ msgid ""
648
+ #~ "Please <a href=\"https://www.wpcft.com/\">purchase the premium code</a> "
649
+ #~ "in order to use following functionalities."
650
+ #~ msgstr ""
651
+ #~ "以下の機能を利用するには、<a href=\"https://www.wpcft.com/\">プレミアム"
652
+ #~ "コードをご購入</a>ください。"
653
+
654
+ #~ msgid "Admin Post Search"
655
+ #~ msgstr "管理画面投稿検索"
656
 
657
  #~ msgctxt "title"
658
  #~ msgid "Custom Field Template"
custom-field-template.php CHANGED
@@ -5,7 +5,7 @@ Plugin URI: https://wpgogo.com/development/custom-field-template.html
5
  Description: This plugin adds the default custom fields on the Write Post/Page.
6
  Author: Hiroaki Miyashita
7
  Author URI: https://wpgogo.com/
8
- Version: 2.5.6
9
  Text Domain: custom-field-template
10
  Domain Path: /
11
  */
@@ -15,7 +15,7 @@ This program is based on the rc:custom_field_gui plugin written by Joshua Sigar.
15
  I appreciate your efforts, Joshua.
16
  */
17
 
18
- /* Copyright 2008 - 2021 Hiroaki Miyashita
19
 
20
  This program is free software; you can redistribute it and/or modify
21
  it under the terms of the GNU General Public License as published by
@@ -1000,8 +1000,16 @@ type = file';
1000
  return !empty($strip_shortcode)? $content : do_shortcode($content);
1001
  else :
1002
  return $content;
 
 
 
 
 
 
 
 
 
1003
  endif;
1004
-
1005
  }
1006
 
1007
  function custom_field_template_admin() {
@@ -1026,11 +1034,14 @@ type = file';
1026
  if ( isset($_POST["custom_field_template_post_type"][$i]) ) $options['custom_fields'][$j]['post_type'] = $_POST["custom_field_template_post_type"][$i];
1027
  if ( isset($_POST["custom_field_template_custom_post_type"][$i]) ) $options['custom_fields'][$j]['custom_post_type'] = $_POST["custom_field_template_custom_post_type"][$i];
1028
  if ( isset($_POST["custom_field_template_template_files"][$i]) ) $options['custom_fields'][$j]['template_files'] = $_POST["custom_field_template_template_files"][$i];
 
 
 
1029
  if ( isset($_POST["custom_field_template_disable"][$i]) ) $options['custom_fields'][$j]['disable'] = $_POST["custom_field_template_disable"][$i];
1030
  $options['custom_fields'][$j]['format'] = isset($_POST["custom_field_template_format"][$i]) ? $_POST["custom_field_template_format"][$i] : '';
1031
  $j++;
1032
  }
1033
- }
1034
  update_option('custom_field_template_data', $options);
1035
  $message = __('Options updated.', 'custom-field-template');
1036
  elseif( !empty($_POST["custom_field_template_global_settings_submit"]) ) :
@@ -1064,6 +1075,10 @@ type = file';
1064
  $options['custom_field_template_disable_ad'] = isset($_POST['custom_field_template_disable_ad']) ? 1 : '';
1065
  update_option('custom_field_template_data', $options);
1066
  $message = __('Options updated.', 'custom-field-template');
 
 
 
 
1067
  elseif ( !empty($_POST['custom_field_template_css_submit']) ) :
1068
  $options['css'] = $_POST['custom_field_template_css'];
1069
  update_option('custom_field_template_data', $options);
@@ -1120,9 +1135,11 @@ type = file';
1120
  $import = ob_get_contents();
1121
  ob_end_clean();
1122
  $import = maybe_unserialize($import);
1123
- update_option('custom_field_template_data', $import);
1124
- $message = __('Options imported.', 'custom-field-template');
1125
- $options = $this->get_custom_field_template_data();
 
 
1126
  endif;
1127
  elseif ( !empty($_POST['custom_field_template_reset_options_submit']) ) :
1128
  $this->install_custom_field_template_data();
@@ -1212,6 +1229,12 @@ margin-bottom:0pt;
1212
  <input type="text" name="custom_field_template_category[<?php echo $i; ?>]" id="custom_field_template_category[<?php echo $i; ?>]" value="<?php if ( isset($options['custom_fields'][$i]['category']) ) echo esc_attr(stripcslashes($options['custom_fields'][$i]['category'])); ?>" size="80"<?php if ( empty($options['custom_fields'][$i]['category']) ) : echo ' style="display:none;"'; endif; ?> /></p>
1213
  <p><label for="custom_field_template_template_files[<?php echo $i; ?>]"><a href="javascript:void(0);" onclick="jQuery(this).parent().next().next().toggle();"><?php echo sprintf(__('Page Template file name(s) (comma-deliminated)', 'custom-field-template'), $i); ?></a></label>:<br />
1214
  <input type="text" name="custom_field_template_template_files[<?php echo $i; ?>]" id="custom_field_template_template_files[<?php echo $i; ?>]" value="<?php if ( isset($options['custom_fields'][$i]['template_files']) ) echo esc_attr(stripcslashes($options['custom_fields'][$i]['template_files'])); ?>" size="80"<?php if ( empty($options['custom_fields'][$i]['template_files']) ) : echo ' style="display:none;"'; endif; ?> /></p>
 
 
 
 
 
 
1215
  <p><label for="custom_field_template_format[<?php echo $i; ?>]"><a href="javascript:void(0);" onclick="jQuery(this).parent().next().next().toggle();"><?php echo sprintf(__('Template Format', 'custom-field-template'), $i); ?></a></label>:<br />
1216
  <select name="custom_field_template_format[<?php echo $i; ?>]" <?php if ( !isset($options['custom_fields'][$i]['format']) || !is_numeric($options['custom_fields'][$i]['format']) ) : echo ' style="display:none;"'; endif; ?>>
1217
  <option value=""></option>
@@ -1240,6 +1263,32 @@ margin-bottom:0pt;
1240
  </div>
1241
  </div>
1242
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1243
  <div class="postbox closed">
1244
  <div class="handlediv" title="<?php _e('Click to toggle', 'custom-field-template'); ?>"><br /></div>
1245
  <h3><?php _e('Global Settings', 'custom-field-template'); ?></h3>
@@ -2516,6 +2565,35 @@ jQuery(this).addClass("closed");
2516
  return;
2517
  endif;
2518
  endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2519
 
2520
  if ( (!isset($post_id) || $post_id<0) && !empty($options['custom_fields'][$id]['category']) && (isset($_REQUEST['cft_mode']) && $_REQUEST['cft_mode'] != 'ajaxload') )
2521
  return;
@@ -2594,6 +2672,8 @@ jQuery(this).addClass("closed");
2594
 
2595
  $last_title = '';
2596
  $fieldset_open = 0;
 
 
2597
  foreach( $fields as $field_key => $field_val ) :
2598
  foreach( $field_val as $title => $data ) {
2599
  $class = $style = $addfield = $tmpout = $out_all = $out_key = $out_value = $duplicator = '';
@@ -2689,6 +2769,12 @@ jQuery(this).addClass("closed");
2689
  else :
2690
  $out .= $tmpout.$out_all;
2691
  endif;
 
 
 
 
 
 
2692
  }
2693
  endforeach;
2694
  if ( !empty($last_title) ) $format = preg_replace('/\['.preg_quote($last_title,'/').'\]/', '', $format);
@@ -2697,8 +2783,14 @@ jQuery(this).addClass("closed");
2697
  $out .= '<script type="text/javascript">' . "\n" .
2698
  '// <![CDATA[' . "\n";
2699
  $out .= ' jQuery(document).ready(function() {' . "\n" .
2700
- ' jQuery("#custom_field_template_select").val("' . $id . '");' . "\n" .
2701
- ' });' . "\n";
 
 
 
 
 
 
2702
  $out .= '// ]]>' . "\n" .
2703
  '</script>';
2704
  $out .= '</div>';
@@ -2904,7 +2996,7 @@ jQuery("#edButtonPreview").trigger("click"); }' . "\n";*/
2904
  }
2905
 
2906
  function custom_field_template_filter(){
2907
- global $post, $wp_version;
2908
 
2909
  $options = $this->get_custom_field_template_data();
2910
  $filtered_cfts = array();
@@ -2952,12 +3044,21 @@ jQuery("#edButtonPreview").trigger("click"); }' . "\n";*/
2952
  $cat_ids = isset($options['custom_fields'][$i]['category']) ? explode(',', $options['custom_fields'][$i]['category']) : array();
2953
  $template_files = isset($options['custom_fields'][$i]['template_files']) ? explode(',', $options['custom_fields'][$i]['template_files']) : array();
2954
  $post_ids = isset($options['custom_fields'][$i]['post']) ? explode(',', $options['custom_fields'][$i]['post']) : array();
 
 
 
2955
  $cat_ids = array_filter( $cat_ids );
2956
  $template_files = array_filter( $template_files );
2957
  $post_ids = array_filter( $post_ids );
 
 
 
2958
  $cat_ids = array_unique(array_filter(array_map('trim', $cat_ids)));
2959
  $template_files = array_unique(array_filter(array_map('trim', $template_files)));
2960
  $post_ids = array_unique(array_filter(array_map('trim', $post_ids)));
 
 
 
2961
 
2962
  if ( !empty($template_files) ) :
2963
  if ( (strstr($_SERVER['REQUEST_URI'], 'wp-admin/page-new.php') || strstr($_SERVER['REQUEST_URI'], 'wp-admin/page.php') || strstr($_SERVER['REQUEST_URI'], 'wp-admin/edit-pages.php') || strstr($_SERVER['REQUEST_URI'], 'post_type=page') || $post->post_type=='page') ) :
@@ -2972,8 +3073,28 @@ jQuery("#edButtonPreview").trigger("click"); }' . "\n";*/
2972
  continue;
2973
  endif;
2974
  endif;
2975
-
2976
- if ( count($post_ids) && (!isset($_REQUEST['post']) || (isset($_REQUEST['post']) &&!in_array($_REQUEST['post'], $post_ids))) ) :
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2977
  continue;
2978
  endif;
2979
 
@@ -3057,7 +3178,7 @@ jQuery("#edButtonPreview").trigger("click"); }' . "\n";*/
3057
 
3058
  if( !current_user_can('edit_post', $id) )
3059
  return $id;
3060
-
3061
  if ( empty($_REQUEST['custom-field-template-verify-key']) )
3062
  return $id;
3063
 
@@ -3392,7 +3513,7 @@ jQuery("#edButtonPreview").trigger("click"); }' . "\n";*/
3392
  if ( $data['type'] == 'fieldset_open' ) :
3393
  $fieldset = array();
3394
  if ( isset($_REQUEST[$this->sanitize_name($title)]) ) $fieldsetcounter = count($_REQUEST[$this->sanitize_name($title)])-1;
3395
- else if ( isset($_REQUEST['post']) ) $fieldsetcounter = $this->get_post_meta( $_REQUEST['post'], $title, true )-1;
3396
  else $fieldsetcounter = 0;
3397
  if ( !empty($data['multiple']) ) : $fieldset_multiple = 1; endif;
3398
  endif;
5
  Description: This plugin adds the default custom fields on the Write Post/Page.
6
  Author: Hiroaki Miyashita
7
  Author URI: https://wpgogo.com/
8
+ Version: 2.5.7
9
  Text Domain: custom-field-template
10
  Domain Path: /
11
  */
15
  I appreciate your efforts, Joshua.
16
  */
17
 
18
+ /* Copyright 2008 - 2022 Hiroaki Miyashita
19
 
20
  This program is free software; you can redistribute it and/or modify
21
  it under the terms of the GNU General Public License as published by
1000
  return !empty($strip_shortcode)? $content : do_shortcode($content);
1001
  else :
1002
  return $content;
1003
+ endif;
1004
+ }
1005
+
1006
+ function custom_field_template_check_premium_code( $premium_code, $functionality ) {
1007
+ $host = $_SERVER['HTTP_HOST'];
1008
+ if ( password_verify( $host.$functionality, $premium_code ) ) :
1009
+ return 1;
1010
+ else :
1011
+ return 0;
1012
  endif;
 
1013
  }
1014
 
1015
  function custom_field_template_admin() {
1034
  if ( isset($_POST["custom_field_template_post_type"][$i]) ) $options['custom_fields'][$j]['post_type'] = $_POST["custom_field_template_post_type"][$i];
1035
  if ( isset($_POST["custom_field_template_custom_post_type"][$i]) ) $options['custom_fields'][$j]['custom_post_type'] = $_POST["custom_field_template_custom_post_type"][$i];
1036
  if ( isset($_POST["custom_field_template_template_files"][$i]) ) $options['custom_fields'][$j]['template_files'] = $_POST["custom_field_template_template_files"][$i];
1037
+ if ( isset($_POST["custom_field_template_user_id"][$i]) ) $options['custom_fields'][$j]['user_id'] = $_POST["custom_field_template_user_id"][$i];
1038
+ if ( isset($_POST["custom_field_template_user_login"][$i]) ) $options['custom_fields'][$j]['user_login'] = $_POST["custom_field_template_user_login"][$i];
1039
+ if ( isset($_POST["custom_field_template_user_role"][$i]) ) $options['custom_fields'][$j]['user_role'] = $_POST["custom_field_template_user_role"][$i];
1040
  if ( isset($_POST["custom_field_template_disable"][$i]) ) $options['custom_fields'][$j]['disable'] = $_POST["custom_field_template_disable"][$i];
1041
  $options['custom_fields'][$j]['format'] = isset($_POST["custom_field_template_format"][$i]) ? $_POST["custom_field_template_format"][$i] : '';
1042
  $j++;
1043
  }
1044
+ }
1045
  update_option('custom_field_template_data', $options);
1046
  $message = __('Options updated.', 'custom-field-template');
1047
  elseif( !empty($_POST["custom_field_template_global_settings_submit"]) ) :
1075
  $options['custom_field_template_disable_ad'] = isset($_POST['custom_field_template_disable_ad']) ? 1 : '';
1076
  update_option('custom_field_template_data', $options);
1077
  $message = __('Options updated.', 'custom-field-template');
1078
+ elseif( !empty($_POST["custom_field_template_premium_settings_submit"]) ) :
1079
+ $options['custom_field_template_admin_post_search'] = !empty($_POST['custom_field_template_admin_post_search']) ? $_POST['custom_field_template_admin_post_search'] : '';
1080
+ update_option('custom_field_template_data', $options);
1081
+ $message = __('Options updated.', 'custom-field-template');
1082
  elseif ( !empty($_POST['custom_field_template_css_submit']) ) :
1083
  $options['css'] = $_POST['custom_field_template_css'];
1084
  update_option('custom_field_template_data', $options);
1135
  $import = ob_get_contents();
1136
  ob_end_clean();
1137
  $import = maybe_unserialize($import);
1138
+ if ( 'array' == gettype( $import ) ) :
1139
+ update_option('custom_field_template_data', $import);
1140
+ $message = __('Options imported.', 'custom-field-template');
1141
+ $options = $this->get_custom_field_template_data();
1142
+ endif;
1143
  endif;
1144
  elseif ( !empty($_POST['custom_field_template_reset_options_submit']) ) :
1145
  $this->install_custom_field_template_data();
1229
  <input type="text" name="custom_field_template_category[<?php echo $i; ?>]" id="custom_field_template_category[<?php echo $i; ?>]" value="<?php if ( isset($options['custom_fields'][$i]['category']) ) echo esc_attr(stripcslashes($options['custom_fields'][$i]['category'])); ?>" size="80"<?php if ( empty($options['custom_fields'][$i]['category']) ) : echo ' style="display:none;"'; endif; ?> /></p>
1230
  <p><label for="custom_field_template_template_files[<?php echo $i; ?>]"><a href="javascript:void(0);" onclick="jQuery(this).parent().next().next().toggle();"><?php echo sprintf(__('Page Template file name(s) (comma-deliminated)', 'custom-field-template'), $i); ?></a></label>:<br />
1231
  <input type="text" name="custom_field_template_template_files[<?php echo $i; ?>]" id="custom_field_template_template_files[<?php echo $i; ?>]" value="<?php if ( isset($options['custom_fields'][$i]['template_files']) ) echo esc_attr(stripcslashes($options['custom_fields'][$i]['template_files'])); ?>" size="80"<?php if ( empty($options['custom_fields'][$i]['template_files']) ) : echo ' style="display:none;"'; endif; ?> /></p>
1232
+ <p><label for="custom_field_template_user_id[<?php echo $i; ?>]"><a href="javascript:void(0);" onclick="jQuery(this).parent().next().next().toggle();"><?php echo sprintf(__('User ID (comma-deliminated)', 'custom-field-template'), $i); ?></a></label>:<br />
1233
+ <input type="text" name="custom_field_template_user_id[<?php echo $i; ?>]" id="custom_field_template_user_id[<?php echo $i; ?>]" value="<?php if ( isset($options['custom_fields'][$i]['user_id']) ) echo esc_attr(stripcslashes($options['custom_fields'][$i]['user_id'])); ?>" size="80"<?php if ( empty($options['custom_fields'][$i]['user_id']) ) : echo ' style="display:none;"'; endif; ?> /></p>
1234
+ <p><label for="custom_field_template_user_login[<?php echo $i; ?>]"><a href="javascript:void(0);" onclick="jQuery(this).parent().next().next().toggle();"><?php echo sprintf(__('User Login (comma-deliminated)', 'custom-field-template'), $i); ?></a></label>:<br />
1235
+ <input type="text" name="custom_field_template_user_login[<?php echo $i; ?>]" id="custom_field_template_user_login[<?php echo $i; ?>]" value="<?php if ( isset($options['custom_fields'][$i]['user_login']) ) echo esc_attr(stripcslashes($options['custom_fields'][$i]['user_login'])); ?>" size="80"<?php if ( empty($options['custom_fields'][$i]['user_login']) ) : echo ' style="display:none;"'; endif; ?> /></p>
1236
+ <p><label for="custom_field_template_user_role[<?php echo $i; ?>]"><a href="javascript:void(0);" onclick="jQuery(this).parent().next().next().toggle();"><?php echo sprintf(__('User Role (comma-deliminated)', 'custom-field-template'), $i); ?></a></label>:<br />
1237
+ <input type="text" name="custom_field_template_user_role[<?php echo $i; ?>]" id="custom_field_template_user_role[<?php echo $i; ?>]" value="<?php if ( isset($options['custom_fields'][$i]['user_role']) ) echo esc_attr(stripcslashes($options['custom_fields'][$i]['user_role'])); ?>" size="80"<?php if ( empty($options['custom_fields'][$i]['user_role']) ) : echo ' style="display:none;"'; endif; ?> /></p>
1238
  <p><label for="custom_field_template_format[<?php echo $i; ?>]"><a href="javascript:void(0);" onclick="jQuery(this).parent().next().next().toggle();"><?php echo sprintf(__('Template Format', 'custom-field-template'), $i); ?></a></label>:<br />
1239
  <select name="custom_field_template_format[<?php echo $i; ?>]" <?php if ( !isset($options['custom_fields'][$i]['format']) || !is_numeric($options['custom_fields'][$i]['format']) ) : echo ' style="display:none;"'; endif; ?>>
1240
  <option value=""></option>
1263
  </div>
1264
  </div>
1265
 
1266
+ <?php /*
1267
+ <div class="postbox closed">
1268
+ <div class="handlediv" title="<?php _e('Click to toggle', 'custom-field-template'); ?>"><br /></div>
1269
+ <h3><?php _e('Premium Settings', 'custom-field-template'); ?></h3>
1270
+ <div class="inside">
1271
+ <form method="post">
1272
+ <table class="form-table" style="margin-bottom:5px;">
1273
+ <tbody>
1274
+ <tr><td>
1275
+ <p><?php _e('Please <a href="https://www.wpcft.com/">purchase the premium code</a> in order to use following functionalities.', 'custom-field-template'); ?></p>
1276
+ </td>
1277
+ </tr>
1278
+ <tr><td>
1279
+ <p><label for="custom_field_template_admin_post_search"><?php _e('Admin Post Search', 'custom-field-template'); ?>: <input type="text" name="custom_field_template_admin_post_search" id="custom_field_template_admin_search" value="<?php echo !empty($options['custom_field_template_admin_post_search']) ? esc_attr($options['custom_field_template_admin_post_search']) : ''; ?>" class="regular-text" /></label> <?php if ( !empty($options['custom_field_template_admin_post_search']) && $this->custom_field_template_check_premium_code($options['custom_field_template_admin_post_search'], 'admin_post_search') ) echo 'OK'; ?></p>
1280
+ </td>
1281
+ </tr>
1282
+ <tr><td>
1283
+ <p><input type="submit" name="custom_field_template_premium_settings_submit" value="<?php _e('Update Options &raquo;', 'custom-field-template'); ?>" class="button-primary" /></p>
1284
+ </td></tr>
1285
+ </tbody>
1286
+ </table>
1287
+ </form>
1288
+ </div>
1289
+ </div>
1290
+ */ ?>
1291
+
1292
  <div class="postbox closed">
1293
  <div class="handlediv" title="<?php _e('Click to toggle', 'custom-field-template'); ?>"><br /></div>
1294
  <h3><?php _e('Global Settings', 'custom-field-template'); ?></h3>
2565
  return;
2566
  endif;
2567
  endif;
2568
+
2569
+ if ( !empty($options['custom_fields'][$id]['user_id']) ) :
2570
+ $user_ids = explode(',', $options['custom_fields'][$id]['user_id']);
2571
+ $user_ids = array_filter( $user_ids );
2572
+ $user_ids = array_unique(array_filter(array_map('trim', $user_ids)));
2573
+ if ( !in_array($current_user->ID, $user_ids) )
2574
+ return;
2575
+ endif;
2576
+
2577
+ if ( !empty($options['custom_fields'][$id]['user_login']) ) :
2578
+ $user_logins = explode(',', $options['custom_fields'][$id]['user_login']);
2579
+ $user_logins = array_filter( $user_logins );
2580
+ $user_logins = array_unique(array_filter(array_map('trim', $user_logins)));
2581
+ if ( !in_array($current_user->user_login, $user_logins) )
2582
+ return;
2583
+ endif;
2584
+
2585
+ if ( !empty($options['custom_fields'][$id]['user_role']) ) :
2586
+ $user_roles = explode(',', $options['custom_fields'][$id]['user_role']);
2587
+ $user_roles = array_filter( $user_roles );
2588
+ $user_roles = array_unique(array_filter(array_map('trim', $user_roles)));
2589
+ $user_role_flag = false;
2590
+ foreach ( $user_roles as $user_role ) :
2591
+ if ( current_user_can($user_role) ) :
2592
+ $user_role_flag = true;
2593
+ endif;
2594
+ endforeach;
2595
+ if ( $user_role_flag == false ) return;
2596
+ endif;
2597
 
2598
  if ( (!isset($post_id) || $post_id<0) && !empty($options['custom_fields'][$id]['category']) && (isset($_REQUEST['cft_mode']) && $_REQUEST['cft_mode'] != 'ajaxload') )
2599
  return;
2672
 
2673
  $last_title = '';
2674
  $fieldset_open = 0;
2675
+ $require_from_group = array();
2676
+ $require_from_group_count = 0;
2677
  foreach( $fields as $field_key => $field_val ) :
2678
  foreach( $field_val as $title => $data ) {
2679
  $class = $style = $addfield = $tmpout = $out_all = $out_key = $out_value = $duplicator = '';
2769
  else :
2770
  $out .= $tmpout.$out_all;
2771
  endif;
2772
+ if ( isset($data['class']) && preg_match('/required_([0-9]+)_([0-9]+)/', $data['class'], $required_match) ) :
2773
+ $require_from_group[$require_from_group_count]['name'] = $title.'['.$parentSN.'][]';
2774
+ $require_from_group[$require_from_group_count]['identifier'] = $required_match[1];
2775
+ $require_from_group[$require_from_group_count]['partnumber'] = $required_match[2];
2776
+ $require_from_group_count++;
2777
+ endif;
2778
  }
2779
  endforeach;
2780
  if ( !empty($last_title) ) $format = preg_replace('/\['.preg_quote($last_title,'/').'\]/', '', $format);
2783
  $out .= '<script type="text/javascript">' . "\n" .
2784
  '// <![CDATA[' . "\n";
2785
  $out .= ' jQuery(document).ready(function() {' . "\n" .
2786
+ ' jQuery("#custom_field_template_select").val("' . $id . '");' . "\n";
2787
+ if ( !empty($require_from_group) ) :
2788
+ for ( $i=0; $i<$require_from_group_count; $i++ ) :
2789
+ $out .= ' jQuery('."'[name='+
2790
+ jQuery.escapeSelector('".$require_from_group[$i]['name']."')+']'".').rules("add", { require_from_group: ['.$require_from_group[$i]['partnumber'].', ".required_'.$require_from_group[$i]['identifier'].'_'.$require_from_group[$i]['partnumber'].'"] });'."\n";
2791
+ endfor;
2792
+ endif;
2793
+ $out .= ' });' . "\n";
2794
  $out .= '// ]]>' . "\n" .
2795
  '</script>';
2796
  $out .= '</div>';
2996
  }
2997
 
2998
  function custom_field_template_filter(){
2999
+ global $current_user, $post, $wp_version;
3000
 
3001
  $options = $this->get_custom_field_template_data();
3002
  $filtered_cfts = array();
3044
  $cat_ids = isset($options['custom_fields'][$i]['category']) ? explode(',', $options['custom_fields'][$i]['category']) : array();
3045
  $template_files = isset($options['custom_fields'][$i]['template_files']) ? explode(',', $options['custom_fields'][$i]['template_files']) : array();
3046
  $post_ids = isset($options['custom_fields'][$i]['post']) ? explode(',', $options['custom_fields'][$i]['post']) : array();
3047
+ $user_ids = isset($options['custom_fields'][$i]['user_id']) ? explode(',', $options['custom_fields'][$i]['user_id']) : array();
3048
+ $user_logins = isset($options['custom_fields'][$i]['user_login']) ? explode(',', $options['custom_fields'][$i]['user_login']) : array();
3049
+ $user_roles = isset($options['custom_fields'][$i]['user_role']) ? explode(',', $options['custom_fields'][$i]['user_role']) : array();
3050
  $cat_ids = array_filter( $cat_ids );
3051
  $template_files = array_filter( $template_files );
3052
  $post_ids = array_filter( $post_ids );
3053
+ $user_ids = array_filter( $user_ids );
3054
+ $user_logins = array_filter( $user_logins );
3055
+ $user_roles = array_filter( $user_roles );
3056
  $cat_ids = array_unique(array_filter(array_map('trim', $cat_ids)));
3057
  $template_files = array_unique(array_filter(array_map('trim', $template_files)));
3058
  $post_ids = array_unique(array_filter(array_map('trim', $post_ids)));
3059
+ $user_ids = array_unique(array_filter(array_map('trim', $user_ids)));
3060
+ $user_logins = array_unique(array_filter(array_map('trim', $user_logins)));
3061
+ $user_roles = array_unique(array_filter(array_map('trim', $user_roles)));
3062
 
3063
  if ( !empty($template_files) ) :
3064
  if ( (strstr($_SERVER['REQUEST_URI'], 'wp-admin/page-new.php') || strstr($_SERVER['REQUEST_URI'], 'wp-admin/page.php') || strstr($_SERVER['REQUEST_URI'], 'wp-admin/edit-pages.php') || strstr($_SERVER['REQUEST_URI'], 'post_type=page') || $post->post_type=='page') ) :
3073
  continue;
3074
  endif;
3075
  endif;
3076
+
3077
+ if ( !empty($user_ids) ) :
3078
+ if ( !in_array($current_user->ID, $user_ids) )
3079
+ continue;
3080
+ endif;
3081
+
3082
+ if ( !empty($user_logins) ) :
3083
+ if ( !in_array($current_user->user_login, $user_logins) )
3084
+ continue;
3085
+ endif;
3086
+
3087
+ if ( !empty($user_roles) ) :
3088
+ $user_role_flag = false;
3089
+ foreach ( $user_roles as $user_role ) :
3090
+ if ( current_user_can($user_role) ) :
3091
+ $user_role_flag = true;
3092
+ endif;
3093
+ endforeach;
3094
+ if ( $user_role_flag == false ) continue;
3095
+ endif;
3096
+
3097
+ if ( count($post_ids) && (!isset($_REQUEST['post']) || (isset($_REQUEST['post']) && !in_array($_REQUEST['post'], $post_ids))) ) :
3098
  continue;
3099
  endif;
3100
 
3178
 
3179
  if( !current_user_can('edit_post', $id) )
3180
  return $id;
3181
+
3182
  if ( empty($_REQUEST['custom-field-template-verify-key']) )
3183
  return $id;
3184
 
3513
  if ( $data['type'] == 'fieldset_open' ) :
3514
  $fieldset = array();
3515
  if ( isset($_REQUEST[$this->sanitize_name($title)]) ) $fieldsetcounter = count($_REQUEST[$this->sanitize_name($title)])-1;
3516
+ else if ( isset($_REQUEST['post']) ) $fieldsetcounter = (int)$this->get_post_meta( $_REQUEST['post'], $title, true )-1;
3517
  else $fieldsetcounter = 0;
3518
  if ( !empty($data['multiple']) ) : $fieldset_multiple = 1; endif;
3519
  endif;
custom-field-template.pot CHANGED
@@ -3,7 +3,7 @@ msgid ""
3
  msgstr ""
4
  "Project-Id-Version: Custom Field Template\n"
5
  "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2019-09-28 06:00+0900\n"
7
  "PO-Revision-Date: 2015-03-25 14:37+0900\n"
8
  "Last-Translator: \n"
9
  "Language-Team: \n"
@@ -12,594 +12,607 @@ msgstr ""
12
  "Content-Transfer-Encoding: 8bit\n"
13
  "X-Poedit-KeywordsList: __;_e;_c\n"
14
  "X-Poedit-Basepath: ..\n"
15
- "X-Generator: Poedit 2.2.3\n"
16
  "X-Poedit-SearchPath-0: custom-field-template\n"
17
 
18
- #: custom-field-template/custom-field-template.php:181
19
- #: custom-field-template/custom-field-template.php:204
20
  #: custom-field-template/custom-field-template.php:205
21
- #: custom-field-template/custom-field-template.php:223
22
- #: custom-field-template/custom-field-template.php:869
23
- #: custom-field-template/custom-field-template.php:1166
24
- #: custom-field-template/custom-field-template.php:2717
25
- #: custom-field-template/custom-field-template.php:2810
 
26
  msgid "Custom Field Template"
27
  msgstr ""
28
 
29
- #: custom-field-template/custom-field-template.php:233
30
  msgid "Media Picker"
31
  msgstr ""
32
 
33
- #: custom-field-template/custom-field-template.php:235
34
  msgid "Use this"
35
  msgstr ""
36
 
37
- #: custom-field-template/custom-field-template.php:349
38
- #: custom-field-template/custom-field-template.php:3023
39
  msgid "Load"
40
  msgstr ""
41
 
42
- #: custom-field-template/custom-field-template.php:678
43
  msgid "read more"
44
  msgstr ""
45
 
46
- #: custom-field-template/custom-field-template.php:699
47
- #: custom-field-template/custom-field-template.php:711
48
  msgid "Custom Fields"
49
  msgstr ""
50
 
51
- #: custom-field-template/custom-field-template.php:743
52
  msgid "Settings"
53
  msgstr ""
54
 
55
- #: custom-field-template/custom-field-template.php:786
56
  msgid "Default Template"
57
  msgstr ""
58
 
59
- #: custom-field-template/custom-field-template.php:1013
60
  msgid ""
61
  "You can not use the following words as the field key: `content`, "
62
  "`post_title`, and `excerpt`, and `action`."
63
  msgstr ""
64
 
65
- #: custom-field-template/custom-field-template.php:1029
66
- #: custom-field-template/custom-field-template.php:1060
67
- #: custom-field-template/custom-field-template.php:1064
68
- #: custom-field-template/custom-field-template.php:1076
69
- #: custom-field-template/custom-field-template.php:1084
70
- #: custom-field-template/custom-field-template.php:1102
 
71
  msgid "Options updated."
72
  msgstr ""
73
 
74
- #: custom-field-template/custom-field-template.php:1106
75
  msgid "Value Counts rebuilt."
76
  msgstr ""
77
 
78
- #: custom-field-template/custom-field-template.php:1109
79
  msgid "Tags rebuilt."
80
  msgstr ""
81
 
82
- #: custom-field-template/custom-field-template.php:1118
83
  msgid "Options imported."
84
  msgstr ""
85
 
86
- #: custom-field-template/custom-field-template.php:1125
87
  msgid "Options resetted."
88
  msgstr ""
89
 
90
- #: custom-field-template/custom-field-template.php:1129
91
  msgid "Options deleted."
92
  msgstr ""
93
 
94
- #: custom-field-template/custom-field-template.php:1173
95
- #: custom-field-template/custom-field-template.php:1233
96
- #: custom-field-template/custom-field-template.php:1354
97
- #: custom-field-template/custom-field-template.php:1373
98
- #: custom-field-template/custom-field-template.php:1404
99
- #: custom-field-template/custom-field-template.php:1437
100
- #: custom-field-template/custom-field-template.php:1482
101
- #: custom-field-template/custom-field-template.php:1503
102
- #: custom-field-template/custom-field-template.php:1520
103
- #: custom-field-template/custom-field-template.php:1697
104
- #: custom-field-template/custom-field-template.php:1713
105
- #: custom-field-template/custom-field-template.php:1729
106
- #: custom-field-template/custom-field-template.php:1745
107
- #: custom-field-template/custom-field-template.php:1764
108
- #: custom-field-template/custom-field-template.php:1780
109
- #: custom-field-template/custom-field-template.php:1789
110
  msgid "Click to toggle"
111
  msgstr ""
112
 
113
- #: custom-field-template/custom-field-template.php:1174
114
  msgid "Custom Field Template Options"
115
  msgstr ""
116
 
117
- #: custom-field-template/custom-field-template.php:1185
118
- #: custom-field-template/custom-field-template.php:2860
119
- #: custom-field-template/custom-field-template.php:2861
120
  msgid "Disable"
121
  msgstr ""
122
 
123
- #: custom-field-template/custom-field-template.php:1187
124
  msgid "Template Title"
125
  msgstr ""
126
 
127
- #: custom-field-template/custom-field-template.php:1189
128
  msgid "Template Instruction"
129
  msgstr ""
130
 
131
- #: custom-field-template/custom-field-template.php:1191
132
- #: custom-field-template/custom-field-template.php:1456
133
  msgid "Post Type"
134
  msgstr ""
135
 
136
- #: custom-field-template/custom-field-template.php:1193
137
- #: custom-field-template/custom-field-template.php:1457
138
  msgid "Both"
139
  msgstr ""
140
 
141
- #: custom-field-template/custom-field-template.php:1194
142
- #: custom-field-template/custom-field-template.php:1458
143
  msgid "Post"
144
  msgstr ""
145
 
146
- #: custom-field-template/custom-field-template.php:1195
147
- #: custom-field-template/custom-field-template.php:1459
148
  msgid "Page"
149
  msgstr ""
150
 
151
- #: custom-field-template/custom-field-template.php:1196
152
- #: custom-field-template/custom-field-template.php:1460
153
  msgid "Custom Post Type (comma-deliminated)"
154
  msgstr ""
155
 
156
- #: custom-field-template/custom-field-template.php:1198
157
  msgid "Post ID (comma-deliminated)"
158
  msgstr ""
159
 
160
- #: custom-field-template/custom-field-template.php:1200
161
- #: custom-field-template/custom-field-template.php:1462
162
  msgid "Category ID (comma-deliminated)"
163
  msgstr ""
164
 
165
- #: custom-field-template/custom-field-template.php:1202
166
  msgid "Page Template file name(s) (comma-deliminated)"
167
  msgstr ""
168
 
169
- #: custom-field-template/custom-field-template.php:1204
 
 
 
 
 
 
 
 
 
 
 
 
170
  msgid "Template Format"
171
  msgstr ""
172
 
173
- #: custom-field-template/custom-field-template.php:1217
174
  msgid "Template Content"
175
  msgstr ""
176
 
177
- #: custom-field-template/custom-field-template.php:1224
178
- #: custom-field-template/custom-field-template.php:1345
179
- #: custom-field-template/custom-field-template.php:1364
180
- #: custom-field-template/custom-field-template.php:1395
181
- #: custom-field-template/custom-field-template.php:1428
182
- #: custom-field-template/custom-field-template.php:1473
183
  msgid "Update Options &raquo;"
184
  msgstr ""
185
 
186
- #: custom-field-template/custom-field-template.php:1234
187
  msgid "Global Settings"
188
  msgstr ""
189
 
190
- #: custom-field-template/custom-field-template.php:1249
191
  msgid ""
192
  "In case that you would like to replace custom keys by labels if `label` is "
193
  "set"
194
  msgstr ""
195
 
196
- #: custom-field-template/custom-field-template.php:1250
197
  msgid "Use labels in place of custom keys"
198
  msgstr ""
199
 
200
- #: custom-field-template/custom-field-template.php:1253
201
  msgid ""
202
  "In case that you would like to add p and br tags in textareas automatically"
203
  msgstr ""
204
 
205
- #: custom-field-template/custom-field-template.php:1254
206
  msgid "Use wpautop function"
207
  msgstr ""
208
 
209
- #: custom-field-template/custom-field-template.php:1258
210
  msgid ""
211
  "In case that you would like to save values automatically in switching "
212
  "templates"
213
  msgstr ""
214
 
215
- #: custom-field-template/custom-field-template.php:1259
216
  msgid "Use the auto save in switching templates"
217
  msgstr ""
218
 
219
- #: custom-field-template/custom-field-template.php:1263
220
  msgid ""
221
  "In case that you would like to disable input fields of the custom field "
222
  "template temporarily"
223
  msgstr ""
224
 
225
- #: custom-field-template/custom-field-template.php:1264
226
  msgid "Use the `Disable` button. The default custom fields will be superseded."
227
  msgstr ""
228
 
229
- #: custom-field-template/custom-field-template.php:1268
230
  msgid "In case that you would like to forbid to use the initialize button."
231
  msgstr ""
232
 
233
- #: custom-field-template/custom-field-template.php:1269
234
  msgid "Disable the initialize button"
235
  msgstr ""
236
 
237
- #: custom-field-template/custom-field-template.php:1273
238
  msgid "In case that you would like to forbid to use the save button."
239
  msgstr ""
240
 
241
- #: custom-field-template/custom-field-template.php:1274
242
  msgid "Disable the save button"
243
  msgstr ""
244
 
245
- #: custom-field-template/custom-field-template.php:1278
246
  msgid "In case that you would like to forbid to use the default custom fields."
247
  msgstr ""
248
 
249
- #: custom-field-template/custom-field-template.php:1279
250
  msgid "Disable the default custom fields"
251
  msgstr ""
252
 
253
- #: custom-field-template/custom-field-template.php:1283
254
  msgid "In case that you would like to forbid to use the quick edit."
255
  msgstr ""
256
 
257
- #: custom-field-template/custom-field-template.php:1284
258
  msgid "Disable the quick edit"
259
  msgstr ""
260
 
261
- #: custom-field-template/custom-field-template.php:1288
262
  msgid "In case that you would like to forbid to use the admin search."
263
  msgstr ""
264
 
265
- #: custom-field-template/custom-field-template.php:1289
266
  msgid "Disable the admin search"
267
  msgstr ""
268
 
269
- #: custom-field-template/custom-field-template.php:1293
270
  msgid ""
271
  "In case that you would like to forbid to display the custom field column on "
272
  "the edit post list page."
273
  msgstr ""
274
 
275
- #: custom-field-template/custom-field-template.php:1294
276
  msgid "Disable the custom field column (The quick edit also does not work.)"
277
  msgstr ""
278
 
279
- #: custom-field-template/custom-field-template.php:1298
280
  msgid ""
281
  "In case that you would like to replace the box title with the template title."
282
  msgstr ""
283
 
284
- #: custom-field-template/custom-field-template.php:1299
285
  msgid "Replace the box title"
286
  msgstr ""
287
 
288
- #: custom-field-template/custom-field-template.php:1303
289
  msgid "In case that you would like to deploy the box in each template."
290
  msgstr ""
291
 
292
- #: custom-field-template/custom-field-template.php:1304
293
  msgid "Deploy the box in each template"
294
  msgstr ""
295
 
296
- #: custom-field-template/custom-field-template.php:1308
297
  msgid "In case that you would like to use the shortcode in the widget."
298
  msgstr ""
299
 
300
- #: custom-field-template/custom-field-template.php:1309
301
  msgid "Use the shortcode in the widget"
302
  msgstr ""
303
 
304
- #: custom-field-template/custom-field-template.php:1313
305
  msgid "In case that you would like to use the shortcode in the excerpt."
306
  msgstr ""
307
 
308
- #: custom-field-template/custom-field-template.php:1314
309
  msgid "Use the shortcode in the excerpt"
310
  msgstr ""
311
 
312
- #: custom-field-template/custom-field-template.php:1318
313
  msgid "In case that you would like to use the jQuery validation."
314
  msgstr ""
315
 
316
- #: custom-field-template/custom-field-template.php:1319
317
  msgid "Use the jQuery validation"
318
  msgstr ""
319
 
320
- #: custom-field-template/custom-field-template.php:1329
321
  msgid "Text to place before every list which is called by the cft shortcode"
322
  msgstr ""
323
 
324
- #: custom-field-template/custom-field-template.php:1331
325
  msgid "Text to place after every list which is called by the cft shortcode"
326
  msgstr ""
327
 
328
- #: custom-field-template/custom-field-template.php:1333
329
  msgid "Text to place before every value which is called by the cft shortcode"
330
  msgstr ""
331
 
332
- #: custom-field-template/custom-field-template.php:1335
333
  msgid "Text to place after every value which is called by the cft shortcode"
334
  msgstr ""
335
 
336
- #: custom-field-template/custom-field-template.php:1340
337
  msgid "In case that you would like to hide the advertisement right column."
338
  msgstr ""
339
 
340
- #: custom-field-template/custom-field-template.php:1341
341
  msgid "I want to use a wider screen."
342
  msgstr ""
343
 
344
- #: custom-field-template/custom-field-template.php:1355
345
  msgid "ADMIN CSS"
346
  msgstr ""
347
 
348
- #: custom-field-template/custom-field-template.php:1374
349
  msgid "[cft] and [cftsearch] Shortcode Format"
350
  msgstr ""
351
 
352
- #: custom-field-template/custom-field-template.php:1377
353
  msgid "For [cft], [key] will be converted into the value of [key]."
354
  msgstr ""
355
 
356
- #: custom-field-template/custom-field-template.php:1378
357
  msgid "For [cftsearch], [key] will be converted into the input field."
358
  msgstr ""
359
 
360
- #: custom-field-template/custom-field-template.php:1389
361
- #: custom-field-template/custom-field-template.php:1465
362
  msgid "Use PHP"
363
  msgstr ""
364
 
365
- #: custom-field-template/custom-field-template.php:1405
366
  msgid "PHP CODE (Experimental Option)"
367
  msgstr ""
368
 
369
- #: custom-field-template/custom-field-template.php:1407
370
  msgid "Are you sure to save PHP codes? Please do it at your own risk."
371
  msgstr ""
372
 
373
- #: custom-field-template/custom-field-template.php:1408
374
  msgid "For `text` and `textarea`, you must set $value as an string."
375
  msgstr ""
376
 
377
- #: custom-field-template/custom-field-template.php:1410
378
  msgid ""
379
  "For `checkbox`, `radio`, and `select`, you must set $values as an array."
380
  msgstr ""
381
 
382
- #: custom-field-template/custom-field-template.php:1438
383
  msgid "Auto Hook of `the_content()` (Experimental Option)"
384
  msgstr ""
385
 
386
- #: custom-field-template/custom-field-template.php:1450
387
  msgid "Position"
388
  msgstr ""
389
 
390
- #: custom-field-template/custom-field-template.php:1451
391
  msgid "Before the content"
392
  msgstr ""
393
 
394
- #: custom-field-template/custom-field-template.php:1452
395
  msgid "Before the more tag"
396
  msgstr ""
397
 
398
- #: custom-field-template/custom-field-template.php:1453
399
  msgid "After the content"
400
  msgstr ""
401
 
402
- #: custom-field-template/custom-field-template.php:1454
403
  #, php-format
404
  msgid "Inside the content ([cfthook hook=%d])"
405
  msgstr ""
406
 
407
- #: custom-field-template/custom-field-template.php:1464
408
  msgid "Content"
409
  msgstr ""
410
 
411
- #: custom-field-template/custom-field-template.php:1466
412
  msgid "Apply to feeds"
413
  msgstr ""
414
 
415
- #: custom-field-template/custom-field-template.php:1467
416
  msgid "Apply also to excerpts"
417
  msgstr ""
418
 
419
- #: custom-field-template/custom-field-template.php:1483
420
  msgid "Rebuild Value Counts"
421
  msgstr ""
422
 
423
- #: custom-field-template/custom-field-template.php:1485
424
  msgid "Are you sure to rebuild all value counts?"
425
  msgstr ""
426
 
427
- #: custom-field-template/custom-field-template.php:1489
428
  msgid ""
429
  "Value Counts are used for temporarily saving how many values in each key. "
430
  "Set `valueCount = true` into fields."
431
  msgstr ""
432
 
433
- #: custom-field-template/custom-field-template.php:1493
434
  msgid "Rebuild Value Counts &raquo;"
435
  msgstr ""
436
 
437
- #: custom-field-template/custom-field-template.php:1504
438
  msgid "Rebuild Tags"
439
  msgstr ""
440
 
441
- #: custom-field-template/custom-field-template.php:1506
442
  msgid "Are you sure to rebuild tags?"
443
  msgstr ""
444
 
445
- #: custom-field-template/custom-field-template.php:1510
446
  msgid "Rebuild Tags &raquo;"
447
  msgstr ""
448
 
449
- #: custom-field-template/custom-field-template.php:1521
450
  msgid "Option List"
451
  msgstr ""
452
 
453
- #: custom-field-template/custom-field-template.php:1698
454
  msgid "Export Options"
455
  msgstr ""
456
 
457
- #: custom-field-template/custom-field-template.php:1704
458
  msgid "Export Options &raquo;"
459
  msgstr ""
460
 
461
- #: custom-field-template/custom-field-template.php:1714
462
  msgid "Import Options"
463
  msgstr ""
464
 
465
- #: custom-field-template/custom-field-template.php:1716
466
  msgid "Are you sure to import options? Options you set will be overwritten."
467
  msgstr ""
468
 
469
- #: custom-field-template/custom-field-template.php:1720
470
  msgid "Import Options &raquo;"
471
  msgstr ""
472
 
473
- #: custom-field-template/custom-field-template.php:1730
474
  msgid "Reset Options"
475
  msgstr ""
476
 
477
- #: custom-field-template/custom-field-template.php:1732
478
  msgid ""
479
  "Are you sure to reset options? Options you set will be reset to the default "
480
  "settings."
481
  msgstr ""
482
 
483
- #: custom-field-template/custom-field-template.php:1736
484
  msgid "Reset Options &raquo;"
485
  msgstr ""
486
 
487
- #: custom-field-template/custom-field-template.php:1746
488
  msgid "Delete Options"
489
  msgstr ""
490
 
491
- #: custom-field-template/custom-field-template.php:1748
492
  msgid "Are you sure to delete options? Options you set will be deleted."
493
  msgstr ""
494
 
495
- #: custom-field-template/custom-field-template.php:1752
496
  msgid "Delete Options &raquo;"
497
  msgstr ""
498
 
499
- #: custom-field-template/custom-field-template.php:1765
500
  msgid "Donation"
501
  msgstr ""
502
 
503
- #: custom-field-template/custom-field-template.php:1767
504
  msgid ""
505
  "If you liked this plugin, please make a donation via paypal! Any amount is "
506
  "welcome. Your support is much appreciated."
507
  msgstr ""
508
 
509
- #: custom-field-template/custom-field-template.php:1781
510
- #: custom-field-template/custom-field-template.php:1784
511
  msgid "Custom Field Template Manual"
512
  msgstr ""
513
 
514
- #: custom-field-template/custom-field-template.php:1783
515
  msgid ""
516
  "Do you have any trouble with the plugin setup? Please visit the following "
517
  "manual site."
518
  msgstr ""
519
 
520
- #: custom-field-template/custom-field-template.php:1790
521
  msgid "CMS x WP"
522
  msgstr ""
523
 
524
- #: custom-field-template/custom-field-template.php:1792
525
  msgid ""
526
  "There are much more plugins which are useful for developing business "
527
  "websites such as membership sites or ec sites. You could totally treat "
528
  "WordPress as CMS by use of CMS x WP plugins."
529
  msgstr ""
530
 
531
- #: custom-field-template/custom-field-template.php:1793
532
  msgid "WordPress plugin sales site: CMS x WP"
533
  msgstr ""
534
 
535
- #: custom-field-template/custom-field-template.php:1891
536
- #: custom-field-template/custom-field-template.php:2034
537
- #: custom-field-template/custom-field-template.php:2126
538
- #: custom-field-template/custom-field-template.php:2318
539
- #: custom-field-template/custom-field-template.php:2320
540
- #: custom-field-template/custom-field-template.php:2395
541
- #: custom-field-template/custom-field-template.php:2626
542
  msgid "Add New"
543
  msgstr ""
544
 
545
- #: custom-field-template/custom-field-template.php:2042
546
  msgid "Clear"
547
  msgstr ""
548
 
549
- #: custom-field-template/custom-field-template.php:2144
550
  msgid "Select"
551
  msgstr ""
552
 
553
- #: custom-field-template/custom-field-template.php:2240
554
  msgid "Add an Image"
555
  msgstr ""
556
 
557
- #: custom-field-template/custom-field-template.php:2245
558
  msgid "Add Video"
559
  msgstr ""
560
 
561
- #: custom-field-template/custom-field-template.php:2250
562
  msgid "Add Audio"
563
  msgstr ""
564
 
565
- #: custom-field-template/custom-field-template.php:2254
566
- #: custom-field-template/custom-field-template.php:2258
567
  msgid "Add Media"
568
  msgstr ""
569
 
570
- #: custom-field-template/custom-field-template.php:2265
571
  msgid "Toggle"
572
  msgstr ""
573
 
574
- #: custom-field-template/custom-field-template.php:2405
575
  msgid " OR "
576
  msgstr ""
577
 
578
- #: custom-field-template/custom-field-template.php:2408
579
  msgid "Select by Media Picker"
580
  msgstr ""
581
 
582
- #: custom-field-template/custom-field-template.php:2433
583
- #: custom-field-template/custom-field-template.php:2628
584
  msgid "Delete"
585
  msgstr ""
586
 
587
- #: custom-field-template/custom-field-template.php:2861
588
  msgid "Enable"
589
  msgstr ""
590
 
591
- #: custom-field-template/custom-field-template.php:2865
592
  msgid "Initialize"
593
  msgstr ""
594
 
595
- #: custom-field-template/custom-field-template.php:2866
596
  msgid "Are you sure to reset current values? Default values will be loaded."
597
  msgstr ""
598
 
599
- #: custom-field-template/custom-field-template.php:2871
600
  msgid "Save"
601
  msgstr ""
602
 
603
- #: custom-field-template/custom-field-template.php:3633
604
  msgid "Search &raquo;"
605
  msgstr ""
3
  msgstr ""
4
  "Project-Id-Version: Custom Field Template\n"
5
  "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2022-09-19 09:14+0900\n"
7
  "PO-Revision-Date: 2015-03-25 14:37+0900\n"
8
  "Last-Translator: \n"
9
  "Language-Team: \n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
  "X-Poedit-KeywordsList: __;_e;_c\n"
14
  "X-Poedit-Basepath: ..\n"
15
+ "X-Generator: Poedit 2.4.3\n"
16
  "X-Poedit-SearchPath-0: custom-field-template\n"
17
 
18
+ #: custom-field-template/custom-field-template.php:182
 
19
  #: custom-field-template/custom-field-template.php:205
20
+ #: custom-field-template/custom-field-template.php:206
21
+ #: custom-field-template/custom-field-template.php:224
22
+ #: custom-field-template/custom-field-template.php:873
23
+ #: custom-field-template/custom-field-template.php:1192
24
+ #: custom-field-template/custom-field-template.php:2818
25
+ #: custom-field-template/custom-field-template.php:2911
26
  msgid "Custom Field Template"
27
  msgstr ""
28
 
29
+ #: custom-field-template/custom-field-template.php:234
30
  msgid "Media Picker"
31
  msgstr ""
32
 
33
+ #: custom-field-template/custom-field-template.php:236
34
  msgid "Use this"
35
  msgstr ""
36
 
37
+ #: custom-field-template/custom-field-template.php:350
38
+ #: custom-field-template/custom-field-template.php:3153
39
  msgid "Load"
40
  msgstr ""
41
 
42
+ #: custom-field-template/custom-field-template.php:679
43
  msgid "read more"
44
  msgstr ""
45
 
46
+ #: custom-field-template/custom-field-template.php:700
47
+ #: custom-field-template/custom-field-template.php:712
48
  msgid "Custom Fields"
49
  msgstr ""
50
 
51
+ #: custom-field-template/custom-field-template.php:744
52
  msgid "Settings"
53
  msgstr ""
54
 
55
+ #: custom-field-template/custom-field-template.php:790
56
  msgid "Default Template"
57
  msgstr ""
58
 
59
+ #: custom-field-template/custom-field-template.php:1027
60
  msgid ""
61
  "You can not use the following words as the field key: `content`, "
62
  "`post_title`, and `excerpt`, and `action`."
63
  msgstr ""
64
 
65
+ #: custom-field-template/custom-field-template.php:1046
66
+ #: custom-field-template/custom-field-template.php:1077
67
+ #: custom-field-template/custom-field-template.php:1081
68
+ #: custom-field-template/custom-field-template.php:1085
69
+ #: custom-field-template/custom-field-template.php:1097
70
+ #: custom-field-template/custom-field-template.php:1105
71
+ #: custom-field-template/custom-field-template.php:1123
72
  msgid "Options updated."
73
  msgstr ""
74
 
75
+ #: custom-field-template/custom-field-template.php:1127
76
  msgid "Value Counts rebuilt."
77
  msgstr ""
78
 
79
+ #: custom-field-template/custom-field-template.php:1130
80
  msgid "Tags rebuilt."
81
  msgstr ""
82
 
83
+ #: custom-field-template/custom-field-template.php:1139
84
  msgid "Options imported."
85
  msgstr ""
86
 
87
+ #: custom-field-template/custom-field-template.php:1146
88
  msgid "Options resetted."
89
  msgstr ""
90
 
91
+ #: custom-field-template/custom-field-template.php:1150
92
  msgid "Options deleted."
93
  msgstr ""
94
 
95
+ #: custom-field-template/custom-field-template.php:1199
96
+ #: custom-field-template/custom-field-template.php:1291
97
+ #: custom-field-template/custom-field-template.php:1412
98
+ #: custom-field-template/custom-field-template.php:1431
99
+ #: custom-field-template/custom-field-template.php:1462
100
+ #: custom-field-template/custom-field-template.php:1495
101
+ #: custom-field-template/custom-field-template.php:1540
102
+ #: custom-field-template/custom-field-template.php:1561
103
+ #: custom-field-template/custom-field-template.php:1578
104
+ #: custom-field-template/custom-field-template.php:1755
105
+ #: custom-field-template/custom-field-template.php:1771
106
+ #: custom-field-template/custom-field-template.php:1787
107
+ #: custom-field-template/custom-field-template.php:1803
108
+ #: custom-field-template/custom-field-template.php:1822
109
+ #: custom-field-template/custom-field-template.php:1838
110
+ #: custom-field-template/custom-field-template.php:1847
111
  msgid "Click to toggle"
112
  msgstr ""
113
 
114
+ #: custom-field-template/custom-field-template.php:1200
115
  msgid "Custom Field Template Options"
116
  msgstr ""
117
 
118
+ #: custom-field-template/custom-field-template.php:1211
119
+ #: custom-field-template/custom-field-template.php:2961
120
+ #: custom-field-template/custom-field-template.php:2962
121
  msgid "Disable"
122
  msgstr ""
123
 
124
+ #: custom-field-template/custom-field-template.php:1213
125
  msgid "Template Title"
126
  msgstr ""
127
 
128
+ #: custom-field-template/custom-field-template.php:1215
129
  msgid "Template Instruction"
130
  msgstr ""
131
 
132
+ #: custom-field-template/custom-field-template.php:1217
133
+ #: custom-field-template/custom-field-template.php:1514
134
  msgid "Post Type"
135
  msgstr ""
136
 
137
+ #: custom-field-template/custom-field-template.php:1219
138
+ #: custom-field-template/custom-field-template.php:1515
139
  msgid "Both"
140
  msgstr ""
141
 
142
+ #: custom-field-template/custom-field-template.php:1220
143
+ #: custom-field-template/custom-field-template.php:1516
144
  msgid "Post"
145
  msgstr ""
146
 
147
+ #: custom-field-template/custom-field-template.php:1221
148
+ #: custom-field-template/custom-field-template.php:1517
149
  msgid "Page"
150
  msgstr ""
151
 
152
+ #: custom-field-template/custom-field-template.php:1222
153
+ #: custom-field-template/custom-field-template.php:1518
154
  msgid "Custom Post Type (comma-deliminated)"
155
  msgstr ""
156
 
157
+ #: custom-field-template/custom-field-template.php:1224
158
  msgid "Post ID (comma-deliminated)"
159
  msgstr ""
160
 
161
+ #: custom-field-template/custom-field-template.php:1226
162
+ #: custom-field-template/custom-field-template.php:1520
163
  msgid "Category ID (comma-deliminated)"
164
  msgstr ""
165
 
166
+ #: custom-field-template/custom-field-template.php:1228
167
  msgid "Page Template file name(s) (comma-deliminated)"
168
  msgstr ""
169
 
170
+ #: custom-field-template/custom-field-template.php:1230
171
+ msgid "User ID (comma-deliminated)"
172
+ msgstr ""
173
+
174
+ #: custom-field-template/custom-field-template.php:1232
175
+ msgid "User Login (comma-deliminated)"
176
+ msgstr ""
177
+
178
+ #: custom-field-template/custom-field-template.php:1234
179
+ msgid "User Role (comma-deliminated)"
180
+ msgstr ""
181
+
182
+ #: custom-field-template/custom-field-template.php:1236
183
  msgid "Template Format"
184
  msgstr ""
185
 
186
+ #: custom-field-template/custom-field-template.php:1249
187
  msgid "Template Content"
188
  msgstr ""
189
 
190
+ #: custom-field-template/custom-field-template.php:1256
191
+ #: custom-field-template/custom-field-template.php:1403
192
+ #: custom-field-template/custom-field-template.php:1422
193
+ #: custom-field-template/custom-field-template.php:1453
194
+ #: custom-field-template/custom-field-template.php:1486
195
+ #: custom-field-template/custom-field-template.php:1531
196
  msgid "Update Options &raquo;"
197
  msgstr ""
198
 
199
+ #: custom-field-template/custom-field-template.php:1292
200
  msgid "Global Settings"
201
  msgstr ""
202
 
203
+ #: custom-field-template/custom-field-template.php:1307
204
  msgid ""
205
  "In case that you would like to replace custom keys by labels if `label` is "
206
  "set"
207
  msgstr ""
208
 
209
+ #: custom-field-template/custom-field-template.php:1308
210
  msgid "Use labels in place of custom keys"
211
  msgstr ""
212
 
213
+ #: custom-field-template/custom-field-template.php:1311
214
  msgid ""
215
  "In case that you would like to add p and br tags in textareas automatically"
216
  msgstr ""
217
 
218
+ #: custom-field-template/custom-field-template.php:1312
219
  msgid "Use wpautop function"
220
  msgstr ""
221
 
222
+ #: custom-field-template/custom-field-template.php:1316
223
  msgid ""
224
  "In case that you would like to save values automatically in switching "
225
  "templates"
226
  msgstr ""
227
 
228
+ #: custom-field-template/custom-field-template.php:1317
229
  msgid "Use the auto save in switching templates"
230
  msgstr ""
231
 
232
+ #: custom-field-template/custom-field-template.php:1321
233
  msgid ""
234
  "In case that you would like to disable input fields of the custom field "
235
  "template temporarily"
236
  msgstr ""
237
 
238
+ #: custom-field-template/custom-field-template.php:1322
239
  msgid "Use the `Disable` button. The default custom fields will be superseded."
240
  msgstr ""
241
 
242
+ #: custom-field-template/custom-field-template.php:1326
243
  msgid "In case that you would like to forbid to use the initialize button."
244
  msgstr ""
245
 
246
+ #: custom-field-template/custom-field-template.php:1327
247
  msgid "Disable the initialize button"
248
  msgstr ""
249
 
250
+ #: custom-field-template/custom-field-template.php:1331
251
  msgid "In case that you would like to forbid to use the save button."
252
  msgstr ""
253
 
254
+ #: custom-field-template/custom-field-template.php:1332
255
  msgid "Disable the save button"
256
  msgstr ""
257
 
258
+ #: custom-field-template/custom-field-template.php:1336
259
  msgid "In case that you would like to forbid to use the default custom fields."
260
  msgstr ""
261
 
262
+ #: custom-field-template/custom-field-template.php:1337
263
  msgid "Disable the default custom fields"
264
  msgstr ""
265
 
266
+ #: custom-field-template/custom-field-template.php:1341
267
  msgid "In case that you would like to forbid to use the quick edit."
268
  msgstr ""
269
 
270
+ #: custom-field-template/custom-field-template.php:1342
271
  msgid "Disable the quick edit"
272
  msgstr ""
273
 
274
+ #: custom-field-template/custom-field-template.php:1346
275
  msgid "In case that you would like to forbid to use the admin search."
276
  msgstr ""
277
 
278
+ #: custom-field-template/custom-field-template.php:1347
279
  msgid "Disable the admin search"
280
  msgstr ""
281
 
282
+ #: custom-field-template/custom-field-template.php:1351
283
  msgid ""
284
  "In case that you would like to forbid to display the custom field column on "
285
  "the edit post list page."
286
  msgstr ""
287
 
288
+ #: custom-field-template/custom-field-template.php:1352
289
  msgid "Disable the custom field column (The quick edit also does not work.)"
290
  msgstr ""
291
 
292
+ #: custom-field-template/custom-field-template.php:1356
293
  msgid ""
294
  "In case that you would like to replace the box title with the template title."
295
  msgstr ""
296
 
297
+ #: custom-field-template/custom-field-template.php:1357
298
  msgid "Replace the box title"
299
  msgstr ""
300
 
301
+ #: custom-field-template/custom-field-template.php:1361
302
  msgid "In case that you would like to deploy the box in each template."
303
  msgstr ""
304
 
305
+ #: custom-field-template/custom-field-template.php:1362
306
  msgid "Deploy the box in each template"
307
  msgstr ""
308
 
309
+ #: custom-field-template/custom-field-template.php:1366
310
  msgid "In case that you would like to use the shortcode in the widget."
311
  msgstr ""
312
 
313
+ #: custom-field-template/custom-field-template.php:1367
314
  msgid "Use the shortcode in the widget"
315
  msgstr ""
316
 
317
+ #: custom-field-template/custom-field-template.php:1371
318
  msgid "In case that you would like to use the shortcode in the excerpt."
319
  msgstr ""
320
 
321
+ #: custom-field-template/custom-field-template.php:1372
322
  msgid "Use the shortcode in the excerpt"
323
  msgstr ""
324
 
325
+ #: custom-field-template/custom-field-template.php:1376
326
  msgid "In case that you would like to use the jQuery validation."
327
  msgstr ""
328
 
329
+ #: custom-field-template/custom-field-template.php:1377
330
  msgid "Use the jQuery validation"
331
  msgstr ""
332
 
333
+ #: custom-field-template/custom-field-template.php:1387
334
  msgid "Text to place before every list which is called by the cft shortcode"
335
  msgstr ""
336
 
337
+ #: custom-field-template/custom-field-template.php:1389
338
  msgid "Text to place after every list which is called by the cft shortcode"
339
  msgstr ""
340
 
341
+ #: custom-field-template/custom-field-template.php:1391
342
  msgid "Text to place before every value which is called by the cft shortcode"
343
  msgstr ""
344
 
345
+ #: custom-field-template/custom-field-template.php:1393
346
  msgid "Text to place after every value which is called by the cft shortcode"
347
  msgstr ""
348
 
349
+ #: custom-field-template/custom-field-template.php:1398
350
  msgid "In case that you would like to hide the advertisement right column."
351
  msgstr ""
352
 
353
+ #: custom-field-template/custom-field-template.php:1399
354
  msgid "I want to use a wider screen."
355
  msgstr ""
356
 
357
+ #: custom-field-template/custom-field-template.php:1413
358
  msgid "ADMIN CSS"
359
  msgstr ""
360
 
361
+ #: custom-field-template/custom-field-template.php:1432
362
  msgid "[cft] and [cftsearch] Shortcode Format"
363
  msgstr ""
364
 
365
+ #: custom-field-template/custom-field-template.php:1435
366
  msgid "For [cft], [key] will be converted into the value of [key]."
367
  msgstr ""
368
 
369
+ #: custom-field-template/custom-field-template.php:1436
370
  msgid "For [cftsearch], [key] will be converted into the input field."
371
  msgstr ""
372
 
373
+ #: custom-field-template/custom-field-template.php:1447
374
+ #: custom-field-template/custom-field-template.php:1523
375
  msgid "Use PHP"
376
  msgstr ""
377
 
378
+ #: custom-field-template/custom-field-template.php:1463
379
  msgid "PHP CODE (Experimental Option)"
380
  msgstr ""
381
 
382
+ #: custom-field-template/custom-field-template.php:1465
383
  msgid "Are you sure to save PHP codes? Please do it at your own risk."
384
  msgstr ""
385
 
386
+ #: custom-field-template/custom-field-template.php:1466
387
  msgid "For `text` and `textarea`, you must set $value as an string."
388
  msgstr ""
389
 
390
+ #: custom-field-template/custom-field-template.php:1468
391
  msgid ""
392
  "For `checkbox`, `radio`, and `select`, you must set $values as an array."
393
  msgstr ""
394
 
395
+ #: custom-field-template/custom-field-template.php:1496
396
  msgid "Auto Hook of `the_content()` (Experimental Option)"
397
  msgstr ""
398
 
399
+ #: custom-field-template/custom-field-template.php:1508
400
  msgid "Position"
401
  msgstr ""
402
 
403
+ #: custom-field-template/custom-field-template.php:1509
404
  msgid "Before the content"
405
  msgstr ""
406
 
407
+ #: custom-field-template/custom-field-template.php:1510
408
  msgid "Before the more tag"
409
  msgstr ""
410
 
411
+ #: custom-field-template/custom-field-template.php:1511
412
  msgid "After the content"
413
  msgstr ""
414
 
415
+ #: custom-field-template/custom-field-template.php:1512
416
  #, php-format
417
  msgid "Inside the content ([cfthook hook=%d])"
418
  msgstr ""
419
 
420
+ #: custom-field-template/custom-field-template.php:1522
421
  msgid "Content"
422
  msgstr ""
423
 
424
+ #: custom-field-template/custom-field-template.php:1524
425
  msgid "Apply to feeds"
426
  msgstr ""
427
 
428
+ #: custom-field-template/custom-field-template.php:1525
429
  msgid "Apply also to excerpts"
430
  msgstr ""
431
 
432
+ #: custom-field-template/custom-field-template.php:1541
433
  msgid "Rebuild Value Counts"
434
  msgstr ""
435
 
436
+ #: custom-field-template/custom-field-template.php:1543
437
  msgid "Are you sure to rebuild all value counts?"
438
  msgstr ""
439
 
440
+ #: custom-field-template/custom-field-template.php:1547
441
  msgid ""
442
  "Value Counts are used for temporarily saving how many values in each key. "
443
  "Set `valueCount = true` into fields."
444
  msgstr ""
445
 
446
+ #: custom-field-template/custom-field-template.php:1551
447
  msgid "Rebuild Value Counts &raquo;"
448
  msgstr ""
449
 
450
+ #: custom-field-template/custom-field-template.php:1562
451
  msgid "Rebuild Tags"
452
  msgstr ""
453
 
454
+ #: custom-field-template/custom-field-template.php:1564
455
  msgid "Are you sure to rebuild tags?"
456
  msgstr ""
457
 
458
+ #: custom-field-template/custom-field-template.php:1568
459
  msgid "Rebuild Tags &raquo;"
460
  msgstr ""
461
 
462
+ #: custom-field-template/custom-field-template.php:1579
463
  msgid "Option List"
464
  msgstr ""
465
 
466
+ #: custom-field-template/custom-field-template.php:1756
467
  msgid "Export Options"
468
  msgstr ""
469
 
470
+ #: custom-field-template/custom-field-template.php:1762
471
  msgid "Export Options &raquo;"
472
  msgstr ""
473
 
474
+ #: custom-field-template/custom-field-template.php:1772
475
  msgid "Import Options"
476
  msgstr ""
477
 
478
+ #: custom-field-template/custom-field-template.php:1774
479
  msgid "Are you sure to import options? Options you set will be overwritten."
480
  msgstr ""
481
 
482
+ #: custom-field-template/custom-field-template.php:1778
483
  msgid "Import Options &raquo;"
484
  msgstr ""
485
 
486
+ #: custom-field-template/custom-field-template.php:1788
487
  msgid "Reset Options"
488
  msgstr ""
489
 
490
+ #: custom-field-template/custom-field-template.php:1790
491
  msgid ""
492
  "Are you sure to reset options? Options you set will be reset to the default "
493
  "settings."
494
  msgstr ""
495
 
496
+ #: custom-field-template/custom-field-template.php:1794
497
  msgid "Reset Options &raquo;"
498
  msgstr ""
499
 
500
+ #: custom-field-template/custom-field-template.php:1804
501
  msgid "Delete Options"
502
  msgstr ""
503
 
504
+ #: custom-field-template/custom-field-template.php:1806
505
  msgid "Are you sure to delete options? Options you set will be deleted."
506
  msgstr ""
507
 
508
+ #: custom-field-template/custom-field-template.php:1810
509
  msgid "Delete Options &raquo;"
510
  msgstr ""
511
 
512
+ #: custom-field-template/custom-field-template.php:1823
513
  msgid "Donation"
514
  msgstr ""
515
 
516
+ #: custom-field-template/custom-field-template.php:1825
517
  msgid ""
518
  "If you liked this plugin, please make a donation via paypal! Any amount is "
519
  "welcome. Your support is much appreciated."
520
  msgstr ""
521
 
522
+ #: custom-field-template/custom-field-template.php:1839
523
+ #: custom-field-template/custom-field-template.php:1842
524
  msgid "Custom Field Template Manual"
525
  msgstr ""
526
 
527
+ #: custom-field-template/custom-field-template.php:1841
528
  msgid ""
529
  "Do you have any trouble with the plugin setup? Please visit the following "
530
  "manual site."
531
  msgstr ""
532
 
533
+ #: custom-field-template/custom-field-template.php:1848
534
  msgid "CMS x WP"
535
  msgstr ""
536
 
537
+ #: custom-field-template/custom-field-template.php:1850
538
  msgid ""
539
  "There are much more plugins which are useful for developing business "
540
  "websites such as membership sites or ec sites. You could totally treat "
541
  "WordPress as CMS by use of CMS x WP plugins."
542
  msgstr ""
543
 
544
+ #: custom-field-template/custom-field-template.php:1851
545
  msgid "WordPress plugin sales site: CMS x WP"
546
  msgstr ""
547
 
548
+ #: custom-field-template/custom-field-template.php:1949
549
+ #: custom-field-template/custom-field-template.php:2092
550
+ #: custom-field-template/custom-field-template.php:2184
551
+ #: custom-field-template/custom-field-template.php:2376
552
+ #: custom-field-template/custom-field-template.php:2378
553
+ #: custom-field-template/custom-field-template.php:2453
554
+ #: custom-field-template/custom-field-template.php:2715
555
  msgid "Add New"
556
  msgstr ""
557
 
558
+ #: custom-field-template/custom-field-template.php:2100
559
  msgid "Clear"
560
  msgstr ""
561
 
562
+ #: custom-field-template/custom-field-template.php:2202
563
  msgid "Select"
564
  msgstr ""
565
 
566
+ #: custom-field-template/custom-field-template.php:2298
567
  msgid "Add an Image"
568
  msgstr ""
569
 
570
+ #: custom-field-template/custom-field-template.php:2303
571
  msgid "Add Video"
572
  msgstr ""
573
 
574
+ #: custom-field-template/custom-field-template.php:2308
575
  msgid "Add Audio"
576
  msgstr ""
577
 
578
+ #: custom-field-template/custom-field-template.php:2312
579
+ #: custom-field-template/custom-field-template.php:2316
580
  msgid "Add Media"
581
  msgstr ""
582
 
583
+ #: custom-field-template/custom-field-template.php:2323
584
  msgid "Toggle"
585
  msgstr ""
586
 
587
+ #: custom-field-template/custom-field-template.php:2463
588
  msgid " OR "
589
  msgstr ""
590
 
591
+ #: custom-field-template/custom-field-template.php:2466
592
  msgid "Select by Media Picker"
593
  msgstr ""
594
 
595
+ #: custom-field-template/custom-field-template.php:2491
596
+ #: custom-field-template/custom-field-template.php:2717
597
  msgid "Delete"
598
  msgstr ""
599
 
600
+ #: custom-field-template/custom-field-template.php:2962
601
  msgid "Enable"
602
  msgstr ""
603
 
604
+ #: custom-field-template/custom-field-template.php:2966
605
  msgid "Initialize"
606
  msgstr ""
607
 
608
+ #: custom-field-template/custom-field-template.php:2967
609
  msgid "Are you sure to reset current values? Default values will be loaded."
610
  msgstr ""
611
 
612
+ #: custom-field-template/custom-field-template.php:2972
613
  msgid "Save"
614
  msgstr ""
615
 
616
+ #: custom-field-template/custom-field-template.php:3766
617
  msgid "Search &raquo;"
618
  msgstr ""
js/additional-methods.js CHANGED
@@ -1,280 +1,1512 @@
1
- /**
2
- * jQuery Validation Plugin 1.8.0
3
- *
4
- * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
5
- * http://docs.jquery.com/Plugins/Validation
6
  *
7
- * Copyright (c) 2006 - 2011 Jörn Zaefferer
8
  *
9
- * Dual licensed under the MIT and GPL licenses:
10
- * http://www.opensource.org/licenses/mit-license.php
11
- * http://www.gnu.org/licenses/gpl.html
12
  */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
- (function() {
15
-
16
- function stripHtml(value) {
17
- // remove html tags and space chars
18
- return value.replace(/<.[^<>]*?>/g, ' ').replace(/&nbsp;|&#160;/gi, ' ')
19
- // remove numbers and punctuation
20
- .replace(/[0-9.(),;:!?%#$'"_+=\/-]*/g,'');
21
- }
22
- jQuery.validator.addMethod("maxWords", function(value, element, params) {
23
- return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length < params;
24
- }, jQuery.validator.format("Please enter {0} words or less."));
25
-
26
- jQuery.validator.addMethod("minWords", function(value, element, params) {
27
- return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length >= params;
28
- }, jQuery.validator.format("Please enter at least {0} words."));
29
-
30
- jQuery.validator.addMethod("rangeWords", function(value, element, params) {
31
- return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length >= params[0] && value.match(/bw+b/g).length < params[1];
32
- }, jQuery.validator.format("Please enter between {0} and {1} words."));
33
-
34
- })();
35
-
36
- jQuery.validator.addMethod("letterswithbasicpunc", function(value, element) {
37
- return this.optional(element) || /^[a-z-.,()'\"\s]+$/i.test(value);
38
- }, "Letters or punctuation only please");
39
-
40
- jQuery.validator.addMethod("alphanumeric", function(value, element) {
41
- return this.optional(element) || /^\w+$/i.test(value);
42
- }, "Letters, numbers, spaces or underscores only please");
43
-
44
- jQuery.validator.addMethod("lettersonly", function(value, element) {
45
- return this.optional(element) || /^[a-z]+$/i.test(value);
46
- }, "Letters only please");
47
-
48
- jQuery.validator.addMethod("nowhitespace", function(value, element) {
49
- return this.optional(element) || /^\S+$/i.test(value);
50
- }, "No white space please");
51
-
52
- jQuery.validator.addMethod("ziprange", function(value, element) {
53
- return this.optional(element) || /^90[2-5]\d\{2}-\d{4}$/.test(value);
54
- }, "Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx");
55
-
56
- jQuery.validator.addMethod("integer", function(value, element) {
57
- return this.optional(element) || /^-?\d+$/.test(value);
58
- }, "A positive or negative non-decimal number please");
59
 
60
  /**
61
- * Return true, if the value is a valid vehicle identification number (VIN).
62
- *
63
- * Works with all kind of text inputs.
64
- *
65
- * @example <input type="text" size="20" name="VehicleID" class="{required:true,vinUS:true}" />
66
- * @desc Declares a required input element whose value must be a valid vehicle identification number.
67
- *
68
- * @name jQuery.validator.methods.vinUS
69
- * @type Boolean
70
- * @cat Plugins/Validate/Methods
71
- */
72
- jQuery.validator.addMethod(
73
- "vinUS",
74
- function(v){
75
- if (v.length != 17)
76
- return false;
77
- var i, n, d, f, cd, cdv;
78
- var LL = ["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"];
79
- var VL = [1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9];
80
- var FL = [8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2];
81
- var rs = 0;
82
- for(i = 0; i < 17; i++){
83
- f = FL[i];
84
- d = v.slice(i,i+1);
85
- if(i == 8){
86
- cdv = d;
87
- }
88
- if(!isNaN(d)){
89
- d *= f;
90
- }
91
- else{
92
- for(n = 0; n < LL.length; n++){
93
- if(d.toUpperCase() === LL[n]){
94
- d = VL[n];
95
- d *= f;
96
- if(isNaN(cdv) && n == 8){
97
- cdv = LL[n];
98
- }
99
- break;
100
- }
101
- }
102
- }
103
- rs += d;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  }
105
- cd = rs % 11;
106
- if(cd == 10){cd = "X";}
107
- if(cd == cdv){return true;}
108
- return false;
109
- },
110
- "The specified vehicle identification number (VIN) is invalid."
111
- );
112
 
113
- /**
114
- * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.
115
- *
116
- * @example jQuery.validator.methods.date("01/01/1900")
117
- * @result true
118
- *
119
- * @example jQuery.validator.methods.date("01/13/1990")
120
- * @result false
121
- *
122
- * @example jQuery.validator.methods.date("01.01.1900")
123
- * @result false
124
- *
125
- * @example <input name="pippo" class="{dateITA:true}" />
126
- * @desc Declares an optional input element whose value must be a valid date.
127
- *
128
- * @name jQuery.validator.methods.dateITA
129
- * @type Boolean
130
- * @cat Plugins/Validate/Methods
131
- */
132
- jQuery.validator.addMethod(
133
- "dateITA",
134
- function(value, element) {
135
- var check = false;
136
- var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
137
- if( re.test(value)){
138
- var adata = value.split('/');
139
- var gg = parseInt(adata[0],10);
140
- var mm = parseInt(adata[1],10);
141
- var aaaa = parseInt(adata[2],10);
142
- var xdata = new Date(aaaa,mm-1,gg);
143
- if ( ( xdata.getFullYear() == aaaa ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == gg ) )
144
- check = true;
145
- else
146
- check = false;
147
- } else
148
- check = false;
149
- return this.optional(element) || check;
150
- },
151
- "Please enter a correct date"
152
- );
153
 
154
- jQuery.validator.addMethod("dateNL", function(value, element) {
155
- return this.optional(element) || /^\d\d?[\.\/-]\d\d?[\.\/-]\d\d\d?\d?$/.test(value);
156
- }, "Vul hier een geldige datum in."
157
- );
 
 
 
 
 
 
 
 
158
 
159
- jQuery.validator.addMethod("time", function(value, element) {
160
- return this.optional(element) || /^([01][0-9])|(2[0123]):([0-5])([0-9])$/.test(value);
161
- }, "Please enter a valid time, between 00:00 and 23:59"
162
- );
 
163
 
164
  /**
165
- * matches US phone number format
166
- *
167
- * where the area code may not start with 1 and the prefix may not start with 1
168
- * allows '-' or ' ' as a separator and allows parens around area code
169
- * some people may want to put a '1' in front of their number
170
- *
171
- * 1(212)-999-2345
172
- * or
173
- * 212 999 2344
174
- * or
175
- * 212-999-0983
176
- *
177
- * but not
178
- * 111-123-5434
179
- * and not
180
- * 212 123 4567
181
  */
182
- jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
183
- phone_number = phone_number.replace(/\s+/g, "");
184
- return this.optional(element) || phone_number.length > 9 &&
185
- phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
186
- }, "Please specify a valid phone number");
187
-
188
- jQuery.validator.addMethod('phoneUK', function(phone_number, element) {
189
- return this.optional(element) || phone_number.length > 9 &&
190
- phone_number.match(/^(\(?(0|\+44)[1-9]{1}\d{1,4}?\)?\s?\d{3,4}\s?\d{3,4})$/);
191
- }, 'Please specify a valid phone number');
192
-
193
- jQuery.validator.addMethod('mobileUK', function(phone_number, element) {
194
- return this.optional(element) || phone_number.length > 9 &&
195
- phone_number.match(/^((0|\+44)7(5|6|7|8|9){1}\d{2}\s?\d{6})$/);
196
- }, 'Please specify a valid mobile number');
197
 
198
- // TODO check if value starts with <, otherwise don't try stripping anything
199
- jQuery.validator.addMethod("strippedminlength", function(value, element, param) {
200
- return jQuery(value).text().length >= param;
201
- }, jQuery.validator.format("Please enter at least {0} characters"));
202
-
203
- // same as email, but TLD is optional
204
- jQuery.validator.addMethod("email2", function(value, element, param) {
205
- return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
206
- }, jQuery.validator.messages.email);
207
-
208
- // same as url, but TLD is optional
209
- jQuery.validator.addMethod("url2", function(value, element, param) {
210
- return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
211
- }, jQuery.validator.messages.url);
212
-
213
- // NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator
214
- // Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0
215
- // Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)
216
- jQuery.validator.addMethod("creditcardtypes", function(value, element, param) {
217
-
218
- if (/[^0-9-]+/.test(value))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
219
  return false;
220
-
221
- value = value.replace(/\D/g, "");
222
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
223
  var validTypes = 0x0000;
224
-
225
- if (param.mastercard)
226
  validTypes |= 0x0001;
227
- if (param.visa)
 
228
  validTypes |= 0x0002;
229
- if (param.amex)
 
230
  validTypes |= 0x0004;
231
- if (param.dinersclub)
 
232
  validTypes |= 0x0008;
233
- if (param.enroute)
 
234
  validTypes |= 0x0010;
235
- if (param.discover)
 
236
  validTypes |= 0x0020;
237
- if (param.jcb)
 
238
  validTypes |= 0x0040;
239
- if (param.unknown)
 
240
  validTypes |= 0x0080;
241
- if (param.all)
 
242
  validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;
243
-
244
- if (validTypes & 0x0001 && /^(51|52|53|54|55)/.test(value)) { //mastercard
245
- return value.length == 16;
246
  }
247
- if (validTypes & 0x0002 && /^(4)/.test(value)) { //visa
248
- return value.length == 16;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
249
  }
250
- if (validTypes & 0x0004 && /^(34|37)/.test(value)) { //amex
251
- return value.length == 15;
 
 
 
 
 
 
252
  }
253
- if (validTypes & 0x0008 && /^(300|301|302|303|304|305|36|38)/.test(value)) { //dinersclub
254
- return value.length == 14;
 
 
 
 
 
 
 
255
  }
256
- if (validTypes & 0x0010 && /^(2014|2149)/.test(value)) { //enroute
257
- return value.length == 15;
 
 
 
 
 
 
258
  }
259
- if (validTypes & 0x0020 && /^(6011)/.test(value)) { //discover
260
- return value.length == 16;
 
 
 
 
 
 
 
 
 
 
261
  }
262
- if (validTypes & 0x0040 && /^(3)/.test(value)) { //jcb
263
- return value.length == 16;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
264
  }
265
- if (validTypes & 0x0040 && /^(2131|1800)/.test(value)) { //jcb
266
- return value.length == 15;
 
267
  }
268
- if (validTypes & 0x0080) { //unknown
269
  return true;
270
  }
271
  return false;
272
- }, "Please enter a valid credit card number.");
273
 
274
- jQuery.validator.addMethod("ipv4", function(value, element, param) {
275
- return this.optional(element) || /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/i.test(value);
276
- }, "Please enter a valid IP v4 address.");
277
 
278
- jQuery.validator.addMethod("ipv6", function(value, element, param) {
279
- return this.optional(element) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(value);
280
- }, "Please enter a valid IP v6 address.");
 
 
1
+ /*!
2
+ * jQuery Validation Plugin v1.19.5
 
 
 
3
  *
4
+ * https://jqueryvalidation.org/
5
  *
6
+ * Copyright (c) 2022 Jörn Zaefferer
7
+ * Released under the MIT license
 
8
  */
9
+ (function( factory ) {
10
+ if ( typeof define === "function" && define.amd ) {
11
+ define( ["jquery", "./jquery.validate"], factory );
12
+ } else if (typeof module === "object" && module.exports) {
13
+ module.exports = factory( require( "jquery" ) );
14
+ } else {
15
+ factory( jQuery );
16
+ }
17
+ }(function( $ ) {
18
+
19
+ ( function() {
20
+
21
+ function stripHtml( value ) {
22
+
23
+ // Remove html tags and space chars
24
+ return value.replace( /<.[^<>]*?>/g, " " ).replace( /&nbsp;|&#160;/gi, " " )
25
+
26
+ // Remove punctuation
27
+ .replace( /[.(),;:!?%#$'\"_+=\/\-“”’]*/g, "" );
28
+ }
29
+
30
+ $.validator.addMethod( "maxWords", function( value, element, params ) {
31
+ return this.optional( element ) || stripHtml( value ).match( /\b\w+\b/g ).length <= params;
32
+ }, $.validator.format( "Please enter {0} words or less." ) );
33
+
34
+ $.validator.addMethod( "minWords", function( value, element, params ) {
35
+ return this.optional( element ) || stripHtml( value ).match( /\b\w+\b/g ).length >= params;
36
+ }, $.validator.format( "Please enter at least {0} words." ) );
37
+
38
+ $.validator.addMethod( "rangeWords", function( value, element, params ) {
39
+ var valueStripped = stripHtml( value ),
40
+ regex = /\b\w+\b/g;
41
+ return this.optional( element ) || valueStripped.match( regex ).length >= params[ 0 ] && valueStripped.match( regex ).length <= params[ 1 ];
42
+ }, $.validator.format( "Please enter between {0} and {1} words." ) );
43
 
44
+ }() );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
  /**
47
+ * This is used in the United States to process payments, deposits,
48
+ * or transfers using the Automated Clearing House (ACH) or Fedwire
49
+ * systems. A very common use case would be to validate a form for
50
+ * an ACH bill payment.
51
+ */
52
+ $.validator.addMethod( "abaRoutingNumber", function( value ) {
53
+ var checksum = 0;
54
+ var tokens = value.split( "" );
55
+ var length = tokens.length;
56
+
57
+ // Length Check
58
+ if ( length !== 9 ) {
59
+ return false;
60
+ }
61
+
62
+ // Calc the checksum
63
+ // https://en.wikipedia.org/wiki/ABA_routing_transit_number
64
+ for ( var i = 0; i < length; i += 3 ) {
65
+ checksum += parseInt( tokens[ i ], 10 ) * 3 +
66
+ parseInt( tokens[ i + 1 ], 10 ) * 7 +
67
+ parseInt( tokens[ i + 2 ], 10 );
68
+ }
69
+
70
+ // If not zero and divisible by 10 then valid
71
+ if ( checksum !== 0 && checksum % 10 === 0 ) {
72
+ return true;
73
+ }
74
+
75
+ return false;
76
+ }, "Please enter a valid routing number." );
77
+
78
+ // Accept a value from a file input based on a required mimetype
79
+ $.validator.addMethod( "accept", function( value, element, param ) {
80
+
81
+ // Split mime on commas in case we have multiple types we can accept
82
+ var typeParam = typeof param === "string" ? param.replace( /\s/g, "" ) : "image/*",
83
+ optionalValue = this.optional( element ),
84
+ i, file, regex;
85
+
86
+ // Element is optional
87
+ if ( optionalValue ) {
88
+ return optionalValue;
89
+ }
90
+
91
+ if ( $( element ).attr( "type" ) === "file" ) {
92
+
93
+ // Escape string to be used in the regex
94
+ // see: https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex
95
+ // Escape also "/*" as "/.*" as a wildcard
96
+ typeParam = typeParam
97
+ .replace( /[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g, "\\$&" )
98
+ .replace( /,/g, "|" )
99
+ .replace( /\/\*/g, "/.*" );
100
+
101
+ // Check if the element has a FileList before checking each file
102
+ if ( element.files && element.files.length ) {
103
+ regex = new RegExp( ".?(" + typeParam + ")$", "i" );
104
+ for ( i = 0; i < element.files.length; i++ ) {
105
+ file = element.files[ i ];
106
+
107
+ // Grab the mimetype from the loaded file, verify it matches
108
+ if ( !file.type.match( regex ) ) {
109
+ return false;
110
+ }
111
+ }
112
  }
113
+ }
 
 
 
 
 
 
114
 
115
+ // Either return true because we've validated each file, or because the
116
+ // browser does not support element.files and the FileList feature
117
+ return true;
118
+ }, $.validator.format( "Please enter a value with a valid mimetype." ) );
119
+
120
+ $.validator.addMethod( "alphanumeric", function( value, element ) {
121
+ return this.optional( element ) || /^\w+$/i.test( value );
122
+ }, "Letters, numbers, and underscores only please." );
123
+
124
+ /*
125
+ * Dutch bank account numbers (not 'giro' numbers) have 9 digits
126
+ * and pass the '11 check'.
127
+ * We accept the notation with spaces, as that is common.
128
+ * acceptable: 123456789 or 12 34 56 789
129
+ */
130
+ $.validator.addMethod( "bankaccountNL", function( value, element ) {
131
+ if ( this.optional( element ) ) {
132
+ return true;
133
+ }
134
+ if ( !( /^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test( value ) ) ) {
135
+ return false;
136
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
 
138
+ // Now '11 check'
139
+ var account = value.replace( / /g, "" ), // Remove spaces
140
+ sum = 0,
141
+ len = account.length,
142
+ pos, factor, digit;
143
+ for ( pos = 0; pos < len; pos++ ) {
144
+ factor = len - pos;
145
+ digit = account.substring( pos, pos + 1 );
146
+ sum = sum + factor * digit;
147
+ }
148
+ return sum % 11 === 0;
149
+ }, "Please specify a valid bank account number." );
150
 
151
+ $.validator.addMethod( "bankorgiroaccountNL", function( value, element ) {
152
+ return this.optional( element ) ||
153
+ ( $.validator.methods.bankaccountNL.call( this, value, element ) ) ||
154
+ ( $.validator.methods.giroaccountNL.call( this, value, element ) );
155
+ }, "Please specify a valid bank or giro account number." );
156
 
157
  /**
158
+ * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity.
159
+ *
160
+ * BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional)
161
+ *
162
+ * Validation is case-insensitive. Please make sure to normalize input yourself.
163
+ *
164
+ * BIC definition in detail:
165
+ * - First 4 characters - bank code (only letters)
166
+ * - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters)
167
+ * - Next 2 characters - location code (letters and digits)
168
+ * a. shall not start with '0' or '1'
169
+ * b. second character must be a letter ('O' is not allowed) or digit ('0' for test (therefore not allowed), '1' denoting passive participant, '2' typically reverse-billing)
170
+ * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits)
 
 
 
171
  */
172
+ $.validator.addMethod( "bic", function( value, element ) {
173
+ return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value.toUpperCase() );
174
+ }, "Please specify a valid BIC code." );
 
 
 
 
 
 
 
 
 
 
 
 
175
 
176
+ /*
177
+ * Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities
178
+ * Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal
179
+ *
180
+ * Spanish CIF structure:
181
+ *
182
+ * [ T ][ P ][ P ][ N ][ N ][ N ][ N ][ N ][ C ]
183
+ *
184
+ * Where:
185
+ *
186
+ * T: 1 character. Kind of Organization Letter: [ABCDEFGHJKLMNPQRSUVW]
187
+ * P: 2 characters. Province.
188
+ * N: 5 characters. Secuencial Number within the province.
189
+ * C: 1 character. Control Digit: [0-9A-J].
190
+ *
191
+ * [ T ]: Kind of Organizations. Possible values:
192
+ *
193
+ * A. Corporations
194
+ * B. LLCs
195
+ * C. General partnerships
196
+ * D. Companies limited partnerships
197
+ * E. Communities of goods
198
+ * F. Cooperative Societies
199
+ * G. Associations
200
+ * H. Communities of homeowners in horizontal property regime
201
+ * J. Civil Societies
202
+ * K. Old format
203
+ * L. Old format
204
+ * M. Old format
205
+ * N. Nonresident entities
206
+ * P. Local authorities
207
+ * Q. Autonomous bodies, state or not, and the like, and congregations and religious institutions
208
+ * R. Congregations and religious institutions (since 2008 ORDER EHA/451/2008)
209
+ * S. Organs of State Administration and regions
210
+ * V. Agrarian Transformation
211
+ * W. Permanent establishments of non-resident in Spain
212
+ *
213
+ * [ C ]: Control Digit. It can be a number or a letter depending on T value:
214
+ * [ T ] --> [ C ]
215
+ * ------ ----------
216
+ * A Number
217
+ * B Number
218
+ * E Number
219
+ * H Number
220
+ * K Letter
221
+ * P Letter
222
+ * Q Letter
223
+ * S Letter
224
+ *
225
+ */
226
+ $.validator.addMethod( "cifES", function( value, element ) {
227
+ "use strict";
228
+
229
+ if ( this.optional( element ) ) {
230
+ return true;
231
+ }
232
+
233
+ var cifRegEx = new RegExp( /^([ABCDEFGHJKLMNPQRSUVW])(\d{7})([0-9A-J])$/gi );
234
+ var letter = value.substring( 0, 1 ), // [ T ]
235
+ number = value.substring( 1, 8 ), // [ P ][ P ][ N ][ N ][ N ][ N ][ N ]
236
+ control = value.substring( 8, 9 ), // [ C ]
237
+ all_sum = 0,
238
+ even_sum = 0,
239
+ odd_sum = 0,
240
+ i, n,
241
+ control_digit,
242
+ control_letter;
243
+
244
+ function isOdd( n ) {
245
+ return n % 2 === 0;
246
+ }
247
+
248
+ // Quick format test
249
+ if ( value.length !== 9 || !cifRegEx.test( value ) ) {
250
  return false;
251
+ }
252
+
253
+ for ( i = 0; i < number.length; i++ ) {
254
+ n = parseInt( number[ i ], 10 );
255
+
256
+ // Odd positions
257
+ if ( isOdd( i ) ) {
258
+
259
+ // Odd positions are multiplied first.
260
+ n *= 2;
261
+
262
+ // If the multiplication is bigger than 10 we need to adjust
263
+ odd_sum += n < 10 ? n : n - 9;
264
+
265
+ // Even positions
266
+ // Just sum them
267
+ } else {
268
+ even_sum += n;
269
+ }
270
+ }
271
+
272
+ all_sum = even_sum + odd_sum;
273
+ control_digit = ( 10 - ( all_sum ).toString().substr( -1 ) ).toString();
274
+ control_digit = parseInt( control_digit, 10 ) > 9 ? "0" : control_digit;
275
+ control_letter = "JABCDEFGHI".substr( control_digit, 1 ).toString();
276
+
277
+ // Control must be a digit
278
+ if ( letter.match( /[ABEH]/ ) ) {
279
+ return control === control_digit;
280
+
281
+ // Control must be a letter
282
+ } else if ( letter.match( /[KPQS]/ ) ) {
283
+ return control === control_letter;
284
+ }
285
+
286
+ // Can be either
287
+ return control === control_digit || control === control_letter;
288
+
289
+ }, "Please specify a valid CIF number." );
290
+
291
+ /*
292
+ * Brazillian CNH number (Carteira Nacional de Habilitacao) is the License Driver number.
293
+ * CNH numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.
294
+ */
295
+ $.validator.addMethod( "cnhBR", function( value ) {
296
+
297
+ // Removing special characters from value
298
+ value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" );
299
+
300
+ // Checking value to have 11 digits only
301
+ if ( value.length !== 11 ) {
302
+ return false;
303
+ }
304
+
305
+ var sum = 0, dsc = 0, firstChar,
306
+ firstCN, secondCN, i, j, v;
307
+
308
+ firstChar = value.charAt( 0 );
309
+
310
+ if ( new Array( 12 ).join( firstChar ) === value ) {
311
+ return false;
312
+ }
313
+
314
+ // Step 1 - using first Check Number:
315
+ for ( i = 0, j = 9, v = 0; i < 9; ++i, --j ) {
316
+ sum += +( value.charAt( i ) * j );
317
+ }
318
+
319
+ firstCN = sum % 11;
320
+ if ( firstCN >= 10 ) {
321
+ firstCN = 0;
322
+ dsc = 2;
323
+ }
324
+
325
+ sum = 0;
326
+ for ( i = 0, j = 1, v = 0; i < 9; ++i, ++j ) {
327
+ sum += +( value.charAt( i ) * j );
328
+ }
329
+
330
+ secondCN = sum % 11;
331
+ if ( secondCN >= 10 ) {
332
+ secondCN = 0;
333
+ } else {
334
+ secondCN = secondCN - dsc;
335
+ }
336
+
337
+ return ( String( firstCN ).concat( secondCN ) === value.substr( -2 ) );
338
+
339
+ }, "Please specify a valid CNH number." );
340
+
341
+ /*
342
+ * Brazillian value number (Cadastrado de Pessoas Juridica).
343
+ * value numbers have 14 digits in total: 12 numbers followed by 2 check numbers that are being used for validation.
344
+ */
345
+ $.validator.addMethod( "cnpjBR", function( value, element ) {
346
+ "use strict";
347
+
348
+ if ( this.optional( element ) ) {
349
+ return true;
350
+ }
351
+
352
+ // Removing no number
353
+ value = value.replace( /[^\d]+/g, "" );
354
+
355
+ // Checking value to have 14 digits only
356
+ if ( value.length !== 14 ) {
357
+ return false;
358
+ }
359
+
360
+ // Elimina values invalidos conhecidos
361
+ if ( value === "00000000000000" ||
362
+ value === "11111111111111" ||
363
+ value === "22222222222222" ||
364
+ value === "33333333333333" ||
365
+ value === "44444444444444" ||
366
+ value === "55555555555555" ||
367
+ value === "66666666666666" ||
368
+ value === "77777777777777" ||
369
+ value === "88888888888888" ||
370
+ value === "99999999999999" ) {
371
+ return false;
372
+ }
373
+
374
+ // Valida DVs
375
+ var tamanho = ( value.length - 2 );
376
+ var numeros = value.substring( 0, tamanho );
377
+ var digitos = value.substring( tamanho );
378
+ var soma = 0;
379
+ var pos = tamanho - 7;
380
+
381
+ for ( var i = tamanho; i >= 1; i-- ) {
382
+ soma += numeros.charAt( tamanho - i ) * pos--;
383
+ if ( pos < 2 ) {
384
+ pos = 9;
385
+ }
386
+ }
387
+
388
+ var resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
389
+
390
+ if ( resultado !== parseInt( digitos.charAt( 0 ), 10 ) ) {
391
+ return false;
392
+ }
393
+
394
+ tamanho = tamanho + 1;
395
+ numeros = value.substring( 0, tamanho );
396
+ soma = 0;
397
+ pos = tamanho - 7;
398
+
399
+ for ( var il = tamanho; il >= 1; il-- ) {
400
+ soma += numeros.charAt( tamanho - il ) * pos--;
401
+ if ( pos < 2 ) {
402
+ pos = 9;
403
+ }
404
+ }
405
+
406
+ resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
407
+
408
+ if ( resultado !== parseInt( digitos.charAt( 1 ), 10 ) ) {
409
+ return false;
410
+ }
411
+
412
+ return true;
413
+
414
+ }, "Please specify a CNPJ value number." );
415
+
416
+ /*
417
+ * Brazillian CPF number (Cadastrado de Pessoas Físicas) is the equivalent of a Brazilian tax registration number.
418
+ * CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.
419
+ */
420
+ $.validator.addMethod( "cpfBR", function( value, element ) {
421
+ "use strict";
422
+
423
+ if ( this.optional( element ) ) {
424
+ return true;
425
+ }
426
+
427
+ // Removing special characters from value
428
+ value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" );
429
+
430
+ // Checking value to have 11 digits only
431
+ if ( value.length !== 11 ) {
432
+ return false;
433
+ }
434
+
435
+ var sum = 0,
436
+ firstCN, secondCN, checkResult, i;
437
+
438
+ firstCN = parseInt( value.substring( 9, 10 ), 10 );
439
+ secondCN = parseInt( value.substring( 10, 11 ), 10 );
440
+
441
+ checkResult = function( sum, cn ) {
442
+ var result = ( sum * 10 ) % 11;
443
+ if ( ( result === 10 ) || ( result === 11 ) ) {
444
+ result = 0;
445
+ }
446
+ return ( result === cn );
447
+ };
448
+
449
+ // Checking for dump data
450
+ if ( value === "" ||
451
+ value === "00000000000" ||
452
+ value === "11111111111" ||
453
+ value === "22222222222" ||
454
+ value === "33333333333" ||
455
+ value === "44444444444" ||
456
+ value === "55555555555" ||
457
+ value === "66666666666" ||
458
+ value === "77777777777" ||
459
+ value === "88888888888" ||
460
+ value === "99999999999"
461
+ ) {
462
+ return false;
463
+ }
464
+
465
+ // Step 1 - using first Check Number:
466
+ for ( i = 1; i <= 9; i++ ) {
467
+ sum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 11 - i );
468
+ }
469
+
470
+ // If first Check Number (CN) is valid, move to Step 2 - using second Check Number:
471
+ if ( checkResult( sum, firstCN ) ) {
472
+ sum = 0;
473
+ for ( i = 1; i <= 10; i++ ) {
474
+ sum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 12 - i );
475
+ }
476
+ return checkResult( sum, secondCN );
477
+ }
478
+ return false;
479
+
480
+ }, "Please specify a valid CPF number." );
481
+
482
+ // https://jqueryvalidation.org/creditcard-method/
483
+ // based on https://en.wikipedia.org/wiki/Luhn_algorithm
484
+ $.validator.addMethod( "creditcard", function( value, element ) {
485
+ if ( this.optional( element ) ) {
486
+ return "dependency-mismatch";
487
+ }
488
+
489
+ // Accept only spaces, digits and dashes
490
+ if ( /[^0-9 \-]+/.test( value ) ) {
491
+ return false;
492
+ }
493
+
494
+ var nCheck = 0,
495
+ nDigit = 0,
496
+ bEven = false,
497
+ n, cDigit;
498
+
499
+ value = value.replace( /\D/g, "" );
500
+
501
+ // Basing min and max length on
502
+ // https://dev.ean.com/general-info/valid-card-types/
503
+ if ( value.length < 13 || value.length > 19 ) {
504
+ return false;
505
+ }
506
+
507
+ for ( n = value.length - 1; n >= 0; n-- ) {
508
+ cDigit = value.charAt( n );
509
+ nDigit = parseInt( cDigit, 10 );
510
+ if ( bEven ) {
511
+ if ( ( nDigit *= 2 ) > 9 ) {
512
+ nDigit -= 9;
513
+ }
514
+ }
515
+
516
+ nCheck += nDigit;
517
+ bEven = !bEven;
518
+ }
519
+
520
+ return ( nCheck % 10 ) === 0;
521
+ }, "Please enter a valid credit card number." );
522
+
523
+ /* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator
524
+ * Redistributed under the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0
525
+ * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)
526
+ */
527
+ $.validator.addMethod( "creditcardtypes", function( value, element, param ) {
528
+ if ( /[^0-9\-]+/.test( value ) ) {
529
+ return false;
530
+ }
531
+
532
+ value = value.replace( /\D/g, "" );
533
+
534
  var validTypes = 0x0000;
535
+
536
+ if ( param.mastercard ) {
537
  validTypes |= 0x0001;
538
+ }
539
+ if ( param.visa ) {
540
  validTypes |= 0x0002;
541
+ }
542
+ if ( param.amex ) {
543
  validTypes |= 0x0004;
544
+ }
545
+ if ( param.dinersclub ) {
546
  validTypes |= 0x0008;
547
+ }
548
+ if ( param.enroute ) {
549
  validTypes |= 0x0010;
550
+ }
551
+ if ( param.discover ) {
552
  validTypes |= 0x0020;
553
+ }
554
+ if ( param.jcb ) {
555
  validTypes |= 0x0040;
556
+ }
557
+ if ( param.unknown ) {
558
  validTypes |= 0x0080;
559
+ }
560
+ if ( param.all ) {
561
  validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;
 
 
 
562
  }
563
+ if ( validTypes & 0x0001 && ( /^(5[12345])/.test( value ) || /^(2[234567])/.test( value ) ) ) { // Mastercard
564
+ return value.length === 16;
565
+ }
566
+ if ( validTypes & 0x0002 && /^(4)/.test( value ) ) { // Visa
567
+ return value.length === 16;
568
+ }
569
+ if ( validTypes & 0x0004 && /^(3[47])/.test( value ) ) { // Amex
570
+ return value.length === 15;
571
+ }
572
+ if ( validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test( value ) ) { // Dinersclub
573
+ return value.length === 14;
574
+ }
575
+ if ( validTypes & 0x0010 && /^(2(014|149))/.test( value ) ) { // Enroute
576
+ return value.length === 15;
577
+ }
578
+ if ( validTypes & 0x0020 && /^(6011)/.test( value ) ) { // Discover
579
+ return value.length === 16;
580
+ }
581
+ if ( validTypes & 0x0040 && /^(3)/.test( value ) ) { // Jcb
582
+ return value.length === 16;
583
+ }
584
+ if ( validTypes & 0x0040 && /^(2131|1800)/.test( value ) ) { // Jcb
585
+ return value.length === 15;
586
+ }
587
+ if ( validTypes & 0x0080 ) { // Unknown
588
+ return true;
589
+ }
590
+ return false;
591
+ }, "Please enter a valid credit card number." );
592
+
593
+ /**
594
+ * Validates currencies with any given symbols by @jameslouiz
595
+ * Symbols can be optional or required. Symbols required by default
596
+ *
597
+ * Usage examples:
598
+ * currency: ["£", false] - Use false for soft currency validation
599
+ * currency: ["$", false]
600
+ * currency: ["RM", false] - also works with text based symbols such as "RM" - Malaysia Ringgit etc
601
+ *
602
+ * <input class="currencyInput" name="currencyInput">
603
+ *
604
+ * Soft symbol checking
605
+ * currencyInput: {
606
+ * currency: ["$", false]
607
+ * }
608
+ *
609
+ * Strict symbol checking (default)
610
+ * currencyInput: {
611
+ * currency: "$"
612
+ * //OR
613
+ * currency: ["$", true]
614
+ * }
615
+ *
616
+ * Multiple Symbols
617
+ * currencyInput: {
618
+ * currency: "$,£,¢"
619
+ * }
620
+ */
621
+ $.validator.addMethod( "currency", function( value, element, param ) {
622
+ var isParamString = typeof param === "string",
623
+ symbol = isParamString ? param : param[ 0 ],
624
+ soft = isParamString ? true : param[ 1 ],
625
+ regex;
626
+
627
+ symbol = symbol.replace( /,/g, "" );
628
+ symbol = soft ? symbol + "]" : symbol + "]?";
629
+ regex = "^[" + symbol + "([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$";
630
+ regex = new RegExp( regex );
631
+ return this.optional( element ) || regex.test( value );
632
+
633
+ }, "Please specify a valid currency." );
634
+
635
+ $.validator.addMethod( "dateFA", function( value, element ) {
636
+ return this.optional( element ) || /^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test( value );
637
+ }, $.validator.messages.date );
638
+
639
+ /**
640
+ * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.
641
+ *
642
+ * @example $.validator.methods.date("01/01/1900")
643
+ * @result true
644
+ *
645
+ * @example $.validator.methods.date("01/13/1990")
646
+ * @result false
647
+ *
648
+ * @example $.validator.methods.date("01.01.1900")
649
+ * @result false
650
+ *
651
+ * @example <input name="pippo" class="{dateITA:true}" />
652
+ * @desc Declares an optional input element whose value must be a valid date.
653
+ *
654
+ * @name $.validator.methods.dateITA
655
+ * @type Boolean
656
+ * @cat Plugins/Validate/Methods
657
+ */
658
+ $.validator.addMethod( "dateITA", function( value, element ) {
659
+ var check = false,
660
+ re = /^\d{1,2}\/\d{1,2}\/\d{4}$/,
661
+ adata, gg, mm, aaaa, xdata;
662
+ if ( re.test( value ) ) {
663
+ adata = value.split( "/" );
664
+ gg = parseInt( adata[ 0 ], 10 );
665
+ mm = parseInt( adata[ 1 ], 10 );
666
+ aaaa = parseInt( adata[ 2 ], 10 );
667
+ xdata = new Date( Date.UTC( aaaa, mm - 1, gg, 12, 0, 0, 0 ) );
668
+ if ( ( xdata.getUTCFullYear() === aaaa ) && ( xdata.getUTCMonth() === mm - 1 ) && ( xdata.getUTCDate() === gg ) ) {
669
+ check = true;
670
+ } else {
671
+ check = false;
672
+ }
673
+ } else {
674
+ check = false;
675
+ }
676
+ return this.optional( element ) || check;
677
+ }, $.validator.messages.date );
678
+
679
+ $.validator.addMethod( "dateNL", function( value, element ) {
680
+ return this.optional( element ) || /^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test( value );
681
+ }, $.validator.messages.date );
682
+
683
+ // Older "accept" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept
684
+ $.validator.addMethod( "extension", function( value, element, param ) {
685
+ param = typeof param === "string" ? param.replace( /,/g, "|" ) : "png|jpe?g|gif";
686
+ return this.optional( element ) || value.match( new RegExp( "\\.(" + param + ")$", "i" ) );
687
+ }, $.validator.format( "Please enter a value with a valid extension." ) );
688
+
689
+ /**
690
+ * Dutch giro account numbers (not bank numbers) have max 7 digits
691
+ */
692
+ $.validator.addMethod( "giroaccountNL", function( value, element ) {
693
+ return this.optional( element ) || /^[0-9]{1,7}$/.test( value );
694
+ }, "Please specify a valid giro account number." );
695
+
696
+ $.validator.addMethod( "greaterThan", function( value, element, param ) {
697
+ var target = $( param );
698
+
699
+ if ( this.settings.onfocusout && target.not( ".validate-greaterThan-blur" ).length ) {
700
+ target.addClass( "validate-greaterThan-blur" ).on( "blur.validate-greaterThan", function() {
701
+ $( element ).valid();
702
+ } );
703
+ }
704
+
705
+ return value > target.val();
706
+ }, "Please enter a greater value." );
707
+
708
+ $.validator.addMethod( "greaterThanEqual", function( value, element, param ) {
709
+ var target = $( param );
710
+
711
+ if ( this.settings.onfocusout && target.not( ".validate-greaterThanEqual-blur" ).length ) {
712
+ target.addClass( "validate-greaterThanEqual-blur" ).on( "blur.validate-greaterThanEqual", function() {
713
+ $( element ).valid();
714
+ } );
715
+ }
716
+
717
+ return value >= target.val();
718
+ }, "Please enter a greater value." );
719
+
720
+ /**
721
+ * IBAN is the international bank account number.
722
+ * It has a country - specific format, that is checked here too
723
+ *
724
+ * Validation is case-insensitive. Please make sure to normalize input yourself.
725
+ */
726
+ $.validator.addMethod( "iban", function( value, element ) {
727
+
728
+ // Some quick simple tests to prevent needless work
729
+ if ( this.optional( element ) ) {
730
+ return true;
731
+ }
732
+
733
+ // Remove spaces and to upper case
734
+ var iban = value.replace( / /g, "" ).toUpperCase(),
735
+ ibancheckdigits = "",
736
+ leadingZeroes = true,
737
+ cRest = "",
738
+ cOperator = "",
739
+ countrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p;
740
+
741
+ // Check for IBAN code length.
742
+ // It contains:
743
+ // country code ISO 3166-1 - two letters,
744
+ // two check digits,
745
+ // Basic Bank Account Number (BBAN) - up to 30 chars
746
+ var minimalIBANlength = 5;
747
+ if ( iban.length < minimalIBANlength ) {
748
+ return false;
749
+ }
750
+
751
+ // Check the country code and find the country specific format
752
+ countrycode = iban.substring( 0, 2 );
753
+ bbancountrypatterns = {
754
+ "AL": "\\d{8}[\\dA-Z]{16}",
755
+ "AD": "\\d{8}[\\dA-Z]{12}",
756
+ "AT": "\\d{16}",
757
+ "AZ": "[\\dA-Z]{4}\\d{20}",
758
+ "BE": "\\d{12}",
759
+ "BH": "[A-Z]{4}[\\dA-Z]{14}",
760
+ "BA": "\\d{16}",
761
+ "BR": "\\d{23}[A-Z][\\dA-Z]",
762
+ "BG": "[A-Z]{4}\\d{6}[\\dA-Z]{8}",
763
+ "CR": "\\d{17}",
764
+ "HR": "\\d{17}",
765
+ "CY": "\\d{8}[\\dA-Z]{16}",
766
+ "CZ": "\\d{20}",
767
+ "DK": "\\d{14}",
768
+ "DO": "[A-Z]{4}\\d{20}",
769
+ "EE": "\\d{16}",
770
+ "FO": "\\d{14}",
771
+ "FI": "\\d{14}",
772
+ "FR": "\\d{10}[\\dA-Z]{11}\\d{2}",
773
+ "GE": "[\\dA-Z]{2}\\d{16}",
774
+ "DE": "\\d{18}",
775
+ "GI": "[A-Z]{4}[\\dA-Z]{15}",
776
+ "GR": "\\d{7}[\\dA-Z]{16}",
777
+ "GL": "\\d{14}",
778
+ "GT": "[\\dA-Z]{4}[\\dA-Z]{20}",
779
+ "HU": "\\d{24}",
780
+ "IS": "\\d{22}",
781
+ "IE": "[\\dA-Z]{4}\\d{14}",
782
+ "IL": "\\d{19}",
783
+ "IT": "[A-Z]\\d{10}[\\dA-Z]{12}",
784
+ "KZ": "\\d{3}[\\dA-Z]{13}",
785
+ "KW": "[A-Z]{4}[\\dA-Z]{22}",
786
+ "LV": "[A-Z]{4}[\\dA-Z]{13}",
787
+ "LB": "\\d{4}[\\dA-Z]{20}",
788
+ "LI": "\\d{5}[\\dA-Z]{12}",
789
+ "LT": "\\d{16}",
790
+ "LU": "\\d{3}[\\dA-Z]{13}",
791
+ "MK": "\\d{3}[\\dA-Z]{10}\\d{2}",
792
+ "MT": "[A-Z]{4}\\d{5}[\\dA-Z]{18}",
793
+ "MR": "\\d{23}",
794
+ "MU": "[A-Z]{4}\\d{19}[A-Z]{3}",
795
+ "MC": "\\d{10}[\\dA-Z]{11}\\d{2}",
796
+ "MD": "[\\dA-Z]{2}\\d{18}",
797
+ "ME": "\\d{18}",
798
+ "NL": "[A-Z]{4}\\d{10}",
799
+ "NO": "\\d{11}",
800
+ "PK": "[\\dA-Z]{4}\\d{16}",
801
+ "PS": "[\\dA-Z]{4}\\d{21}",
802
+ "PL": "\\d{24}",
803
+ "PT": "\\d{21}",
804
+ "RO": "[A-Z]{4}[\\dA-Z]{16}",
805
+ "SM": "[A-Z]\\d{10}[\\dA-Z]{12}",
806
+ "SA": "\\d{2}[\\dA-Z]{18}",
807
+ "RS": "\\d{18}",
808
+ "SK": "\\d{20}",
809
+ "SI": "\\d{15}",
810
+ "ES": "\\d{20}",
811
+ "SE": "\\d{20}",
812
+ "CH": "\\d{5}[\\dA-Z]{12}",
813
+ "TN": "\\d{20}",
814
+ "TR": "\\d{5}[\\dA-Z]{17}",
815
+ "AE": "\\d{3}\\d{16}",
816
+ "GB": "[A-Z]{4}\\d{14}",
817
+ "VG": "[\\dA-Z]{4}\\d{16}"
818
+ };
819
+
820
+ bbanpattern = bbancountrypatterns[ countrycode ];
821
+
822
+ // As new countries will start using IBAN in the
823
+ // future, we only check if the countrycode is known.
824
+ // This prevents false negatives, while almost all
825
+ // false positives introduced by this, will be caught
826
+ // by the checksum validation below anyway.
827
+ // Strict checking should return FALSE for unknown
828
+ // countries.
829
+ if ( typeof bbanpattern !== "undefined" ) {
830
+ ibanregexp = new RegExp( "^[A-Z]{2}\\d{2}" + bbanpattern + "$", "" );
831
+ if ( !( ibanregexp.test( iban ) ) ) {
832
+ return false; // Invalid country specific format
833
+ }
834
+ }
835
+
836
+ // Now check the checksum, first convert to digits
837
+ ibancheck = iban.substring( 4, iban.length ) + iban.substring( 0, 4 );
838
+ for ( i = 0; i < ibancheck.length; i++ ) {
839
+ charAt = ibancheck.charAt( i );
840
+ if ( charAt !== "0" ) {
841
+ leadingZeroes = false;
842
+ }
843
+ if ( !leadingZeroes ) {
844
+ ibancheckdigits += "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf( charAt );
845
+ }
846
+ }
847
+
848
+ // Calculate the result of: ibancheckdigits % 97
849
+ for ( p = 0; p < ibancheckdigits.length; p++ ) {
850
+ cChar = ibancheckdigits.charAt( p );
851
+ cOperator = "" + cRest + "" + cChar;
852
+ cRest = cOperator % 97;
853
+ }
854
+ return cRest === 1;
855
+ }, "Please specify a valid IBAN." );
856
+
857
+ $.validator.addMethod( "integer", function( value, element ) {
858
+ return this.optional( element ) || /^-?\d+$/.test( value );
859
+ }, "A positive or negative non-decimal number please." );
860
+
861
+ $.validator.addMethod( "ipv4", function( value, element ) {
862
+ return this.optional( element ) || /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test( value );
863
+ }, "Please enter a valid IP v4 address." );
864
+
865
+ $.validator.addMethod( "ipv6", function( value, element ) {
866
+ return this.optional( element ) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test( value );
867
+ }, "Please enter a valid IP v6 address." );
868
+
869
+ $.validator.addMethod( "lessThan", function( value, element, param ) {
870
+ var target = $( param );
871
+
872
+ if ( this.settings.onfocusout && target.not( ".validate-lessThan-blur" ).length ) {
873
+ target.addClass( "validate-lessThan-blur" ).on( "blur.validate-lessThan", function() {
874
+ $( element ).valid();
875
+ } );
876
+ }
877
+
878
+ return value < target.val();
879
+ }, "Please enter a lesser value." );
880
+
881
+ $.validator.addMethod( "lessThanEqual", function( value, element, param ) {
882
+ var target = $( param );
883
+
884
+ if ( this.settings.onfocusout && target.not( ".validate-lessThanEqual-blur" ).length ) {
885
+ target.addClass( "validate-lessThanEqual-blur" ).on( "blur.validate-lessThanEqual", function() {
886
+ $( element ).valid();
887
+ } );
888
+ }
889
+
890
+ return value <= target.val();
891
+ }, "Please enter a lesser value." );
892
+
893
+ $.validator.addMethod( "lettersonly", function( value, element ) {
894
+ return this.optional( element ) || /^[a-z]+$/i.test( value );
895
+ }, "Letters only please." );
896
+
897
+ $.validator.addMethod( "letterswithbasicpunc", function( value, element ) {
898
+ return this.optional( element ) || /^[a-z\-.,()'"\s]+$/i.test( value );
899
+ }, "Letters or punctuation only please." );
900
+
901
+ // Limit the number of files in a FileList.
902
+ $.validator.addMethod( "maxfiles", function( value, element, param ) {
903
+ if ( this.optional( element ) ) {
904
+ return true;
905
+ }
906
+
907
+ if ( $( element ).attr( "type" ) === "file" ) {
908
+ if ( element.files && element.files.length > param ) {
909
+ return false;
910
+ }
911
  }
912
+
913
+ return true;
914
+ }, $.validator.format( "Please select no more than {0} files." ) );
915
+
916
+ // Limit the size of each individual file in a FileList.
917
+ $.validator.addMethod( "maxsize", function( value, element, param ) {
918
+ if ( this.optional( element ) ) {
919
+ return true;
920
  }
921
+
922
+ if ( $( element ).attr( "type" ) === "file" ) {
923
+ if ( element.files && element.files.length ) {
924
+ for ( var i = 0; i < element.files.length; i++ ) {
925
+ if ( element.files[ i ].size > param ) {
926
+ return false;
927
+ }
928
+ }
929
+ }
930
  }
931
+
932
+ return true;
933
+ }, $.validator.format( "File size must not exceed {0} bytes each." ) );
934
+
935
+ // Limit the size of all files in a FileList.
936
+ $.validator.addMethod( "maxsizetotal", function( value, element, param ) {
937
+ if ( this.optional( element ) ) {
938
+ return true;
939
  }
940
+
941
+ if ( $( element ).attr( "type" ) === "file" ) {
942
+ if ( element.files && element.files.length ) {
943
+ var totalSize = 0;
944
+
945
+ for ( var i = 0; i < element.files.length; i++ ) {
946
+ totalSize += element.files[ i ].size;
947
+ if ( totalSize > param ) {
948
+ return false;
949
+ }
950
+ }
951
+ }
952
  }
953
+
954
+ return true;
955
+ }, $.validator.format( "Total size of all files must not exceed {0} bytes." ) );
956
+
957
+
958
+ $.validator.addMethod( "mobileNL", function( value, element ) {
959
+ return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test( value );
960
+ }, "Please specify a valid mobile number." );
961
+
962
+ $.validator.addMethod( "mobileRU", function( phone_number, element ) {
963
+ var ruPhone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
964
+ return this.optional( element ) || ruPhone_number.length > 9 && /^((\+7|7|8)+([0-9]){10})$/.test( ruPhone_number );
965
+ }, "Please specify a valid mobile number." );
966
+
967
+ /* For UK phone functions, do the following server side processing:
968
+ * Compare original input with this RegEx pattern:
969
+ * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
970
+ * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'
971
+ * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
972
+ * A number of very detailed GB telephone number RegEx patterns can also be found at:
973
+ * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
974
+ */
975
+ $.validator.addMethod( "mobileUK", function( phone_number, element ) {
976
+ phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
977
+ return this.optional( element ) || phone_number.length > 9 &&
978
+ phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/ );
979
+ }, "Please specify a valid mobile number." );
980
+
981
+ $.validator.addMethod( "netmask", function( value, element ) {
982
+ return this.optional( element ) || /^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)/i.test( value );
983
+ }, "Please enter a valid netmask." );
984
+
985
+ /*
986
+ * The NIE (Número de Identificación de Extranjero) is a Spanish tax identification number assigned by the Spanish
987
+ * authorities to any foreigner.
988
+ *
989
+ * The NIE is the equivalent of a Spaniards Número de Identificación Fiscal (NIF) which serves as a fiscal
990
+ * identification number. The CIF number (Certificado de Identificación Fiscal) is equivalent to the NIF, but applies to
991
+ * companies rather than individuals. The NIE consists of an 'X' or 'Y' followed by 7 or 8 digits then another letter.
992
+ */
993
+ $.validator.addMethod( "nieES", function( value, element ) {
994
+ "use strict";
995
+
996
+ if ( this.optional( element ) ) {
997
+ return true;
998
+ }
999
+
1000
+ var nieRegEx = new RegExp( /^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi );
1001
+ var validChars = "TRWAGMYFPDXBNJZSQVHLCKET",
1002
+ letter = value.substr( value.length - 1 ).toUpperCase(),
1003
+ number;
1004
+
1005
+ value = value.toString().toUpperCase();
1006
+
1007
+ // Quick format test
1008
+ if ( value.length > 10 || value.length < 9 || !nieRegEx.test( value ) ) {
1009
+ return false;
1010
+ }
1011
+
1012
+ // X means same number
1013
+ // Y means number + 10000000
1014
+ // Z means number + 20000000
1015
+ value = value.replace( /^[X]/, "0" )
1016
+ .replace( /^[Y]/, "1" )
1017
+ .replace( /^[Z]/, "2" );
1018
+
1019
+ number = value.length === 9 ? value.substr( 0, 8 ) : value.substr( 0, 9 );
1020
+
1021
+ return validChars.charAt( parseInt( number, 10 ) % 23 ) === letter;
1022
+
1023
+ }, "Please specify a valid NIE number." );
1024
+
1025
+ /*
1026
+ * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals
1027
+ */
1028
+ $.validator.addMethod( "nifES", function( value, element ) {
1029
+ "use strict";
1030
+
1031
+ if ( this.optional( element ) ) {
1032
+ return true;
1033
+ }
1034
+
1035
+ value = value.toUpperCase();
1036
+
1037
+ // Basic format test
1038
+ if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) {
1039
+ return false;
1040
+ }
1041
+
1042
+ // Test NIF
1043
+ if ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) {
1044
+ return ( "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) );
1045
+ }
1046
+
1047
+ // Test specials NIF (starts with K, L or M)
1048
+ if ( /^[KLM]{1}/.test( value ) ) {
1049
+ return ( value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 1 ) % 23 ) );
1050
+ }
1051
+
1052
+ return false;
1053
+
1054
+ }, "Please specify a valid NIF number." );
1055
+
1056
+ /*
1057
+ * Numer identyfikacji podatkowej ( NIP ) is the way tax identification used in Poland for companies
1058
+ */
1059
+ $.validator.addMethod( "nipPL", function( value ) {
1060
+ "use strict";
1061
+
1062
+ value = value.replace( /[^0-9]/g, "" );
1063
+
1064
+ if ( value.length !== 10 ) {
1065
+ return false;
1066
+ }
1067
+
1068
+ var arrSteps = [ 6, 5, 7, 2, 3, 4, 5, 6, 7 ];
1069
+ var intSum = 0;
1070
+ for ( var i = 0; i < 9; i++ ) {
1071
+ intSum += arrSteps[ i ] * value[ i ];
1072
+ }
1073
+ var int2 = intSum % 11;
1074
+ var intControlNr = ( int2 === 10 ) ? 0 : int2;
1075
+
1076
+ return ( intControlNr === parseInt( value[ 9 ], 10 ) );
1077
+ }, "Please specify a valid NIP number." );
1078
+
1079
+ /**
1080
+ * Created for project jquery-validation.
1081
+ * @Description Brazillian PIS or NIS number (Número de Identificação Social Pis ou Pasep) is the equivalent of a
1082
+ * Brazilian tax registration number NIS of PIS numbers have 11 digits in total: 10 numbers followed by 1 check numbers
1083
+ * that are being used for validation.
1084
+ * @copyright (c) 21/08/2018 13:14, Cleiton da Silva Mendonça
1085
+ * @author Cleiton da Silva Mendonça <cleiton.mendonca@gmail.com>
1086
+ * @link http://gitlab.com/csmendonca Gitlab of Cleiton da Silva Mendonça
1087
+ * @link http://github.com/csmendonca Github of Cleiton da Silva Mendonça
1088
+ */
1089
+ $.validator.addMethod( "nisBR", function( value ) {
1090
+ var number;
1091
+ var cn;
1092
+ var sum = 0;
1093
+ var dv;
1094
+ var count;
1095
+ var multiplier;
1096
+
1097
+ // Removing special characters from value
1098
+ value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" );
1099
+
1100
+ // Checking value to have 11 digits only
1101
+ if ( value.length !== 11 ) {
1102
+ return false;
1103
+ }
1104
+
1105
+ //Get check number of value
1106
+ cn = parseInt( value.substring( 10, 11 ), 10 );
1107
+
1108
+ //Get number with 10 digits of the value
1109
+ number = parseInt( value.substring( 0, 10 ), 10 );
1110
+
1111
+ for ( count = 2; count < 12; count++ ) {
1112
+ multiplier = count;
1113
+ if ( count === 10 ) {
1114
+ multiplier = 2;
1115
+ }
1116
+ if ( count === 11 ) {
1117
+ multiplier = 3;
1118
+ }
1119
+ sum += ( ( number % 10 ) * multiplier );
1120
+ number = parseInt( number / 10, 10 );
1121
+ }
1122
+ dv = ( sum % 11 );
1123
+
1124
+ if ( dv > 1 ) {
1125
+ dv = ( 11 - dv );
1126
+ } else {
1127
+ dv = 0;
1128
+ }
1129
+
1130
+ if ( cn === dv ) {
1131
+ return true;
1132
+ } else {
1133
+ return false;
1134
+ }
1135
+ }, "Please specify a valid NIS/PIS number." );
1136
+
1137
+ $.validator.addMethod( "notEqualTo", function( value, element, param ) {
1138
+ return this.optional( element ) || !$.validator.methods.equalTo.call( this, value, element, param );
1139
+ }, "Please enter a different value, values must not be the same." );
1140
+
1141
+ $.validator.addMethod( "nowhitespace", function( value, element ) {
1142
+ return this.optional( element ) || /^\S+$/i.test( value );
1143
+ }, "No white space please." );
1144
+
1145
+ /**
1146
+ * Return true if the field value matches the given format RegExp
1147
+ *
1148
+ * @example $.validator.methods.pattern("AR1004",element,/^AR\d{4}$/)
1149
+ * @result true
1150
+ *
1151
+ * @example $.validator.methods.pattern("BR1004",element,/^AR\d{4}$/)
1152
+ * @result false
1153
+ *
1154
+ * @name $.validator.methods.pattern
1155
+ * @type Boolean
1156
+ * @cat Plugins/Validate/Methods
1157
+ */
1158
+ $.validator.addMethod( "pattern", function( value, element, param ) {
1159
+ if ( this.optional( element ) ) {
1160
+ return true;
1161
+ }
1162
+ if ( typeof param === "string" ) {
1163
+ param = new RegExp( "^(?:" + param + ")$" );
1164
+ }
1165
+ return param.test( value );
1166
+ }, "Invalid format." );
1167
+
1168
+ /**
1169
+ * Dutch phone numbers have 10 digits (or 11 and start with +31).
1170
+ */
1171
+ $.validator.addMethod( "phoneNL", function( value, element ) {
1172
+ return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test( value );
1173
+ }, "Please specify a valid phone number." );
1174
+
1175
+ /**
1176
+ * Polish telephone numbers have 9 digits.
1177
+ *
1178
+ * Mobile phone numbers starts with following digits:
1179
+ * 45, 50, 51, 53, 57, 60, 66, 69, 72, 73, 78, 79, 88.
1180
+ *
1181
+ * Fixed-line numbers starts with area codes:
1182
+ * 12, 13, 14, 15, 16, 17, 18, 22, 23, 24, 25, 29, 32, 33,
1183
+ * 34, 41, 42, 43, 44, 46, 48, 52, 54, 55, 56, 58, 59, 61,
1184
+ * 62, 63, 65, 67, 68, 71, 74, 75, 76, 77, 81, 82, 83, 84,
1185
+ * 85, 86, 87, 89, 91, 94, 95.
1186
+ *
1187
+ * Ministry of National Defence numbers and VoIP numbers starts with 26 and 39.
1188
+ *
1189
+ * Excludes intelligent networks (premium rate, shared cost, free phone numbers).
1190
+ *
1191
+ * Poland National Numbering Plan http://www.itu.int/oth/T02020000A8/en
1192
+ */
1193
+ $.validator.addMethod( "phonePL", function( phone_number, element ) {
1194
+ phone_number = phone_number.replace( /\s+/g, "" );
1195
+ var regexp = /^(?:(?:(?:\+|00)?48)|(?:\(\+?48\)))?(?:1[2-8]|2[2-69]|3[2-49]|4[1-68]|5[0-9]|6[0-35-9]|[7-8][1-9]|9[145])\d{7}$/;
1196
+ return this.optional( element ) || regexp.test( phone_number );
1197
+ }, "Please specify a valid phone number." );
1198
+
1199
+ /* For UK phone functions, do the following server side processing:
1200
+ * Compare original input with this RegEx pattern:
1201
+ * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
1202
+ * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'
1203
+ * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
1204
+ * A number of very detailed GB telephone number RegEx patterns can also be found at:
1205
+ * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
1206
+ */
1207
+
1208
+ // Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers
1209
+ $.validator.addMethod( "phonesUK", function( phone_number, element ) {
1210
+ phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
1211
+ return this.optional( element ) || phone_number.length > 9 &&
1212
+ phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/ );
1213
+ }, "Please specify a valid uk phone number." );
1214
+
1215
+ /* For UK phone functions, do the following server side processing:
1216
+ * Compare original input with this RegEx pattern:
1217
+ * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
1218
+ * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'
1219
+ * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
1220
+ * A number of very detailed GB telephone number RegEx patterns can also be found at:
1221
+ * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
1222
+ */
1223
+ $.validator.addMethod( "phoneUK", function( phone_number, element ) {
1224
+ phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
1225
+ return this.optional( element ) || phone_number.length > 9 &&
1226
+ phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/ );
1227
+ }, "Please specify a valid phone number." );
1228
+
1229
+ /**
1230
+ * Matches US phone number format
1231
+ *
1232
+ * where the area code may not start with 1 and the prefix may not start with 1
1233
+ * allows '-' or ' ' as a separator and allows parens around area code
1234
+ * some people may want to put a '1' in front of their number
1235
+ *
1236
+ * 1(212)-999-2345 or
1237
+ * 212 999 2344 or
1238
+ * 212-999-0983
1239
+ *
1240
+ * but not
1241
+ * 111-123-5434
1242
+ * and not
1243
+ * 212 123 4567
1244
+ */
1245
+ $.validator.addMethod( "phoneUS", function( phone_number, element ) {
1246
+ phone_number = phone_number.replace( /\s+/g, "" );
1247
+ return this.optional( element ) || phone_number.length > 9 &&
1248
+ phone_number.match( /^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]\d{2}-?\d{4}$/ );
1249
+ }, "Please specify a valid phone number." );
1250
+
1251
+ /*
1252
+ * Valida CEPs do brasileiros:
1253
+ *
1254
+ * Formatos aceitos:
1255
+ * 99999-999
1256
+ * 99.999-999
1257
+ * 99999999
1258
+ */
1259
+ $.validator.addMethod( "postalcodeBR", function( cep_value, element ) {
1260
+ return this.optional( element ) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value );
1261
+ }, "Informe um CEP válido." );
1262
+
1263
+ /**
1264
+ * Matches a valid Canadian Postal Code
1265
+ *
1266
+ * @example jQuery.validator.methods.postalCodeCA( "H0H 0H0", element )
1267
+ * @result true
1268
+ *
1269
+ * @example jQuery.validator.methods.postalCodeCA( "H0H0H0", element )
1270
+ * @result false
1271
+ *
1272
+ * @name jQuery.validator.methods.postalCodeCA
1273
+ * @type Boolean
1274
+ * @cat Plugins/Validate/Methods
1275
+ */
1276
+ $.validator.addMethod( "postalCodeCA", function( value, element ) {
1277
+ return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test( value );
1278
+ }, "Please specify a valid postal code." );
1279
+
1280
+ /* Matches Italian postcode (CAP) */
1281
+ $.validator.addMethod( "postalcodeIT", function( value, element ) {
1282
+ return this.optional( element ) || /^\d{5}$/.test( value );
1283
+ }, "Please specify a valid postal code." );
1284
+
1285
+ $.validator.addMethod( "postalcodeNL", function( value, element ) {
1286
+ return this.optional( element ) || /^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test( value );
1287
+ }, "Please specify a valid postal code." );
1288
+
1289
+ // Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK)
1290
+ $.validator.addMethod( "postcodeUK", function( value, element ) {
1291
+ return this.optional( element ) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test( value );
1292
+ }, "Please specify a valid UK postcode." );
1293
+
1294
+ /*
1295
+ * Lets you say "at least X inputs that match selector Y must be filled."
1296
+ *
1297
+ * The end result is that neither of these inputs:
1298
+ *
1299
+ * <input class="productinfo" name="partnumber">
1300
+ * <input class="productinfo" name="description">
1301
+ *
1302
+ * ...will validate unless at least one of them is filled.
1303
+ *
1304
+ * partnumber: {require_from_group: [1,".productinfo"]},
1305
+ * description: {require_from_group: [1,".productinfo"]}
1306
+ *
1307
+ * options[0]: number of fields that must be filled in the group
1308
+ * options[1]: CSS selector that defines the group of conditionally required fields
1309
+ */
1310
+ $.validator.addMethod( "require_from_group", function( value, element, options ) {
1311
+ var $fields = $( options[ 1 ], element.form ),
1312
+ $fieldsFirst = $fields.eq( 0 ),
1313
+ validator = $fieldsFirst.data( "valid_req_grp" ) ? $fieldsFirst.data( "valid_req_grp" ) : $.extend( {}, this ),
1314
+ isValid = $fields.filter( function() {
1315
+ return validator.elementValue( this );
1316
+ } ).length >= options[ 0 ];
1317
+
1318
+ // Store the cloned validator for future validation
1319
+ $fieldsFirst.data( "valid_req_grp", validator );
1320
+
1321
+ // If element isn't being validated, run each require_from_group field's validation rules
1322
+ if ( !$( element ).data( "being_validated" ) ) {
1323
+ $fields.data( "being_validated", true );
1324
+ $fields.each( function() {
1325
+ validator.element( this );
1326
+ } );
1327
+ $fields.data( "being_validated", false );
1328
+ }
1329
+ return isValid;
1330
+ }, $.validator.format( "Please fill at least {0} of these fields." ) );
1331
+
1332
+ /*
1333
+ * Lets you say "either at least X inputs that match selector Y must be filled,
1334
+ * OR they must all be skipped (left blank)."
1335
+ *
1336
+ * The end result, is that none of these inputs:
1337
+ *
1338
+ * <input class="productinfo" name="partnumber">
1339
+ * <input class="productinfo" name="description">
1340
+ * <input class="productinfo" name="color">
1341
+ *
1342
+ * ...will validate unless either at least two of them are filled,
1343
+ * OR none of them are.
1344
+ *
1345
+ * partnumber: {skip_or_fill_minimum: [2,".productinfo"]},
1346
+ * description: {skip_or_fill_minimum: [2,".productinfo"]},
1347
+ * color: {skip_or_fill_minimum: [2,".productinfo"]}
1348
+ *
1349
+ * options[0]: number of fields that must be filled in the group
1350
+ * options[1]: CSS selector that defines the group of conditionally required fields
1351
+ *
1352
+ */
1353
+ $.validator.addMethod( "skip_or_fill_minimum", function( value, element, options ) {
1354
+ var $fields = $( options[ 1 ], element.form ),
1355
+ $fieldsFirst = $fields.eq( 0 ),
1356
+ validator = $fieldsFirst.data( "valid_skip" ) ? $fieldsFirst.data( "valid_skip" ) : $.extend( {}, this ),
1357
+ numberFilled = $fields.filter( function() {
1358
+ return validator.elementValue( this );
1359
+ } ).length,
1360
+ isValid = numberFilled === 0 || numberFilled >= options[ 0 ];
1361
+
1362
+ // Store the cloned validator for future validation
1363
+ $fieldsFirst.data( "valid_skip", validator );
1364
+
1365
+ // If element isn't being validated, run each skip_or_fill_minimum field's validation rules
1366
+ if ( !$( element ).data( "being_validated" ) ) {
1367
+ $fields.data( "being_validated", true );
1368
+ $fields.each( function() {
1369
+ validator.element( this );
1370
+ } );
1371
+ $fields.data( "being_validated", false );
1372
+ }
1373
+ return isValid;
1374
+ }, $.validator.format( "Please either skip these fields or fill at least {0} of them." ) );
1375
+
1376
+ /* Validates US States and/or Territories by @jdforsythe
1377
+ * Can be case insensitive or require capitalization - default is case insensitive
1378
+ * Can include US Territories or not - default does not
1379
+ * Can include US Military postal abbreviations (AA, AE, AP) - default does not
1380
+ *
1381
+ * Note: "States" always includes DC (District of Colombia)
1382
+ *
1383
+ * Usage examples:
1384
+ *
1385
+ * This is the default - case insensitive, no territories, no military zones
1386
+ * stateInput: {
1387
+ * caseSensitive: false,
1388
+ * includeTerritories: false,
1389
+ * includeMilitary: false
1390
+ * }
1391
+ *
1392
+ * Only allow capital letters, no territories, no military zones
1393
+ * stateInput: {
1394
+ * caseSensitive: false
1395
+ * }
1396
+ *
1397
+ * Case insensitive, include territories but not military zones
1398
+ * stateInput: {
1399
+ * includeTerritories: true
1400
+ * }
1401
+ *
1402
+ * Only allow capital letters, include territories and military zones
1403
+ * stateInput: {
1404
+ * caseSensitive: true,
1405
+ * includeTerritories: true,
1406
+ * includeMilitary: true
1407
+ * }
1408
+ *
1409
+ */
1410
+ $.validator.addMethod( "stateUS", function( value, element, options ) {
1411
+ var isDefault = typeof options === "undefined",
1412
+ caseSensitive = ( isDefault || typeof options.caseSensitive === "undefined" ) ? false : options.caseSensitive,
1413
+ includeTerritories = ( isDefault || typeof options.includeTerritories === "undefined" ) ? false : options.includeTerritories,
1414
+ includeMilitary = ( isDefault || typeof options.includeMilitary === "undefined" ) ? false : options.includeMilitary,
1415
+ regex;
1416
+
1417
+ if ( !includeTerritories && !includeMilitary ) {
1418
+ regex = "^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$";
1419
+ } else if ( includeTerritories && includeMilitary ) {
1420
+ regex = "^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$";
1421
+ } else if ( includeTerritories ) {
1422
+ regex = "^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$";
1423
+ } else {
1424
+ regex = "^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$";
1425
+ }
1426
+
1427
+ regex = caseSensitive ? new RegExp( regex ) : new RegExp( regex, "i" );
1428
+ return this.optional( element ) || regex.test( value );
1429
+ }, "Please specify a valid state." );
1430
+
1431
+ // TODO check if value starts with <, otherwise don't try stripping anything
1432
+ $.validator.addMethod( "strippedminlength", function( value, element, param ) {
1433
+ return $( value ).text().length >= param;
1434
+ }, $.validator.format( "Please enter at least {0} characters." ) );
1435
+
1436
+ $.validator.addMethod( "time", function( value, element ) {
1437
+ return this.optional( element ) || /^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test( value );
1438
+ }, "Please enter a valid time, between 00:00 and 23:59." );
1439
+
1440
+ $.validator.addMethod( "time12h", function( value, element ) {
1441
+ return this.optional( element ) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test( value );
1442
+ }, "Please enter a valid time in 12-hour am/pm format." );
1443
+
1444
+ // Same as url, but TLD is optional
1445
+ $.validator.addMethod( "url2", function( value, element ) {
1446
+ return this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?)|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff])|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62}\.)))(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( value );
1447
+ }, $.validator.messages.url );
1448
+
1449
+ /**
1450
+ * Return true, if the value is a valid vehicle identification number (VIN).
1451
+ *
1452
+ * Works with all kind of text inputs.
1453
+ *
1454
+ * @example <input type="text" size="20" name="VehicleID" class="{required:true,vinUS:true}" />
1455
+ * @desc Declares a required input element whose value must be a valid vehicle identification number.
1456
+ *
1457
+ * @name $.validator.methods.vinUS
1458
+ * @type Boolean
1459
+ * @cat Plugins/Validate/Methods
1460
+ */
1461
+ $.validator.addMethod( "vinUS", function( v ) {
1462
+ if ( v.length !== 17 ) {
1463
+ return false;
1464
+ }
1465
+
1466
+ var LL = [ "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ],
1467
+ VL = [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 9, 2, 3, 4, 5, 6, 7, 8, 9 ],
1468
+ FL = [ 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2 ],
1469
+ rs = 0,
1470
+ i, n, d, f, cd, cdv;
1471
+
1472
+ for ( i = 0; i < 17; i++ ) {
1473
+ f = FL[ i ];
1474
+ d = v.slice( i, i + 1 );
1475
+ if ( i === 8 ) {
1476
+ cdv = d;
1477
+ }
1478
+ if ( !isNaN( d ) ) {
1479
+ d *= f;
1480
+ } else {
1481
+ for ( n = 0; n < LL.length; n++ ) {
1482
+ if ( d.toUpperCase() === LL[ n ] ) {
1483
+ d = VL[ n ];
1484
+ d *= f;
1485
+ if ( isNaN( cdv ) && n === 8 ) {
1486
+ cdv = LL[ n ];
1487
+ }
1488
+ break;
1489
+ }
1490
+ }
1491
+ }
1492
+ rs += d;
1493
  }
1494
+ cd = rs % 11;
1495
+ if ( cd === 10 ) {
1496
+ cd = "X";
1497
  }
1498
+ if ( cd === cdv ) {
1499
  return true;
1500
  }
1501
  return false;
1502
+ }, "The specified vehicle identification number (VIN) is invalid." );
1503
 
1504
+ $.validator.addMethod( "zipcodeUS", function( value, element ) {
1505
+ return this.optional( element ) || /^\d{5}(-\d{4})?$/.test( value );
1506
+ }, "The specified US ZIP Code is invalid." );
1507
 
1508
+ $.validator.addMethod( "ziprange", function( value, element ) {
1509
+ return this.optional( element ) || /^90[2-5]\d\{2\}-\d{4}$/.test( value );
1510
+ }, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx." );
1511
+ return $;
1512
+ }));
js/jquery.validate.js CHANGED
@@ -1,1188 +1,1661 @@
1
- /**
2
- * jQuery Validation Plugin 1.9.0
3
- *
4
- * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
5
- * http://docs.jquery.com/Plugins/Validation
6
- *
7
- * Copyright (c) 2006 - 2011 Jörn Zaefferer
8
- *
9
- * Dual licensed under the MIT and GPL licenses:
10
- * http://www.opensource.org/licenses/mit-license.php
11
- * http://www.gnu.org/licenses/gpl.html
12
- */
13
-
14
- (function($) {
15
-
16
- $.extend($.fn, {
17
- // http://docs.jquery.com/Plugins/Validation/validate
18
- validate: function( options ) {
19
-
20
- // if nothing is selected, return nothing; can't chain anyway
21
- if (!this.length) {
22
- options && options.debug && window.console && console.warn( "nothing selected, can't validate, returning nothing" );
23
- return;
24
- }
25
-
26
- // check if a validator for this form was already created
27
- var validator = $.data(this[0], 'validator');
28
- if ( validator ) {
29
- return validator;
30
- }
31
-
32
- // Add novalidate tag if HTML5.
33
- this.attr('novalidate', 'novalidate');
34
-
35
- validator = new $.validator( options, this[0] );
36
- $.data(this[0], 'validator', validator);
37
-
38
- if ( validator.settings.onsubmit ) {
39
-
40
- var inputsAndButtons = this.find("input, button");
41
-
42
- // allow suppresing validation by adding a cancel class to the submit button
43
- inputsAndButtons.filter(".cancel").click(function () {
44
- validator.cancelSubmit = true;
45
- });
46
-
47
- // when a submitHandler is used, capture the submitting button
48
- if (validator.settings.submitHandler) {
49
- inputsAndButtons.filter(":submit").click(function () {
50
- validator.submitButton = this;
51
- });
52
- }
53
-
54
- // validate the form on submit
55
- this.submit( function( event ) {
56
- if ( validator.settings.debug )
57
- // prevent form submit to be able to see console output
58
- event.preventDefault();
59
-
60
- function handle() {
61
- if ( validator.settings.submitHandler ) {
62
- if (validator.submitButton) {
63
- // insert a hidden input as a replacement for the missing submit button
64
- var hidden = $("<input type='hidden'/>").attr("name", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);
65
- }
66
- validator.settings.submitHandler.call( validator, validator.currentForm );
67
- if (validator.submitButton) {
68
- // and clean up afterwards; thanks to no-block-scope, hidden can be referenced
69
- hidden.remove();
70
- }
71
- return false;
72
- }
73
- return true;
74
- }
75
-
76
- // prevent submit for invalid forms or custom submit handlers
77
- if ( validator.cancelSubmit ) {
78
- validator.cancelSubmit = false;
79
- return handle();
80
- }
81
- if ( validator.form() ) {
82
- if ( validator.pendingRequest ) {
83
- validator.formSubmitted = true;
84
- return false;
85
- }
86
- return handle();
87
- } else {
88
- validator.focusInvalid();
89
- return false;
90
- }
91
- });
92
- }
93
-
94
- return validator;
95
- },
96
- // http://docs.jquery.com/Plugins/Validation/valid
97
- valid: function() {
98
- if ( $(this[0]).is('form')) {
99
- return this.validate().form();
100
- } else {
101
- var valid = true;
102
- var validator = $(this[0].form).validate();
103
- this.each(function() {
104
- valid &= validator.element(this);
105
- });
106
- return valid;
107
- }
108
- },
109
- // attributes: space seperated list of attributes to retrieve and remove
110
- removeAttrs: function(attributes) {
111
- var result = {},
112
- $element = this;
113
- $.each(attributes.split(/\s/), function(index, value) {
114
- result[value] = $element.attr(value);
115
- $element.removeAttr(value);
116
- });
117
- return result;
118
- },
119
- // http://docs.jquery.com/Plugins/Validation/rules
120
- rules: function(command, argument) {
121
- var element = this[0];
122
-
123
- if (command) {
124
- var settings = $.data(element.form, 'validator').settings;
125
- var staticRules = settings.rules;
126
- var existingRules = $.validator.staticRules(element);
127
- switch(command) {
128
- case "add":
129
- $.extend(existingRules, $.validator.normalizeRule(argument));
130
- staticRules[element.name] = existingRules;
131
- if (argument.messages)
132
- settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );
133
- break;
134
- case "remove":
135
- if (!argument) {
136
- delete staticRules[element.name];
137
- return existingRules;
138
- }
139
- var filtered = {};
140
- $.each(argument.split(/\s/), function(index, method) {
141
- filtered[method] = existingRules[method];
142
- delete existingRules[method];
143
- });
144
- return filtered;
145
- }
146
- }
147
-
148
- var data = $.validator.normalizeRules(
149
- $.extend(
150
- {},
151
- $.validator.metadataRules(element),
152
- $.validator.classRules(element),
153
- $.validator.attributeRules(element),
154
- $.validator.staticRules(element)
155
- ), element);
156
-
157
- // make sure required is at front
158
- if (data.required) {
159
- var param = data.required;
160
- delete data.required;
161
- data = $.extend({required: param}, data);
162
- }
163
-
164
- return data;
165
- }
166
- });
167
-
168
- // Custom selectors
169
- $.extend($.expr[":"], {
170
- // http://docs.jquery.com/Plugins/Validation/blank
171
- blank: function(a) {return !$.trim("" + a.value);},
172
- // http://docs.jquery.com/Plugins/Validation/filled
173
- filled: function(a) {return !!$.trim("" + a.value);},
174
- // http://docs.jquery.com/Plugins/Validation/unchecked
175
- unchecked: function(a) {return !a.checked;}
176
- });
177
-
178
- // constructor for validator
179
- $.validator = function( options, form ) {
180
- this.settings = $.extend( true, {}, $.validator.defaults, options );
181
- this.currentForm = form;
182
- this.init();
183
- };
184
-
185
- $.validator.format = function(source, params) {
186
- if ( arguments.length == 1 )
187
- return function() {
188
- var args = $.makeArray(arguments);
189
- args.unshift(source);
190
- return $.validator.format.apply( this, args );
191
- };
192
- if ( arguments.length > 2 && params.constructor != Array ) {
193
- params = $.makeArray(arguments).slice(1);
194
- }
195
- if ( params.constructor != Array ) {
196
- params = [ params ];
197
- }
198
- $.each(params, function(i, n) {
199
- source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
200
- });
201
- return source;
202
- };
203
-
204
- $.extend($.validator, {
205
-
206
- defaults: {
207
- messages: {},
208
- groups: {},
209
- rules: {},
210
- errorClass: "error",
211
- validClass: "valid",
212
- errorElement: "label",
213
- focusInvalid: true,
214
- errorContainer: $( [] ),
215
- errorLabelContainer: $( [] ),
216
- onsubmit: true,
217
- ignore: ":hidden",
218
- ignoreTitle: false,
219
- onfocusin: function(element, event) {
220
- this.lastActive = element;
221
-
222
- // hide error label and remove error class on focus if enabled
223
- if ( this.settings.focusCleanup && !this.blockFocusCleanup ) {
224
- this.settings.unhighlight && this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
225
- this.addWrapper(this.errorsFor(element)).hide();
226
- }
227
- },
228
- onfocusout: function(element, event) {
229
- if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {
230
- this.element(element);
231
- }
232
- },
233
- onkeyup: function(element, event) {
234
- if ( element.name in this.submitted || element == this.lastElement ) {
235
- this.element(element);
236
- }
237
- },
238
- onclick: function(element, event) {
239
- // click on selects, radiobuttons and checkboxes
240
- if ( element.name in this.submitted )
241
- this.element(element);
242
- // or option elements, check parent select in that case
243
- else if (element.parentNode.name in this.submitted)
244
- this.element(element.parentNode);
245
- },
246
- highlight: function(element, errorClass, validClass) {
247
- if (element.type === 'radio') {
248
- this.findByName(element.name).addClass(errorClass).removeClass(validClass);
249
- } else {
250
- $(element).addClass(errorClass).removeClass(validClass);
251
- }
252
- },
253
- unhighlight: function(element, errorClass, validClass) {
254
- if (element.type === 'radio') {
255
- this.findByName(element.name).removeClass(errorClass).addClass(validClass);
256
- } else {
257
- $(element).removeClass(errorClass).addClass(validClass);
258
- }
259
- }
260
- },
261
-
262
- // http://docs.jquery.com/Plugins/Validation/Validator/setDefaults
263
- setDefaults: function(settings) {
264
- $.extend( $.validator.defaults, settings );
265
- },
266
-
267
- messages: {
268
- required: "This field is required.",
269
- remote: "Please fix this field.",
270
- email: "Please enter a valid email address.",
271
- url: "Please enter a valid URL.",
272
- date: "Please enter a valid date.",
273
- dateISO: "Please enter a valid date (ISO).",
274
- number: "Please enter a valid number.",
275
- digits: "Please enter only digits.",
276
- creditcard: "Please enter a valid credit card number.",
277
- equalTo: "Please enter the same value again.",
278
- accept: "Please enter a value with a valid extension.",
279
- maxlength: $.validator.format("Please enter no more than {0} characters."),
280
- minlength: $.validator.format("Please enter at least {0} characters."),
281
- rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
282
- range: $.validator.format("Please enter a value between {0} and {1}."),
283
- max: $.validator.format("Please enter a value less than or equal to {0}."),
284
- min: $.validator.format("Please enter a value greater than or equal to {0}.")
285
- },
286
-
287
- autoCreateRanges: false,
288
-
289
- prototype: {
290
-
291
- init: function() {
292
- this.labelContainer = $(this.settings.errorLabelContainer);
293
- this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);
294
- this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );
295
- this.submitted = {};
296
- this.valueCache = {};
297
- this.pendingRequest = 0;
298
- this.pending = {};
299
- this.invalid = {};
300
- this.reset();
301
-
302
- var groups = (this.groups = {});
303
- $.each(this.settings.groups, function(key, value) {
304
- $.each(value.split(/\s/), function(index, name) {
305
- groups[name] = key;
306
- });
307
- });
308
- var rules = this.settings.rules;
309
- $.each(rules, function(key, value) {
310
- rules[key] = $.validator.normalizeRule(value);
311
- });
312
-
313
- function delegate(event) {
314
- var validator = $.data(this[0].form, "validator"),
315
- eventType = "on" + event.type.replace(/^validate/, "");
316
- validator.settings[eventType] && validator.settings[eventType].call(validator, this[0], event);
317
- }
318
- $(this.currentForm)
319
- .validateDelegate("[type='text'], [type='password'], [type='file'], select, textarea, " +
320
- "[type='number'], [type='search'] ,[type='tel'], [type='url'], " +
321
- "[type='email'], [type='datetime'], [type='date'], [type='month'], " +
322
- "[type='week'], [type='time'], [type='datetime-local'], " +
323
- "[type='range'], [type='color'] ",
324
- "focusin focusout keyup", delegate)
325
- .validateDelegate("[type='radio'], [type='checkbox'], select, option", "click", delegate);
326
-
327
- if (this.settings.invalidHandler)
328
- $(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler);
329
- },
330
-
331
- // http://docs.jquery.com/Plugins/Validation/Validator/form
332
- form: function() {
333
- this.checkForm();
334
- $.extend(this.submitted, this.errorMap);
335
- this.invalid = $.extend({}, this.errorMap);
336
- if (!this.valid())
337
- $(this.currentForm).triggerHandler("invalid-form", [this]);
338
- this.showErrors();
339
- return this.valid();
340
- },
341
-
342
- checkForm: function() {
343
- this.prepareForm();
344
- for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
345
- this.check( elements[i] );
346
- }
347
- return this.valid();
348
- },
349
-
350
- // http://docs.jquery.com/Plugins/Validation/Validator/element
351
- element: function( element ) {
352
- element = this.validationTargetFor( this.clean( element ) );
353
- this.lastElement = element;
354
- this.prepareElement( element );
355
- this.currentElements = $(element);
356
- var result = this.check( element );
357
- if ( result ) {
358
- delete this.invalid[element.name];
359
- } else {
360
- this.invalid[element.name] = true;
361
- }
362
- if ( !this.numberOfInvalids() ) {
363
- // Hide error containers on last error
364
- this.toHide = this.toHide.add( this.containers );
365
- }
366
- this.showErrors();
367
- return result;
368
- },
369
-
370
- // http://docs.jquery.com/Plugins/Validation/Validator/showErrors
371
- showErrors: function(errors) {
372
- if(errors) {
373
- // add items to error list and map
374
- $.extend( this.errorMap, errors );
375
- this.errorList = [];
376
- for ( var name in errors ) {
377
- this.errorList.push({
378
- message: errors[name],
379
- element: this.findByName(name)[0]
380
- });
381
- }
382
- // remove items from success list
383
- this.successList = $.grep( this.successList, function(element) {
384
- return !(element.name in errors);
385
- });
386
- }
387
- this.settings.showErrors
388
- ? this.settings.showErrors.call( this, this.errorMap, this.errorList )
389
- : this.defaultShowErrors();
390
- },
391
-
392
- // http://docs.jquery.com/Plugins/Validation/Validator/resetForm
393
- resetForm: function() {
394
- if ( $.fn.resetForm )
395
- $( this.currentForm ).resetForm();
396
- this.submitted = {};
397
- this.lastElement = null;
398
- this.prepareForm();
399
- this.hideErrors();
400
- this.elements().removeClass( this.settings.errorClass );
401
- },
402
-
403
- numberOfInvalids: function() {
404
- return this.objectLength(this.invalid);
405
- },
406
-
407
- objectLength: function( obj ) {
408
- var count = 0;
409
- for ( var i in obj )
410
- count++;
411
- return count;
412
- },
413
-
414
- hideErrors: function() {
415
- this.addWrapper( this.toHide ).hide();
416
- },
417
-
418
- valid: function() {
419
- return this.size() == 0;
420
- },
421
-
422
- size: function() {
423
- return this.errorList.length;
424
- },
425
-
426
- focusInvalid: function() {
427
- if( this.settings.focusInvalid ) {
428
- try {
429
- $(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])
430
- .filter(":visible")
431
- .focus()
432
- // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
433
- .trigger("focusin");
434
- } catch(e) {
435
- // ignore IE throwing errors when focusing hidden elements
436
- }
437
- }
438
- },
439
-
440
- findLastActive: function() {
441
- var lastActive = this.lastActive;
442
- return lastActive && $.grep(this.errorList, function(n) {
443
- return n.element.name == lastActive.name;
444
- }).length == 1 && lastActive;
445
- },
446
-
447
- elements: function() {
448
- var validator = this,
449
- rulesCache = {};
450
-
451
- // select all valid inputs inside the form (no submit or reset buttons)
452
- return $(this.currentForm)
453
- .find("input, select, textarea")
454
- .not(":submit, :reset, :image, [disabled]")
455
- .not( this.settings.ignore )
456
- .filter(function() {
457
- !this.name && validator.settings.debug && window.console && console.error( "%o has no name assigned", this);
458
-
459
- // select only the first element for each name, and only those with rules specified
460
- if ( this.name in rulesCache || !validator.objectLength($(this).rules()) )
461
- return false;
462
-
463
- rulesCache[this.name] = true;
464
- return true;
465
- });
466
- },
467
-
468
- clean: function( selector ) {
469
- return $( selector )[0];
470
- },
471
-
472
- errors: function() {
473
- return $( this.settings.errorElement + "." + this.settings.errorClass, this.errorContext );
474
- },
475
-
476
- reset: function() {
477
- this.successList = [];
478
- this.errorList = [];
479
- this.errorMap = {};
480
- this.toShow = $([]);
481
- this.toHide = $([]);
482
- this.currentElements = $([]);
483
- },
484
-
485
- prepareForm: function() {
486
- this.reset();
487
- this.toHide = this.errors().add( this.containers );
488
- },
489
-
490
- prepareElement: function( element ) {
491
- this.reset();
492
- this.toHide = this.errorsFor(element);
493
- },
494
-
495
- check: function( element ) {
496
- element = this.validationTargetFor( this.clean( element ) );
497
-
498
- var rules = $(element).rules();
499
- var dependencyMismatch = false;
500
- for (var method in rules ) {
501
- var rule = { method: method, parameters: rules[method] };
502
- try {
503
- var result = $.validator.methods[method].call( this, element.value.replace(/\r/g, ""), element, rule.parameters );
504
-
505
- // if a method indicates that the field is optional and therefore valid,
506
- // don't mark it as valid when there are no other rules
507
- if ( result == "dependency-mismatch" ) {
508
- dependencyMismatch = true;
509
- continue;
510
- }
511
- dependencyMismatch = false;
512
-
513
- if ( result == "pending" ) {
514
- this.toHide = this.toHide.not( this.errorsFor(element) );
515
- return;
516
- }
517
-
518
- if( !result ) {
519
- this.formatAndAdd( element, rule );
520
- return false;
521
- }
522
- } catch(e) {
523
- this.settings.debug && window.console && console.log("exception occured when checking element " + element.id
524
- + ", check the '" + rule.method + "' method", e);
525
- throw e;
526
- }
527
- }
528
- if (dependencyMismatch)
529
- return;
530
- if ( this.objectLength(rules) )
531
- this.successList.push(element);
532
- return true;
533
- },
534
-
535
- // return the custom message for the given element and validation method
536
- // specified in the element's "messages" metadata
537
- customMetaMessage: function(element, method) {
538
- if (!$.metadata)
539
- return;
540
-
541
- var meta = this.settings.meta
542
- ? $(element).metadata()[this.settings.meta]
543
- : $(element).metadata();
544
-
545
- return meta && meta.messages && meta.messages[method];
546
- },
547
-
548
- // return the custom message for the given element name and validation method
549
- customMessage: function( name, method ) {
550
- var m = this.settings.messages[name];
551
- return m && (m.constructor == String
552
- ? m
553
- : m[method]);
554
- },
555
-
556
- // return the first defined argument, allowing empty strings
557
- findDefined: function() {
558
- for(var i = 0; i < arguments.length; i++) {
559
- if (arguments[i] !== undefined)
560
- return arguments[i];
561
- }
562
- return undefined;
563
- },
564
-
565
- defaultMessage: function( element, method) {
566
- return this.findDefined(
567
- this.customMessage( element.name, method ),
568
- this.customMetaMessage( element, method ),
569
- // title is never undefined, so handle empty string as undefined
570
- !this.settings.ignoreTitle && element.title || undefined,
571
- $.validator.messages[method],
572
- "<strong>Warning: No message defined for " + element.name + "</strong>"
573
- );
574
- },
575
-
576
- formatAndAdd: function( element, rule ) {
577
- var message = this.defaultMessage( element, rule.method ),
578
- theregex = /\$?\{(\d+)\}/g;
579
- if ( typeof message == "function" ) {
580
- message = message.call(this, rule.parameters, element);
581
- } else if (theregex.test(message)) {
582
- message = jQuery.format(message.replace(theregex, '{$1}'), rule.parameters);
583
- }
584
- this.errorList.push({
585
- message: message,
586
- element: element
587
- });
588
-
589
- this.errorMap[element.name] = message;
590
- this.submitted[element.name] = message;
591
- },
592
-
593
- addWrapper: function(toToggle) {
594
- if ( this.settings.wrapper )
595
- toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
596
- return toToggle;
597
- },
598
-
599
- defaultShowErrors: function() {
600
- for ( var i = 0; this.errorList[i]; i++ ) {
601
- var error = this.errorList[i];
602
- this.settings.highlight && this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
603
- this.showLabel( error.element, error.message );
604
- }
605
- if( this.errorList.length ) {
606
- this.toShow = this.toShow.add( this.containers );
607
- }
608
- if (this.settings.success) {
609
- for ( var i = 0; this.successList[i]; i++ ) {
610
- this.showLabel( this.successList[i] );
611
- }
612
- }
613
- if (this.settings.unhighlight) {
614
- for ( var i = 0, elements = this.validElements(); elements[i]; i++ ) {
615
- this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );
616
- }
617
- }
618
- this.toHide = this.toHide.not( this.toShow );
619
- this.hideErrors();
620
- this.addWrapper( this.toShow ).show();
621
- },
622
-
623
- validElements: function() {
624
- return this.currentElements.not(this.invalidElements());
625
- },
626
-
627
- invalidElements: function() {
628
- return $(this.errorList).map(function() {
629
- return this.element;
630
- });
631
- },
632
-
633
- showLabel: function(element, message) {
634
- var label = this.errorsFor( element );
635
- if ( label.length ) {
636
- // refresh error/success class
637
- label.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
638
-
639
- // check if we have a generated label, replace the message then
640
- label.attr("generated") && label.html(message);
641
- } else {
642
- // create label
643
- label = $("<" + this.settings.errorElement + "/>")
644
- .attr({"for": this.idOrName(element), generated: true})
645
- .addClass(this.settings.errorClass)
646
- .html(message || "");
647
- if ( this.settings.wrapper ) {
648
- // make sure the element is visible, even in IE
649
- // actually showing the wrapped element is handled elsewhere
650
- label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
651
- }
652
- if ( !this.labelContainer.append(label).length )
653
- this.settings.errorPlacement
654
- ? this.settings.errorPlacement(label, $(element) )
655
- : label.insertAfter(element);
656
- }
657
- if ( !message && this.settings.success ) {
658
- label.text("");
659
- typeof this.settings.success == "string"
660
- ? label.addClass( this.settings.success )
661
- : this.settings.success( label );
662
- }
663
- this.toShow = this.toShow.add(label);
664
- },
665
-
666
- errorsFor: function(element) {
667
- var name = this.idOrName(element);
668
- return this.errors().filter(function() {
669
- return $(this).attr('for') == name;
670
- });
671
- },
672
-
673
- idOrName: function(element) {
674
- return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);
675
- },
676
-
677
- validationTargetFor: function(element) {
678
- // if radio/checkbox, validate first element in group instead
679
- if (this.checkable(element)) {
680
- element = this.findByName( element.name ).not(this.settings.ignore)[0];
681
- }
682
- return element;
683
- },
684
-
685
- checkable: function( element ) {
686
- return /radio|checkbox/i.test(element.type);
687
- },
688
-
689
- findByName: function( name ) {
690
- // select by name and filter by form for performance over form.find("[name=...]")
691
- var form = this.currentForm;
692
- return $(document.getElementsByName(name)).map(function(index, element) {
693
- return element.form == form && element.name == name && element || null;
694
- });
695
- },
696
-
697
- getLength: function(value, element) {
698
- switch( element.nodeName.toLowerCase() ) {
699
- case 'select':
700
- return $("option:selected", element).length;
701
- case 'input':
702
- if( this.checkable( element) )
703
- return this.findByName(element.name).filter(':checked').length;
704
- }
705
- return value.length;
706
- },
707
-
708
- depend: function(param, element) {
709
- return this.dependTypes[typeof param]
710
- ? this.dependTypes[typeof param](param, element)
711
- : true;
712
- },
713
-
714
- dependTypes: {
715
- "boolean": function(param, element) {
716
- return param;
717
- },
718
- "string": function(param, element) {
719
- return !!$(param, element.form).length;
720
- },
721
- "function": function(param, element) {
722
- return param(element);
723
- }
724
- },
725
-
726
- optional: function(element) {
727
- return !$.validator.methods.required.call(this, $.trim(element.value), element) && "dependency-mismatch";
728
- },
729
-
730
- startRequest: function(element) {
731
- if (!this.pending[element.name]) {
732
- this.pendingRequest++;
733
- this.pending[element.name] = true;
734
- }
735
- },
736
-
737
- stopRequest: function(element, valid) {
738
- this.pendingRequest--;
739
- // sometimes synchronization fails, make sure pendingRequest is never < 0
740
- if (this.pendingRequest < 0)
741
- this.pendingRequest = 0;
742
- delete this.pending[element.name];
743
- if ( valid && this.pendingRequest == 0 && this.formSubmitted && this.form() ) {
744
- $(this.currentForm).submit();
745
- this.formSubmitted = false;
746
- } else if (!valid && this.pendingRequest == 0 && this.formSubmitted) {
747
- $(this.currentForm).triggerHandler("invalid-form", [this]);
748
- this.formSubmitted = false;
749
- }
750
- },
751
-
752
- previousValue: function(element) {
753
- return $.data(element, "previousValue") || $.data(element, "previousValue", {
754
- old: null,
755
- valid: true,
756
- message: this.defaultMessage( element, "remote" )
757
- });
758
- }
759
-
760
- },
761
-
762
- classRuleSettings: {
763
- required: {required: true},
764
- email: {email: true},
765
- url: {url: true},
766
- date: {date: true},
767
- dateISO: {dateISO: true},
768
- dateDE: {dateDE: true},
769
- number: {number: true},
770
- numberDE: {numberDE: true},
771
- digits: {digits: true},
772
- creditcard: {creditcard: true}
773
- },
774
-
775
- addClassRules: function(className, rules) {
776
- className.constructor == String ?
777
- this.classRuleSettings[className] = rules :
778
- $.extend(this.classRuleSettings, className);
779
- },
780
-
781
- classRules: function(element) {
782
- var rules = {};
783
- var classes = $(element).attr('class');
784
- classes && $.each(classes.split(' '), function() {
785
- if (this in $.validator.classRuleSettings) {
786
- $.extend(rules, $.validator.classRuleSettings[this]);
787
- }
788
- });
789
- return rules;
790
- },
791
-
792
- attributeRules: function(element) {
793
- var rules = {};
794
- var $element = $(element);
795
-
796
- for (var method in $.validator.methods) {
797
- var value;
798
- // If .prop exists (jQuery >= 1.6), use it to get true/false for required
799
- if (method === 'required' && typeof $.fn.prop === 'function') {
800
- value = $element.prop(method);
801
- } else {
802
- value = $element.attr(method);
803
- }
804
- if (value) {
805
- rules[method] = value;
806
- } else if ($element[0].getAttribute("type") === method) {
807
- rules[method] = true;
808
- }
809
- }
810
-
811
- // maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs
812
- if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {
813
- delete rules.maxlength;
814
- }
815
-
816
- return rules;
817
- },
818
-
819
- metadataRules: function(element) {
820
- if (!$.metadata) return {};
821
-
822
- var meta = $.data(element.form, 'validator').settings.meta;
823
- return meta ?
824
- $(element).metadata()[meta] :
825
- $(element).metadata();
826
- },
827
-
828
- staticRules: function(element) {
829
- var rules = {};
830
- var validator = $.data(element.form, 'validator');
831
- if (validator.settings.rules) {
832
- rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};
833
- }
834
- return rules;
835
- },
836
-
837
- normalizeRules: function(rules, element) {
838
- // handle dependency check
839
- $.each(rules, function(prop, val) {
840
- // ignore rule when param is explicitly false, eg. required:false
841
- if (val === false) {
842
- delete rules[prop];
843
- return;
844
- }
845
- if (val.param || val.depends) {
846
- var keepRule = true;
847
- switch (typeof val.depends) {
848
- case "string":
849
- keepRule = !!$(val.depends, element.form).length;
850
- break;
851
- case "function":
852
- keepRule = val.depends.call(element, element);
853
- break;
854
- }
855
- if (keepRule) {
856
- rules[prop] = val.param !== undefined ? val.param : true;
857
- } else {
858
- delete rules[prop];
859
- }
860
- }
861
- });
862
-
863
- // evaluate parameters
864
- $.each(rules, function(rule, parameter) {
865
- rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;
866
- });
867
-
868
- // clean number parameters
869
- $.each(['minlength', 'maxlength', 'min', 'max'], function() {
870
- if (rules[this]) {
871
- rules[this] = Number(rules[this]);
872
- }
873
- });
874
- $.each(['rangelength', 'range'], function() {
875
- if (rules[this]) {
876
- rules[this] = [Number(rules[this][0]), Number(rules[this][1])];
877
- }
878
- });
879
-
880
- if ($.validator.autoCreateRanges) {
881
- // auto-create ranges
882
- if (rules.min && rules.max) {
883
- rules.range = [rules.min, rules.max];
884
- delete rules.min;
885
- delete rules.max;
886
- }
887
- if (rules.minlength && rules.maxlength) {
888
- rules.rangelength = [rules.minlength, rules.maxlength];
889
- delete rules.minlength;
890
- delete rules.maxlength;
891
- }
892
- }
893
-
894
- // To support custom messages in metadata ignore rule methods titled "messages"
895
- if (rules.messages) {
896
- delete rules.messages;
897
- }
898
-
899
- return rules;
900
- },
901
-
902
- // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
903
- normalizeRule: function(data) {
904
- if( typeof data == "string" ) {
905
- var transformed = {};
906
- $.each(data.split(/\s/), function() {
907
- transformed[this] = true;
908
- });
909
- data = transformed;
910
- }
911
- return data;
912
- },
913
-
914
- // http://docs.jquery.com/Plugins/Validation/Validator/addMethod
915
- addMethod: function(name, method, message) {
916
- $.validator.methods[name] = method;
917
- $.validator.messages[name] = message != undefined ? message : $.validator.messages[name];
918
- if (method.length < 3) {
919
- $.validator.addClassRules(name, $.validator.normalizeRule(name));
920
- }
921
- },
922
-
923
- methods: {
924
-
925
- // http://docs.jquery.com/Plugins/Validation/Methods/required
926
- required: function(value, element, param) {
927
- // check if dependency is met
928
- if ( !this.depend(param, element) )
929
- return "dependency-mismatch";
930
- switch( element.nodeName.toLowerCase() ) {
931
- case 'select':
932
- // could be an array for select-multiple or a string, both are fine this way
933
- var val = $(element).val();
934
- return val && val.length > 0;
935
- case 'input':
936
- if ( this.checkable(element) )
937
- return this.getLength(value, element) > 0;
938
- default:
939
- return $.trim(value).length > 0;
940
- }
941
- },
942
-
943
- // http://docs.jquery.com/Plugins/Validation/Methods/remote
944
- remote: function(value, element, param) {
945
- if ( this.optional(element) )
946
- return "dependency-mismatch";
947
-
948
- var previous = this.previousValue(element);
949
- if (!this.settings.messages[element.name] )
950
- this.settings.messages[element.name] = {};
951
- previous.originalMessage = this.settings.messages[element.name].remote;
952
- this.settings.messages[element.name].remote = previous.message;
953
-
954
- param = typeof param == "string" && {url:param} || param;
955
-
956
- if ( this.pending[element.name] ) {
957
- return "pending";
958
- }
959
- if ( previous.old === value ) {
960
- return previous.valid;
961
- }
962
-
963
- previous.old = value;
964
- var validator = this;
965
- this.startRequest(element);
966
- var data = {};
967
- data[element.name] = value;
968
- $.ajax($.extend(true, {
969
- url: param,
970
- mode: "abort",
971
- port: "validate" + element.name,
972
- dataType: "json",
973
- data: data,
974
- success: function(response) {
975
- validator.settings.messages[element.name].remote = previous.originalMessage;
976
- var valid = response === true;
977
- if ( valid ) {
978
- var submitted = validator.formSubmitted;
979
- validator.prepareElement(element);
980
- validator.formSubmitted = submitted;
981
- validator.successList.push(element);
982
- validator.showErrors();
983
- } else {
984
- var errors = {};
985
- var message = response || validator.defaultMessage( element, "remote" );
986
- errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
987
- validator.showErrors(errors);
988
- }
989
- previous.valid = valid;
990
- validator.stopRequest(element, valid);
991
- }
992
- }, param));
993
- return "pending";
994
- },
995
-
996
- // http://docs.jquery.com/Plugins/Validation/Methods/minlength
997
- minlength: function(value, element, param) {
998
- return this.optional(element) || this.getLength($.trim(value), element) >= param;
999
- },
1000
-
1001
- // http://docs.jquery.com/Plugins/Validation/Methods/maxlength
1002
- maxlength: function(value, element, param) {
1003
- return this.optional(element) || this.getLength($.trim(value), element) <= param;
1004
- },
1005
-
1006
- // http://docs.jquery.com/Plugins/Validation/Methods/rangelength
1007
- rangelength: function(value, element, param) {
1008
- var length = this.getLength($.trim(value), element);
1009
- return this.optional(element) || ( length >= param[0] && length <= param[1] );
1010
- },
1011
-
1012
- // http://docs.jquery.com/Plugins/Validation/Methods/min
1013
- min: function( value, element, param ) {
1014
- return this.optional(element) || value >= param;
1015
- },
1016
-
1017
- // http://docs.jquery.com/Plugins/Validation/Methods/max
1018
- max: function( value, element, param ) {
1019
- return this.optional(element) || value <= param;
1020
- },
1021
-
1022
- // http://docs.jquery.com/Plugins/Validation/Methods/range
1023
- range: function( value, element, param ) {
1024
- return this.optional(element) || ( value >= param[0] && value <= param[1] );
1025
- },
1026
-
1027
- // http://docs.jquery.com/Plugins/Validation/Methods/email
1028
- email: function(value, element) {
1029
- // contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
1030
- return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(value);
1031
- },
1032
-
1033
- // http://docs.jquery.com/Plugins/Validation/Methods/url
1034
- url: function(value, element) {
1035
- // contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/
1036
- return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
1037
- },
1038
-
1039
- // http://docs.jquery.com/Plugins/Validation/Methods/date
1040
- date: function(value, element) {
1041
- return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
1042
- },
1043
-
1044
- // http://docs.jquery.com/Plugins/Validation/Methods/dateISO
1045
- dateISO: function(value, element) {
1046
- return this.optional(element) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value);
1047
- },
1048
-
1049
- // http://docs.jquery.com/Plugins/Validation/Methods/number
1050
- number: function(value, element) {
1051
- return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);
1052
- },
1053
-
1054
- // http://docs.jquery.com/Plugins/Validation/Methods/digits
1055
- digits: function(value, element) {
1056
- return this.optional(element) || /^\d+$/.test(value);
1057
- },
1058
-
1059
- // http://docs.jquery.com/Plugins/Validation/Methods/creditcard
1060
- // based on http://en.wikipedia.org/wiki/Luhn
1061
- creditcard: function(value, element) {
1062
- if ( this.optional(element) )
1063
- return "dependency-mismatch";
1064
- // accept only spaces, digits and dashes
1065
- if (/[^0-9 -]+/.test(value))
1066
- return false;
1067
- var nCheck = 0,
1068
- nDigit = 0,
1069
- bEven = false;
1070
-
1071
- value = value.replace(/\D/g, "");
1072
-
1073
- for (var n = value.length - 1; n >= 0; n--) {
1074
- var cDigit = value.charAt(n);
1075
- var nDigit = parseInt(cDigit, 10);
1076
- if (bEven) {
1077
- if ((nDigit *= 2) > 9)
1078
- nDigit -= 9;
1079
- }
1080
- nCheck += nDigit;
1081
- bEven = !bEven;
1082
- }
1083
-
1084
- return (nCheck % 10) == 0;
1085
- },
1086
-
1087
- // http://docs.jquery.com/Plugins/Validation/Methods/accept
1088
- accept: function(value, element, param) {
1089
- param = typeof param == "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif";
1090
- return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i"));
1091
- },
1092
-
1093
- // http://docs.jquery.com/Plugins/Validation/Methods/equalTo
1094
- equalTo: function(value, element, param) {
1095
- // bind to the blur event of the target in order to revalidate whenever the target field is updated
1096
- // TODO find a way to bind the event just once, avoiding the unbind-rebind overhead
1097
- var target = $(param).unbind(".validate-equalTo").bind("blur.validate-equalTo", function() {
1098
- $(element).valid();
1099
- });
1100
- return value == target.val();
1101
- }
1102
-
1103
- }
1104
-
1105
- });
1106
-
1107
- // deprecated, use $.validator.format instead
1108
- $.format = $.validator.format;
1109
-
1110
- })(jQuery);
1111
-
1112
- // ajax mode: abort
1113
- // usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
1114
- // if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
1115
- ;(function($) {
1116
- var pendingRequests = {};
1117
- // Use a prefilter if available (1.5+)
1118
- if ( $.ajaxPrefilter ) {
1119
- $.ajaxPrefilter(function(settings, _, xhr) {
1120
- var port = settings.port;
1121
- if (settings.mode == "abort") {
1122
- if ( pendingRequests[port] ) {
1123
- pendingRequests[port].abort();
1124
- }
1125
- pendingRequests[port] = xhr;
1126
- }
1127
- });
1128
- } else {
1129
- // Proxy ajax
1130
- var ajax = $.ajax;
1131
- $.ajax = function(settings) {
1132
- var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
1133
- port = ( "port" in settings ? settings : $.ajaxSettings ).port;
1134
- if (mode == "abort") {
1135
- if ( pendingRequests[port] ) {
1136
- pendingRequests[port].abort();
1137
- }
1138
- return (pendingRequests[port] = ajax.apply(this, arguments));
1139
- }
1140
- return ajax.apply(this, arguments);
1141
- };
1142
- }
1143
- })(jQuery);
1144
-
1145
- // provides cross-browser focusin and focusout events
1146
- // IE has native support, in other browsers, use event caputuring (neither bubbles)
1147
-
1148
- // provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation
1149
- // handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target
1150
- ;(function($) {
1151
- // only implement if not provided by jQuery core (since 1.4)
1152
- // TODO verify if jQuery 1.4's implementation is compatible with older jQuery special-event APIs
1153
- if (!jQuery.event.special.focusin && !jQuery.event.special.focusout && document.addEventListener) {
1154
- $.each({
1155
- focus: 'focusin',
1156
- blur: 'focusout'
1157
- }, function( original, fix ){
1158
- $.event.special[fix] = {
1159
- setup:function() {
1160
- this.addEventListener( original, handler, true );
1161
- },
1162
- teardown:function() {
1163
- this.removeEventListener( original, handler, true );
1164
- },
1165
- handler: function(e) {
1166
- arguments[0] = $.event.fix(e);
1167
- arguments[0].type = fix;
1168
- return $.event.handle.apply(this, arguments);
1169
- }
1170
- };
1171
- function handler(e) {
1172
- e = $.event.fix(e);
1173
- e.type = fix;
1174
- return $.event.handle.call(this, e);
1175
- }
1176
- });
1177
- };
1178
- $.extend($.fn, {
1179
- validateDelegate: function(delegate, type, handler) {
1180
- return this.bind(type, function(event) {
1181
- var target = $(event.target);
1182
- if (target.is(delegate)) {
1183
- return handler.apply(target, arguments);
1184
- }
1185
- });
1186
- }
1187
- });
1188
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * jQuery Validation Plugin v1.19.5
3
+ *
4
+ * https://jqueryvalidation.org/
5
+ *
6
+ * Copyright (c) 2022 Jörn Zaefferer
7
+ * Released under the MIT license
8
+ */
9
+ (function( factory ) {
10
+ if ( typeof define === "function" && define.amd ) {
11
+ define( ["jquery"], factory );
12
+ } else if (typeof module === "object" && module.exports) {
13
+ module.exports = factory( require( "jquery" ) );
14
+ } else {
15
+ factory( jQuery );
16
+ }
17
+ }(function( $ ) {
18
+
19
+ $.extend( $.fn, {
20
+
21
+ // https://jqueryvalidation.org/validate/
22
+ validate: function( options ) {
23
+
24
+ // If nothing is selected, return nothing; can't chain anyway
25
+ if ( !this.length ) {
26
+ if ( options && options.debug && window.console ) {
27
+ console.warn( "Nothing selected, can't validate, returning nothing." );
28
+ }
29
+ return;
30
+ }
31
+
32
+ // Check if a validator for this form was already created
33
+ var validator = $.data( this[ 0 ], "validator" );
34
+ if ( validator ) {
35
+ return validator;
36
+ }
37
+
38
+ // Add novalidate tag if HTML5.
39
+ this.attr( "novalidate", "novalidate" );
40
+
41
+ validator = new $.validator( options, this[ 0 ] );
42
+ $.data( this[ 0 ], "validator", validator );
43
+
44
+ if ( validator.settings.onsubmit ) {
45
+
46
+ this.on( "click.validate", ":submit", function( event ) {
47
+
48
+ // Track the used submit button to properly handle scripted
49
+ // submits later.
50
+ validator.submitButton = event.currentTarget;
51
+
52
+ // Allow suppressing validation by adding a cancel class to the submit button
53
+ if ( $( this ).hasClass( "cancel" ) ) {
54
+ validator.cancelSubmit = true;
55
+ }
56
+
57
+ // Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button
58
+ if ( $( this ).attr( "formnovalidate" ) !== undefined ) {
59
+ validator.cancelSubmit = true;
60
+ }
61
+ } );
62
+
63
+ // Validate the form on submit
64
+ this.on( "submit.validate", function( event ) {
65
+ if ( validator.settings.debug ) {
66
+
67
+ // Prevent form submit to be able to see console output
68
+ event.preventDefault();
69
+ }
70
+
71
+ function handle() {
72
+ var hidden, result;
73
+
74
+ // Insert a hidden input as a replacement for the missing submit button
75
+ // The hidden input is inserted in two cases:
76
+ // - A user defined a `submitHandler`
77
+ // - There was a pending request due to `remote` method and `stopRequest()`
78
+ // was called to submit the form in case it's valid
79
+ if ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {
80
+ hidden = $( "<input type='hidden'/>" )
81
+ .attr( "name", validator.submitButton.name )
82
+ .val( $( validator.submitButton ).val() )
83
+ .appendTo( validator.currentForm );
84
+ }
85
+
86
+ if ( validator.settings.submitHandler && !validator.settings.debug ) {
87
+ result = validator.settings.submitHandler.call( validator, validator.currentForm, event );
88
+ if ( hidden ) {
89
+
90
+ // And clean up afterwards; thanks to no-block-scope, hidden can be referenced
91
+ hidden.remove();
92
+ }
93
+ if ( result !== undefined ) {
94
+ return result;
95
+ }
96
+ return false;
97
+ }
98
+ return true;
99
+ }
100
+
101
+ // Prevent submit for invalid forms or custom submit handlers
102
+ if ( validator.cancelSubmit ) {
103
+ validator.cancelSubmit = false;
104
+ return handle();
105
+ }
106
+ if ( validator.form() ) {
107
+ if ( validator.pendingRequest ) {
108
+ validator.formSubmitted = true;
109
+ return false;
110
+ }
111
+ return handle();
112
+ } else {
113
+ validator.focusInvalid();
114
+ return false;
115
+ }
116
+ } );
117
+ }
118
+
119
+ return validator;
120
+ },
121
+
122
+ // https://jqueryvalidation.org/valid/
123
+ valid: function() {
124
+ var valid, validator, errorList;
125
+
126
+ if ( $( this[ 0 ] ).is( "form" ) ) {
127
+ valid = this.validate().form();
128
+ } else {
129
+ errorList = [];
130
+ valid = true;
131
+ validator = $( this[ 0 ].form ).validate();
132
+ this.each( function() {
133
+ valid = validator.element( this ) && valid;
134
+ if ( !valid ) {
135
+ errorList = errorList.concat( validator.errorList );
136
+ }
137
+ } );
138
+ validator.errorList = errorList;
139
+ }
140
+ return valid;
141
+ },
142
+
143
+ // https://jqueryvalidation.org/rules/
144
+ rules: function( command, argument ) {
145
+ var element = this[ 0 ],
146
+ isContentEditable = typeof this.attr( "contenteditable" ) !== "undefined" && this.attr( "contenteditable" ) !== "false",
147
+ settings, staticRules, existingRules, data, param, filtered;
148
+
149
+ // If nothing is selected, return empty object; can't chain anyway
150
+ if ( element == null ) {
151
+ return;
152
+ }
153
+
154
+ if ( !element.form && isContentEditable ) {
155
+ element.form = this.closest( "form" )[ 0 ];
156
+ element.name = this.attr( "name" );
157
+ }
158
+
159
+ if ( element.form == null ) {
160
+ return;
161
+ }
162
+
163
+ if ( command ) {
164
+ settings = $.data( element.form, "validator" ).settings;
165
+ staticRules = settings.rules;
166
+ existingRules = $.validator.staticRules( element );
167
+ switch ( command ) {
168
+ case "add":
169
+ $.extend( existingRules, $.validator.normalizeRule( argument ) );
170
+
171
+ // Remove messages from rules, but allow them to be set separately
172
+ delete existingRules.messages;
173
+ staticRules[ element.name ] = existingRules;
174
+ if ( argument.messages ) {
175
+ settings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );
176
+ }
177
+ break;
178
+ case "remove":
179
+ if ( !argument ) {
180
+ delete staticRules[ element.name ];
181
+ return existingRules;
182
+ }
183
+ filtered = {};
184
+ $.each( argument.split( /\s/ ), function( index, method ) {
185
+ filtered[ method ] = existingRules[ method ];
186
+ delete existingRules[ method ];
187
+ } );
188
+ return filtered;
189
+ }
190
+ }
191
+
192
+ data = $.validator.normalizeRules(
193
+ $.extend(
194
+ {},
195
+ $.validator.classRules( element ),
196
+ $.validator.attributeRules( element ),
197
+ $.validator.dataRules( element ),
198
+ $.validator.staticRules( element )
199
+ ), element );
200
+
201
+ // Make sure required is at front
202
+ if ( data.required ) {
203
+ param = data.required;
204
+ delete data.required;
205
+ data = $.extend( { required: param }, data );
206
+ }
207
+
208
+ // Make sure remote is at back
209
+ if ( data.remote ) {
210
+ param = data.remote;
211
+ delete data.remote;
212
+ data = $.extend( data, { remote: param } );
213
+ }
214
+
215
+ return data;
216
+ }
217
+ } );
218
+
219
+ // JQuery trim is deprecated, provide a trim method based on String.prototype.trim
220
+ var trim = function( str ) {
221
+
222
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill
223
+ return str.replace( /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "" );
224
+ };
225
+
226
+ // Custom selectors
227
+ $.extend( $.expr.pseudos || $.expr[ ":" ], { // '|| $.expr[ ":" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support
228
+
229
+ // https://jqueryvalidation.org/blank-selector/
230
+ blank: function( a ) {
231
+ return !trim( "" + $( a ).val() );
232
+ },
233
+
234
+ // https://jqueryvalidation.org/filled-selector/
235
+ filled: function( a ) {
236
+ var val = $( a ).val();
237
+ return val !== null && !!trim( "" + val );
238
+ },
239
+
240
+ // https://jqueryvalidation.org/unchecked-selector/
241
+ unchecked: function( a ) {
242
+ return !$( a ).prop( "checked" );
243
+ }
244
+ } );
245
+
246
+ // Constructor for validator
247
+ $.validator = function( options, form ) {
248
+ this.settings = $.extend( true, {}, $.validator.defaults, options );
249
+ this.currentForm = form;
250
+ this.init();
251
+ };
252
+
253
+ // https://jqueryvalidation.org/jQuery.validator.format/
254
+ $.validator.format = function( source, params ) {
255
+ if ( arguments.length === 1 ) {
256
+ return function() {
257
+ var args = $.makeArray( arguments );
258
+ args.unshift( source );
259
+ return $.validator.format.apply( this, args );
260
+ };
261
+ }
262
+ if ( params === undefined ) {
263
+ return source;
264
+ }
265
+ if ( arguments.length > 2 && params.constructor !== Array ) {
266
+ params = $.makeArray( arguments ).slice( 1 );
267
+ }
268
+ if ( params.constructor !== Array ) {
269
+ params = [ params ];
270
+ }
271
+ $.each( params, function( i, n ) {
272
+ source = source.replace( new RegExp( "\\{" + i + "\\}", "g" ), function() {
273
+ return n;
274
+ } );
275
+ } );
276
+ return source;
277
+ };
278
+
279
+ $.extend( $.validator, {
280
+
281
+ defaults: {
282
+ messages: {},
283
+ groups: {},
284
+ rules: {},
285
+ errorClass: "error",
286
+ pendingClass: "pending",
287
+ validClass: "valid",
288
+ errorElement: "label",
289
+ focusCleanup: false,
290
+ focusInvalid: true,
291
+ errorContainer: $( [] ),
292
+ errorLabelContainer: $( [] ),
293
+ onsubmit: true,
294
+ ignore: ":hidden",
295
+ ignoreTitle: false,
296
+ onfocusin: function( element ) {
297
+ this.lastActive = element;
298
+
299
+ // Hide error label and remove error class on focus if enabled
300
+ if ( this.settings.focusCleanup ) {
301
+ if ( this.settings.unhighlight ) {
302
+ this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
303
+ }
304
+ this.hideThese( this.errorsFor( element ) );
305
+ }
306
+ },
307
+ onfocusout: function( element ) {
308
+ if ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {
309
+ this.element( element );
310
+ }
311
+ },
312
+ onkeyup: function( element, event ) {
313
+
314
+ // Avoid revalidate the field when pressing one of the following keys
315
+ // Shift => 16
316
+ // Ctrl => 17
317
+ // Alt => 18
318
+ // Caps lock => 20
319
+ // End => 35
320
+ // Home => 36
321
+ // Left arrow => 37
322
+ // Up arrow => 38
323
+ // Right arrow => 39
324
+ // Down arrow => 40
325
+ // Insert => 45
326
+ // Num lock => 144
327
+ // AltGr key => 225
328
+ var excludedKeys = [
329
+ 16, 17, 18, 20, 35, 36, 37,
330
+ 38, 39, 40, 45, 144, 225
331
+ ];
332
+
333
+ if ( event.which === 9 && this.elementValue( element ) === "" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {
334
+ return;
335
+ } else if ( element.name in this.submitted || element.name in this.invalid ) {
336
+ this.element( element );
337
+ }
338
+ },
339
+ onclick: function( element ) {
340
+
341
+ // Click on selects, radiobuttons and checkboxes
342
+ if ( element.name in this.submitted ) {
343
+ this.element( element );
344
+
345
+ // Or option elements, check parent select in that case
346
+ } else if ( element.parentNode.name in this.submitted ) {
347
+ this.element( element.parentNode );
348
+ }
349
+ },
350
+ highlight: function( element, errorClass, validClass ) {
351
+ if ( element.type === "radio" ) {
352
+ this.findByName( element.name ).addClass( errorClass ).removeClass( validClass );
353
+ } else {
354
+ $( element ).addClass( errorClass ).removeClass( validClass );
355
+ }
356
+ },
357
+ unhighlight: function( element, errorClass, validClass ) {
358
+ if ( element.type === "radio" ) {
359
+ this.findByName( element.name ).removeClass( errorClass ).addClass( validClass );
360
+ } else {
361
+ $( element ).removeClass( errorClass ).addClass( validClass );
362
+ }
363
+ }
364
+ },
365
+
366
+ // https://jqueryvalidation.org/jQuery.validator.setDefaults/
367
+ setDefaults: function( settings ) {
368
+ $.extend( $.validator.defaults, settings );
369
+ },
370
+
371
+ messages: {
372
+ required: "This field is required.",
373
+ remote: "Please fix this field.",
374
+ email: "Please enter a valid email address.",
375
+ url: "Please enter a valid URL.",
376
+ date: "Please enter a valid date.",
377
+ dateISO: "Please enter a valid date (ISO).",
378
+ number: "Please enter a valid number.",
379
+ digits: "Please enter only digits.",
380
+ equalTo: "Please enter the same value again.",
381
+ maxlength: $.validator.format( "Please enter no more than {0} characters." ),
382
+ minlength: $.validator.format( "Please enter at least {0} characters." ),
383
+ rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ),
384
+ range: $.validator.format( "Please enter a value between {0} and {1}." ),
385
+ max: $.validator.format( "Please enter a value less than or equal to {0}." ),
386
+ min: $.validator.format( "Please enter a value greater than or equal to {0}." ),
387
+ step: $.validator.format( "Please enter a multiple of {0}." )
388
+ },
389
+
390
+ autoCreateRanges: false,
391
+
392
+ prototype: {
393
+
394
+ init: function() {
395
+ this.labelContainer = $( this.settings.errorLabelContainer );
396
+ this.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );
397
+ this.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );
398
+ this.submitted = {};
399
+ this.valueCache = {};
400
+ this.pendingRequest = 0;
401
+ this.pending = {};
402
+ this.invalid = {};
403
+ this.reset();
404
+
405
+ var currentForm = this.currentForm,
406
+ groups = ( this.groups = {} ),
407
+ rules;
408
+ $.each( this.settings.groups, function( key, value ) {
409
+ if ( typeof value === "string" ) {
410
+ value = value.split( /\s/ );
411
+ }
412
+ $.each( value, function( index, name ) {
413
+ groups[ name ] = key;
414
+ } );
415
+ } );
416
+ rules = this.settings.rules;
417
+ $.each( rules, function( key, value ) {
418
+ rules[ key ] = $.validator.normalizeRule( value );
419
+ } );
420
+
421
+ function delegate( event ) {
422
+ var isContentEditable = typeof $( this ).attr( "contenteditable" ) !== "undefined" && $( this ).attr( "contenteditable" ) !== "false";
423
+
424
+ // Set form expando on contenteditable
425
+ if ( !this.form && isContentEditable ) {
426
+ this.form = $( this ).closest( "form" )[ 0 ];
427
+ this.name = $( this ).attr( "name" );
428
+ }
429
+
430
+ // Ignore the element if it belongs to another form. This will happen mainly
431
+ // when setting the `form` attribute of an input to the id of another form.
432
+ if ( currentForm !== this.form ) {
433
+ return;
434
+ }
435
+
436
+ var validator = $.data( this.form, "validator" ),
437
+ eventType = "on" + event.type.replace( /^validate/, "" ),
438
+ settings = validator.settings;
439
+ if ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {
440
+ settings[ eventType ].call( validator, this, event );
441
+ }
442
+ }
443
+
444
+ $( this.currentForm )
445
+ .on( "focusin.validate focusout.validate keyup.validate",
446
+ ":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], " +
447
+ "[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], " +
448
+ "[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], " +
449
+ "[type='radio'], [type='checkbox'], [contenteditable], [type='button']", delegate )
450
+
451
+ // Support: Chrome, oldIE
452
+ // "select" is provided as event.target when clicking a option
453
+ .on( "click.validate", "select, option, [type='radio'], [type='checkbox']", delegate );
454
+
455
+ if ( this.settings.invalidHandler ) {
456
+ $( this.currentForm ).on( "invalid-form.validate", this.settings.invalidHandler );
457
+ }
458
+ },
459
+
460
+ // https://jqueryvalidation.org/Validator.form/
461
+ form: function() {
462
+ this.checkForm();
463
+ $.extend( this.submitted, this.errorMap );
464
+ this.invalid = $.extend( {}, this.errorMap );
465
+ if ( !this.valid() ) {
466
+ $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
467
+ }
468
+ this.showErrors();
469
+ return this.valid();
470
+ },
471
+
472
+ checkForm: function() {
473
+ this.prepareForm();
474
+ for ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {
475
+ this.check( elements[ i ] );
476
+ }
477
+ return this.valid();
478
+ },
479
+
480
+ // https://jqueryvalidation.org/Validator.element/
481
+ element: function( element ) {
482
+ var cleanElement = this.clean( element ),
483
+ checkElement = this.validationTargetFor( cleanElement ),
484
+ v = this,
485
+ result = true,
486
+ rs, group;
487
+
488
+ if ( checkElement === undefined ) {
489
+ delete this.invalid[ cleanElement.name ];
490
+ } else {
491
+ this.prepareElement( checkElement );
492
+ this.currentElements = $( checkElement );
493
+
494
+ // If this element is grouped, then validate all group elements already
495
+ // containing a value
496
+ group = this.groups[ checkElement.name ];
497
+ if ( group ) {
498
+ $.each( this.groups, function( name, testgroup ) {
499
+ if ( testgroup === group && name !== checkElement.name ) {
500
+ cleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );
501
+ if ( cleanElement && cleanElement.name in v.invalid ) {
502
+ v.currentElements.push( cleanElement );
503
+ result = v.check( cleanElement ) && result;
504
+ }
505
+ }
506
+ } );
507
+ }
508
+
509
+ rs = this.check( checkElement ) !== false;
510
+ result = result && rs;
511
+ if ( rs ) {
512
+ this.invalid[ checkElement.name ] = false;
513
+ } else {
514
+ this.invalid[ checkElement.name ] = true;
515
+ }
516
+
517
+ if ( !this.numberOfInvalids() ) {
518
+
519
+ // Hide error containers on last error
520
+ this.toHide = this.toHide.add( this.containers );
521
+ }
522
+ this.showErrors();
523
+
524
+ // Add aria-invalid status for screen readers
525
+ $( element ).attr( "aria-invalid", !rs );
526
+ }
527
+
528
+ return result;
529
+ },
530
+
531
+ // https://jqueryvalidation.org/Validator.showErrors/
532
+ showErrors: function( errors ) {
533
+ if ( errors ) {
534
+ var validator = this;
535
+
536
+ // Add items to error list and map
537
+ $.extend( this.errorMap, errors );
538
+ this.errorList = $.map( this.errorMap, function( message, name ) {
539
+ return {
540
+ message: message,
541
+ element: validator.findByName( name )[ 0 ]
542
+ };
543
+ } );
544
+
545
+ // Remove items from success list
546
+ this.successList = $.grep( this.successList, function( element ) {
547
+ return !( element.name in errors );
548
+ } );
549
+ }
550
+ if ( this.settings.showErrors ) {
551
+ this.settings.showErrors.call( this, this.errorMap, this.errorList );
552
+ } else {
553
+ this.defaultShowErrors();
554
+ }
555
+ },
556
+
557
+ // https://jqueryvalidation.org/Validator.resetForm/
558
+ resetForm: function() {
559
+ if ( $.fn.resetForm ) {
560
+ $( this.currentForm ).resetForm();
561
+ }
562
+ this.invalid = {};
563
+ this.submitted = {};
564
+ this.prepareForm();
565
+ this.hideErrors();
566
+ var elements = this.elements()
567
+ .removeData( "previousValue" )
568
+ .removeAttr( "aria-invalid" );
569
+
570
+ this.resetElements( elements );
571
+ },
572
+
573
+ resetElements: function( elements ) {
574
+ var i;
575
+
576
+ if ( this.settings.unhighlight ) {
577
+ for ( i = 0; elements[ i ]; i++ ) {
578
+ this.settings.unhighlight.call( this, elements[ i ],
579
+ this.settings.errorClass, "" );
580
+ this.findByName( elements[ i ].name ).removeClass( this.settings.validClass );
581
+ }
582
+ } else {
583
+ elements
584
+ .removeClass( this.settings.errorClass )
585
+ .removeClass( this.settings.validClass );
586
+ }
587
+ },
588
+
589
+ numberOfInvalids: function() {
590
+ return this.objectLength( this.invalid );
591
+ },
592
+
593
+ objectLength: function( obj ) {
594
+ /* jshint unused: false */
595
+ var count = 0,
596
+ i;
597
+ for ( i in obj ) {
598
+
599
+ // This check allows counting elements with empty error
600
+ // message as invalid elements
601
+ if ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {
602
+ count++;
603
+ }
604
+ }
605
+ return count;
606
+ },
607
+
608
+ hideErrors: function() {
609
+ this.hideThese( this.toHide );
610
+ },
611
+
612
+ hideThese: function( errors ) {
613
+ errors.not( this.containers ).text( "" );
614
+ this.addWrapper( errors ).hide();
615
+ },
616
+
617
+ valid: function() {
618
+ return this.size() === 0;
619
+ },
620
+
621
+ size: function() {
622
+ return this.errorList.length;
623
+ },
624
+
625
+ focusInvalid: function() {
626
+ if ( this.settings.focusInvalid ) {
627
+ try {
628
+ $( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )
629
+ .filter( ":visible" )
630
+ .trigger( "focus" )
631
+
632
+ // Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
633
+ .trigger( "focusin" );
634
+ } catch ( e ) {
635
+
636
+ // Ignore IE throwing errors when focusing hidden elements
637
+ }
638
+ }
639
+ },
640
+
641
+ findLastActive: function() {
642
+ var lastActive = this.lastActive;
643
+ return lastActive && $.grep( this.errorList, function( n ) {
644
+ return n.element.name === lastActive.name;
645
+ } ).length === 1 && lastActive;
646
+ },
647
+
648
+ elements: function() {
649
+ var validator = this,
650
+ rulesCache = {};
651
+
652
+ // Select all valid inputs inside the form (no submit or reset buttons)
653
+ return $( this.currentForm )
654
+ .find( "input, select, textarea, [contenteditable]" )
655
+ .not( ":submit, :reset, :image, :disabled" )
656
+ .not( this.settings.ignore )
657
+ .filter( function() {
658
+ var name = this.name || $( this ).attr( "name" ); // For contenteditable
659
+ var isContentEditable = typeof $( this ).attr( "contenteditable" ) !== "undefined" && $( this ).attr( "contenteditable" ) !== "false";
660
+
661
+ if ( !name && validator.settings.debug && window.console ) {
662
+ console.error( "%o has no name assigned", this );
663
+ }
664
+
665
+ // Set form expando on contenteditable
666
+ if ( isContentEditable ) {
667
+ this.form = $( this ).closest( "form" )[ 0 ];
668
+ this.name = name;
669
+ }
670
+
671
+ // Ignore elements that belong to other/nested forms
672
+ if ( this.form !== validator.currentForm ) {
673
+ return false;
674
+ }
675
+
676
+ // Select only the first element for each name, and only those with rules specified
677
+ if ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {
678
+ return false;
679
+ }
680
+
681
+ rulesCache[ name ] = true;
682
+ return true;
683
+ } );
684
+ },
685
+
686
+ clean: function( selector ) {
687
+ return $( selector )[ 0 ];
688
+ },
689
+
690
+ errors: function() {
691
+ var errorClass = this.settings.errorClass.split( " " ).join( "." );
692
+ return $( this.settings.errorElement + "." + errorClass, this.errorContext );
693
+ },
694
+
695
+ resetInternals: function() {
696
+ this.successList = [];
697
+ this.errorList = [];
698
+ this.errorMap = {};
699
+ this.toShow = $( [] );
700
+ this.toHide = $( [] );
701
+ },
702
+
703
+ reset: function() {
704
+ this.resetInternals();
705
+ this.currentElements = $( [] );
706
+ },
707
+
708
+ prepareForm: function() {
709
+ this.reset();
710
+ this.toHide = this.errors().add( this.containers );
711
+ },
712
+
713
+ prepareElement: function( element ) {
714
+ this.reset();
715
+ this.toHide = this.errorsFor( element );
716
+ },
717
+
718
+ elementValue: function( element ) {
719
+ var $element = $( element ),
720
+ type = element.type,
721
+ isContentEditable = typeof $element.attr( "contenteditable" ) !== "undefined" && $element.attr( "contenteditable" ) !== "false",
722
+ val, idx;
723
+
724
+ if ( type === "radio" || type === "checkbox" ) {
725
+ return this.findByName( element.name ).filter( ":checked" ).val();
726
+ } else if ( type === "number" && typeof element.validity !== "undefined" ) {
727
+ return element.validity.badInput ? "NaN" : $element.val();
728
+ }
729
+
730
+ if ( isContentEditable ) {
731
+ val = $element.text();
732
+ } else {
733
+ val = $element.val();
734
+ }
735
+
736
+ if ( type === "file" ) {
737
+
738
+ // Modern browser (chrome & safari)
739
+ if ( val.substr( 0, 12 ) === "C:\\fakepath\\" ) {
740
+ return val.substr( 12 );
741
+ }
742
+
743
+ // Legacy browsers
744
+ // Unix-based path
745
+ idx = val.lastIndexOf( "/" );
746
+ if ( idx >= 0 ) {
747
+ return val.substr( idx + 1 );
748
+ }
749
+
750
+ // Windows-based path
751
+ idx = val.lastIndexOf( "\\" );
752
+ if ( idx >= 0 ) {
753
+ return val.substr( idx + 1 );
754
+ }
755
+
756
+ // Just the file name
757
+ return val;
758
+ }
759
+
760
+ if ( typeof val === "string" ) {
761
+ return val.replace( /\r/g, "" );
762
+ }
763
+ return val;
764
+ },
765
+
766
+ check: function( element ) {
767
+ element = this.validationTargetFor( this.clean( element ) );
768
+
769
+ var rules = $( element ).rules(),
770
+ rulesCount = $.map( rules, function( n, i ) {
771
+ return i;
772
+ } ).length,
773
+ dependencyMismatch = false,
774
+ val = this.elementValue( element ),
775
+ result, method, rule, normalizer;
776
+
777
+ // Prioritize the local normalizer defined for this element over the global one
778
+ // if the former exists, otherwise user the global one in case it exists.
779
+ if ( typeof rules.normalizer === "function" ) {
780
+ normalizer = rules.normalizer;
781
+ } else if ( typeof this.settings.normalizer === "function" ) {
782
+ normalizer = this.settings.normalizer;
783
+ }
784
+
785
+ // If normalizer is defined, then call it to retreive the changed value instead
786
+ // of using the real one.
787
+ // Note that `this` in the normalizer is `element`.
788
+ if ( normalizer ) {
789
+ val = normalizer.call( element, val );
790
+
791
+ // Delete the normalizer from rules to avoid treating it as a pre-defined method.
792
+ delete rules.normalizer;
793
+ }
794
+
795
+ for ( method in rules ) {
796
+ rule = { method: method, parameters: rules[ method ] };
797
+ try {
798
+ result = $.validator.methods[ method ].call( this, val, element, rule.parameters );
799
+
800
+ // If a method indicates that the field is optional and therefore valid,
801
+ // don't mark it as valid when there are no other rules
802
+ if ( result === "dependency-mismatch" && rulesCount === 1 ) {
803
+ dependencyMismatch = true;
804
+ continue;
805
+ }
806
+ dependencyMismatch = false;
807
+
808
+ if ( result === "pending" ) {
809
+ this.toHide = this.toHide.not( this.errorsFor( element ) );
810
+ return;
811
+ }
812
+
813
+ if ( !result ) {
814
+ this.formatAndAdd( element, rule );
815
+ return false;
816
+ }
817
+ } catch ( e ) {
818
+ if ( this.settings.debug && window.console ) {
819
+ console.log( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e );
820
+ }
821
+ if ( e instanceof TypeError ) {
822
+ e.message += ". Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.";
823
+ }
824
+
825
+ throw e;
826
+ }
827
+ }
828
+ if ( dependencyMismatch ) {
829
+ return;
830
+ }
831
+ if ( this.objectLength( rules ) ) {
832
+ this.successList.push( element );
833
+ }
834
+ return true;
835
+ },
836
+
837
+ // Return the custom message for the given element and validation method
838
+ // specified in the element's HTML5 data attribute
839
+ // return the generic message if present and no method specific message is present
840
+ customDataMessage: function( element, method ) {
841
+ return $( element ).data( "msg" + method.charAt( 0 ).toUpperCase() +
842
+ method.substring( 1 ).toLowerCase() ) || $( element ).data( "msg" );
843
+ },
844
+
845
+ // Return the custom message for the given element name and validation method
846
+ customMessage: function( name, method ) {
847
+ var m = this.settings.messages[ name ];
848
+ return m && ( m.constructor === String ? m : m[ method ] );
849
+ },
850
+
851
+ // Return the first defined argument, allowing empty strings
852
+ findDefined: function() {
853
+ for ( var i = 0; i < arguments.length; i++ ) {
854
+ if ( arguments[ i ] !== undefined ) {
855
+ return arguments[ i ];
856
+ }
857
+ }
858
+ return undefined;
859
+ },
860
+
861
+ // The second parameter 'rule' used to be a string, and extended to an object literal
862
+ // of the following form:
863
+ // rule = {
864
+ // method: "method name",
865
+ // parameters: "the given method parameters"
866
+ // }
867
+ //
868
+ // The old behavior still supported, kept to maintain backward compatibility with
869
+ // old code, and will be removed in the next major release.
870
+ defaultMessage: function( element, rule ) {
871
+ if ( typeof rule === "string" ) {
872
+ rule = { method: rule };
873
+ }
874
+
875
+ var message = this.findDefined(
876
+ this.customMessage( element.name, rule.method ),
877
+ this.customDataMessage( element, rule.method ),
878
+
879
+ // 'title' is never undefined, so handle empty string as undefined
880
+ !this.settings.ignoreTitle && element.title || undefined,
881
+ $.validator.messages[ rule.method ],
882
+ "<strong>Warning: No message defined for " + element.name + "</strong>"
883
+ ),
884
+ theregex = /\$?\{(\d+)\}/g;
885
+ if ( typeof message === "function" ) {
886
+ message = message.call( this, rule.parameters, element );
887
+ } else if ( theregex.test( message ) ) {
888
+ message = $.validator.format( message.replace( theregex, "{$1}" ), rule.parameters );
889
+ }
890
+
891
+ return message;
892
+ },
893
+
894
+ formatAndAdd: function( element, rule ) {
895
+ var message = this.defaultMessage( element, rule );
896
+
897
+ this.errorList.push( {
898
+ message: message,
899
+ element: element,
900
+ method: rule.method
901
+ } );
902
+
903
+ this.errorMap[ element.name ] = message;
904
+ this.submitted[ element.name ] = message;
905
+ },
906
+
907
+ addWrapper: function( toToggle ) {
908
+ if ( this.settings.wrapper ) {
909
+ toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
910
+ }
911
+ return toToggle;
912
+ },
913
+
914
+ defaultShowErrors: function() {
915
+ var i, elements, error;
916
+ for ( i = 0; this.errorList[ i ]; i++ ) {
917
+ error = this.errorList[ i ];
918
+ if ( this.settings.highlight ) {
919
+ this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
920
+ }
921
+ this.showLabel( error.element, error.message );
922
+ }
923
+ if ( this.errorList.length ) {
924
+ this.toShow = this.toShow.add( this.containers );
925
+ }
926
+ if ( this.settings.success ) {
927
+ for ( i = 0; this.successList[ i ]; i++ ) {
928
+ this.showLabel( this.successList[ i ] );
929
+ }
930
+ }
931
+ if ( this.settings.unhighlight ) {
932
+ for ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {
933
+ this.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );
934
+ }
935
+ }
936
+ this.toHide = this.toHide.not( this.toShow );
937
+ this.hideErrors();
938
+ this.addWrapper( this.toShow ).show();
939
+ },
940
+
941
+ validElements: function() {
942
+ return this.currentElements.not( this.invalidElements() );
943
+ },
944
+
945
+ invalidElements: function() {
946
+ return $( this.errorList ).map( function() {
947
+ return this.element;
948
+ } );
949
+ },
950
+
951
+ showLabel: function( element, message ) {
952
+ var place, group, errorID, v,
953
+ error = this.errorsFor( element ),
954
+ elementID = this.idOrName( element ),
955
+ describedBy = $( element ).attr( "aria-describedby" );
956
+
957
+ if ( error.length ) {
958
+
959
+ // Refresh error/success class
960
+ error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
961
+
962
+ // Replace message on existing label
963
+ error.html( message );
964
+ } else {
965
+
966
+ // Create error element
967
+ error = $( "<" + this.settings.errorElement + ">" )
968
+ .attr( "id", elementID + "-error" )
969
+ .addClass( this.settings.errorClass )
970
+ .html( message || "" );
971
+
972
+ // Maintain reference to the element to be placed into the DOM
973
+ place = error;
974
+ if ( this.settings.wrapper ) {
975
+
976
+ // Make sure the element is visible, even in IE
977
+ // actually showing the wrapped element is handled elsewhere
978
+ place = error.hide().show().wrap( "<" + this.settings.wrapper + "/>" ).parent();
979
+ }
980
+ if ( this.labelContainer.length ) {
981
+ this.labelContainer.append( place );
982
+ } else if ( this.settings.errorPlacement ) {
983
+ this.settings.errorPlacement.call( this, place, $( element ) );
984
+ } else {
985
+ place.insertAfter( element );
986
+ }
987
+
988
+ // Link error back to the element
989
+ if ( error.is( "label" ) ) {
990
+
991
+ // If the error is a label, then associate using 'for'
992
+ error.attr( "for", elementID );
993
+
994
+ // If the element is not a child of an associated label, then it's necessary
995
+ // to explicitly apply aria-describedby
996
+ } else if ( error.parents( "label[for='" + this.escapeCssMeta( elementID ) + "']" ).length === 0 ) {
997
+ errorID = error.attr( "id" );
998
+
999
+ // Respect existing non-error aria-describedby
1000
+ if ( !describedBy ) {
1001
+ describedBy = errorID;
1002
+ } else if ( !describedBy.match( new RegExp( "\\b" + this.escapeCssMeta( errorID ) + "\\b" ) ) ) {
1003
+
1004
+ // Add to end of list if not already present
1005
+ describedBy += " " + errorID;
1006
+ }
1007
+ $( element ).attr( "aria-describedby", describedBy );
1008
+
1009
+ // If this element is grouped, then assign to all elements in the same group
1010
+ group = this.groups[ element.name ];
1011
+ if ( group ) {
1012
+ v = this;
1013
+ $.each( v.groups, function( name, testgroup ) {
1014
+ if ( testgroup === group ) {
1015
+ $( "[name='" + v.escapeCssMeta( name ) + "']", v.currentForm )
1016
+ .attr( "aria-describedby", error.attr( "id" ) );
1017
+ }
1018
+ } );
1019
+ }
1020
+ }
1021
+ }
1022
+ if ( !message && this.settings.success ) {
1023
+ error.text( "" );
1024
+ if ( typeof this.settings.success === "string" ) {
1025
+ error.addClass( this.settings.success );
1026
+ } else {
1027
+ this.settings.success( error, element );
1028
+ }
1029
+ }
1030
+ this.toShow = this.toShow.add( error );
1031
+ },
1032
+
1033
+ errorsFor: function( element ) {
1034
+ var name = this.escapeCssMeta( this.idOrName( element ) ),
1035
+ describer = $( element ).attr( "aria-describedby" ),
1036
+ selector = "label[for='" + name + "'], label[for='" + name + "'] *";
1037
+
1038
+ // 'aria-describedby' should directly reference the error element
1039
+ if ( describer ) {
1040
+ selector = selector + ", #" + this.escapeCssMeta( describer )
1041
+ .replace( /\s+/g, ", #" );
1042
+ }
1043
+
1044
+ return this
1045
+ .errors()
1046
+ .filter( selector );
1047
+ },
1048
+
1049
+ // See https://api.jquery.com/category/selectors/, for CSS
1050
+ // meta-characters that should be escaped in order to be used with JQuery
1051
+ // as a literal part of a name/id or any selector.
1052
+ escapeCssMeta: function( string ) {
1053
+ if ( string === undefined ) {
1054
+ return "";
1055
+ }
1056
+
1057
+ return string.replace( /([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g, "\\$1" );
1058
+ },
1059
+
1060
+ idOrName: function( element ) {
1061
+ return this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );
1062
+ },
1063
+
1064
+ validationTargetFor: function( element ) {
1065
+
1066
+ // If radio/checkbox, validate first element in group instead
1067
+ if ( this.checkable( element ) ) {
1068
+ element = this.findByName( element.name );
1069
+ }
1070
+
1071
+ // Always apply ignore filter
1072
+ return $( element ).not( this.settings.ignore )[ 0 ];
1073
+ },
1074
+
1075
+ checkable: function( element ) {
1076
+ return ( /radio|checkbox/i ).test( element.type );
1077
+ },
1078
+
1079
+ findByName: function( name ) {
1080
+ return $( this.currentForm ).find( "[name='" + this.escapeCssMeta( name ) + "']" );
1081
+ },
1082
+
1083
+ getLength: function( value, element ) {
1084
+ switch ( element.nodeName.toLowerCase() ) {
1085
+ case "select":
1086
+ return $( "option:selected", element ).length;
1087
+ case "input":
1088
+ if ( this.checkable( element ) ) {
1089
+ return this.findByName( element.name ).filter( ":checked" ).length;
1090
+ }
1091
+ }
1092
+ return value.length;
1093
+ },
1094
+
1095
+ depend: function( param, element ) {
1096
+ return this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;
1097
+ },
1098
+
1099
+ dependTypes: {
1100
+ "boolean": function( param ) {
1101
+ return param;
1102
+ },
1103
+ "string": function( param, element ) {
1104
+ return !!$( param, element.form ).length;
1105
+ },
1106
+ "function": function( param, element ) {
1107
+ return param( element );
1108
+ }
1109
+ },
1110
+
1111
+ optional: function( element ) {
1112
+ var val = this.elementValue( element );
1113
+ return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
1114
+ },
1115
+
1116
+ startRequest: function( element ) {
1117
+ if ( !this.pending[ element.name ] ) {
1118
+ this.pendingRequest++;
1119
+ $( element ).addClass( this.settings.pendingClass );
1120
+ this.pending[ element.name ] = true;
1121
+ }
1122
+ },
1123
+
1124
+ stopRequest: function( element, valid ) {
1125
+ this.pendingRequest--;
1126
+
1127
+ // Sometimes synchronization fails, make sure pendingRequest is never < 0
1128
+ if ( this.pendingRequest < 0 ) {
1129
+ this.pendingRequest = 0;
1130
+ }
1131
+ delete this.pending[ element.name ];
1132
+ $( element ).removeClass( this.settings.pendingClass );
1133
+ if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() && this.pendingRequest === 0 ) {
1134
+ $( this.currentForm ).trigger( "submit" );
1135
+
1136
+ // Remove the hidden input that was used as a replacement for the
1137
+ // missing submit button. The hidden input is added by `handle()`
1138
+ // to ensure that the value of the used submit button is passed on
1139
+ // for scripted submits triggered by this method
1140
+ if ( this.submitButton ) {
1141
+ $( "input:hidden[name='" + this.submitButton.name + "']", this.currentForm ).remove();
1142
+ }
1143
+
1144
+ this.formSubmitted = false;
1145
+ } else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {
1146
+ $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
1147
+ this.formSubmitted = false;
1148
+ }
1149
+ },
1150
+
1151
+ previousValue: function( element, method ) {
1152
+ method = typeof method === "string" && method || "remote";
1153
+
1154
+ return $.data( element, "previousValue" ) || $.data( element, "previousValue", {
1155
+ old: null,
1156
+ valid: true,
1157
+ message: this.defaultMessage( element, { method: method } )
1158
+ } );
1159
+ },
1160
+
1161
+ // Cleans up all forms and elements, removes validator-specific events
1162
+ destroy: function() {
1163
+ this.resetForm();
1164
+
1165
+ $( this.currentForm )
1166
+ .off( ".validate" )
1167
+ .removeData( "validator" )
1168
+ .find( ".validate-equalTo-blur" )
1169
+ .off( ".validate-equalTo" )
1170
+ .removeClass( "validate-equalTo-blur" )
1171
+ .find( ".validate-lessThan-blur" )
1172
+ .off( ".validate-lessThan" )
1173
+ .removeClass( "validate-lessThan-blur" )
1174
+ .find( ".validate-lessThanEqual-blur" )
1175
+ .off( ".validate-lessThanEqual" )
1176
+ .removeClass( "validate-lessThanEqual-blur" )
1177
+ .find( ".validate-greaterThanEqual-blur" )
1178
+ .off( ".validate-greaterThanEqual" )
1179
+ .removeClass( "validate-greaterThanEqual-blur" )
1180
+ .find( ".validate-greaterThan-blur" )
1181
+ .off( ".validate-greaterThan" )
1182
+ .removeClass( "validate-greaterThan-blur" );
1183
+ }
1184
+
1185
+ },
1186
+
1187
+ classRuleSettings: {
1188
+ required: { required: true },
1189
+ email: { email: true },
1190
+ url: { url: true },
1191
+ date: { date: true },
1192
+ dateISO: { dateISO: true },
1193
+ number: { number: true },
1194
+ digits: { digits: true },
1195
+ creditcard: { creditcard: true }
1196
+ },
1197
+
1198
+ addClassRules: function( className, rules ) {
1199
+ if ( className.constructor === String ) {
1200
+ this.classRuleSettings[ className ] = rules;
1201
+ } else {
1202
+ $.extend( this.classRuleSettings, className );
1203
+ }
1204
+ },
1205
+
1206
+ classRules: function( element ) {
1207
+ var rules = {},
1208
+ classes = $( element ).attr( "class" );
1209
+
1210
+ if ( classes ) {
1211
+ $.each( classes.split( " " ), function() {
1212
+ if ( this in $.validator.classRuleSettings ) {
1213
+ $.extend( rules, $.validator.classRuleSettings[ this ] );
1214
+ }
1215
+ } );
1216
+ }
1217
+ return rules;
1218
+ },
1219
+
1220
+ normalizeAttributeRule: function( rules, type, method, value ) {
1221
+
1222
+ // Convert the value to a number for number inputs, and for text for backwards compability
1223
+ // allows type="date" and others to be compared as strings
1224
+ if ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {
1225
+ value = Number( value );
1226
+
1227
+ // Support Opera Mini, which returns NaN for undefined minlength
1228
+ if ( isNaN( value ) ) {
1229
+ value = undefined;
1230
+ }
1231
+ }
1232
+
1233
+ if ( value || value === 0 ) {
1234
+ rules[ method ] = value;
1235
+ } else if ( type === method && type !== "range" ) {
1236
+
1237
+ // Exception: the jquery validate 'range' method
1238
+ // does not test for the html5 'range' type
1239
+ rules[ type === "date" ? "dateISO" : method ] = true;
1240
+ }
1241
+ },
1242
+
1243
+ attributeRules: function( element ) {
1244
+ var rules = {},
1245
+ $element = $( element ),
1246
+ type = element.getAttribute( "type" ),
1247
+ method, value;
1248
+
1249
+ for ( method in $.validator.methods ) {
1250
+
1251
+ // Support for <input required> in both html5 and older browsers
1252
+ if ( method === "required" ) {
1253
+ value = element.getAttribute( method );
1254
+
1255
+ // Some browsers return an empty string for the required attribute
1256
+ // and non-HTML5 browsers might have required="" markup
1257
+ if ( value === "" ) {
1258
+ value = true;
1259
+ }
1260
+
1261
+ // Force non-HTML5 browsers to return bool
1262
+ value = !!value;
1263
+ } else {
1264
+ value = $element.attr( method );
1265
+ }
1266
+
1267
+ this.normalizeAttributeRule( rules, type, method, value );
1268
+ }
1269
+
1270
+ // 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs
1271
+ if ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {
1272
+ delete rules.maxlength;
1273
+ }
1274
+
1275
+ return rules;
1276
+ },
1277
+
1278
+ dataRules: function( element ) {
1279
+ var rules = {},
1280
+ $element = $( element ),
1281
+ type = element.getAttribute( "type" ),
1282
+ method, value;
1283
+
1284
+ for ( method in $.validator.methods ) {
1285
+ value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );
1286
+
1287
+ // Cast empty attributes like `data-rule-required` to `true`
1288
+ if ( value === "" ) {
1289
+ value = true;
1290
+ }
1291
+
1292
+ this.normalizeAttributeRule( rules, type, method, value );
1293
+ }
1294
+ return rules;
1295
+ },
1296
+
1297
+ staticRules: function( element ) {
1298
+ var rules = {},
1299
+ validator = $.data( element.form, "validator" );
1300
+
1301
+ if ( validator.settings.rules ) {
1302
+ rules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};
1303
+ }
1304
+ return rules;
1305
+ },
1306
+
1307
+ normalizeRules: function( rules, element ) {
1308
+
1309
+ // Handle dependency check
1310
+ $.each( rules, function( prop, val ) {
1311
+
1312
+ // Ignore rule when param is explicitly false, eg. required:false
1313
+ if ( val === false ) {
1314
+ delete rules[ prop ];
1315
+ return;
1316
+ }
1317
+ if ( val.param || val.depends ) {
1318
+ var keepRule = true;
1319
+ switch ( typeof val.depends ) {
1320
+ case "string":
1321
+ keepRule = !!$( val.depends, element.form ).length;
1322
+ break;
1323
+ case "function":
1324
+ keepRule = val.depends.call( element, element );
1325
+ break;
1326
+ }
1327
+ if ( keepRule ) {
1328
+ rules[ prop ] = val.param !== undefined ? val.param : true;
1329
+ } else {
1330
+ $.data( element.form, "validator" ).resetElements( $( element ) );
1331
+ delete rules[ prop ];
1332
+ }
1333
+ }
1334
+ } );
1335
+
1336
+ // Evaluate parameters
1337
+ $.each( rules, function( rule, parameter ) {
1338
+ rules[ rule ] = typeof parameter === "function" && rule !== "normalizer" ? parameter( element ) : parameter;
1339
+ } );
1340
+
1341
+ // Clean number parameters
1342
+ $.each( [ "minlength", "maxlength" ], function() {
1343
+ if ( rules[ this ] ) {
1344
+ rules[ this ] = Number( rules[ this ] );
1345
+ }
1346
+ } );
1347
+ $.each( [ "rangelength", "range" ], function() {
1348
+ var parts;
1349
+ if ( rules[ this ] ) {
1350
+ if ( Array.isArray( rules[ this ] ) ) {
1351
+ rules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];
1352
+ } else if ( typeof rules[ this ] === "string" ) {
1353
+ parts = rules[ this ].replace( /[\[\]]/g, "" ).split( /[\s,]+/ );
1354
+ rules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];
1355
+ }
1356
+ }
1357
+ } );
1358
+
1359
+ if ( $.validator.autoCreateRanges ) {
1360
+
1361
+ // Auto-create ranges
1362
+ if ( rules.min != null && rules.max != null ) {
1363
+ rules.range = [ rules.min, rules.max ];
1364
+ delete rules.min;
1365
+ delete rules.max;
1366
+ }
1367
+ if ( rules.minlength != null && rules.maxlength != null ) {
1368
+ rules.rangelength = [ rules.minlength, rules.maxlength ];
1369
+ delete rules.minlength;
1370
+ delete rules.maxlength;
1371
+ }
1372
+ }
1373
+
1374
+ return rules;
1375
+ },
1376
+
1377
+ // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
1378
+ normalizeRule: function( data ) {
1379
+ if ( typeof data === "string" ) {
1380
+ var transformed = {};
1381
+ $.each( data.split( /\s/ ), function() {
1382
+ transformed[ this ] = true;
1383
+ } );
1384
+ data = transformed;
1385
+ }
1386
+ return data;
1387
+ },
1388
+
1389
+ // https://jqueryvalidation.org/jQuery.validator.addMethod/
1390
+ addMethod: function( name, method, message ) {
1391
+ $.validator.methods[ name ] = method;
1392
+ $.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];
1393
+ if ( method.length < 3 ) {
1394
+ $.validator.addClassRules( name, $.validator.normalizeRule( name ) );
1395
+ }
1396
+ },
1397
+
1398
+ // https://jqueryvalidation.org/jQuery.validator.methods/
1399
+ methods: {
1400
+
1401
+ // https://jqueryvalidation.org/required-method/
1402
+ required: function( value, element, param ) {
1403
+
1404
+ // Check if dependency is met
1405
+ if ( !this.depend( param, element ) ) {
1406
+ return "dependency-mismatch";
1407
+ }
1408
+ if ( element.nodeName.toLowerCase() === "select" ) {
1409
+
1410
+ // Could be an array for select-multiple or a string, both are fine this way
1411
+ var val = $( element ).val();
1412
+ return val && val.length > 0;
1413
+ }
1414
+ if ( this.checkable( element ) ) {
1415
+ return this.getLength( value, element ) > 0;
1416
+ }
1417
+ return value !== undefined && value !== null && value.length > 0;
1418
+ },
1419
+
1420
+ // https://jqueryvalidation.org/email-method/
1421
+ email: function( value, element ) {
1422
+
1423
+ // From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
1424
+ // Retrieved 2014-01-14
1425
+ // If you have a problem with this implementation, report a bug against the above spec
1426
+ // Or use custom methods to implement your own email validation
1427
+ return this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );
1428
+ },
1429
+
1430
+ // https://jqueryvalidation.org/url-method/
1431
+ url: function( value, element ) {
1432
+
1433
+ // Copyright (c) 2010-2013 Diego Perini, MIT licensed
1434
+ // https://gist.github.com/dperini/729294
1435
+ // see also https://mathiasbynens.be/demo/url-regex
1436
+ // modified to allow protocol-relative URLs
1437
+ return this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( value );
1438
+ },
1439
+
1440
+ // https://jqueryvalidation.org/date-method/
1441
+ date: ( function() {
1442
+ var called = false;
1443
+
1444
+ return function( value, element ) {
1445
+ if ( !called ) {
1446
+ called = true;
1447
+ if ( this.settings.debug && window.console ) {
1448
+ console.warn(
1449
+ "The `date` method is deprecated and will be removed in version '2.0.0'.\n" +
1450
+ "Please don't use it, since it relies on the Date constructor, which\n" +
1451
+ "behaves very differently across browsers and locales. Use `dateISO`\n" +
1452
+ "instead or one of the locale specific methods in `localizations/`\n" +
1453
+ "and `additional-methods.js`."
1454
+ );
1455
+ }
1456
+ }
1457
+
1458
+ return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );
1459
+ };
1460
+ }() ),
1461
+
1462
+ // https://jqueryvalidation.org/dateISO-method/
1463
+ dateISO: function( value, element ) {
1464
+ return this.optional( element ) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );
1465
+ },
1466
+
1467
+ // https://jqueryvalidation.org/number-method/
1468
+ number: function( value, element ) {
1469
+ return this.optional( element ) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test( value );
1470
+ },
1471
+
1472
+ // https://jqueryvalidation.org/digits-method/
1473
+ digits: function( value, element ) {
1474
+ return this.optional( element ) || /^\d+$/.test( value );
1475
+ },
1476
+
1477
+ // https://jqueryvalidation.org/minlength-method/
1478
+ minlength: function( value, element, param ) {
1479
+ var length = Array.isArray( value ) ? value.length : this.getLength( value, element );
1480
+ return this.optional( element ) || length >= param;
1481
+ },
1482
+
1483
+ // https://jqueryvalidation.org/maxlength-method/
1484
+ maxlength: function( value, element, param ) {
1485
+ var length = Array.isArray( value ) ? value.length : this.getLength( value, element );
1486
+ return this.optional( element ) || length <= param;
1487
+ },
1488
+
1489
+ // https://jqueryvalidation.org/rangelength-method/
1490
+ rangelength: function( value, element, param ) {
1491
+ var length = Array.isArray( value ) ? value.length : this.getLength( value, element );
1492
+ return this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );
1493
+ },
1494
+
1495
+ // https://jqueryvalidation.org/min-method/
1496
+ min: function( value, element, param ) {
1497
+ return this.optional( element ) || value >= param;
1498
+ },
1499
+
1500
+ // https://jqueryvalidation.org/max-method/
1501
+ max: function( value, element, param ) {
1502
+ return this.optional( element ) || value <= param;
1503
+ },
1504
+
1505
+ // https://jqueryvalidation.org/range-method/
1506
+ range: function( value, element, param ) {
1507
+ return this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );
1508
+ },
1509
+
1510
+ // https://jqueryvalidation.org/step-method/
1511
+ step: function( value, element, param ) {
1512
+ var type = $( element ).attr( "type" ),
1513
+ errorMessage = "Step attribute on input type " + type + " is not supported.",
1514
+ supportedTypes = [ "text", "number", "range" ],
1515
+ re = new RegExp( "\\b" + type + "\\b" ),
1516
+ notSupported = type && !re.test( supportedTypes.join() ),
1517
+ decimalPlaces = function( num ) {
1518
+ var match = ( "" + num ).match( /(?:\.(\d+))?$/ );
1519
+ if ( !match ) {
1520
+ return 0;
1521
+ }
1522
+
1523
+ // Number of digits right of decimal point.
1524
+ return match[ 1 ] ? match[ 1 ].length : 0;
1525
+ },
1526
+ toInt = function( num ) {
1527
+ return Math.round( num * Math.pow( 10, decimals ) );
1528
+ },
1529
+ valid = true,
1530
+ decimals;
1531
+
1532
+ // Works only for text, number and range input types
1533
+ // TODO find a way to support input types date, datetime, datetime-local, month, time and week
1534
+ if ( notSupported ) {
1535
+ throw new Error( errorMessage );
1536
+ }
1537
+
1538
+ decimals = decimalPlaces( param );
1539
+
1540
+ // Value can't have too many decimals
1541
+ if ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {
1542
+ valid = false;
1543
+ }
1544
+
1545
+ return this.optional( element ) || valid;
1546
+ },
1547
+
1548
+ // https://jqueryvalidation.org/equalTo-method/
1549
+ equalTo: function( value, element, param ) {
1550
+
1551
+ // Bind to the blur event of the target in order to revalidate whenever the target field is updated
1552
+ var target = $( param );
1553
+ if ( this.settings.onfocusout && target.not( ".validate-equalTo-blur" ).length ) {
1554
+ target.addClass( "validate-equalTo-blur" ).on( "blur.validate-equalTo", function() {
1555
+ $( element ).valid();
1556
+ } );
1557
+ }
1558
+ return value === target.val();
1559
+ },
1560
+
1561
+ // https://jqueryvalidation.org/remote-method/
1562
+ remote: function( value, element, param, method ) {
1563
+ if ( this.optional( element ) ) {
1564
+ return "dependency-mismatch";
1565
+ }
1566
+
1567
+ method = typeof method === "string" && method || "remote";
1568
+
1569
+ var previous = this.previousValue( element, method ),
1570
+ validator, data, optionDataString;
1571
+
1572
+ if ( !this.settings.messages[ element.name ] ) {
1573
+ this.settings.messages[ element.name ] = {};
1574
+ }
1575
+ previous.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];
1576
+ this.settings.messages[ element.name ][ method ] = previous.message;
1577
+
1578
+ param = typeof param === "string" && { url: param } || param;
1579
+ optionDataString = $.param( $.extend( { data: value }, param.data ) );
1580
+ if ( previous.old === optionDataString ) {
1581
+ return previous.valid;
1582
+ }
1583
+
1584
+ previous.old = optionDataString;
1585
+ validator = this;
1586
+ this.startRequest( element );
1587
+ data = {};
1588
+ data[ element.name ] = value;
1589
+ $.ajax( $.extend( true, {
1590
+ mode: "abort",
1591
+ port: "validate" + element.name,
1592
+ dataType: "json",
1593
+ data: data,
1594
+ context: validator.currentForm,
1595
+ success: function( response ) {
1596
+ var valid = response === true || response === "true",
1597
+ errors, message, submitted;
1598
+
1599
+ validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
1600
+ if ( valid ) {
1601
+ submitted = validator.formSubmitted;
1602
+ validator.resetInternals();
1603
+ validator.toHide = validator.errorsFor( element );
1604
+ validator.formSubmitted = submitted;
1605
+ validator.successList.push( element );
1606
+ validator.invalid[ element.name ] = false;
1607
+ validator.showErrors();
1608
+ } else {
1609
+ errors = {};
1610
+ message = response || validator.defaultMessage( element, { method: method, parameters: value } );
1611
+ errors[ element.name ] = previous.message = message;
1612
+ validator.invalid[ element.name ] = true;
1613
+ validator.showErrors( errors );
1614
+ }
1615
+ previous.valid = valid;
1616
+ validator.stopRequest( element, valid );
1617
+ }
1618
+ }, param ) );
1619
+ return "pending";
1620
+ }
1621
+ }
1622
+
1623
+ } );
1624
+
1625
+ // Ajax mode: abort
1626
+ // usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
1627
+ // if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
1628
+
1629
+ var pendingRequests = {},
1630
+ ajax;
1631
+
1632
+ // Use a prefilter if available (1.5+)
1633
+ if ( $.ajaxPrefilter ) {
1634
+ $.ajaxPrefilter( function( settings, _, xhr ) {
1635
+ var port = settings.port;
1636
+ if ( settings.mode === "abort" ) {
1637
+ if ( pendingRequests[ port ] ) {
1638
+ pendingRequests[ port ].abort();
1639
+ }
1640
+ pendingRequests[ port ] = xhr;
1641
+ }
1642
+ } );
1643
+ } else {
1644
+
1645
+ // Proxy ajax
1646
+ ajax = $.ajax;
1647
+ $.ajax = function( settings ) {
1648
+ var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
1649
+ port = ( "port" in settings ? settings : $.ajaxSettings ).port;
1650
+ if ( mode === "abort" ) {
1651
+ if ( pendingRequests[ port ] ) {
1652
+ pendingRequests[ port ].abort();
1653
+ }
1654
+ pendingRequests[ port ] = ajax.apply( this, arguments );
1655
+ return pendingRequests[ port ];
1656
+ }
1657
+ return ajax.apply( this, arguments );
1658
+ };
1659
+ }
1660
+ return $;
1661
+ }));
js/messages_ar.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: AR (Arabic; العربية)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "هذا الحقل إلزامي",
7
+ remote: "يرجى تصحيح هذا الحقل للمتابعة",
8
+ email: "رجاء إدخال عنوان بريد إلكتروني صحيح",
9
+ url: "رجاء إدخال عنوان موقع إلكتروني صحيح",
10
+ date: "رجاء إدخال تاريخ صحيح",
11
+ dateISO: "رجاء إدخال تاريخ صحيح (ISO)",
12
+ number: "رجاء إدخال عدد بطريقة صحيحة",
13
+ digits: "رجاء إدخال أرقام فقط",
14
+ creditcard: "رجاء إدخال رقم بطاقة ائتمان صحيح",
15
+ equalTo: "رجاء إدخال نفس القيمة",
16
+ extension: "رجاء إدخال ملف بامتداد موافق عليه",
17
+ maxlength: jQuery.validator.format( "الحد الأقصى لعدد الحروف هو {0}" ),
18
+ minlength: jQuery.validator.format( "الحد الأدنى لعدد الحروف هو {0}" ),
19
+ rangelength: jQuery.validator.format( "عدد الحروف يجب أن يكون بين {0} و {1}" ),
20
+ range: jQuery.validator.format( "رجاء إدخال عدد قيمته بين {0} و {1}" ),
21
+ max: jQuery.validator.format( "رجاء إدخال عدد أقل من أو يساوي {0}" ),
22
+ min: jQuery.validator.format( "رجاء إدخال عدد أكبر من أو يساوي {0}" )
23
+ } );
js/messages_az.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: Az (Azeri; azərbaycan dili)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Bu xana mütləq doldurulmalıdır.",
7
+ remote: "Zəhmət olmasa, düzgün məna daxil edin.",
8
+ email: "Zəhmət olmasa, düzgün elektron poçt daxil edin.",
9
+ url: "Zəhmət olmasa, düzgün URL daxil edin.",
10
+ date: "Zəhmət olmasa, düzgün tarix daxil edin.",
11
+ dateISO: "Zəhmət olmasa, düzgün ISO formatlı tarix daxil edin.",
12
+ number: "Zəhmət olmasa, düzgün rəqəm daxil edin.",
13
+ digits: "Zəhmət olmasa, yalnız rəqəm daxil edin.",
14
+ creditcard: "Zəhmət olmasa, düzgün kredit kart nömrəsini daxil edin.",
15
+ equalTo: "Zəhmət olmasa, eyni mənanı bir daha daxil edin.",
16
+ extension: "Zəhmət olmasa, düzgün genişlənməyə malik faylı seçin.",
17
+ maxlength: jQuery.validator.format( "Zəhmət olmasa, {0} simvoldan çox olmayaraq daxil edin." ),
18
+ minlength: jQuery.validator.format( "Zəhmət olmasa, {0} simvoldan az olmayaraq daxil edin." ),
19
+ rangelength: jQuery.validator.format( "Zəhmət olmasa, {0} - {1} aralığında uzunluğa malik simvol daxil edin." ),
20
+ range: jQuery.validator.format( "Zəhmət olmasa, {0} - {1} aralığında rəqəm daxil edin." ),
21
+ max: jQuery.validator.format( "Zəhmət olmasa, {0} və ondan kiçik rəqəm daxil edin." ),
22
+ min: jQuery.validator.format( "Zəhmət olmasa, {0} və ondan böyük rəqəm daxil edin." )
23
+ } );
js/messages_bg.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: BG (Bulgarian; български език)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Полето е задължително.",
7
+ remote: "Моля, въведете правилната стойност.",
8
+ email: "Моля, въведете валиден email.",
9
+ url: "Моля, въведете валидно URL.",
10
+ date: "Моля, въведете валидна дата.",
11
+ dateISO: "Моля, въведете валидна дата (ISO).",
12
+ number: "Моля, въведете валиден номер.",
13
+ digits: "Моля, въведете само цифри.",
14
+ creditcard: "Моля, въведете валиден номер на кредитна карта.",
15
+ equalTo: "Моля, въведете същата стойност отново.",
16
+ extension: "Моля, въведете стойност с валидно разширение.",
17
+ maxlength: jQuery.validator.format( "Моля, въведете не повече от {0} символа." ),
18
+ minlength: jQuery.validator.format( "Моля, въведете поне {0} символа." ),
19
+ rangelength: jQuery.validator.format( "Моля, въведете стойност с дължина между {0} и {1} символа." ),
20
+ range: jQuery.validator.format( "Моля, въведете стойност между {0} и {1}." ),
21
+ max: jQuery.validator.format( "Моля, въведете стойност по-малка или равна на {0}." ),
22
+ min: jQuery.validator.format( "Моля, въведете стойност по-голяма или равна на {0}." )
23
+ } );
js/messages_bn_BD.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: bn_BD (Bengali, Bangladesh)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "এই তথ্যটি আবশ্যক।",
7
+ remote: "এই তথ্যটি ঠিক করুন।",
8
+ email: "অনুগ্রহ করে একটি সঠিক মেইল ঠিকানা লিখুন।",
9
+ url: "অনুগ্রহ করে একটি সঠিক লিঙ্ক দিন।",
10
+ date: "তারিখ সঠিক নয়।",
11
+ dateISO: "অনুগ্রহ করে একটি সঠিক (ISO) তারিখ লিখুন।",
12
+ number: "অনুগ্রহ করে একটি সঠিক নম্বর লিখুন।",
13
+ digits: "এখানে শুধু সংখ্যা ব্যবহার করা যাবে।",
14
+ creditcard: "অনুগ্রহ করে একটি ক্রেডিট কার্ডের সঠিক নম্বর লিখুন।",
15
+ equalTo: "একই মান আবার লিখুন।",
16
+ extension: "সঠিক ধরনের ফাইল আপলোড করুন।",
17
+ maxlength: jQuery.validator.format( "{0}টির বেশি অক্ষর লেখা যাবে না।" ),
18
+ minlength: jQuery.validator.format( "{0}টির কম অক্ষর লেখা যাবে না।" ),
19
+ rangelength: jQuery.validator.format( "{0} থেকে {1} টি অক্ষর সম্বলিত মান লিখুন।" ),
20
+ range: jQuery.validator.format( "{0} থেকে {1} এর মধ্যে একটি মান ব্যবহার করুন।" ),
21
+ max: jQuery.validator.format( "অনুগ্রহ করে {0} বা তার চাইতে কম মান ব্যবহার করুন।" ),
22
+ min: jQuery.validator.format( "অনুগ্রহ করে {0} বা তার চাইতে বেশি মান ব্যবহার করুন।" )
23
+ } );
js/messages_ca.js CHANGED
@@ -1,23 +1,23 @@
1
  /*
2
  * Translated default messages for the jQuery validation plugin.
3
- * Locale: CA
4
  */
5
- jQuery.extend(jQuery.validator.messages, {
6
- required: "Aquest camp és obligatori.",
7
- remote: "Si us plau, omple aquest camp.",
8
- email: "Si us plau, escriu una adreça de correu-e vàlida",
9
- url: "Si us plau, escriu una URL vàlida.",
10
- date: "Si us plau, escriu una data vàlida.",
11
- dateISO: "Si us plau, escriu una data (ISO) vàlida.",
12
- number: "Si us plau, escriu un número enter vàlid.",
13
- digits: "Si us plau, escriu només dígits.",
14
- creditcard: "Si us plau, escriu un número de tarjeta vàlid.",
15
- equalTo: "Si us plau, escriu el maateix valor de nou.",
16
- accept: "Si us plau, escriu un valor amb una extensió acceptada.",
17
- maxlength: jQuery.validator.format("Si us plau, no escriguis més de {0} caracters."),
18
- minlength: jQuery.validator.format("Si us plau, no escriguis menys de {0} caracters."),
19
- rangelength: jQuery.validator.format("Si us plau, escriu un valor entre {0} i {1} caracters."),
20
- range: jQuery.validator.format("Si us plau, escriu un valor entre {0} i {1}."),
21
- max: jQuery.validator.format("Si us plau, escriu un valor menor o igual a {0}."),
22
- min: jQuery.validator.format("Si us plau, escriu un valor major o igual a {0}.")
23
- });
1
  /*
2
  * Translated default messages for the jQuery validation plugin.
3
+ * Locale: CA (Catalan; català)
4
  */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Aquest camp és obligatori.",
7
+ remote: "Si us plau, omple aquest camp.",
8
+ email: "Si us plau, escriu una adreça de correu-e vàlida.",
9
+ url: "Si us plau, escriu una URL vàlida.",
10
+ date: "Si us plau, escriu una data vàlida.",
11
+ dateISO: "Si us plau, escriu una data (ISO) vàlida.",
12
+ number: "Si us plau, escriu un número enter vàlid.",
13
+ digits: "Si us plau, escriu només dígits.",
14
+ creditcard: "Si us plau, escriu un número de tarjeta vàlid.",
15
+ equalTo: "Si us plau, escriu el mateix valor de nou.",
16
+ extension: "Si us plau, escriu un valor amb una extensió acceptada.",
17
+ maxlength: jQuery.validator.format( "Si us plau, no escriguis més de {0} caracters." ),
18
+ minlength: jQuery.validator.format( "Si us plau, no escriguis menys de {0} caracters." ),
19
+ rangelength: jQuery.validator.format( "Si us plau, escriu un valor entre {0} i {1} caracters." ),
20
+ range: jQuery.validator.format( "Si us plau, escriu un valor entre {0} i {1}." ),
21
+ max: jQuery.validator.format( "Si us plau, escriu un valor menor o igual a {0}." ),
22
+ min: jQuery.validator.format( "Si us plau, escriu un valor major o igual a {0}." )
23
+ } );
js/messages_cs.js ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: CS (Czech; čeština, český jazyk)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Tento údaj je povinný.",
7
+ remote: "Prosím, opravte tento údaj.",
8
+ email: "Prosím, zadejte platný e-mail.",
9
+ url: "Prosím, zadejte platné URL.",
10
+ date: "Prosím, zadejte platné datum.",
11
+ dateISO: "Prosím, zadejte platné datum (ISO).",
12
+ number: "Prosím, zadejte číslo.",
13
+ digits: "Prosím, zadávejte pouze číslice.",
14
+ creditcard: "Prosím, zadejte číslo kreditní karty.",
15
+ equalTo: "Prosím, zadejte znovu stejnou hodnotu.",
16
+ extension: "Prosím, zadejte soubor se správnou příponou.",
17
+ maxlength: jQuery.validator.format( "Prosím, zadejte nejvíce {0} znaků." ),
18
+ minlength: jQuery.validator.format( "Prosím, zadejte nejméně {0} znaků." ),
19
+ rangelength: jQuery.validator.format( "Prosím, zadejte od {0} do {1} znaků." ),
20
+ range: jQuery.validator.format( "Prosím, zadejte hodnotu od {0} do {1}." ),
21
+ max: jQuery.validator.format( "Prosím, zadejte hodnotu menší nebo rovnu {0}." ),
22
+ min: jQuery.validator.format( "Prosím, zadejte hodnotu větší nebo rovnu {0}." ),
23
+ step: jQuery.validator.format( "Musí být násobkem čísla {0}." )
24
+ } );
js/messages_da.js ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: DA (Danish; dansk)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Dette felt er påkrævet.",
7
+ remote: "Ret venligst dette felt.",
8
+ email: "Indtast en gyldig email-adresse.",
9
+ url: "Indtast en gyldig URL.",
10
+ date: "Indtast en gyldig dato.",
11
+ number: "Indtast et tal.",
12
+ digits: "Indtast kun cifre.",
13
+ creditcard: "Indtast et gyldigt kreditkortnummer.",
14
+ equalTo: "Indtast den samme værdi igen.",
15
+ time: "Angiv en gyldig tid mellem kl. 00:00 og 23:59.",
16
+ ipv4: "Angiv venligst en gyldig IPv4-adresse.",
17
+ ipv6: "Angiv venligst en gyldig IPv6-adresse.",
18
+ require_from_group: jQuery.validator.format( "Angiv mindst {0} af disse felter." ),
19
+ extension: "Indtast venligst en værdi med en gyldig endelse.",
20
+ pattern: "Ugyldigt format.",
21
+ lettersonly: "Angiv venligst kun bogstaver.",
22
+ nowhitespace: "Må ikke indholde mellemrum.",
23
+ maxlength: jQuery.validator.format( "Indtast højst {0} tegn." ),
24
+ minlength: jQuery.validator.format( "Indtast mindst {0} tegn." ),
25
+ rangelength: jQuery.validator.format( "Indtast mindst {0} og højst {1} tegn." ),
26
+ range: jQuery.validator.format( "Angiv en værdi mellem {0} og {1}." ),
27
+ max: jQuery.validator.format( "Angiv en værdi der højst er {0}." ),
28
+ min: jQuery.validator.format( "Angiv en værdi der mindst er {0}." ),
29
+ minWords: jQuery.validator.format( "Indtast venligst mindst {0} ord." ),
30
+ maxWords: jQuery.validator.format( "Indtast venligst højst {0} ord." ),
31
+ step: jQuery.validator.format( "Angiv en værdi gange {0}." ),
32
+ notEqualTo: "Angiv en anden værdi, værdierne må ikke være det samme.",
33
+ integer: "Angiv et ikke-decimaltal, der er positivt eller negativt."
34
+ } );
js/messages_de.js CHANGED
@@ -1,20 +1,70 @@
1
- /*
2
- * Translated default messages for the jQuery validation plugin.
3
- * Locale: DE
4
- */
5
- jQuery.extend(jQuery.validator.messages, {
6
- required: "Dieses Feld ist ein Pflichtfeld.",
7
- maxlength: jQuery.validator.format("Geben Sie bitte maximal {0} Zeichen ein."),
8
- minlength: jQuery.validator.format("Geben Sie bitte mindestens {0} Zeichen ein."),
9
- rangelength: jQuery.validator.format("Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein."),
10
- email: "Geben Sie bitte eine gültige E-Mail Adresse ein.",
11
- url: "Geben Sie bitte eine gültige URL ein.",
12
- date: "Bitte geben Sie ein gültiges Datum ein.",
13
- number: "Geben Sie bitte eine Nummer ein.",
14
- digits: "Geben Sie bitte nur Ziffern ein.",
15
- equalTo: "Bitte denselben Wert wiederholen.",
16
- range: jQuery.validator.format("Geben Sie bitten einen Wert zwischen {0} und {1}."),
17
- max: jQuery.validator.format("Geben Sie bitte einen Wert kleiner oder gleich {0} ein."),
18
- min: jQuery.validator.format("Geben Sie bitte einen Wert größer oder gleich {0} ein."),
19
- creditcard: "Geben Sie bitte ein gültige Kreditkarten-Nummer ein."
20
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: DE (German, Deutsch)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Dieses Feld ist ein Pflichtfeld.",
7
+ maxlength: jQuery.validator.format( "Geben Sie bitte maximal {0} Zeichen ein." ),
8
+ minlength: jQuery.validator.format( "Geben Sie bitte mindestens {0} Zeichen ein." ),
9
+ rangelength: jQuery.validator.format( "Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein." ),
10
+ email: "Geben Sie bitte eine gültige E-Mail-Adresse ein.",
11
+ url: "Geben Sie bitte eine gültige URL ein.",
12
+ date: "Geben Sie bitte ein gültiges Datum ein.",
13
+ number: "Geben Sie bitte eine Nummer ein.",
14
+ digits: "Geben Sie bitte nur Ziffern ein.",
15
+ equalTo: "Wiederholen Sie bitte denselben Wert.",
16
+ range: jQuery.validator.format( "Geben Sie bitte einen Wert zwischen {0} und {1} ein." ),
17
+ max: jQuery.validator.format( "Geben Sie bitte einen Wert kleiner oder gleich {0} ein." ),
18
+ min: jQuery.validator.format( "Geben Sie bitte einen Wert größer oder gleich {0} ein." ),
19
+ creditcard: "Geben Sie bitte eine gültige Kreditkarten-Nummer ein.",
20
+ remote: "Korrigieren Sie bitte dieses Feld.",
21
+ dateISO: "Geben Sie bitte ein gültiges Datum ein (ISO-Format).",
22
+ step: jQuery.validator.format( "Geben Sie bitte ein Vielfaches von {0} ein." ),
23
+ maxWords: jQuery.validator.format( "Geben Sie bitte {0} Wörter oder weniger ein." ),
24
+ minWords: jQuery.validator.format( "Geben Sie bitte mindestens {0} Wörter ein." ),
25
+ rangeWords: jQuery.validator.format( "Geben Sie bitte zwischen {0} und {1} Wörtern ein." ),
26
+ accept: "Geben Sie bitte einen Wert mit einem gültigen MIME-Typ ein.",
27
+ alphanumeric: "Geben Sie bitte nur Buchstaben (keine Umlaute), Zahlen oder Unterstriche ein.",
28
+ bankaccountNL: "Geben Sie bitte eine gültige Kontonummer ein.",
29
+ bankorgiroaccountNL: "Geben Sie bitte eine gültige Bank- oder Girokontonummer ein.",
30
+ bic: "Geben Sie bitte einen gültigen BIC-Code ein.",
31
+ cifES: "Geben Sie bitte eine gültige CIF-Nummer ein.",
32
+ cpfBR: "Geben Sie bitte eine gültige CPF-Nummer ein.",
33
+ creditcardtypes: "Geben Sie bitte eine gültige Kreditkarten-Nummer ein.",
34
+ currency: "Geben Sie bitte eine gültige Währung ein.",
35
+ extension: "Geben Sie bitte einen Wert mit einer gültigen Erweiterung ein.",
36
+ giroaccountNL: "Geben Sie bitte eine gültige Girokontonummer ein.",
37
+ iban: "Geben Sie bitte eine gültige IBAN ein.",
38
+ integer: "Geben Sie bitte eine positive oder negative Nicht-Dezimalzahl ein.",
39
+ ipv4: "Geben Sie bitte eine gültige IPv4-Adresse ein.",
40
+ ipv6: "Geben Sie bitte eine gültige IPv6-Adresse ein.",
41
+ lettersonly: "Geben Sie bitte nur Buchstaben ein.",
42
+ letterswithbasicpunc: "Geben Sie bitte nur Buchstaben oder Interpunktion ein.",
43
+ mobileNL: "Geben Sie bitte eine gültige Handynummer ein.",
44
+ mobileUK: "Geben Sie bitte eine gültige Handynummer ein.",
45
+ netmask: "Geben Sie bitte eine gültige Netzmaske ein.",
46
+ nieES: "Geben Sie bitte eine gültige NIE-Nummer ein.",
47
+ nifES: "Geben Sie bitte eine gültige NIF-Nummer ein.",
48
+ nipPL: "Geben Sie bitte eine gültige NIP-Nummer ein.",
49
+ notEqualTo: "Geben Sie bitte einen anderen Wert ein. Die Werte dürfen nicht gleich sein.",
50
+ nowhitespace: "Kein Leerzeichen bitte.",
51
+ pattern: "Ungültiges Format.",
52
+ phoneNL: "Geben Sie bitte eine gültige Telefonnummer ein.",
53
+ phonesUK: "Geben Sie bitte eine gültige britische Telefonnummer ein.",
54
+ phoneUK: "Geben Sie bitte eine gültige Telefonnummer ein.",
55
+ phoneUS: "Geben Sie bitte eine gültige Telefonnummer ein.",
56
+ postalcodeBR: "Geben Sie bitte eine gültige brasilianische Postleitzahl ein.",
57
+ postalCodeCA: "Geben Sie bitte eine gültige kanadische Postleitzahl ein.",
58
+ postalcodeIT: "Geben Sie bitte eine gültige italienische Postleitzahl ein.",
59
+ postalcodeNL: "Geben Sie bitte eine gültige niederländische Postleitzahl ein.",
60
+ postcodeUK: "Geben Sie bitte eine gültige britische Postleitzahl ein.",
61
+ require_from_group: jQuery.validator.format( "Füllen Sie bitte mindestens {0} dieser Felder aus." ),
62
+ skip_or_fill_minimum: jQuery.validator.format( "Überspringen Sie bitte diese Felder oder füllen Sie mindestens {0} von ihnen aus." ),
63
+ stateUS: "Geben Sie bitte einen gültigen US-Bundesstaat ein.",
64
+ strippedminlength: jQuery.validator.format( "Geben Sie bitte mindestens {0} Zeichen ein." ),
65
+ time: "Geben Sie bitte eine gültige Uhrzeit zwischen 00:00 und 23:59 ein.",
66
+ time12h: "Geben Sie bitte eine gültige Uhrzeit im 12-Stunden-Format ein.",
67
+ vinUS: "Die angegebene Fahrzeugidentifikationsnummer (VIN) ist ungültig.",
68
+ zipcodeUS: "Die angegebene US-Postleitzahl ist ungültig.",
69
+ ziprange: "Ihre Postleitzahl muss im Bereich 902xx-xxxx bis 905xx-xxxx liegen."
70
+ } );
js/messages_el.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: EL (Greek; ελληνικά)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Αυτό το πεδίο είναι υποχρεωτικό.",
7
+ remote: "Παρακαλώ διορθώστε αυτό το πεδίο.",
8
+ email: "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση email.",
9
+ url: "Παρακαλώ εισάγετε ένα έγκυρο URL.",
10
+ date: "Παρακαλώ εισάγετε μια έγκυρη ημερομηνία.",
11
+ dateISO: "Παρακαλώ εισάγετε μια έγκυρη ημερομηνία (ISO).",
12
+ number: "Παρακαλώ εισάγετε έναν έγκυρο αριθμό.",
13
+ digits: "Παρακαλώ εισάγετε μόνο αριθμητικά ψηφία.",
14
+ creditcard: "Παρακαλώ εισάγετε έναν έγκυρο αριθμό πιστωτικής κάρτας.",
15
+ equalTo: "Παρακαλώ εισάγετε την ίδια τιμή ξανά.",
16
+ extension: "Παρακαλώ εισάγετε μια τιμή με έγκυρη επέκταση αρχείου.",
17
+ maxlength: jQuery.validator.format( "Παρακαλώ εισάγετε μέχρι και {0} χαρακτήρες." ),
18
+ minlength: jQuery.validator.format( "Παρακαλώ εισάγετε τουλάχιστον {0} χαρακτήρες." ),
19
+ rangelength: jQuery.validator.format( "Παρακαλώ εισάγετε μια τιμή με μήκος μεταξύ {0} και {1} χαρακτήρων." ),
20
+ range: jQuery.validator.format( "Παρακαλώ εισάγετε μια τιμή μεταξύ {0} και {1}." ),
21
+ max: jQuery.validator.format( "Παρακαλώ εισάγετε μια τιμή μικρότερη ή ίση του {0}." ),
22
+ min: jQuery.validator.format( "Παρακαλώ εισάγετε μια τιμή μεγαλύτερη ή ίση του {0}." )
23
+ } );
js/messages_es.js CHANGED
@@ -1,23 +1,26 @@
1
- /*
2
- * Translated default messages for the jQuery validation plugin.
3
- * Locale: ES
4
- */
5
- jQuery.extend(jQuery.validator.messages, {
6
- required: "Este campo es obligatorio.",
7
- remote: "Por favor, rellena este campo.",
8
- email: "Por favor, escribe una dirección de correo válida",
9
- url: "Por favor, escribe una URL válida.",
10
- date: "Por favor, escribe una fecha válida.",
11
- dateISO: "Por favor, escribe una fecha (ISO) válida.",
12
- number: "Por favor, escribe un número entero válido.",
13
- digits: "Por favor, escribe sólo dígitos.",
14
- creditcard: "Por favor, escribe un número de tarjeta válido.",
15
- equalTo: "Por favor, escribe el mismo valor de nuevo.",
16
- accept: "Por favor, escribe un valor con una extensión aceptada.",
17
- maxlength: jQuery.validator.format("Por favor, no escribas más de {0} caracteres."),
18
- minlength: jQuery.validator.format("Por favor, no escribas menos de {0} caracteres."),
19
- rangelength: jQuery.validator.format("Por favor, escribe un valor entre {0} y {1} caracteres."),
20
- range: jQuery.validator.format("Por favor, escribe un valor entre {0} y {1}."),
21
- max: jQuery.validator.format("Por favor, escribe un valor menor o igual a {0}."),
22
- min: jQuery.validator.format("Por favor, escribe un valor mayor o igual a {0}.")
23
- });
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: ES (Spanish; Español)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Este campo es obligatorio.",
7
+ remote: "Por favor, rellena este campo.",
8
+ email: "Por favor, escribe una dirección de correo válida.",
9
+ url: "Por favor, escribe una URL válida.",
10
+ date: "Por favor, escribe una fecha válida.",
11
+ dateISO: "Por favor, escribe una fecha (ISO) válida.",
12
+ number: "Por favor, escribe un número válido.",
13
+ digits: "Por favor, escribe sólo dígitos.",
14
+ creditcard: "Por favor, escribe un número de tarjeta válido.",
15
+ equalTo: "Por favor, escribe el mismo valor de nuevo.",
16
+ extension: "Por favor, escribe un valor con una extensión aceptada.",
17
+ maxlength: jQuery.validator.format( "Por favor, no escribas más de {0} caracteres." ),
18
+ minlength: jQuery.validator.format( "Por favor, no escribas menos de {0} caracteres." ),
19
+ rangelength: jQuery.validator.format( "Por favor, escribe un valor entre {0} y {1} caracteres." ),
20
+ range: jQuery.validator.format( "Por favor, escribe un valor entre {0} y {1}." ),
21
+ max: jQuery.validator.format( "Por favor, escribe un valor menor o igual a {0}." ),
22
+ min: jQuery.validator.format( "Por favor, escribe un valor mayor o igual a {0}." ),
23
+ nifES: "Por favor, escribe un NIF válido.",
24
+ nieES: "Por favor, escribe un NIE válido.",
25
+ cifES: "Por favor, escribe un CIF válido."
26
+ } );
js/messages_es_AR.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: ES (Spanish; Español)
4
+ * Region: AR (Argentina)
5
+ */
6
+ jQuery.extend( jQuery.validator.messages, {
7
+ required: "Este campo es obligatorio.",
8
+ remote: "Por favor, completá este campo.",
9
+ email: "Por favor, escribí una dirección de correo válida.",
10
+ url: "Por favor, escribí una URL válida.",
11
+ date: "Por favor, escribí una fecha válida.",
12
+ dateISO: "Por favor, escribí una fecha (ISO) válida.",
13
+ number: "Por favor, escribí un número entero válido.",
14
+ digits: "Por favor, escribí sólo dígitos.",
15
+ creditcard: "Por favor, escribí un número de tarjeta válido.",
16
+ equalTo: "Por favor, escribí el mismo valor de nuevo.",
17
+ extension: "Por favor, escribí un valor con una extensión aceptada.",
18
+ maxlength: jQuery.validator.format( "Por favor, no escribas más de {0} caracteres." ),
19
+ minlength: jQuery.validator.format( "Por favor, no escribas menos de {0} caracteres." ),
20
+ rangelength: jQuery.validator.format( "Por favor, escribí un valor entre {0} y {1} caracteres." ),
21
+ range: jQuery.validator.format( "Por favor, escribí un valor entre {0} y {1}." ),
22
+ max: jQuery.validator.format( "Por favor, escribí un valor menor o igual a {0}." ),
23
+ min: jQuery.validator.format( "Por favor, escribí un valor mayor o igual a {0}." ),
24
+ nifES: "Por favor, escribí un NIF válido.",
25
+ nieES: "Por favor, escribí un NIE válido.",
26
+ cifES: "Por favor, escribí un CIF válido."
27
+ } );
js/messages_es_PE.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: ES (Spanish; Español)
4
+ * Region: PE (Perú)
5
+ */
6
+ jQuery.extend( jQuery.validator.messages, {
7
+ required: "Este campo es obligatorio.",
8
+ remote: "Por favor, llene este campo.",
9
+ email: "Por favor, escriba un correo electrónico válido.",
10
+ url: "Por favor, escriba una URL válida.",
11
+ date: "Por favor, escriba una fecha válida.",
12
+ dateISO: "Por favor, escriba una fecha (ISO) válida.",
13
+ number: "Por favor, escriba un número válido.",
14
+ digits: "Por favor, escriba sólo dígitos.",
15
+ creditcard: "Por favor, escriba un número de tarjeta válido.",
16
+ equalTo: "Por favor, escriba el mismo valor de nuevo.",
17
+ extension: "Por favor, escriba un valor con una extensión permitida.",
18
+ maxlength: jQuery.validator.format( "Por favor, no escriba más de {0} caracteres." ),
19
+ minlength: jQuery.validator.format( "Por favor, no escriba menos de {0} caracteres." ),
20
+ rangelength: jQuery.validator.format( "Por favor, escriba un valor entre {0} y {1} caracteres." ),
21
+ range: jQuery.validator.format( "Por favor, escriba un valor entre {0} y {1}." ),
22
+ max: jQuery.validator.format( "Por favor, escriba un valor menor o igual a {0}." ),
23
+ min: jQuery.validator.format( "Por favor, escriba un valor mayor o igual a {0}." ),
24
+ nifES: "Por favor, escriba un NIF válido.",
25
+ nieES: "Por favor, escriba un NIE válido.",
26
+ cifES: "Por favor, escriba un CIF válido."
27
+ } );
js/messages_et.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: ET (Estonian; eesti, eesti keel)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "See väli peab olema täidetud.",
7
+ maxlength: jQuery.validator.format( "Palun sisestage vähem kui {0} tähemärki." ),
8
+ minlength: jQuery.validator.format( "Palun sisestage vähemalt {0} tähemärki." ),
9
+ rangelength: jQuery.validator.format( "Palun sisestage väärtus vahemikus {0} kuni {1} tähemärki." ),
10
+ email: "Palun sisestage korrektne e-maili aadress.",
11
+ url: "Palun sisestage korrektne URL.",
12
+ date: "Palun sisestage korrektne kuupäev.",
13
+ dateISO: "Palun sisestage korrektne kuupäev (YYYY-MM-DD).",
14
+ number: "Palun sisestage korrektne number.",
15
+ digits: "Palun sisestage ainult numbreid.",
16
+ equalTo: "Palun sisestage sama väärtus uuesti.",
17
+ range: jQuery.validator.format( "Palun sisestage väärtus vahemikus {0} kuni {1}." ),
18
+ max: jQuery.validator.format( "Palun sisestage väärtus, mis on väiksem või võrdne arvuga {0}." ),
19
+ min: jQuery.validator.format( "Palun sisestage väärtus, mis on suurem või võrdne arvuga {0}." ),
20
+ creditcard: "Palun sisestage korrektne krediitkaardi number."
21
+ } );
js/messages_eu.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: EU (Basque; euskara, euskera)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Eremu hau beharrezkoa da.",
7
+ remote: "Mesedez, bete eremu hau.",
8
+ email: "Mesedez, idatzi baliozko posta helbide bat.",
9
+ url: "Mesedez, idatzi baliozko URL bat.",
10
+ date: "Mesedez, idatzi baliozko data bat.",
11
+ dateISO: "Mesedez, idatzi baliozko (ISO) data bat.",
12
+ number: "Mesedez, idatzi baliozko zenbaki oso bat.",
13
+ digits: "Mesedez, idatzi digituak soilik.",
14
+ creditcard: "Mesedez, idatzi baliozko txartel zenbaki bat.",
15
+ equalTo: "Mesedez, idatzi berdina berriro ere.",
16
+ extension: "Mesedez, idatzi onartutako luzapena duen balio bat.",
17
+ maxlength: jQuery.validator.format( "Mesedez, ez idatzi {0} karaktere baino gehiago." ),
18
+ minlength: jQuery.validator.format( "Mesedez, ez idatzi {0} karaktere baino gutxiago." ),
19
+ rangelength: jQuery.validator.format( "Mesedez, idatzi {0} eta {1} karaktere arteko balio bat." ),
20
+ range: jQuery.validator.format( "Mesedez, idatzi {0} eta {1} arteko balio bat." ),
21
+ max: jQuery.validator.format( "Mesedez, idatzi {0} edo txikiagoa den balio bat." ),
22
+ min: jQuery.validator.format( "Mesedez, idatzi {0} edo handiagoa den balio bat." )
23
+ } );
js/messages_fa.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: FA (Persian; فارسی)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "تکمیل این فیلد اجباری است.",
7
+ remote: "لطفا این فیلد را تصحیح کنید.",
8
+ email: "لطفا یک ایمیل صحیح وارد کنید.",
9
+ url: "لطفا آدرس صحیح وارد کنید.",
10
+ date: "لطفا تاریخ صحیح وارد کنید.",
11
+ dateFA: "لطفا یک تاریخ صحیح وارد کنید.",
12
+ dateISO: "لطفا تاریخ صحیح وارد کنید (ISO).",
13
+ number: "لطفا عدد صحیح وارد کنید.",
14
+ digits: "لطفا تنها رقم وارد کنید.",
15
+ creditcard: "لطفا کریدیت کارت صحیح وارد کنید.",
16
+ equalTo: "لطفا مقدار برابری وارد کنید.",
17
+ extension: "لطفا مقداری وارد کنید که.",
18
+ alphanumeric: "لطفا مقدار را عدد (انگلیسی) وارد کنید.",
19
+ maxlength: jQuery.validator.format( "لطفا بیشتر از {0} حرف وارد نکنید." ),
20
+ minlength: jQuery.validator.format( "لطفا کمتر از {0} حرف وارد نکنید." ),
21
+ rangelength: jQuery.validator.format( "لطفا مقداری بین {0} تا {1} حرف وارد کنید." ),
22
+ range: jQuery.validator.format( "لطفا مقداری بین {0} تا {1} حرف وارد کنید." ),
23
+ max: jQuery.validator.format( "لطفا مقداری کمتر از {0} وارد کنید." ),
24
+ min: jQuery.validator.format( "لطفا مقداری بیشتر از {0} وارد کنید." ),
25
+ minWords: jQuery.validator.format( "لطفا حداقل {0} کلمه وارد کنید." ),
26
+ maxWords: jQuery.validator.format( "لطفا حداکثر {0} کلمه وارد کنید." )
27
+ } );
js/messages_fi.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: FI (Finnish; suomi, suomen kieli)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "T&auml;m&auml; kentt&auml; on pakollinen.",
7
+ email: "Sy&ouml;t&auml; oikea s&auml;hk&ouml;postiosoite.",
8
+ url: "Sy&ouml;t&auml; oikea URL-osoite.",
9
+ date: "Sy&ouml;t&auml; oikea p&auml;iv&auml;m&auml;&auml;r&auml;.",
10
+ dateISO: "Sy&ouml;t&auml; oikea p&auml;iv&auml;m&auml;&auml;r&auml; muodossa VVVV-KK-PP.",
11
+ number: "Sy&ouml;t&auml; luku.",
12
+ creditcard: "Sy&ouml;t&auml; voimassa oleva luottokorttinumero.",
13
+ digits: "Sy&ouml;t&auml; pelk&auml;st&auml;&auml;n numeroita.",
14
+ equalTo: "Sy&ouml;t&auml; sama arvo uudestaan.",
15
+ maxlength: jQuery.validator.format( "Voit sy&ouml;tt&auml;&auml; enint&auml;&auml;n {0} merkki&auml;." ),
16
+ minlength: jQuery.validator.format( "V&auml;hint&auml;&auml;n {0} merkki&auml;." ),
17
+ rangelength: jQuery.validator.format( "Sy&ouml;t&auml; v&auml;hint&auml;&auml;n {0} ja enint&auml;&auml;n {1} merkki&auml;." ),
18
+ range: jQuery.validator.format( "Sy&ouml;t&auml; arvo v&auml;lilt&auml; {0}&ndash;{1}." ),
19
+ max: jQuery.validator.format( "Sy&ouml;t&auml; arvo, joka on enint&auml;&auml;n {0}." ),
20
+ min: jQuery.validator.format( "Sy&ouml;t&auml; arvo, joka on v&auml;hint&auml;&auml;n {0}." )
21
+ } );
js/messages_fr.js CHANGED
@@ -1,23 +1,52 @@
1
- /*
2
- * Translated default messages for the jQuery validation plugin.
3
- * Locale: FR
4
- */
5
- jQuery.extend(jQuery.validator.messages, {
6
- required: "Ce champ est requis.",
7
- remote: "Veuillez remplir ce champ pour continuer.",
8
- email: "Veuillez entrer une adresse email valide.",
9
- url: "Veuillez entrer une URL valide.",
10
- date: "Veuillez entrer une date valide.",
11
- dateISO: "Veuillez entrer une date valide (ISO).",
12
- number: "Veuillez entrer un nombre valide.",
13
- digits: "Veuillez entrer (seulement) une valeur numérique.",
14
- creditcard: "Veuillez entrer un numéro de carte de crédit valide.",
15
- equalTo: "Veuillez entrer une nouvelle fois la même valeur.",
16
- accept: "Veuillez entrer une valeur avec une extension valide.",
17
- maxlength: jQuery.validator.format("Veuillez ne pas entrer plus de {0} caractères."),
18
- minlength: jQuery.validator.format("Veuillez entrer au moins {0} caractères."),
19
- rangelength: jQuery.validator.format("Veuillez entrer entre {0} et {1} caractères."),
20
- range: jQuery.validator.format("Veuillez entrer une valeur entre {0} et {1}."),
21
- max: jQuery.validator.format("Veuillez entrer une valeur inférieure ou égale à {0}."),
22
- min: jQuery.validator.format("Veuillez entrer une valeur supérieure ou égale à {0}.")
23
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: FR (French; français)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Ce champ est obligatoire.",
7
+ remote: "Veuillez corriger ce champ.",
8
+ email: "Veuillez fournir une adresse électronique valide.",
9
+ url: "Veuillez fournir une adresse URL valide.",
10
+ date: "Veuillez fournir une date valide.",
11
+ dateISO: "Veuillez fournir une date valide (ISO).",
12
+ number: "Veuillez fournir un numéro valide.",
13
+ digits: "Veuillez fournir seulement des chiffres.",
14
+ creditcard: "Veuillez fournir un numéro de carte de crédit valide.",
15
+ equalTo: "Veuillez fournir encore la même valeur.",
16
+ notEqualTo: "Veuillez fournir une valeur différente, les valeurs ne doivent pas être identiques.",
17
+ extension: "Veuillez fournir une valeur avec une extension valide.",
18
+ maxlength: jQuery.validator.format( "Veuillez fournir au plus {0} caractères." ),
19
+ minlength: jQuery.validator.format( "Veuillez fournir au moins {0} caractères." ),
20
+ rangelength: jQuery.validator.format( "Veuillez fournir une valeur qui contient entre {0} et {1} caractères." ),
21
+ range: jQuery.validator.format( "Veuillez fournir une valeur entre {0} et {1}." ),
22
+ max: jQuery.validator.format( "Veuillez fournir une valeur inférieure ou égale à {0}." ),
23
+ min: jQuery.validator.format( "Veuillez fournir une valeur supérieure ou égale à {0}." ),
24
+ step: jQuery.validator.format( "Veuillez fournir une valeur multiple de {0}." ),
25
+ maxWords: jQuery.validator.format( "Veuillez fournir au plus {0} mots." ),
26
+ minWords: jQuery.validator.format( "Veuillez fournir au moins {0} mots." ),
27
+ rangeWords: jQuery.validator.format( "Veuillez fournir entre {0} et {1} mots." ),
28
+ letterswithbasicpunc: "Veuillez fournir seulement des lettres et des signes de ponctuation.",
29
+ alphanumeric: "Veuillez fournir seulement des lettres, nombres, espaces et soulignages.",
30
+ lettersonly: "Veuillez fournir seulement des lettres.",
31
+ nowhitespace: "Veuillez ne pas inscrire d'espaces blancs.",
32
+ ziprange: "Veuillez fournir un code postal entre 902xx-xxxx et 905-xx-xxxx.",
33
+ integer: "Veuillez fournir un nombre non décimal qui est positif ou négatif.",
34
+ vinUS: "Veuillez fournir un numéro d'identification du véhicule (VIN).",
35
+ dateITA: "Veuillez fournir une date valide.",
36
+ time: "Veuillez fournir une heure valide entre 00:00 et 23:59.",
37
+ phoneUS: "Veuillez fournir un numéro de téléphone valide.",
38
+ phoneUK: "Veuillez fournir un numéro de téléphone valide.",
39
+ mobileUK: "Veuillez fournir un numéro de téléphone mobile valide.",
40
+ strippedminlength: jQuery.validator.format( "Veuillez fournir au moins {0} caractères." ),
41
+ email2: "Veuillez fournir une adresse électronique valide.",
42
+ url2: "Veuillez fournir une adresse URL valide.",
43
+ creditcardtypes: "Veuillez fournir un numéro de carte de crédit valide.",
44
+ ipv4: "Veuillez fournir une adresse IP v4 valide.",
45
+ ipv6: "Veuillez fournir une adresse IP v6 valide.",
46
+ require_from_group: jQuery.validator.format( "Veuillez fournir au moins {0} de ces champs." ),
47
+ nifES: "Veuillez fournir un numéro NIF valide.",
48
+ nieES: "Veuillez fournir un numéro NIE valide.",
49
+ cifES: "Veuillez fournir un numéro CIF valide.",
50
+ postalCodeCA: "Veuillez fournir un code postal valide.",
51
+ pattern: "Format non valide."
52
+ } );
js/messages_ge.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @author @tatocaster <kutaliatato@gmail.com>
3
+ * Translated default messages for the jQuery validation plugin.
4
+ * Locale: GE (Georgian; ქართული)
5
+ */
6
+ jQuery.extend( jQuery.validator.messages, {
7
+ required: "ეს ველი სავალდებულოა.",
8
+ remote: "გთხოვთ შეასწოროთ.",
9
+ email: "გთხოვთ შეიყვანოთ სწორი ფორმატით.",
10
+ url: "გთხოვთ შეიყვანოთ სწორი ფორმატით.",
11
+ date: "გთხოვთ შეიყვანოთ სწორი თარიღი.",
12
+ dateISO: "გთხოვთ შეიყვანოთ სწორი ფორმატით (ISO).",
13
+ number: "გთხოვთ შეიყვანოთ რიცხვი.",
14
+ digits: "დაშვებულია მხოლოდ ციფრები.",
15
+ creditcard: "გთხოვთ შეიყვანოთ სწორი ფორმატის ბარათის კოდი.",
16
+ equalTo: "გთხოვთ შეიყვანოთ იგივე მნიშვნელობა.",
17
+ maxlength: jQuery.validator.format( "გთხოვთ შეიყვანოთ არა უმეტეს {0} სიმბოლოსი." ),
18
+ minlength: jQuery.validator.format( "შეიყვანეთ მინიმუმ {0} სიმბოლო." ),
19
+ rangelength: jQuery.validator.format( "გთხოვთ შეიყვანოთ {0} -დან {1} -მდე რაოდენობის სიმბოლოები." ),
20
+ range: jQuery.validator.format( "შეიყვანეთ {0} -სა {1} -ს შორის." ),
21
+ max: jQuery.validator.format( "გთხოვთ შეიყვანოთ მნიშვნელობა ნაკლები ან ტოლი {0} -ს." ),
22
+ min: jQuery.validator.format( "გთხოვთ შეიყვანოთ მნიშვნელობა მეტი ან ტოლი {0} -ს." )
23
+ } );
js/messages_gl.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: GL (Galician; Galego)
4
+ */
5
+ ( function( jQuery ) {
6
+ jQuery.extend( jQuery.validator.messages, {
7
+ required: "Este campo é obrigatorio.",
8
+ remote: "Por favor, cubre este campo.",
9
+ email: "Por favor, escribe unha dirección de correo válida.",
10
+ url: "Por favor, escribe unha URL válida.",
11
+ date: "Por favor, escribe unha data válida.",
12
+ dateISO: "Por favor, escribe unha data (ISO) válida.",
13
+ number: "Por favor, escribe un número válido.",
14
+ digits: "Por favor, escribe só díxitos.",
15
+ creditcard: "Por favor, escribe un número de tarxeta válido.",
16
+ equalTo: "Por favor, escribe o mesmo valor de novo.",
17
+ extension: "Por favor, escribe un valor cunha extensión aceptada.",
18
+ maxlength: jQuery.validator.format( "Por favor, non escribas máis de {0} caracteres." ),
19
+ minlength: jQuery.validator.format( "Por favor, non escribas menos de {0} caracteres." ),
20
+ rangelength: jQuery.validator.format( "Por favor, escribe un valor entre {0} e {1} caracteres." ),
21
+ range: jQuery.validator.format( "Por favor, escribe un valor entre {0} e {1}." ),
22
+ max: jQuery.validator.format( "Por favor, escribe un valor menor ou igual a {0}." ),
23
+ min: jQuery.validator.format( "Por favor, escribe un valor maior ou igual a {0}." ),
24
+ nifES: "Por favor, escribe un NIF válido.",
25
+ nieES: "Por favor, escribe un NIE válido.",
26
+ cifES: "Por favor, escribe un CIF válido."
27
+ } );
28
+ }( jQuery ) );
js/messages_he.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: HE (Hebrew; עברית)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "השדה הזה הינו שדה חובה",
7
+ remote: "נא לתקן שדה זה",
8
+ email: "נא למלא כתובת דוא\"ל חוקית",
9
+ url: "נא למלא כתובת אינטרנט חוקית",
10
+ date: "נא למלא תאריך חוקי",
11
+ dateISO: "נא למלא תאריך חוקי (ISO)",
12
+ number: "נא למלא מספר",
13
+ digits: "נא למלא רק מספרים",
14
+ creditcard: "נא למלא מספר כרטיס אשראי חוקי",
15
+ equalTo: "נא למלא את אותו ערך שוב",
16
+ extension: "נא למלא ערך עם סיומת חוקית",
17
+ maxlength: jQuery.validator.format( ".נא לא למלא יותר מ- {0} תווים" ),
18
+ minlength: jQuery.validator.format( "נא למלא לפחות {0} תווים" ),
19
+ rangelength: jQuery.validator.format( "נא למלא ערך בין {0} ל- {1} תווים" ),
20
+ range: jQuery.validator.format( "נא למלא ערך בין {0} ל- {1}" ),
21
+ max: jQuery.validator.format( "נא למלא ערך קטן או שווה ל- {0}" ),
22
+ min: jQuery.validator.format( "נא למלא ערך גדול או שווה ל- {0}" )
23
+ } );
js/messages_hr.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: HR (Croatia; hrvatski jezik)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Ovo polje je obavezno.",
7
+ remote: "Ovo polje treba popraviti.",
8
+ email: "Unesite ispravnu e-mail adresu.",
9
+ url: "Unesite ispravan URL.",
10
+ date: "Unesite ispravan datum.",
11
+ dateISO: "Unesite ispravan datum (ISO).",
12
+ number: "Unesite ispravan broj.",
13
+ digits: "Unesite samo brojeve.",
14
+ creditcard: "Unesite ispravan broj kreditne kartice.",
15
+ equalTo: "Unesite ponovo istu vrijednost.",
16
+ extension: "Unesite vrijednost sa ispravnom ekstenzijom.",
17
+ maxlength: jQuery.validator.format( "Maksimalni broj znakova je {0} ." ),
18
+ minlength: jQuery.validator.format( "Minimalni broj znakova je {0} ." ),
19
+ rangelength: jQuery.validator.format( "Unesite vrijednost između {0} i {1} znakova." ),
20
+ range: jQuery.validator.format( "Unesite vrijednost između {0} i {1}." ),
21
+ max: jQuery.validator.format( "Unesite vrijednost manju ili jednaku {0}." ),
22
+ min: jQuery.validator.format( "Unesite vrijednost veću ili jednaku {0}." )
23
+ } );
js/messages_hu.js CHANGED
@@ -1,20 +1,23 @@
1
- /*
2
- * Translated default messages for the jQuery validation plugin.
3
- * Locale: HU
4
- */
5
- jQuery.extend(jQuery.validator.messages, {
6
- required: "Kötelező megadni.",
7
- maxlength: jQuery.validator.format("Legfeljebb {0} karakter hosszú legyen."),
8
- minlength: jQuery.validator.format("Legalább {0} karakter hosszú legyen."),
9
- rangelength: jQuery.validator.format("Legalább {0} és legfeljebb {1} karakter hosszú legyen."),
10
- email: "Érvényes e-mail címnek kell lennie.",
11
- url: "Érvényes URL-nek kell lennie.",
12
- date: "Dátumnak kell lennie.",
13
- number: "Számnak kell lennie.",
14
- digits: "Csak számjegyek lehetnek.",
15
- equalTo: "Meg kell egyeznie a két értéknek.",
16
- range: jQuery.validator.format("{0} és {1} közé kell esnie."),
17
- max: jQuery.validator.format("Nem lehet nagyobb, mint {0}."),
18
- min: jQuery.validator.format("Nem lehet kisebb, mint {0}."),
19
- creditcard: "Érvényes hitelkártyaszámnak kell lennie."
20
- });
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: HU (Hungarian; Magyar)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Kötelező megadni.",
7
+ maxlength: jQuery.validator.format( "Legfeljebb {0} karakter hosszú legyen." ),
8
+ minlength: jQuery.validator.format( "Legalább {0} karakter hosszú legyen." ),
9
+ rangelength: jQuery.validator.format( "Legalább {0} és legfeljebb {1} karakter hosszú legyen." ),
10
+ email: "Érvényes e-mail címnek kell lennie.",
11
+ url: "Érvényes URL-nek kell lennie.",
12
+ date: "Dátumnak kell lennie.",
13
+ number: "Számnak kell lennie.",
14
+ digits: "Csak számjegyek lehetnek.",
15
+ equalTo: "Meg kell egyeznie a két értéknek.",
16
+ range: jQuery.validator.format( "{0} és {1} közé kell esnie." ),
17
+ max: jQuery.validator.format( "Nem lehet nagyobb, mint {0}." ),
18
+ min: jQuery.validator.format( "Nem lehet kisebb, mint {0}." ),
19
+ creditcard: "Érvényes hitelkártyaszámnak kell lennie.",
20
+ remote: "Kérem javítsa ki ezt a mezőt.",
21
+ dateISO: "Kérem írjon be egy érvényes dátumot (ISO).",
22
+ step: jQuery.validator.format( "A {0} egyik többszörösét adja meg." )
23
+ } );
js/messages_hy_AM.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: HY_AM (Armenian; հայերեն լեզու)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Պարտադիր լրացման դաշտ",
7
+ remote: "Ներմուծեք ճիշտ արժեքը",
8
+ email: "Ներմուծեք վավեր էլեկտրոնային փոստի հասցե",
9
+ url: "Ներմուծեք վավեր URL",
10
+ date: "Ներմուծեք վավեր ամսաթիվ",
11
+ dateISO: "Ներմուծեք ISO ֆորմատով վավեր ամսաթիվ։",
12
+ number: "Ներմուծեք թիվ",
13
+ digits: "Ներմուծեք միայն թվեր",
14
+ creditcard: "Ներմուծեք ճիշտ բանկային քարտի համար",
15
+ equalTo: "Ներմուծեք միևնուն արժեքը ևս մեկ անգամ",
16
+ extension: "Ընտրեք ճիշտ ընդլանումով ֆայլ",
17
+ maxlength: jQuery.validator.format( "Ներմուծեք ոչ ավել քան {0} նիշ" ),
18
+ minlength: jQuery.validator.format( "Ներմուծեք ոչ պակաս քան {0} նիշ" ),
19
+ rangelength: jQuery.validator.format( "Ներմուծեք {0}֊ից {1} երկարությամբ արժեք" ),
20
+ range: jQuery.validator.format( "Ներմուծեք թիվ {0}֊ից {1} միջակայքում" ),
21
+ max: jQuery.validator.format( "Ներմուծեք թիվ, որը փոքր կամ հավասար է {0}֊ին" ),
22
+ min: jQuery.validator.format( "Ներմուծեք թիվ, որը մեծ կամ հավասար է {0}֊ին" )
23
+ } );
js/messages_id.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: ID (Indonesia; Indonesian)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Kolom ini diperlukan.",
7
+ remote: "Harap benarkan kolom ini.",
8
+ email: "Silakan masukkan format email yang benar.",
9
+ url: "Silakan masukkan format URL yang benar.",
10
+ date: "Silakan masukkan format tanggal yang benar.",
11
+ dateISO: "Silakan masukkan format tanggal(ISO) yang benar.",
12
+ number: "Silakan masukkan angka yang benar.",
13
+ digits: "Harap masukan angka saja.",
14
+ creditcard: "Harap masukkan format kartu kredit yang benar.",
15
+ equalTo: "Harap masukkan nilai yg sama dengan sebelumnya.",
16
+ maxlength: jQuery.validator.format( "Input dibatasi hanya {0} karakter." ),
17
+ minlength: jQuery.validator.format( "Input tidak kurang dari {0} karakter." ),
18
+ rangelength: jQuery.validator.format( "Panjang karakter yg diizinkan antara {0} dan {1} karakter." ),
19
+ range: jQuery.validator.format( "Harap masukkan nilai antara {0} dan {1}." ),
20
+ max: jQuery.validator.format( "Harap masukkan nilai lebih kecil atau sama dengan {0}." ),
21
+ min: jQuery.validator.format( "Harap masukkan nilai lebih besar atau sama dengan {0}." )
22
+ } );
js/messages_is.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: IS (Icelandic; íslenska)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Þessi reitur er nauðsynlegur.",
7
+ remote: "Lagaðu þennan reit.",
8
+ maxlength: jQuery.validator.format( "Sláðu inn mest {0} stafi." ),
9
+ minlength: jQuery.validator.format( "Sláðu inn minnst {0} stafi." ),
10
+ rangelength: jQuery.validator.format( "Sláðu inn minnst {0} og mest {1} stafi." ),
11
+ email: "Sláðu inn gilt netfang.",
12
+ url: "Sláðu inn gilda vefslóð.",
13
+ date: "Sláðu inn gilda dagsetningu.",
14
+ number: "Sláðu inn tölu.",
15
+ digits: "Sláðu inn tölustafi eingöngu.",
16
+ equalTo: "Sláðu sama gildi inn aftur.",
17
+ range: jQuery.validator.format( "Sláðu inn gildi milli {0} og {1}." ),
18
+ max: jQuery.validator.format( "Sláðu inn gildi sem er minna en eða jafnt og {0}." ),
19
+ min: jQuery.validator.format( "Sláðu inn gildi sem er stærra en eða jafnt og {0}." ),
20
+ creditcard: "Sláðu inn gilt greiðslukortanúmer."
21
+ } );
js/messages_it.js CHANGED
@@ -1,23 +1,27 @@
1
- /*
2
- * Translated default messages for the jQuery validation plugin.
3
- * Locale: IT
4
- */
5
- jQuery.extend(jQuery.validator.messages, {
6
- required: "Campo obbligatorio.",
7
- remote: "Controlla questo campo.",
8
- email: "Inserisci un indirizzo email valido.",
9
- url: "Inserisci un indirizzo web valido.",
10
- date: "Inserisci una data valida.",
11
- dateISO: "Inserisci una data valida (ISO).",
12
- number: "Inserisci un numero valido.",
13
- digits: "Inserisci solo numeri.",
14
- creditcard: "Inserisci un numero di carta di credito valido.",
15
- equalTo: "Il valore non corrisponde.",
16
- accept: "Inserisci un valore con un&apos;estensione valida.",
17
- maxlength: jQuery.validator.format("Non inserire pi&ugrave; di {0} caratteri."),
18
- minlength: jQuery.validator.format("Inserisci almeno {0} caratteri."),
19
- rangelength: jQuery.validator.format("Inserisci un valore compreso tra {0} e {1} caratteri."),
20
- range: jQuery.validator.format("Inserisci un valore compreso tra {0} e {1}."),
21
- max: jQuery.validator.format("Inserisci un valore minore o uguale a {0}."),
22
- min: jQuery.validator.format("Inserisci un valore maggiore o uguale a {0}.")
23
- });
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: IT (Italian; Italiano)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Campo obbligatorio.",
7
+ remote: "Controlla questo campo.",
8
+ email: "Inserisci un indirizzo email valido.",
9
+ url: "Inserisci un indirizzo web valido.",
10
+ date: "Inserisci una data valida.",
11
+ dateISO: "Inserisci una data valida (ISO).",
12
+ number: "Inserisci un numero valido.",
13
+ digits: "Inserisci solo numeri.",
14
+ creditcard: "Inserisci un numero di carta di credito valido.",
15
+ equalTo: "Il valore non corrisponde.",
16
+ extension: "Inserisci un valore con un&apos;estensione valida.",
17
+ maxlength: jQuery.validator.format( "Non inserire pi&ugrave; di {0} caratteri." ),
18
+ minlength: jQuery.validator.format( "Inserisci almeno {0} caratteri." ),
19
+ rangelength: jQuery.validator.format( "Inserisci un valore compreso tra {0} e {1} caratteri." ),
20
+ range: jQuery.validator.format( "Inserisci un valore compreso tra {0} e {1}." ),
21
+ max: jQuery.validator.format( "Inserisci un valore minore o uguale a {0}." ),
22
+ min: jQuery.validator.format( "Inserisci un valore maggiore o uguale a {0}." ),
23
+ nifES: "Inserisci un NIF valido.",
24
+ nieES: "Inserisci un NIE valido.",
25
+ cifES: "Inserisci un CIF valido.",
26
+ currency: "Inserisci una valuta valida."
27
+ } );
js/messages_ja.js CHANGED
@@ -1,23 +1,25 @@
1
  /*
2
  * Translated default messages for the jQuery validation plugin.
3
- * Language: JA
4
  */
5
- jQuery.extend(jQuery.validator.messages, {
6
- required: "このフィールドは必須です。",
7
- remote: "このフィールドを修正してください。",
8
- email: "有効なEメールアドレスを入力してください。",
9
- url: "有効なURLを入力してください。",
10
- date: "有効な日付を入力してください。",
11
- dateISO: "有効な日付(ISO)を入力してください。",
12
- number: "有効な数字を入力してください。",
13
- digits: "数字のみを入力してください。",
14
- creditcard: "有効なクレジットカード番号を入力してください。",
15
- equalTo: "同じ値をもう一度入力してください。",
16
- accept: "有効な拡張子を含む値を入力してください。",
17
- maxlength: jQuery.format("{0} 文字以内で入力してください。"),
18
- minlength: jQuery.format("{0} 文字以上で入力してください。"),
19
- rangelength: jQuery.format("{0} 文字から {1} 文字までの値を入力してください。"),
20
- range: jQuery.format("{0} から {1} までの値を入力してください。"),
21
- max: jQuery.format("{0} 以下の値を入力してください。"),
22
- min: jQuery.format("{1} 以上の値を入力してください。")
23
- });
 
 
1
  /*
2
  * Translated default messages for the jQuery validation plugin.
3
+ * Locale: JA (Japanese; 日本語)
4
  */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "このフィールドは必須です。",
7
+ remote: "このフィールドを修正してください。",
8
+ email: "有効なEメールアドレスを入力してください。",
9
+ url: "有効なURLを入力してください。",
10
+ date: "有効な日付を入力してください。",
11
+ dateISO: "有効な日付(ISO)を入力してください。",
12
+ number: "有効な数字を入力してください。",
13
+ digits: "数字のみを入力してください。",
14
+ creditcard: "有効なクレジットカード番号を入力してください。",
15
+ equalTo: "同じ値をもう一度入力してください。",
16
+ extension: "有効な拡張子を含む値を入力してください。",
17
+ maxlength: jQuery.validator.format( "{0} 文字以内で入力してください。" ),
18
+ minlength: jQuery.validator.format( "{0} 文字以上で入力してください。" ),
19
+ rangelength: jQuery.validator.format( "{0} 文字から {1} 文字までの値を入力してください。" ),
20
+ range: jQuery.validator.format( "{0} から {1} までの値を入力してください。" ),
21
+ step: jQuery.validator.format( "{0} の倍数を入力してください。" ),
22
+ max: jQuery.validator.format( "{0} 以下の値を入力してください。" ),
23
+ min: jQuery.validator.format( "{0} 以上の値を入力してください。" ),
24
+ require_from_group: jQuery.validator.format( "少なくとも{0}つは入力してください。" )
25
+ } );
js/messages_ka.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: KA (Georgian; ქართული)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "ამ ველის შევსება აუცილებელია.",
7
+ remote: "გთხოვთ მიუთითოთ სწორი მნიშვნელობა.",
8
+ email: "გთხოვთ მიუთითოთ ელ-ფოსტის კორექტული მისამართი.",
9
+ url: "გთხოვთ მიუთითოთ კორექტული URL.",
10
+ date: "გთხოვთ მიუთითოთ კორექტული თარიღი.",
11
+ dateISO: "გთხოვთ მიუთითოთ კორექტული თარიღი ISO ფორმატში.",
12
+ number: "გთხოვთ მიუთითოთ ციფრი.",
13
+ digits: "გთხოვთ მიუთითოთ მხოლოდ ციფრები.",
14
+ creditcard: "გთხოვთ მიუთითოთ საკრედიტო ბარათის კორექტული ნომერი.",
15
+ equalTo: "გთხოვთ მიუთითოთ ასეთივე მნიშვნელობა კიდევ ერთხელ.",
16
+ extension: "გთხოვთ აირჩიოთ ფაილი კორექტული გაფართოებით.",
17
+ maxlength: jQuery.validator.format( "დასაშვებია არაუმეტეს {0} სიმბოლო." ),
18
+ minlength: jQuery.validator.format( "აუცილებელია შეიყვანოთ მინიმუმ {0} სიმბოლო." ),
19
+ rangelength: jQuery.validator.format( "ტექსტში სიმბოლოების რაოდენობა უნდა იყოს {0}-დან {1}-მდე." ),
20
+ range: jQuery.validator.format( "გთხოვთ შეიყვანოთ ციფრი {0}-დან {1}-მდე." ),
21
+ max: jQuery.validator.format( "გთხოვთ შეიყვანოთ ციფრი რომელიც ნაკლებია ან უდრის {0}-ს." ),
22
+ min: jQuery.validator.format( "გთხოვთ შეიყვანოთ ციფრი რომელიც მეტია ან უდრის {0}-ს." )
23
+ } );
js/messages_kk.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: KK (Kazakh; қазақ тілі)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Бұл өрісті міндетті түрде толтырыңыз.",
7
+ remote: "Дұрыс мағына енгізуіңізді сұраймыз.",
8
+ email: "Нақты электронды поштаңызды енгізуіңізді сұраймыз.",
9
+ url: "Нақты URL-ды енгізуіңізді сұраймыз.",
10
+ date: "Нақты URL-ды енгізуіңізді сұраймыз.",
11
+ dateISO: "Нақты ISO форматымен сәйкес датасын енгізуіңізді сұраймыз.",
12
+ number: "Күнді енгізуіңізді сұраймыз.",
13
+ digits: "Тек қана сандарды енгізуіңізді сұраймыз.",
14
+ creditcard: "Несие картасының нөмірін дұрыс енгізуіңізді сұраймыз.",
15
+ equalTo: "Осы мәнді қайта енгізуіңізді сұраймыз.",
16
+ extension: "Файлдың кеңейтуін дұрыс таңдаңыз.",
17
+ maxlength: jQuery.validator.format( "Ұзындығы {0} символдан көр болмасын." ),
18
+ minlength: jQuery.validator.format( "Ұзындығы {0} символдан аз болмасын." ),
19
+ rangelength: jQuery.validator.format( "Ұзындығы {0}-{1} дейін мән енгізуіңізді сұраймыз." ),
20
+ range: jQuery.validator.format( "Пожалуйста, введите число от {0} до {1}. - {0} - {1} санын енгізуіңізді сұраймыз." ),
21
+ max: jQuery.validator.format( "{0} аз немесе тең санын енгізуіңіді сұраймыз." ),
22
+ min: jQuery.validator.format( "{0} көп немесе тең санын енгізуіңізді сұраймыз." )
23
+ } );
js/messages_ko.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: KO (Korean; 한국어)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "필수 항목입니다.",
7
+ remote: "항목을 수정하세요.",
8
+ email: "유효하지 않은 E-Mail주소입니다.",
9
+ url: "유효하지 않은 URL입니다.",
10
+ date: "올바른 날짜를 입력하세요.",
11
+ dateISO: "올바른 날짜(ISO)를 입력하세요.",
12
+ number: "유효한 숫자가 아닙니다.",
13
+ digits: "숫자만 입력 가능합니다.",
14
+ creditcard: "신용카드 번호가 바르지 않습니다.",
15
+ equalTo: "같은 값을 다시 입력하세요.",
16
+ extension: "올바른 확장자가 아닙니다.",
17
+ maxlength: jQuery.validator.format( "{0}자를 넘을 수 없습니다. " ),
18
+ minlength: jQuery.validator.format( "{0}자 이상 입력하세요." ),
19
+ rangelength: jQuery.validator.format( "문자 길이가 {0} 에서 {1} 사이의 값을 입력하세요." ),
20
+ range: jQuery.validator.format( "{0} 에서 {1} 사이의 값을 입력하세요." ),
21
+ max: jQuery.validator.format( "{0} 이하의 값을 입력하세요." ),
22
+ min: jQuery.validator.format( "{0} 이상의 값을 입력하세요." )
23
+ } );
js/messages_lt.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: LT (Lithuanian; lietuvių kalba)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Šis laukas yra privalomas.",
7
+ remote: "Prašau pataisyti šį lauką.",
8
+ email: "Prašau įvesti teisingą elektroninio pašto adresą.",
9
+ url: "Prašau įvesti teisingą URL.",
10
+ date: "Prašau įvesti teisingą datą.",
11
+ dateISO: "Prašau įvesti teisingą datą (ISO).",
12
+ number: "Prašau įvesti teisingą skaičių.",
13
+ digits: "Prašau naudoti tik skaitmenis.",
14
+ creditcard: "Prašau įvesti teisingą kreditinės kortelės numerį.",
15
+ equalTo: "Prašau įvestį tą pačią reikšmę dar kartą.",
16
+ extension: "Prašau įvesti reikšmę su teisingu plėtiniu.",
17
+ maxlength: jQuery.validator.format( "Prašau įvesti ne daugiau kaip {0} simbolių." ),
18
+ minlength: jQuery.validator.format( "Prašau įvesti bent {0} simbolius." ),
19
+ rangelength: jQuery.validator.format( "Prašau įvesti reikšmes, kurių ilgis nuo {0} iki {1} simbolių." ),
20
+ range: jQuery.validator.format( "Prašau įvesti reikšmę intervale nuo {0} iki {1}." ),
21
+ max: jQuery.validator.format( "Prašau įvesti reikšmę mažesnę arba lygią {0}." ),
22
+ min: jQuery.validator.format( "Prašau įvesti reikšmę didesnę arba lygią {0}." )
23
+ } );
js/messages_lv.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: LV (Latvian; latviešu valoda)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Šis lauks ir obligāts.",
7
+ remote: "Lūdzu, pārbaudiet šo lauku.",
8
+ email: "Lūdzu, ievadiet derīgu e-pasta adresi.",
9
+ url: "Lūdzu, ievadiet derīgu URL adresi.",
10
+ date: "Lūdzu, ievadiet derīgu datumu.",
11
+ dateISO: "Lūdzu, ievadiet derīgu datumu (ISO).",
12
+ number: "Lūdzu, ievadiet derīgu numuru.",
13
+ digits: "Lūdzu, ievadiet tikai ciparus.",
14
+ creditcard: "Lūdzu, ievadiet derīgu kredītkartes numuru.",
15
+ equalTo: "Lūdzu, ievadiet to pašu vēlreiz.",
16
+ extension: "Lūdzu, ievadiet vērtību ar derīgu paplašinājumu.",
17
+ maxlength: jQuery.validator.format( "Lūdzu, ievadiet ne vairāk kā {0} rakstzīmes." ),
18
+ minlength: jQuery.validator.format( "Lūdzu, ievadiet vismaz {0} rakstzīmes." ),
19
+ rangelength: jQuery.validator.format( "Lūdzu ievadiet {0} līdz {1} rakstzīmes." ),
20
+ range: jQuery.validator.format( "Lūdzu, ievadiet skaitli no {0} līdz {1}." ),
21
+ max: jQuery.validator.format( "Lūdzu, ievadiet skaitli, kurš ir mazāks vai vienāds ar {0}." ),
22
+ min: jQuery.validator.format( "Lūdzu, ievadiet skaitli, kurš ir lielāks vai vienāds ar {0}." )
23
+ } );
js/messages_mk.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: MK (Macedonian; македонски јазик)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Полето е задолжително.",
7
+ remote: "Поправете го ова поле.",
8
+ email: "Внесете правилна e-mail адреса.",
9
+ url: "Внесете правилен URL.",
10
+ date: "Внесете правилен датум.",
11
+ dateISO: "Внесете правилен датум (ISO).",
12
+ number: "Внесете правилен број.",
13
+ digits: "Внесете само бројки.",
14
+ creditcard: "Внесете правилен број на кредитната картичка.",
15
+ equalTo: "Внесете ја истата вредност повторно.",
16
+ extension: "Внесете вредност со соодветна екстензија.",
17
+ maxlength: jQuery.validator.format( "Внесете максимално {0} знаци." ),
18
+ minlength: jQuery.validator.format( "Внесете барем {0} знаци." ),
19
+ rangelength: jQuery.validator.format( "Внесете вредност со должина помеѓу {0} и {1} знаци." ),
20
+ range: jQuery.validator.format( "Внесете вредност помеѓу {0} и {1}." ),
21
+ max: jQuery.validator.format( "Внесете вредност помала или еднаква на {0}." ),
22
+ min: jQuery.validator.format( "Внесете вредност поголема или еднаква на {0}." )
23
+ } );
js/messages_my.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: MY (Malay; Melayu)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Medan ini diperlukan.",
7
+ remote: "Sila betulkan medan ini.",
8
+ email: "Sila masukkan alamat emel yang betul.",
9
+ url: "Sila masukkan URL yang betul.",
10
+ date: "Sila masukkan tarikh yang betul.",
11
+ dateISO: "Sila masukkan tarikh(ISO) yang betul.",
12
+ number: "Sila masukkan nombor yang betul.",
13
+ digits: "Sila masukkan nilai digit sahaja.",
14
+ creditcard: "Sila masukkan nombor kredit kad yang betul.",
15
+ equalTo: "Sila masukkan nilai yang sama semula.",
16
+ extension: "Sila masukkan nilai yang telah diterima.",
17
+ maxlength: jQuery.validator.format( "Sila masukkan tidak lebih dari {0} aksara." ),
18
+ minlength: jQuery.validator.format( "Sila masukkan sekurang-kurangnya {0} aksara." ),
19
+ rangelength: jQuery.validator.format( "Sila masukkan antara {0} dan {1} panjang aksara." ),
20
+ range: jQuery.validator.format( "Sila masukkan nilai antara {0} dan {1} aksara." ),
21
+ max: jQuery.validator.format( "Sila masukkan nilai yang kurang atau sama dengan {0}." ),
22
+ min: jQuery.validator.format( "Sila masukkan nilai yang lebih atau sama dengan {0}." )
23
+ } );
js/messages_nl.js CHANGED
@@ -1,23 +1,34 @@
1
- /*
2
- * Translated default messages for the jQuery validation plugin.
3
- * Locale: NL
4
- */
5
- jQuery.extend(jQuery.validator.messages, {
6
- required: "Dit is een verplicht veld.",
7
- remote: "Controleer dit veld.",
8
- email: "Vul hier een geldig e-mailadres in.",
9
- url: "Vul hier een geldige URL in.",
10
- date: "Vul hier een geldige datum in.",
11
- dateISO: "Vul hier een geldige datum in (ISO-formaat).",
12
- number: "Vul hier een geldig getal in.",
13
- digits: "Vul hier alleen getallen in.",
14
- creditcard: "Vul hier een geldig creditcardnummer in.",
15
- equalTo: "Vul hier dezelfde waarde in.",
16
- accept: "Vul hier een waarde in met een geldige extensie.",
17
- maxlength: jQuery.validator.format("Vul hier maximaal {0} tekens in."),
18
- minlength: jQuery.validator.format("Vul hier minimaal {0} tekens in."),
19
- rangelength: jQuery.validator.format("Vul hier een waarde in van minimaal {0} en maximaal {1} tekens."),
20
- range: jQuery.validator.format("Vul hier een waarde in van minimaal {0} en maximaal {1}."),
21
- max: jQuery.validator.format("Vul hier een waarde in kleiner dan of gelijk aan {0}."),
22
- min: jQuery.validator.format("Vul hier een waarde in groter dan of gelijk aan {0}.")
23
- });
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: NL (Dutch; Nederlands, Vlaams)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Dit is een verplicht veld.",
7
+ remote: "Controleer dit veld.",
8
+ email: "Vul hier een geldig e-mailadres in.",
9
+ url: "Vul hier een geldige URL in.",
10
+ date: "Vul hier een geldige datum in.",
11
+ dateISO: "Vul hier een geldige datum in (ISO-formaat).",
12
+ number: "Vul hier een geldig getal in.",
13
+ digits: "Vul hier alleen getallen in.",
14
+ creditcard: "Vul hier een geldig creditcardnummer in.",
15
+ equalTo: "Vul hier dezelfde waarde in.",
16
+ extension: "Vul hier een waarde in met een geldige extensie.",
17
+ maxlength: jQuery.validator.format( "Vul hier maximaal {0} tekens in." ),
18
+ minlength: jQuery.validator.format( "Vul hier minimaal {0} tekens in." ),
19
+ rangelength: jQuery.validator.format( "Vul hier een waarde in van minimaal {0} en maximaal {1} tekens." ),
20
+ range: jQuery.validator.format( "Vul hier een waarde in van minimaal {0} en maximaal {1}." ),
21
+ max: jQuery.validator.format( "Vul hier een waarde in kleiner dan of gelijk aan {0}." ),
22
+ min: jQuery.validator.format( "Vul hier een waarde in groter dan of gelijk aan {0}." ),
23
+ step: jQuery.validator.format( "Vul hier een veelvoud van {0} in." ),
24
+
25
+ // For validations in additional-methods.js
26
+ iban: "Vul hier een geldig IBAN in.",
27
+ dateNL: "Vul hier een geldige datum in.",
28
+ phoneNL: "Vul hier een geldig Nederlands telefoonnummer in.",
29
+ mobileNL: "Vul hier een geldig Nederlands mobiel telefoonnummer in.",
30
+ postalcodeNL: "Vul hier een geldige postcode in.",
31
+ bankaccountNL: "Vul hier een geldig bankrekeningnummer in.",
32
+ giroaccountNL: "Vul hier een geldig gironummer in.",
33
+ bankorgiroaccountNL: "Vul hier een geldig bank- of gironummer in."
34
+ } );
js/messages_no.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: NO (Norwegian; Norsk)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Angi en verdi.",
7
+ remote: "Ugyldig verdi.",
8
+ email: "Angi en gyldig epostadresse.",
9
+ url: "Angi en gyldig URL.",
10
+ date: "Angi en gyldig dato.",
11
+ dateISO: "Angi en gyldig dato (&ARING;&ARING;&ARING;&ARING;-MM-DD).",
12
+ number: "Angi et gyldig tall.",
13
+ digits: "Skriv kun tall.",
14
+ equalTo: "Skriv samme verdi igjen.",
15
+ maxlength: jQuery.validator.format( "Maksimalt {0} tegn." ),
16
+ minlength: jQuery.validator.format( "Minimum {0} tegn." ),
17
+ rangelength: jQuery.validator.format( "Angi minimum {0} og maksimum {1} tegn." ),
18
+ range: jQuery.validator.format( "Angi en verdi mellom {0} og {1}." ),
19
+ max: jQuery.validator.format( "Angi en verdi som er mindre eller lik {0}." ),
20
+ min: jQuery.validator.format( "Angi en verdi som er st&oslash;rre eller lik {0}." ),
21
+ step: jQuery.validator.format( "Angi en verdi ganger {0}." ),
22
+ creditcard: "Angi et gyldig kredittkortnummer."
23
+ } );
js/messages_pl.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: PL (Polish; język polski, polszczyzna)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "To pole jest wymagane.",
7
+ remote: "Proszę o wypełnienie tego pola.",
8
+ email: "Proszę o podanie prawidłowego adresu email.",
9
+ url: "Proszę o podanie prawidłowego URL.",
10
+ date: "Proszę o podanie prawidłowej daty.",
11
+ dateISO: "Proszę o podanie prawidłowej daty (ISO).",
12
+ number: "Proszę o podanie prawidłowej liczby.",
13
+ digits: "Proszę o podanie samych cyfr.",
14
+ creditcard: "Proszę o podanie prawidłowej karty kredytowej.",
15
+ equalTo: "Proszę o podanie tej samej wartości ponownie.",
16
+ extension: "Proszę o podanie wartości z prawidłowym rozszerzeniem.",
17
+ nipPL: "Proszę o podanie prawidłowego numeru NIP.",
18
+ phonePL: "Proszę o podanie prawidłowego numeru telefonu.",
19
+ maxlength: jQuery.validator.format( "Proszę o podanie nie więcej niż {0} znaków." ),
20
+ minlength: jQuery.validator.format( "Proszę o podanie przynajmniej {0} znaków." ),
21
+ rangelength: jQuery.validator.format( "Proszę o podanie wartości o długości od {0} do {1} znaków." ),
22
+ range: jQuery.validator.format( "Proszę o podanie wartości z przedziału od {0} do {1}." ),
23
+ max: jQuery.validator.format( "Proszę o podanie wartości mniejszej bądź równej {0}." ),
24
+ min: jQuery.validator.format( "Proszę o podanie wartości większej bądź równej {0}." ),
25
+ pattern: jQuery.validator.format( "Pole zawiera niedozwolone znaki." )
26
+ } );
js/messages_pt_BR.js ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: PT (Portuguese; português)
4
+ * Region: BR (Brazil)
5
+ */
6
+ jQuery.extend( jQuery.validator.messages, {
7
+
8
+ // Core
9
+ required: "Este campo &eacute; requerido.",
10
+ remote: "Por favor, corrija este campo.",
11
+ email: "Por favor, forne&ccedil;a um endere&ccedil;o de email v&aacute;lido.",
12
+ url: "Por favor, forne&ccedil;a uma URL v&aacute;lida.",
13
+ date: "Por favor, forne&ccedil;a uma data v&aacute;lida.",
14
+ dateISO: "Por favor, forne&ccedil;a uma data v&aacute;lida (ISO).",
15
+ number: "Por favor, forne&ccedil;a um n&uacute;mero v&aacute;lido.",
16
+ digits: "Por favor, forne&ccedil;a somente d&iacute;gitos.",
17
+ creditcard: "Por favor, forne&ccedil;a um cart&atilde;o de cr&eacute;dito v&aacute;lido.",
18
+ equalTo: "Por favor, forne&ccedil;a o mesmo valor novamente.",
19
+ maxlength: jQuery.validator.format( "Por favor, forne&ccedil;a n&atilde;o mais que {0} caracteres." ),
20
+ minlength: jQuery.validator.format( "Por favor, forne&ccedil;a ao menos {0} caracteres." ),
21
+ rangelength: jQuery.validator.format( "Por favor, forne&ccedil;a um valor entre {0} e {1} caracteres de comprimento." ),
22
+ range: jQuery.validator.format( "Por favor, forne&ccedil;a um valor entre {0} e {1}." ),
23
+ max: jQuery.validator.format( "Por favor, forne&ccedil;a um valor menor ou igual a {0}." ),
24
+ min: jQuery.validator.format( "Por favor, forne&ccedil;a um valor maior ou igual a {0}." ),
25
+ step: jQuery.validator.format( "Por favor, forne&ccedil;a um valor m&uacute;ltiplo de {0}." ),
26
+
27
+ // Metodos Adicionais
28
+ maxWords: jQuery.validator.format( "Por favor, forne&ccedil;a com {0} palavras ou menos." ),
29
+ minWords: jQuery.validator.format( "Por favor, forne&ccedil;a pelo menos {0} palavras." ),
30
+ rangeWords: jQuery.validator.format( "Por favor, forne&ccedil;a entre {0} e {1} palavras." ),
31
+ accept: "Por favor, forne&ccedil;a um tipo v&aacute;lido.",
32
+ alphanumeric: "Por favor, forne&ccedil;a somente com letras, n&uacute;meros e sublinhados.",
33
+ bankaccountNL: "Por favor, forne&ccedil;a com um n&uacute;mero de conta banc&aacute;ria v&aacute;lida.",
34
+ bankorgiroaccountNL: "Por favor, forne&ccedil;a um banco v&aacute;lido ou n&uacute;mero de conta.",
35
+ bic: "Por favor, forne&ccedil;a um c&oacute;digo BIC v&aacute;lido.",
36
+ cifES: "Por favor, forne&ccedil;a um c&oacute;digo CIF v&aacute;lido.",
37
+ creditcardtypes: "Por favor, forne&ccedil;a um n&uacute;mero de cart&atilde;o de cr&eacute;dito v&aacute;lido.",
38
+ currency: "Por favor, forne&ccedil;a uma moeda v&aacute;lida.",
39
+ dateFA: "Por favor, forne&ccedil;a uma data correta.",
40
+ dateITA: "Por favor, forne&ccedil;a uma data correta.",
41
+ dateNL: "Por favor, forne&ccedil;a uma data correta.",
42
+ extension: "Por favor, forne&ccedil;a um valor com uma extens&atilde;o v&aacute;lida.",
43
+ giroaccountNL: "Por favor, forne&ccedil;a um n&uacute;mero de conta corrente v&aacute;lido.",
44
+ iban: "Por favor, forne&ccedil;a um c&oacute;digo IBAN v&aacute;lido.",
45
+ integer: "Por favor, forne&ccedil;a um n&uacute;mero n&atilde;o decimal.",
46
+ ipv4: "Por favor, forne&ccedil;a um IPv4 v&aacute;lido.",
47
+ ipv6: "Por favor, forne&ccedil;a um IPv6 v&aacute;lido.",
48
+ lettersonly: "Por favor, forne&ccedil;a apenas com letras.",
49
+ letterswithbasicpunc: "Por favor, forne&ccedil;a apenas letras ou pontua&ccedil;ões.",
50
+ mobileNL: "Por favor, fornece&ccedil;a um n&uacute;mero v&aacute;lido de telefone.",
51
+ mobileUK: "Por favor, fornece&ccedil;a um n&uacute;mero v&aacute;lido de telefone.",
52
+ nieES: "Por favor, forne&ccedil;a um NIE v&aacute;lido.",
53
+ nifES: "Por favor, forne&ccedil;a um NIF v&aacute;lido.",
54
+ nowhitespace: "Por favor, n&atilde;o utilize espa&ccedil;os em branco.",
55
+ pattern: "O formato fornecido &eacute; inv&aacute;lido.",
56
+ phoneNL: "Por favor, forne&ccedil;a um n&uacute;mero de telefone v&aacute;lido.",
57
+ phoneUK: "Por favor, forne&ccedil;a um n&uacute;mero de telefone v&aacute;lido.",
58
+ phoneUS: "Por favor, forne&ccedil;a um n&uacute;mero de telefone v&aacute;lido.",
59
+ phonesUK: "Por favor, forne&ccedil;a um n&uacute;mero de telefone v&aacute;lido.",
60
+ postalCodeCA: "Por favor, forne&ccedil;a um n&uacute;mero de c&oacute;digo postal v&aacute;lido.",
61
+ postalcodeIT: "Por favor, forne&ccedil;a um n&uacute;mero de c&oacute;digo postal v&aacute;lido.",
62
+ postalcodeNL: "Por favor, forne&ccedil;a um n&uacute;mero de c&oacute;digo postal v&aacute;lido.",
63
+ postcodeUK: "Por favor, forne&ccedil;a um n&uacute;mero de c&oacute;digo postal v&aacute;lido.",
64
+ postalcodeBR: "Por favor, forne&ccedil;a um CEP v&aacute;lido.",
65
+ require_from_group: jQuery.validator.format( "Por favor, forne&ccedil;a pelo menos {0} destes campos." ),
66
+ skip_or_fill_minimum: jQuery.validator.format( "Por favor, optar entre ignorar esses campos ou preencher pelo menos {0} deles." ),
67
+ stateUS: "Por favor, forne&ccedil;a um estado v&aacute;lido.",
68
+ strippedminlength: jQuery.validator.format( "Por favor, forne&ccedil;a pelo menos {0} caracteres." ),
69
+ time: "Por favor, forne&ccedil;a um hor&aacute;rio v&aacute;lido, no intervado de 00:00 a 23:59.",
70
+ time12h: "Por favor, forne&ccedil;a um hor&aacute;rio v&aacute;lido, no intervado de 01:00 a 12:59 am/pm.",
71
+ url2: "Por favor, forne&ccedil;a uma URL v&aacute;lida.",
72
+ vinUS: "O n&uacute;mero de identifica&ccedil;&atilde;o de ve&iacute;culo informado (VIN) &eacute; inv&aacute;lido.",
73
+ zipcodeUS: "Por favor, forne&ccedil;a um c&oacute;digo postal americano v&aacute;lido.",
74
+ ziprange: "O c&oacute;digo postal deve estar entre 902xx-xxxx e 905xx-xxxx.",
75
+ cpfBR: "Por favor, forne&ccedil;a um CPF v&aacute;lido.",
76
+ nisBR: "Por favor, forne&ccedil;a um NIS/PIS v&aacute;lido.",
77
+ cnhBR: "Por favor, forne&ccedil;a um CNH v&aacute;lido.",
78
+ cnpjBR: "Por favor, forne&ccedil;a um CNPJ v&aacute;lido."
79
+ } );
js/messages_pt_PT.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: PT (Portuguese; português)
4
+ * Region: PT (Portugal)
5
+ */
6
+ jQuery.extend( jQuery.validator.messages, {
7
+ required: "Campo de preenchimento obrigat&oacute;rio.",
8
+ remote: "Por favor, corrija este campo.",
9
+ email: "Por favor, introduza um endere&ccedil;o eletr&oacute;nico v&aacute;lido.",
10
+ url: "Por favor, introduza um URL v&aacute;lido.",
11
+ date: "Por favor, introduza uma data v&aacute;lida.",
12
+ dateISO: "Por favor, introduza uma data v&aacute;lida (ISO).",
13
+ number: "Por favor, introduza um n&uacute;mero v&aacute;lido.",
14
+ digits: "Por favor, introduza apenas d&iacute;gitos.",
15
+ creditcard: "Por favor, introduza um n&uacute;mero de cart&atilde;o de cr&eacute;dito v&aacute;lido.",
16
+ equalTo: "Por favor, introduza de novo o mesmo valor.",
17
+ extension: "Por favor, introduza um ficheiro com uma extens&atilde;o v&aacute;lida.",
18
+ maxlength: jQuery.validator.format( "Por favor, n&atilde;o introduza mais do que {0} caracteres." ),
19
+ minlength: jQuery.validator.format( "Por favor, introduza pelo menos {0} caracteres." ),
20
+ rangelength: jQuery.validator.format( "Por favor, introduza entre {0} e {1} caracteres." ),
21
+ range: jQuery.validator.format( "Por favor, introduza um valor entre {0} e {1}." ),
22
+ max: jQuery.validator.format( "Por favor, introduza um valor menor ou igual a {0}." ),
23
+ min: jQuery.validator.format( "Por favor, introduza um valor maior ou igual a {0}." ),
24
+ nifES: "Por favor, introduza um NIF v&aacute;lido.",
25
+ nieES: "Por favor, introduza um NIE v&aacute;lido.",
26
+ cifES: "Por favor, introduza um CIF v&aacute;lido."
27
+ } );
js/messages_ro.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: RO (Romanian, limba română)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Acest câmp este obligatoriu.",
7
+ remote: "Te rugăm să completezi acest câmp.",
8
+ email: "Te rugăm să introduci o adresă de email validă.",
9
+ url: "Te rugăm sa introduci o adresă URL validă.",
10
+ date: "Te rugăm să introduci o dată corectă.",
11
+ dateISO: "Te rugăm să introduci o dată (ISO) corectă.",
12
+ number: "Te rugăm să introduci un număr întreg valid.",
13
+ digits: "Te rugăm să introduci doar cifre.",
14
+ creditcard: "Te rugăm să introduci un numar de carte de credit valid.",
15
+ equalTo: "Te rugăm să reintroduci valoarea.",
16
+ extension: "Te rugăm să introduci o valoare cu o extensie validă.",
17
+ maxlength: jQuery.validator.format( "Te rugăm să nu introduci mai mult de {0} caractere." ),
18
+ minlength: jQuery.validator.format( "Te rugăm să introduci cel puțin {0} caractere." ),
19
+ rangelength: jQuery.validator.format( "Te rugăm să introduci o valoare între {0} și {1} caractere." ),
20
+ range: jQuery.validator.format( "Te rugăm să introduci o valoare între {0} și {1}." ),
21
+ max: jQuery.validator.format( "Te rugăm să introduci o valoare egal sau mai mică decât {0}." ),
22
+ min: jQuery.validator.format( "Te rugăm să introduci o valoare egal sau mai mare decât {0}." )
23
+ } );
js/messages_ru.js CHANGED
@@ -1,23 +1,23 @@
1
- /*
2
- * Translated default messages for the jQuery validation plugin.
3
- * Locale: RU
4
- */
5
- jQuery.extend(jQuery.validator.messages, {
6
- required: "Это поле необходимо заполнить.",
7
- remote: "Пожалуйста, введите правильное значение.",
8
- email: "Пожалуйста, введите корретный адрес электронной почты.",
9
- url: "Пожалуйста, введите корректный URL.",
10
- date: "Пожалуйста, введите корректную дату.",
11
- dateISO: "Пожалуйста, введите корректную дату в формате ISO.",
12
- number: "Пожалуйста, введите число.",
13
- digits: "Пожалуйста, вводите только цифры.",
14
- creditcard: "Пожалуйста, введите правильный номер кредитной карты.",
15
- equalTo: "Пожалуйста, введите такое же значение ещё раз.",
16
- accept: "Пожалуйста, выберите файл с правильным расширением.",
17
- maxlength: jQuery.validator.format("Пожалуйста, введите не больше {0} символов."),
18
- minlength: jQuery.validator.format("Пожалуйста, введите не меньше {0} символов."),
19
- rangelength: jQuery.validator.format("Пожалуйста, введите значение длиной от {0} до {1} символов."),
20
- range: jQuery.validator.format("Пожалуйста, введите число от {0} до {1}."),
21
- max: jQuery.validator.format("Пожалуйста, введите число, меньшее или равное {0}."),
22
- min: jQuery.validator.format("Пожалуйста, введите число, большее или равное {0}.")
23
- });
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: RU (Russian; русский язык)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Это поле необходимо заполнить.",
7
+ remote: "Пожалуйста, введите правильное значение.",
8
+ email: "Пожалуйста, введите корректный адрес электронной почты.",
9
+ url: "Пожалуйста, введите корректный URL.",
10
+ date: "Пожалуйста, введите корректную дату.",
11
+ dateISO: "Пожалуйста, введите корректную дату в формате ISO.",
12
+ number: "Пожалуйста, введите число.",
13
+ digits: "Пожалуйста, вводите только цифры.",
14
+ creditcard: "Пожалуйста, введите правильный номер кредитной карты.",
15
+ equalTo: "Пожалуйста, введите такое же значение ещё раз.",
16
+ extension: "Пожалуйста, выберите файл с правильным расширением.",
17
+ maxlength: jQuery.validator.format( "Пожалуйста, введите не больше {0} символов." ),
18
+ minlength: jQuery.validator.format( "Пожалуйста, введите не меньше {0} символов." ),
19
+ rangelength: jQuery.validator.format( "Пожалуйста, введите значение длиной от {0} до {1} символов." ),
20
+ range: jQuery.validator.format( "Пожалуйста, введите число от {0} до {1}." ),
21
+ max: jQuery.validator.format( "Пожалуйста, введите число, меньшее или равное {0}." ),
22
+ min: jQuery.validator.format( "Пожалуйста, введите число, большее или равное {0}." )
23
+ } );
js/messages_sd.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: SD (Sindhi; سنڌي)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "هنن جاين جي ضرورت آهي",
7
+ remote: "هنن جاين جي ضرورت آهي",
8
+ email: "لکيل اي ميل غلط آهي",
9
+ url: "لکيل ايڊريس غلط آهي",
10
+ date: "لکيل تاريخ غلط آهي",
11
+ dateISO: "جي معيار جي مطابق نه آهي (ISO) لکيل تاريخ",
12
+ number: "لکيل انگ صحيح ناهي",
13
+ digits: "رڳو انگ داخل ڪري سگهجي ٿو",
14
+ creditcard: "لکيل ڪارڊ نمبر صحيح نه آهي",
15
+ equalTo: "داخل ٿيل ڀيٽ صحيح نه آهي",
16
+ extension: "لکيل غلط آهي",
17
+ maxlength: jQuery.validator.format( "وڌ کان وڌ {0} جي داخلا ڪري سگهجي ٿي" ),
18
+ minlength: jQuery.validator.format( "گهٽ ۾ گهٽ {0} جي داخلا ڪرڻ ضروري آهي" ),
19
+ rangelength: jQuery.validator.format( "داخلا جو {0} ۽ {1}جي وچ ۾ هجڻ ضروري آهي" ),
20
+ range: jQuery.validator.format( "داخلا جو {0} ۽ {1}جي وچ ۾ هجڻ ضروري آهي" ),
21
+ max: jQuery.validator.format( "وڌ کان وڌ {0} جي داخلا ڪري سگهجي ٿي" ),
22
+ min: jQuery.validator.format( "گهٽ ۾ گهٽ {0} جي داخلا ڪرڻ ضروري آهي" )
23
+ } );
js/messages_si.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: SI (Slovenian)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "To polje je obvezno.",
7
+ remote: "Vpis v tem polju ni v pravi obliki.",
8
+ email: "Prosimo, vnesite pravi email naslov.",
9
+ url: "Prosimo, vnesite pravi URL.",
10
+ date: "Prosimo, vnesite pravi datum.",
11
+ dateISO: "Prosimo, vnesite pravi datum (ISO).",
12
+ number: "Prosimo, vnesite pravo številko.",
13
+ digits: "Prosimo, vnesite samo številke.",
14
+ creditcard: "Prosimo, vnesite pravo številko kreditne kartice.",
15
+ equalTo: "Prosimo, ponovno vnesite enako vsebino.",
16
+ extension: "Prosimo, vnesite vsebino z pravo končnico.",
17
+ maxlength: jQuery.validator.format( "Prosimo, da ne vnašate več kot {0} znakov." ),
18
+ minlength: jQuery.validator.format( "Prosimo, vnesite vsaj {0} znakov." ),
19
+ rangelength: jQuery.validator.format( "Prosimo, vnesite od {0} do {1} znakov." ),
20
+ range: jQuery.validator.format( "Prosimo, vnesite vrednost med {0} in {1}." ),
21
+ max: jQuery.validator.format( "Prosimo, vnesite vrednost manjšo ali enako {0}." ),
22
+ min: jQuery.validator.format( "Prosimo, vnesite vrednost večjo ali enako {0}." )
23
+ } );
js/messages_sk.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: SK (Slovak; slovenčina, slovenský jazyk)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Povinné zadať.",
7
+ maxlength: jQuery.validator.format( "Maximálne {0} znakov." ),
8
+ minlength: jQuery.validator.format( "Minimálne {0} znakov." ),
9
+ rangelength: jQuery.validator.format( "Minimálne {0} a maximálne {1} znakov." ),
10
+ email: "E-mailová adresa musí byť platná.",
11
+ url: "URL musí byť platná.",
12
+ date: "Musí byť dátum.",
13
+ number: "Musí byť číslo.",
14
+ digits: "Môže obsahovať iba číslice.",
15
+ equalTo: "Dve hodnoty sa musia rovnať.",
16
+ range: jQuery.validator.format( "Musí byť medzi {0} a {1}." ),
17
+ max: jQuery.validator.format( "Nemôže byť viac ako {0}." ),
18
+ min: jQuery.validator.format( "Nemôže byť menej ako {0}." ),
19
+ creditcard: "Číslo platobnej karty musí byť platné.",
20
+ step: jQuery.validator.format( "Musí byť násobkom čísla {0}." )
21
+ } );
js/messages_sl.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Language: SL (Slovenian; slovenski jezik)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "To polje je obvezno.",
7
+ remote: "Prosimo popravite to polje.",
8
+ email: "Prosimo vnesite veljaven email naslov.",
9
+ url: "Prosimo vnesite veljaven URL naslov.",
10
+ date: "Prosimo vnesite veljaven datum.",
11
+ dateISO: "Prosimo vnesite veljaven ISO datum.",
12
+ number: "Prosimo vnesite veljavno število.",
13
+ digits: "Prosimo vnesite samo števila.",
14
+ creditcard: "Prosimo vnesite veljavno številko kreditne kartice.",
15
+ equalTo: "Prosimo ponovno vnesite vrednost.",
16
+ extension: "Prosimo vnesite vrednost z veljavno končnico.",
17
+ maxlength: jQuery.validator.format( "Prosimo vnesite največ {0} znakov." ),
18
+ minlength: jQuery.validator.format( "Prosimo vnesite najmanj {0} znakov." ),
19
+ rangelength: jQuery.validator.format( "Prosimo vnesite najmanj {0} in največ {1} znakov." ),
20
+ range: jQuery.validator.format( "Prosimo vnesite vrednost med {0} in {1}." ),
21
+ max: jQuery.validator.format( "Prosimo vnesite vrednost manjše ali enako {0}." ),
22
+ min: jQuery.validator.format( "Prosimo vnesite vrednost večje ali enako {0}." )
23
+ } );
js/messages_sr.js ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: SR (Serbian; српски језик)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Поље је обавезно.",
7
+ remote: "Средите ово поље.",
8
+ email: "Унесите исправну и-мејл адресу.",
9
+ url: "Унесите исправан URL.",
10
+ date: "Унесите исправан датум.",
11
+ dateISO: "Унесите исправан датум (ISO).",
12
+ number: "Унесите исправан број.",
13
+ digits: "Унесите само цифе.",
14
+ creditcard: "Унесите исправан број кредитне картице.",
15
+ equalTo: "Унесите исту вредност поново.",
16
+ extension: "Унесите вредност са одговарајућом екстензијом.",
17
+ maxlength: jQuery.validator.format( "Унесите мање од {0} карактера." ),
18
+ minlength: jQuery.validator.format( "Унесите барем {0} карактера." ),
19
+ rangelength: jQuery.validator.format( "Унесите вредност дугачку између {0} и {1} карактера." ),
20
+ range: jQuery.validator.format( "Унесите вредност између {0} и {1}." ),
21
+ max: jQuery.validator.format( "Унесите вредност мању или једнаку {0}." ),
22
+ min: jQuery.validator.format( "Унесите вредност већу или једнаку {0}." ),
23
+ step: jQuery.validator.format( "Унесите вредност која је умножак броја {0}." )
24
+ } );
js/messages_sr_lat.js ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: SR (Serbian - Latin alphabet; srpski jezik - latinica)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Polje je obavezno.",
7
+ remote: "Sredite ovo polje.",
8
+ email: "Unesite ispravnu e-mail adresu.",
9
+ url: "Unesite ispravan URL.",
10
+ date: "Unesite ispravan datum.",
11
+ dateISO: "Unesite ispravan datum (ISO).",
12
+ number: "Unesite ispravan broj.",
13
+ digits: "Unesite samo cifre.",
14
+ creditcard: "Unesite ispravan broj kreditne kartice.",
15
+ equalTo: "Unesite istu vrednost ponovo.",
16
+ extension: "Unesite vrednost sa odgovarajućom ekstenzijom.",
17
+ maxlength: jQuery.validator.format( "Unesite manje od {0} karaktera." ),
18
+ minlength: jQuery.validator.format( "Unesite barem {0} karaktera." ),
19
+ rangelength: jQuery.validator.format( "Unesite vrednost dugačku između {0} i {1} karaktera." ),
20
+ range: jQuery.validator.format( "Unesite vrednost između {0} i {1}." ),
21
+ max: jQuery.validator.format( "Unesite vrednost manju ili jednaku {0}." ),
22
+ min: jQuery.validator.format( "Unesite vrednost veću ili jednaku {0}." ),
23
+ step: jQuery.validator.format( "Unesite vrednost koja je umnožak broja {0}." )
24
+ } );
js/messages_sv.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: SV (Swedish; Svenska)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Detta f&auml;lt &auml;r obligatoriskt.",
7
+ remote: "Var snäll och åtgärda detta fält.",
8
+ maxlength: jQuery.validator.format( "Du f&aring;r ange h&ouml;gst {0} tecken." ),
9
+ minlength: jQuery.validator.format( "Du m&aring;ste ange minst {0} tecken." ),
10
+ rangelength: jQuery.validator.format( "Ange minst {0} och max {1} tecken." ),
11
+ email: "Ange en korrekt e-postadress.",
12
+ url: "Ange en korrekt URL.",
13
+ date: "Ange ett korrekt datum.",
14
+ dateISO: "Ange ett korrekt datum (&Aring;&Aring;&Aring;&Aring;-MM-DD).",
15
+ number: "Ange ett korrekt nummer.",
16
+ digits: "Ange endast siffror.",
17
+ equalTo: "Ange samma v&auml;rde igen.",
18
+ range: jQuery.validator.format( "Ange ett v&auml;rde mellan {0} och {1}." ),
19
+ max: jQuery.validator.format( "Ange ett v&auml;rde som &auml;r mindre eller lika med {0}." ),
20
+ min: jQuery.validator.format( "Ange ett v&auml;rde som &auml;r st&ouml;rre eller lika med {0}." ),
21
+ creditcard: "Ange ett korrekt kreditkortsnummer.",
22
+ pattern: "Ogiltigt format."
23
+ } );
js/messages_th.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: TH (Thai; ไทย)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "โปรดระบุ",
7
+ remote: "โปรดแก้ไขให้ถูกต้อง",
8
+ email: "โปรดระบุที่อยู่อีเมล์ที่ถูกต้อง",
9
+ url: "โปรดระบุ URL ที่ถูกต้อง",
10
+ date: "โปรดระบุวันที่ ที่ถูกต้อง",
11
+ dateISO: "โปรดระบุวันที่ ที่ถูกต้อง (ระบบ ISO).",
12
+ number: "โปรดระบุทศนิยมที่ถูกต้อง",
13
+ digits: "โปรดระบุจำนวนเต็มที่ถูกต้อง",
14
+ creditcard: "โปรดระบุรหัสบัตรเครดิตที่ถูกต้อง",
15
+ equalTo: "โปรดระบุค่าเดิมอีกครั้ง",
16
+ extension: "โปรดระบุค่าที่มีส่วนขยายที่ถูกต้อง",
17
+ maxlength: jQuery.validator.format( "โปรดอย่าระบุค่าที่ยาวกว่า {0} อักขระ" ),
18
+ minlength: jQuery.validator.format( "โปรดอย่าระบุค่าที่สั้นกว่า {0} อักขระ" ),
19
+ rangelength: jQuery.validator.format( "โปรดอย่าระบุค่าความยาวระหว่าง {0} ถึง {1} อักขระ" ),
20
+ range: jQuery.validator.format( "โปรดระบุค่าระหว่าง {0} และ {1}" ),
21
+ max: jQuery.validator.format( "โปรดระบุค่าน้อยกว่าหรือเท่ากับ {0}" ),
22
+ min: jQuery.validator.format( "โปรดระบุค่ามากกว่าหรือเท่ากับ {0}" )
23
+ } );
js/messages_tj.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: TJ (Tajikistan; Забони тоҷикӣ)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Ворид кардани ин филд маҷбури аст.",
7
+ remote: "Илтимос, маълумоти саҳеҳ ворид кунед.",
8
+ email: "Илтимос, почтаи электронии саҳеҳ ворид кунед.",
9
+ url: "Илтимос, URL адреси саҳеҳ ворид кунед.",
10
+ date: "Илтимос, таърихи саҳеҳ ворид кунед.",
11
+ dateISO: "Илтимос, таърихи саҳеҳи (ISO)ӣ ворид кунед.",
12
+ number: "Илтимос, рақамҳои саҳеҳ ворид кунед.",
13
+ digits: "Илтимос, танҳо рақам ворид кунед.",
14
+ creditcard: "Илтимос, кредит карди саҳеҳ ворид кунед.",
15
+ equalTo: "Илтимос, миқдори баробар ворид кунед.",
16
+ extension: "Илтимос, қофияи файлро дуруст интихоб кунед.",
17
+ maxlength: jQuery.validator.format( "Илтимос, бештар аз {0} рамз ворид накунед." ),
18
+ minlength: jQuery.validator.format( "Илтимос, камтар аз {0} рамз ворид накунед." ),
19
+ rangelength: jQuery.validator.format( "Илтимос, камтар аз {0} ва зиёда аз {1} рамз ворид кунед." ),
20
+ range: jQuery.validator.format( "Илтимос, аз {0} то {1} рақам зиёд ворид кунед." ),
21
+ max: jQuery.validator.format( "Илтимос, бештар аз {0} рақам ворид накунед." ),
22
+ min: jQuery.validator.format( "Илтимос, камтар аз {0} рақам ворид накунед." )
23
+ } );
js/messages_tr.js CHANGED
@@ -1,23 +1,25 @@
1
- /*
2
- * Translated default messages for the jQuery validation plugin.
3
- * Locale: TR
4
- */
5
- jQuery.extend(jQuery.validator.messages, {
6
- required: "Bu alanın doldurulması zorunludur.",
7
- remote: "Lütfen bu alanı düzeltin.",
8
- email: "Lütfen geçerli bir e-posta adresi giriniz.",
9
- url: "Lütfen geçerli bir web adresi (URL) giriniz.",
10
- date: "Lütfen geçerli bir tarih giriniz.",
11
- dateISO: "Lütfen geçerli bir tarih giriniz(ISO formatında)",
12
- number: "Lütfen geçerli bir sayı giriniz.",
13
- digits: "Lütfen sadece sayısal karakterler giriniz.",
14
- creditcard: "Lütfen geçerli bir kredi kartı giriniz.",
15
- equalTo: "Lütfen aynı değeri tekrar giriniz.",
16
- accept: "Lütfen geçerli uzantıya sahip bir değer giriniz.",
17
- maxlength: jQuery.validator.format("Lütfen en fazla {0} karakter uzunluğunda bir değer giriniz."),
18
- minlength: jQuery.validator.format("Lütfen en az {0} karakter uzunluğunda bir değer giriniz."),
19
- rangelength: jQuery.validator.format("Lütfen en az {0} ve en fazla {1} uzunluğunda bir değer giriniz."),
20
- range: jQuery.validator.format("Lütfen {0} ile {1} arasında bir değer giriniz."),
21
- max: jQuery.validator.format("Lütfen {0} değerine eşit ya da daha küçük bir değer giriniz."),
22
- min: jQuery.validator.format("Lütfen {0} değerine eşit ya da daha büyük bir değer giriniz.")
23
- });
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: TR (Turkish; Türkçe)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Bu alanın doldurulması zorunludur.",
7
+ remote: "Lütfen bu alanı düzeltin.",
8
+ email: "Lütfen geçerli bir e-posta adresi giriniz.",
9
+ url: "Lütfen geçerli bir web adresi (URL) giriniz.",
10
+ date: "Lütfen geçerli bir tarih giriniz.",
11
+ dateISO: "Lütfen geçerli bir tarih giriniz(ISO formatında).",
12
+ number: "Lütfen geçerli bir sayı giriniz.",
13
+ digits: "Lütfen sadece sayısal karakterler giriniz.",
14
+ creditcard: "Lütfen geçerli bir kredi kartı giriniz.",
15
+ equalTo: "Lütfen aynı değeri tekrar giriniz.",
16
+ extension: "Lütfen geçerli uzantıya sahip bir değer giriniz.",
17
+ phone: "Lütfen geçerli bir telefon numarası giriniz.",
18
+ maxlength: jQuery.validator.format( "Lütfen en fazla {0} karakter uzunluğunda bir değer giriniz." ),
19
+ minlength: jQuery.validator.format( "Lütfen en az {0} karakter uzunluğunda bir değer giriniz." ),
20
+ rangelength: jQuery.validator.format( "Lütfen en az {0} ve en fazla {1} uzunluğunda bir değer giriniz." ),
21
+ range: jQuery.validator.format( "Lütfen {0} ile {1} arasında bir değer giriniz." ),
22
+ max: jQuery.validator.format( "Lütfen {0} değerine eşit ya da daha küçük bir değer giriniz." ),
23
+ min: jQuery.validator.format( "Lütfen {0} değerine eşit ya da daha büyük bir değer giriniz." ),
24
+ require_from_group: jQuery.validator.format( "Lütfen bu alanların en az {0} tanesini doldurunuz." )
25
+ } );
js/messages_uk.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: UK (Ukrainian; українська мова)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Це поле необхідно заповнити.",
7
+ remote: "Будь ласка, введіть правильне значення.",
8
+ email: "Будь ласка, введіть коректну адресу електронної пошти.",
9
+ url: "Будь ласка, введіть коректний URL.",
10
+ date: "Будь ласка, введіть коректну дату.",
11
+ dateISO: "Будь ласка, введіть коректну дату у форматі ISO.",
12
+ number: "Будь ласка, введіть число.",
13
+ digits: "Вводите потрібно лише цифри.",
14
+ creditcard: "Будь ласка, введіть правильний номер кредитної карти.",
15
+ equalTo: "Будь ласка, введіть таке ж значення ще раз.",
16
+ extension: "Будь ласка, виберіть файл з правильним розширенням.",
17
+ maxlength: jQuery.validator.format( "Будь ласка, введіть не більше {0} символів." ),
18
+ minlength: jQuery.validator.format( "Будь ласка, введіть не менше {0} символів." ),
19
+ rangelength: jQuery.validator.format( "Будь ласка, введіть значення довжиною від {0} до {1} символів." ),
20
+ range: jQuery.validator.format( "Будь ласка, введіть число від {0} до {1}." ),
21
+ max: jQuery.validator.format( "Будь ласка, введіть число, менше або рівно {0}." ),
22
+ min: jQuery.validator.format( "Будь ласка, введіть число, більше або рівно {0}." )
23
+ } );
js/messages_ur.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: UR (Urdu; اردو)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "ان معلومات کا اندراج ضروری ہے",
7
+ remote: "ان معلومات کا اندراج ضروری ہے",
8
+ email: "درج کی ہوئی ای میل درست نہیں ہے",
9
+ url: "درج کیا گیا پتہ درست نہیں ہے",
10
+ date: "درج کی گئی تاریخ درست نہیں ہے",
11
+ dateISO: "معیار کے مطابق نہیں ہے (ISO) درج کی گئی تاریخ",
12
+ number: "درج کیےگئے ہندسے درست نہیں ہیں",
13
+ digits: "صرف ہندسے اندراج کئے جاسکتے ہیں",
14
+ creditcard: "درج کیا گیا کارڈ نمبر درست نہیں ہے",
15
+ equalTo: "اندراج کا موازنہ درست نہیں ہے",
16
+ extension: "اندراج درست نہیں ہے",
17
+ maxlength: jQuery.validator.format( "زیادہ سے زیادہ {0} کا اندراج کر سکتے ہیں" ),
18
+ minlength: jQuery.validator.format( "کم سے کم {0} کا اندراج کرنا ضروری ہے" ),
19
+ rangelength: jQuery.validator.format( "اندراج کا {0} اور {1}کے درمیان ہونا ضروری ہے" ),
20
+ range: jQuery.validator.format( "اندراج کا {0} اور {1} کے درمیان ہونا ضروری ہے" ),
21
+ max: jQuery.validator.format( "زیادہ سے زیادہ {0} کا اندراج کر سکتے ہیں" ),
22
+ min: jQuery.validator.format( "کم سے کم {0} کا اندراج کرنا ضروری ہے" )
23
+ } );
js/messages_vi.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: VI (Vietnamese; Tiếng Việt)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "Hãy nhập.",
7
+ remote: "Hãy sửa cho đúng.",
8
+ email: "Hãy nhập email.",
9
+ url: "Hãy nhập URL.",
10
+ date: "Hãy nhập ngày.",
11
+ dateISO: "Hãy nhập ngày (ISO).",
12
+ number: "Hãy nhập số.",
13
+ digits: "Hãy nhập chữ số.",
14
+ creditcard: "Hãy nhập số thẻ tín dụng.",
15
+ equalTo: "Hãy nhập thêm lần nữa.",
16
+ extension: "Phần mở rộng không đúng.",
17
+ maxlength: jQuery.validator.format( "Hãy nhập từ {0} kí tự trở xuống." ),
18
+ minlength: jQuery.validator.format( "Hãy nhập từ {0} kí tự trở lên." ),
19
+ rangelength: jQuery.validator.format( "Hãy nhập từ {0} đến {1} kí tự." ),
20
+ range: jQuery.validator.format( "Hãy nhập từ {0} đến {1}." ),
21
+ max: jQuery.validator.format( "Hãy nhập từ {0} trở xuống." ),
22
+ min: jQuery.validator.format( "Hãy nhập từ {0} trở lên." )
23
+ } );
js/messages_zh.js ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: ZH (Chinese, 中文 (Zhōngwén), 汉语, 漢語)
4
+ */
5
+ jQuery.extend( jQuery.validator.messages, {
6
+ required: "这是必填字段",
7
+ remote: "请修正此字段",
8
+ email: "请输入有效的电子邮件地址",
9
+ url: "请输入有效的网址",
10
+ date: "请输入有效的日期",
11
+ dateISO: "请输入有效的日期 (YYYY-MM-DD)",
12
+ number: "请输入有效的数字",
13
+ digits: "只能输入数字",
14
+ creditcard: "请输入有效的信用卡号码",
15
+ equalTo: "你的输入不相同",
16
+ extension: "请输入有效的后缀",
17
+ maxlength: jQuery.validator.format( "最多可以输入 {0} 个字符" ),
18
+ minlength: jQuery.validator.format( "最少要输入 {0} 个字符" ),
19
+ rangelength: jQuery.validator.format( "请输入长度在 {0} 到 {1} 之间的字符串" ),
20
+ range: jQuery.validator.format( "请输入范围在 {0} 到 {1} 之间的数值" ),
21
+ step: jQuery.validator.format( "请输入 {0} 的整数倍值" ),
22
+ max: jQuery.validator.format( "请输入不大于 {0} 的数值" ),
23
+ min: jQuery.validator.format( "请输入不小于 {0} 的数值" )
24
+ } );
js/messages_zh_TW.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: ZH (Chinese; 中文 (Zhōngwén), 汉语, 漢語)
4
+ * Region: TW (Taiwan)
5
+ */
6
+ jQuery.extend( jQuery.validator.messages, {
7
+ required: "必須填寫",
8
+ remote: "請修正此欄位",
9
+ email: "請輸入有效的電子郵件",
10
+ url: "請輸入有效的網址",
11
+ date: "請輸入有效的日期",
12
+ dateISO: "請輸入有效的日期 (YYYY-MM-DD)",
13
+ number: "請輸入正確的數值",
14
+ digits: "只可輸入數字",
15
+ creditcard: "請輸入有效的信用卡號碼",
16
+ equalTo: "請重複輸入一次",
17
+ extension: "請輸入有效的後綴",
18
+ maxlength: jQuery.validator.format( "最多 {0} 個字" ),
19
+ minlength: jQuery.validator.format( "最少 {0} 個字" ),
20
+ rangelength: jQuery.validator.format( "請輸入長度為 {0} 至 {1} 之間的字串" ),
21
+ range: jQuery.validator.format( "請輸入 {0} 至 {1} 之間的數值" ),
22
+ step: jQuery.validator.format( "請輸入 {0} 的整數倍值" ),
23
+ max: jQuery.validator.format( "請輸入不大於 {0} 的數值" ),
24
+ min: jQuery.validator.format( "請輸入不小於 {0} 的數值" )
25
+ } );
js/methods_de.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Localized default methods for the jQuery validation plugin.
3
+ * Locale: DE
4
+ */
5
+ jQuery.extend( jQuery.validator.methods, {
6
+ date: function( value, element ) {
7
+ return this.optional( element ) || /^\d\d?\.\d\d?\.\d\d\d?\d?jQuery/.test( value );
8
+ },
9
+ number: function( value, element ) {
10
+ return this.optional( element ) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?jQuery/.test( value );
11
+ }
12
+ } );
js/methods_es_CL.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Localized default methods for the jQuery validation plugin.
3
+ * Locale: ES_CL
4
+ */
5
+ jQuery.extend( jQuery.validator.methods, {
6
+ date: function( value, element ) {
7
+ return this.optional( element ) || /^\d\d?\-\d\d?\-\d\d\d?\d?jQuery/.test( value );
8
+ },
9
+ number: function( value, element ) {
10
+ return this.optional( element ) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?jQuery/.test( value );
11
+ }
12
+ } );
js/methods_fi.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Localized default methods for the jQuery validation plugin.
3
+ * Locale: FI
4
+ */
5
+ jQuery.extend( jQuery.validator.methods, {
6
+ date: function( value, element ) {
7
+ return this.optional( element ) || /^\d{1,2}\.\d{1,2}\.\d{4}jQuery/.test( value );
8
+ },
9
+ number: function( value, element ) {
10
+ return this.optional( element ) || /^-?(?:\d+)(?:,\d+)?jQuery/.test( value );
11
+ }
12
+ } );
js/methods_it.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Localized default methods for the jQuery validation plugin.
3
+ * Locale: IT
4
+ */
5
+ jQuery.extend( jQuery.validator.methods, {
6
+ date: function( value, element ) {
7
+ return this.optional( element ) || /^\d\d?\-\d\d?\-\d\d\d?\d?jQuery/.test( value );
8
+ },
9
+ number: function( value, element ) {
10
+ return this.optional( element ) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?jQuery/.test( value );
11
+ }
12
+ } );
js/methods_nl.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Localized default methods for the jQuery validation plugin.
3
+ * Locale: NL
4
+ */
5
+ jQuery.extend( jQuery.validator.methods, {
6
+ date: function( value, element ) {
7
+ return this.optional( element ) || /^\d\d?[\.\/\-]\d\d?[\.\/\-]\d\d\d?\d?jQuery/.test( value );
8
+ },
9
+ number: function( value, element ) {
10
+ return this.optional( element ) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?jQuery/.test( value );
11
+ }
12
+ } );
js/methods_pt.js ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Localized default methods for the jQuery validation plugin.
3
+ * Locale: PT_BR
4
+ */
5
+ jQuery.extend( jQuery.validator.methods, {
6
+ date: function( value, element ) {
7
+ return this.optional( element ) || /^\d\d?\/\d\d?\/\d\d\d?\d?jQuery/.test( value );
8
+ }
9
+ } );
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: Hiroaki Miyashita
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=WN7Y2442JPRU6
4
  Tags: custom field, custom fields, custom, fields, field, template, meta, custom field template, custom post type, acf, advanced
5
  Requires at least: 2.1
6
- Tested up to: 5.8.2
7
- Stable tag: 2.5.6
8
  License: GPLv2 or later
9
 
10
  The Custom Field Template plugin extends the functionality of custom fields.
@@ -114,9 +114,17 @@ See the default template and modify it.
114
 
115
  == Changelog ==
116
 
 
 
 
 
 
117
  = 2.5.6 =
118
  * Bugfix: multipleButton attribute in a fieldset.
119
 
 
 
 
120
  = 2.5.4 =
121
  * Code cleaning.
122
 
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=WN7Y2442JPRU6
4
  Tags: custom field, custom fields, custom, fields, field, template, meta, custom field template, custom post type, acf, advanced
5
  Requires at least: 2.1
6
+ Tested up to: 6.1.1
7
+ Stable tag: 2.5.7
8
  License: GPLv2 or later
9
 
10
  The Custom Field Template plugin extends the functionality of custom fields.
114
 
115
  == Changelog ==
116
 
117
+ = 2.5.7 =
118
+ * Multiple validation.
119
+ * Loading limitation by the user id, user login and user role.
120
+ * Bugfix: import options.
121
+
122
  = 2.5.6 =
123
  * Bugfix: multipleButton attribute in a fieldset.
124
 
125
+ = 2.5.5 =
126
+ * User ID and User role filters.
127
+
128
  = 2.5.4 =
129
  * Code cleaning.
130