From bca1d552803c1839e7385765314f81c5307632b8 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Wed, 26 Mar 2014 13:38:43 +0000 Subject: [PATCH] Add validation of legal characters for fieldnames --- core/language/en-GB/Misc.multids | 1 + core/modules/widgets/fieldmangler.js | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/core/language/en-GB/Misc.multids b/core/language/en-GB/Misc.multids index 590e6dac4..c27e81cd3 100644 --- a/core/language/en-GB/Misc.multids +++ b/core/language/en-GB/Misc.multids @@ -5,6 +5,7 @@ ClassicWarning/Upgrade/Caption: upgrade CloseAll/Button: close all ConfirmDeleteTiddler: Do you wish to delete the tiddler "<$text text=<>/>"? ConfirmOverwriteTiddler: Do you wish to overwrite the tiddler "<$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 (`.`) 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/widgets/fieldmangler.js b/core/modules/widgets/fieldmangler.js index aeeb66b80..cb9dc82c8 100644 --- a/core/modules/widgets/fieldmangler.js +++ b/core/modules/widgets/fieldmangler.js @@ -71,10 +71,20 @@ FieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) { }; FieldManglerWidget.prototype.handleAddFieldEvent = function(event) { - var tiddler = this.wiki.getTiddler(this.mangleTitle); + var tiddler = this.wiki.getTiddler(this.mangleTitle), + fieldValidatorRegEx = /^[a-z\-\._]+$/mg; if(tiddler && typeof event.param === "string") { var name = event.param.toLowerCase(); if(name !== "" && !$tw.utils.hop(tiddler.fields,name)) { + if(!fieldValidatorRegEx.test(name)) { + alert($tw.language.getString( + "InvalidFieldName", + {variables: + {fieldName: name} + } + )); + return true; + } var addition = this.wiki.getModificationFields(); addition[name] = ""; this.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));