diff --git a/core/modules/commands/server.js b/core/modules/commands/server.js index 3b6f39b22a..c304d9b6df 100644 --- a/core/modules/commands/server.js +++ b/core/modules/commands/server.js @@ -124,7 +124,7 @@ var Command = function(params,commander,callback) { if(fields["revision"]) { delete fields["revision"]; } - state.wiki.addTiddler(new $tw.Tiddler(fields,{title: title})); + state.wiki.addTiddler(new $tw.Tiddler(fields,{title: title},state.wiki.getModificationFields())); var changeCount = state.wiki.getChangeCount(title).toString(); response.writeHead(204, "OK",{ Etag: "\"default/" + title + "/" + changeCount + ":\"" diff --git a/core/modules/startup.js b/core/modules/startup.js index 910eba7dbd..912e1eb5a1 100644 --- a/core/modules/startup.js +++ b/core/modules/startup.js @@ -47,7 +47,7 @@ exports.startup = function() { for(var t=0; t @@ -56,7 +58,7 @@ exports.setTextReference = function(textRef,value,currTiddlerTitle) { // Check if it is a reference to a tiddler if(tr.title && !tr.field) { tiddler = this.getTiddler(tr.title); - this.addTiddler(new $tw.Tiddler(tiddler,{title: tr.title,text: value})); + this.addTiddler(new $tw.Tiddler(tiddler,{title: tr.title,text: value},this.getModificationFields())); // Else check for a field reference } else if(tr.field) { title = tr.title || currTiddlerTitle; @@ -64,7 +66,7 @@ exports.setTextReference = function(textRef,value,currTiddlerTitle) { if(tiddler) { fields = {}; fields[tr.field] = value; - this.addTiddler(new $tw.Tiddler(tiddler,fields)); + this.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields())); } } }; @@ -82,7 +84,7 @@ exports.deleteTextReference = function(textRef,currTiddlerTitle) { if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) { fields = {}; fields[tr.field] = undefined; - this.addTiddler(new $tw.Tiddler(tiddler,fields)); + this.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields())); } } }; @@ -194,6 +196,34 @@ exports.addTiddler = function(tiddler) { this.enqueueTiddlerEvent(title); }; +/* +Return a hashmap of the fields that should be set when a tiddler is modified +*/ +exports.getCreationFields = function() { + var fields = { + created: new Date() + }, + creator = this.getTiddlerText(USER_NAME_TITLE); + if(creator) { + fields.creator = creator; + } + return fields; +}; + +/* +Return a hashmap of the fields that should be set when a tiddler is created +*/ +exports.getModificationFields = function() { + var fields = { + modified: new Date() + }, + modifier = this.getTiddlerText(USER_NAME_TITLE); + if(modifier) { + fields.modifier = modifier; + } + return fields; +}; + /* Return a sorted array of non-system tiddler titles, optionally filtered by a tag */ @@ -457,7 +487,7 @@ Set a tiddlers content to a JavaScript object. Currently this is done by setting */ exports.setTiddlerData = function(title,data) { var tiddler = this.getTiddler(title); - this.addTiddler(new $tw.Tiddler(tiddler,{title: title, type: "application/json", text: JSON.stringify(data,null,$tw.config.preferences.jsonSpaces)})); + this.addTiddler(new $tw.Tiddler(tiddler,{title: title, type: "application/json", text: JSON.stringify(data,null,$tw.config.preferences.jsonSpaces)},this.getModificationFields())); }; /* diff --git a/core/wiki/ControlPanel.tid b/core/wiki/ControlPanel.tid index 989a3ff841..c7a3d6ed01 100644 --- a/core/wiki/ControlPanel.tid +++ b/core/wiki/ControlPanel.tid @@ -6,6 +6,8 @@ title: $:/ControlPanel * [[Subtitle|SiteSubtitle]]: <$edit tiddler="SiteSubtitle" default="" type="input"/> +* [[Username for signing edits|$:/status/UserName]]: <$edit tiddler="$:/status/UserName" default="" type="input"/> + * Edit [[DefaultTiddlers|$:/DefaultTiddlers]] to choose which tiddlers are displayed at startup ! Import tiddlers