diff --git a/core/language/en-GB/Misc.multids b/core/language/en-GB/Misc.multids index 0718b08b8..0890424a5 100644 --- a/core/language/en-GB/Misc.multids +++ b/core/language/en-GB/Misc.multids @@ -7,7 +7,7 @@ ConfirmCancelTiddler: Do you wish to discard changes to the tiddler "<$text text ConfirmDeleteTiddler: Do you wish to delete the tiddler "<$text text=<>/>"? ConfirmOverwriteTiddler: Do you wish to overwrite the tiddler "<$text text=<<title>>/>"? ConfirmEditShadowTiddler: You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit "<$text text=<<title>>/>"? -InvalidFieldName: Illegal characters in field name "<$text text=<<fieldName>>/>". Fields can only contain lowercase letters and the characters underscore (`_`), hyphen (`-`) and period (`.`) +InvalidFieldName: Illegal characters in field name "<$text text=<<fieldName>>/>". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`) MissingTiddler/Hint: Missing tiddler "<$text text=<<currentTiddler>>/>" - click {{$:/core/images/edit-button}} to create RecentChanges/DateFormat: DDth MMM YYYY RelativeDate/Future/Days: <<period>> days from now diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index 5a01fd387..0ed21f88c 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -413,6 +413,18 @@ exports.parseTextReference = function(textRef) { } }; +/* +Checks whether a string is a valid fieldname +*/ +exports.isValidFieldName = function(name) { + if(!name || typeof name !== "string") { + return false; + } + name = name.toLowerCase().trim(); + var fieldValidatorRegEx = /^[a-z0-9\-\._]+$/mg; + return fieldValidatorRegEx.test(name); +}; + /* Extract the version number from the meta tag or from the boot file */ diff --git a/core/modules/widgets/fieldmangler.js b/core/modules/widgets/fieldmangler.js index d902e755a..afb60b577 100644 --- a/core/modules/widgets/fieldmangler.js +++ b/core/modules/widgets/fieldmangler.js @@ -71,12 +71,11 @@ FieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) { }; FieldManglerWidget.prototype.handleAddFieldEvent = function(event) { - var tiddler = this.wiki.getTiddler(this.mangleTitle), - fieldValidatorRegEx = /^[a-z\-\._]+$/mg; + var tiddler = this.wiki.getTiddler(this.mangleTitle); if(tiddler && typeof event.param === "string") { var name = event.param.toLowerCase().trim(); if(name !== "" && !$tw.utils.hop(tiddler.fields,name)) { - if(!fieldValidatorRegEx.test(name)) { + if(!$tw.utils.isValidFieldName(name)) { alert($tw.language.getString( "InvalidFieldName", {variables: