mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-04-22 18:53:14 +00:00
Set modified field and other metadata for newly created and modified tiddlers
Right now we're setting the created/modified time, and only setting the creator/modifier if the tiddler `$:/status/UserName` is defined.
This commit is contained in:
parent
bb843a408d
commit
86e73ee323
core
@ -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 + ":\""
|
||||
|
@ -47,7 +47,7 @@ exports.startup = function() {
|
||||
for(var t=0; t<defaultTiddlers.length; t++) {
|
||||
story[t] = defaultTiddlers[t];
|
||||
}
|
||||
$tw.wiki.addTiddler({title: storyTitle, text: story.join("\n")});
|
||||
$tw.wiki.addTiddler({title: storyTitle, text: story.join("\n")},$tw.wiki.getModificationFields());
|
||||
// Host-specific startup
|
||||
if($tw.browser) {
|
||||
// Call browser startup modules
|
||||
|
@ -239,7 +239,7 @@ ImportWidget.prototype.importFiles = function(files) {
|
||||
};
|
||||
|
||||
ImportWidget.prototype.storeTiddler = function(fields) {
|
||||
this.renderer.renderTree.wiki.addTiddler(new $tw.Tiddler(fields));
|
||||
this.renderer.renderTree.wiki.addTiddler(new $tw.Tiddler(fields,this.renderer.renderTree.wiki.getModificationFields()));
|
||||
};
|
||||
|
||||
ImportWidget.prototype.generateTitle = function(baseTitle) {
|
||||
|
@ -144,7 +144,9 @@ NavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {
|
||||
title: draftTitle,
|
||||
"draft.title": event.tiddlerTitle,
|
||||
"draft.of": event.tiddlerTitle
|
||||
}));
|
||||
},
|
||||
this.renderer.renderTree.wiki.getModificationFields()
|
||||
));
|
||||
}
|
||||
}
|
||||
this.saveStoryList();
|
||||
@ -196,12 +198,11 @@ NavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {
|
||||
var tiddler = this.renderer.renderTree.wiki.getTiddler(event.tiddlerTitle);
|
||||
if(tiddler.hasField("draft.title")) {
|
||||
// Save the draft tiddler as the real tiddler
|
||||
this.renderer.renderTree.wiki.addTiddler(new $tw.Tiddler(tiddler,{
|
||||
this.renderer.renderTree.wiki.addTiddler(new $tw.Tiddler(this.renderer.renderTree.wiki.getCreationFields(),tiddler,{
|
||||
title: tiddler.fields["draft.title"],
|
||||
modified: new Date(),
|
||||
"draft.title": undefined,
|
||||
"draft.of": undefined
|
||||
}));
|
||||
},this.renderer.renderTree.wiki.getModificationFields()));
|
||||
// Remove the draft tiddler
|
||||
this.renderer.renderTree.wiki.deleteTiddler(event.tiddlerTitle);
|
||||
// Remove the original tiddler if we're renaming it
|
||||
@ -262,10 +263,10 @@ NavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
var tiddler = new $tw.Tiddler({
|
||||
var tiddler = new $tw.Tiddler(this.renderer.renderTree.wiki.getCreationFields(),{
|
||||
title: title,
|
||||
text: "Newly created tiddler"
|
||||
});
|
||||
},this.renderer.renderTree.wiki.getModificationFields());
|
||||
this.renderer.renderTree.wiki.addTiddler(tiddler);
|
||||
// Create the draft tiddler
|
||||
var draftTitle = this.generateDraftTitle(title),
|
||||
@ -274,7 +275,7 @@ NavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {
|
||||
title: draftTitle,
|
||||
"draft.title": title,
|
||||
"draft.of": title
|
||||
});
|
||||
},this.renderer.renderTree.wiki.getModificationFields());
|
||||
this.renderer.renderTree.wiki.addTiddler(draftTiddler);
|
||||
// Update the story to insert the new draft at the top
|
||||
var slot = this.findTitleInStory(event.navigateFromTitle,-1) + 1;
|
||||
|
@ -24,6 +24,8 @@ last dispatched. Each entry is a hashmap containing two fields:
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
var USER_NAME_TITLE = "$:/status/UserName";
|
||||
|
||||
/*
|
||||
Get the value of a text reference. Text references can have any of these forms:
|
||||
<tiddlertitle>
|
||||
@ -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()));
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user