mirror of
https://gitlab.com/octtspacc/OcttKB
synced 2025-06-06 00:29:12 +02:00
OcttKB Cross-Repo Sync (HTML to Raw)
This commit is contained in:
@ -1,132 +0,0 @@
|
||||
/*\
|
||||
module-type: widget
|
||||
|
||||
Creates a mangler widget for field validation. This isn't meant to be used
|
||||
by the user. It's only used in Relink configuration.
|
||||
|
||||
\*/
|
||||
|
||||
var Widget = require("$:/core/modules/widgets/widget.js").widget;
|
||||
var language = require('$:/plugins/flibbles/relink/js/language.js');
|
||||
var utils = require('$:/plugins/flibbles/relink/js/utils.js');
|
||||
|
||||
var RelinkManglerWidget = function(parseTreeNode,options) {
|
||||
this.initialise(parseTreeNode,options);
|
||||
this.addEventListeners([
|
||||
{type: "relink-add-field", handler: "handleAddFieldEvent"},
|
||||
{type: "relink-add-operator", handler: "handleAddOperatorEvent"},
|
||||
{type: "relink-add-parameter", handler: "handleAddParameterEvent"},
|
||||
{type: "relink-add-attribute", handler: "handleAddAttributeEvent"}
|
||||
]);
|
||||
};
|
||||
|
||||
exports.relinkmangler = RelinkManglerWidget;
|
||||
|
||||
RelinkManglerWidget.prototype = new Widget();
|
||||
|
||||
// This wraps alert so it can be monkeypatched during testing.
|
||||
RelinkManglerWidget.prototype.alert = function(message) {
|
||||
alert(message);
|
||||
};
|
||||
|
||||
RelinkManglerWidget.prototype.handleAddFieldEvent = function(event) {
|
||||
var param = event.paramObject;
|
||||
if (typeof param !== "object" || !param.field) {
|
||||
// Can't handle it.
|
||||
return true;
|
||||
}
|
||||
var trimmedName = param.field.trim();
|
||||
if (!trimmedName) {
|
||||
// Still can't handle it, but don't warn.
|
||||
return true;
|
||||
}
|
||||
if(!$tw.utils.isValidFieldName(trimmedName)) {
|
||||
this.alert($tw.language.getString(
|
||||
"InvalidFieldName",
|
||||
{variables:
|
||||
{fieldName: trimmedName}
|
||||
}
|
||||
));
|
||||
} else {
|
||||
add(this.wiki, "fields", trimmedName);
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
/**Not much validation, even though there are definitely illegal
|
||||
* operator names. If you input on, Relink won't relink it, but it
|
||||
* won't choke on it either. Tiddlywiki will...
|
||||
*/
|
||||
RelinkManglerWidget.prototype.handleAddOperatorEvent = function(event) {
|
||||
var param = event.paramObject;
|
||||
if (param) {
|
||||
add(this.wiki, "operators", param.operator);
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
RelinkManglerWidget.prototype.handleAddParameterEvent = function(event) {
|
||||
var param = event.paramObject;
|
||||
if (param && param.macro && param.parameter) {
|
||||
if (/\s/.test(param.macro.trim())) {
|
||||
this.alert(language.getString(
|
||||
"text/plain",
|
||||
"Error/InvalidMacroName",
|
||||
{ variables: {macroName: param.macro},
|
||||
wiki: this.wiki
|
||||
}
|
||||
));
|
||||
} else if (/[ \/]/.test(param.parameter.trim())) {
|
||||
this.alert(language.getString(
|
||||
"text/plain",
|
||||
"Error/InvalidParameterName",
|
||||
{ variables: {parameterName: param.parameter},
|
||||
wiki: this.wiki
|
||||
}
|
||||
));
|
||||
} else {
|
||||
add(this.wiki, "macros", param.macro, param.parameter);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
RelinkManglerWidget.prototype.handleAddAttributeEvent = function(event) {
|
||||
var param = event.paramObject;
|
||||
if (param && param.element && param.attribute) {
|
||||
if (/[ \/]/.test(param.element.trim())) {
|
||||
this.alert(language.getString(
|
||||
"text/plain",
|
||||
"Error/InvalidElementName",
|
||||
{ variables: {elementName: param.element},
|
||||
wiki: this.wiki
|
||||
}
|
||||
));
|
||||
} else if (/[ \/]/.test(param.attribute.trim())) {
|
||||
this.alert(language.getString(
|
||||
"text/plain",
|
||||
"Error/InvalidAttributeName",
|
||||
{ variables: {attributeName: param.attribute},
|
||||
wiki: this.wiki
|
||||
}
|
||||
));
|
||||
} else {
|
||||
add(this.wiki, "attributes", param.element, param.attribute);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
function add(wiki, category/*, path parts*/) {
|
||||
var path = "$:/config/flibbles/relink/" + category;
|
||||
for (var x = 2; x < arguments.length; x++) {
|
||||
var part = arguments[x];
|
||||
// Abort if it's falsy, or only whitespace. Also, trim spaces
|
||||
if (!part || !(part = part.trim())) {
|
||||
return;
|
||||
}
|
||||
path = path + "/" + part;
|
||||
}
|
||||
var def = utils.getDefaultType(wiki);
|
||||
wiki.addTiddler({title: path, text: def});
|
||||
};
|
Reference in New Issue
Block a user