drupal-civicrm/sites/all/modules/civicrm/js/model/crm.schema-mapped.js
2018-01-14 13:10:16 +00:00

48 lines
1.3 KiB
JavaScript

/**
* Dynamically-generated alternative to civi.core.js
*/
(function($, _) {
if (!CRM.Schema) CRM.Schema = {};
/**
* Data models used by the Civi form designer require more attributes than basic Backbone models:
* - sections: array of field-groupings
* - schema: array of fields, keyed by field name, per backbone-forms; extra attributes:
* + section: string, index to the 'sections' array
* + civiFieldType: string
*
* @see https://github.com/powmedia/backbone-forms
*/
CRM.Schema.BaseModel = CRM.Backbone.Model.extend({
initialize: function() {
}
});
CRM.Schema.loadModels = function(civiSchema) {
_.each(civiSchema, function(value, key, list) {
CRM.Schema[key] = CRM.Schema.BaseModel.extend(value);
});
};
CRM.Schema.reloadModels = function(options) {
return $
.ajax({
url: CRM.url("civicrm/profile-editor/schema"),
data: {
'entityTypes': _.keys(CRM.civiSchema).join(',')
},
type: 'POST',
dataType: 'json',
success: function(data) {
if (data) {
CRM.civiSchema = data;
CRM.Schema.loadModels(CRM.civiSchema);
}
}
});
};
CRM.Schema.loadModels(CRM.civiSchema);
})(CRM.$, CRM._);