2014-10-05 17:20:15 +09:00
|
|
|
var findAtts = function () {
|
2014-09-28 16:31:12 +09:00
|
|
|
var c, n = 0;
|
|
|
|
do {
|
|
|
|
c = UI._parentData(n++);
|
|
|
|
} while (c && !c.atts);
|
|
|
|
return c && c.atts;
|
|
|
|
}
|
|
|
|
|
2014-10-05 17:20:15 +09:00
|
|
|
var getSchema = function () {
|
|
|
|
var schema = AutoForm.find().ss._schema;
|
|
|
|
|
|
|
|
// decorate schema with key names
|
|
|
|
schema = _.map(schema, function (field, key) {
|
|
|
|
field.name = key;
|
|
|
|
return field;
|
|
|
|
});
|
|
|
|
|
|
|
|
return schema;
|
|
|
|
}
|
|
|
|
|
2014-10-06 10:40:45 +09:00
|
|
|
var canEditField = function (field) {
|
2014-10-05 17:20:15 +09:00
|
|
|
// show field only if user is admin or it's marked as editable
|
2014-10-06 10:40:45 +09:00
|
|
|
return isAdmin(Meteor.user()) || !!field.atts.editable || (!!field.afFieldInputAtts && !!field.afFieldInputAtts.editable)
|
2014-10-05 17:20:15 +09:00
|
|
|
}
|
|
|
|
|
2014-09-29 11:09:36 +09:00
|
|
|
Template[getTemplate('quickForm_settings')].helpers({
|
2014-10-05 17:20:15 +09:00
|
|
|
fieldsWithNoFieldset: function () {
|
|
|
|
// get names of fields who don't have an autoform attribute or don't have a group
|
|
|
|
var fields = _.pluck(_.filter(getSchema(), function (field, key) {
|
2014-10-06 11:29:47 +09:00
|
|
|
// filter out fields with "$" in their name
|
|
|
|
return (field.name.indexOf('$') === -1) && (!field.autoform || !field.autoform.group); // TODO: find cleaner solution
|
2014-10-05 17:20:15 +09:00
|
|
|
}), 'name');
|
|
|
|
return fields;
|
|
|
|
},
|
2014-09-28 16:31:12 +09:00
|
|
|
afFieldsets: function () {
|
2014-10-05 17:20:15 +09:00
|
|
|
var groups = _.compact(_.uniq(_.pluckDeep(getSchema(), 'autoform.group')));
|
2014-09-28 16:31:12 +09:00
|
|
|
groups = groups.map(function (group) {
|
|
|
|
return capitalise(group);
|
|
|
|
});
|
|
|
|
return groups;
|
|
|
|
},
|
|
|
|
fieldsForFieldset: function () {
|
|
|
|
var fieldset = this.toLowerCase();
|
|
|
|
|
|
|
|
// get names of fields whose group match the current fieldset
|
2014-10-05 17:20:15 +09:00
|
|
|
var fields = _.pluck(_.filter(getSchema(), function (field, key) {
|
2014-10-07 10:20:41 +09:00
|
|
|
return (field.name.indexOf('$') === -1) && field.autoform && field.autoform.group == fieldset;
|
2014-09-28 16:31:12 +09:00
|
|
|
}), 'name');
|
|
|
|
|
|
|
|
return fields;
|
|
|
|
},
|
|
|
|
inputClass: function inputClassHelper() {
|
|
|
|
var atts = findAtts();
|
|
|
|
if (atts) {
|
|
|
|
return atts["input-col-class"];
|
|
|
|
}
|
|
|
|
},
|
|
|
|
labelClass: function inputClassHelper() {
|
|
|
|
var atts = findAtts();
|
|
|
|
if (atts) {
|
|
|
|
return atts["label-class"];
|
|
|
|
}
|
|
|
|
},
|
|
|
|
submitButtonAtts: function bsQuickFormSubmitButtonAtts() {
|
|
|
|
var qfAtts = this.atts;
|
|
|
|
var atts = {type: "submit"};
|
|
|
|
if (typeof qfAtts.buttonClasses === "string") {
|
|
|
|
atts['class'] = qfAtts.buttonClasses;
|
|
|
|
} else {
|
|
|
|
atts['class'] = 'btn btn-primary';
|
|
|
|
}
|
|
|
|
return atts;
|
|
|
|
},
|
|
|
|
qfAutoFormContext: function () {
|
|
|
|
var ctx = _.clone(this.qfAutoFormContext || {});
|
|
|
|
if (typeof ctx["class"] === "string") {
|
|
|
|
ctx["class"] += " form-horizontal";
|
|
|
|
} else {
|
|
|
|
ctx["class"] = "form-horizontal";
|
|
|
|
}
|
|
|
|
if (ctx["input-col-class"])
|
|
|
|
delete ctx["input-col-class"];
|
|
|
|
if (ctx["label-class"])
|
|
|
|
delete ctx["label-class"];
|
|
|
|
return ctx;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2014-10-05 10:12:10 +09:00
|
|
|
Template["afFormGroup_settings"].helpers({
|
|
|
|
afFieldInputAtts: function () {
|
|
|
|
var atts = _.clone(this.afFieldInputAtts || {});
|
|
|
|
if ('input-col-class' in atts) {
|
|
|
|
delete atts['input-col-class'];
|
|
|
|
}
|
|
|
|
atts.template = "bootstrap3";
|
|
|
|
return atts;
|
|
|
|
},
|
|
|
|
afFieldLabelAtts: function () {
|
|
|
|
var atts = _.clone(this.afFieldLabelAtts || {});
|
|
|
|
atts.template = "bootstrap3";
|
|
|
|
return atts;
|
|
|
|
},
|
|
|
|
afEmptyFieldLabelAtts: function () {
|
|
|
|
var atts = _.clone(this.afFieldLabelAtts || {});
|
|
|
|
var labelAtts = _.omit(atts, 'name', 'autoform', 'template');
|
|
|
|
// Add bootstrap class if necessary
|
|
|
|
if (typeof labelAtts['class'] === "string") {
|
|
|
|
labelAtts['class'] += " control-label"; //might be added twice but that shouldn't hurt anything
|
|
|
|
} else {
|
|
|
|
labelAtts['class'] = "control-label";
|
|
|
|
}
|
|
|
|
return labelAtts;
|
|
|
|
},
|
|
|
|
rightColumnClass: function () {
|
|
|
|
var atts = this.afFieldInputAtts || {};
|
|
|
|
return atts['input-col-class'] || "";
|
|
|
|
},
|
|
|
|
showField: function () {
|
2014-10-06 10:40:45 +09:00
|
|
|
return canEditField(this);
|
2014-10-05 10:12:10 +09:00
|
|
|
},
|
|
|
|
afFieldInstructions: function () {
|
|
|
|
return this.afFieldInputAtts.instructions;
|
2014-09-28 16:31:12 +09:00
|
|
|
}
|
2014-10-05 10:12:10 +09:00
|
|
|
});
|
2014-09-28 16:31:12 +09:00
|
|
|
|
2014-10-05 10:12:10 +09:00
|
|
|
Template["afObjectField_settings"].helpers({
|
|
|
|
rightColumnClass: function () {
|
|
|
|
var atts = this.atts || {};
|
|
|
|
return atts['input-col-class'] || "";
|
|
|
|
},
|
|
|
|
afFieldLabelAtts: function () {
|
|
|
|
var atts = this.atts;
|
|
|
|
return {
|
|
|
|
template: "bootstrap3",
|
|
|
|
"class": atts["label-class"],
|
|
|
|
"name": atts.name
|
|
|
|
}
|
2014-10-05 17:20:15 +09:00
|
|
|
},
|
|
|
|
showField: function () {
|
2014-10-06 10:40:45 +09:00
|
|
|
return canEditField(this);
|
2014-10-05 17:20:15 +09:00
|
|
|
},
|
2014-10-05 10:12:10 +09:00
|
|
|
});
|
2014-09-28 16:31:12 +09:00
|
|
|
|
2014-10-05 10:12:10 +09:00
|
|
|
Template["afArrayField_settings"].helpers({
|
|
|
|
rightColumnClass: function () {
|
|
|
|
var atts = this.atts || {};
|
|
|
|
return atts['input-col-class'] || "";
|
|
|
|
},
|
|
|
|
afFieldLabelAtts: function () {
|
|
|
|
var atts = this.atts || {};
|
|
|
|
return {
|
|
|
|
template: "bootstrap3",
|
|
|
|
"class": atts["label-class"],
|
|
|
|
"name": atts.name
|
|
|
|
};
|
2014-10-05 17:20:15 +09:00
|
|
|
},
|
|
|
|
showField: function () {
|
2014-10-06 10:40:45 +09:00
|
|
|
return canEditField(this);
|
2014-10-05 17:20:15 +09:00
|
|
|
},
|
2014-10-05 10:12:10 +09:00
|
|
|
});
|