generator-cloudcms
Version:
A generator for bootstrapping a new Cloud CMS project for a client engagement.
155 lines (124 loc) • 5.67 kB
JavaScript
define(function (require, exports, module) {
var $ = require("jquery");
var Ratchet = require("ratchet/web");
var OneTeam = require("oneteam");
var TemplateHelperFactory = require("template-helper");
var ContentInstancesGadget = require("app/gadgets/project/content/content-instances");
return Ratchet.GadgetRegistry.register("custom-content-instances", ContentInstancesGadget.extend({
doGitanaQuery: function (context, model, searchTerm, query, pagination, callback) {
var selectedContentTypeDescriptor = model.selectedContentTypeDescriptor;
var type = selectedContentTypeDescriptor.definition.getQName();
if (!query) {
query = {};
}
if (type === "dvor:asset") {
query._fields = {
title: 1,
binderId: 1,
image: 1,
lastNameOrModel: 1,
status: 1,
currentLocation: 1
};
if (searchTerm) {
Object.assign(query, OneTeam.searchQuery(searchTerm, ["title", "assetAltTitle", "binderId", "category.title", "subCategory.title", "lastNameOrModel", "description", "firstNamemake"]));
}
} else if (type === "dvor:document") {
query._fields = {
title: 1,
"category.title": 1,
"subCategory.title": 1
};
if (searchTerm) {
Object.assign(query, OneTeam.searchQuery(searchTerm, ["title", "batchId", "assets", "category.title", "subCategory.title", "translationNotes", "additionalInfo"]));
}
} else {
if (searchTerm) {
Object.assign(query, OneTeam.searchQuery(searchTerm, ["title", "description"]));
}
}
this.base(context, model, searchTerm, query, pagination, function (resultMap) {
var array = resultMap.asArray();
model.size = resultMap.size();
model.totalRows = resultMap.totalRows();
callback(resultMap);
});
},
/**
* Loads dynamic/configuration driven portions of the list into the model.
*
* @param model
*/
applyDynamicConfiguration: function (model) {
var self = this;
this.base(model);
var sortSelectorGroupFields = model["selectorGroups"]["sort-selector-group"]["fields"];
sortSelectorGroupFields = [
{
"key": "title",
"title": "Title",
"field": "title"
},
{
"key": "assetAltTitle",
"title": "Asset Altertate Title",
"field": "assetAltTitle"
},
{
"key": "binderId",
"title": "Binder ID",
"field": "binderId"
}
];
},
iconUri: function (row, model, context) {
var _iconUri = OneTeam.iconUriForNode(row);
_iconUri = _iconUri.replace("size=64", "size=128");
_iconUri = _iconUri.replace("icon64", "icon128");
return _iconUri;
},
prepareModel: function(el, model, callback)
{
var self = this;
this.base(el, model, function() {
TemplateHelperFactory.create(self, "content-instances", function(err, renderTemplate) {
model.renderTemplate = renderTemplate;
var project = self.observable("project").get();
model.projectId = project.getId();
model.types = [];
OneTeam.project2ContentTypes(self, true, function(contentTypeEntries) {
var selectedContentTypeDescriptor = null;
// select based on incoming qname, otherwise select first
var qname = model.tokens["qname"];
if (qname)
{
for (var i = 0; i < contentTypeEntries.length; i++)
{
if (contentTypeEntries[i].qname === qname)
{
selectedContentTypeDescriptor = contentTypeEntries[i];
break;
}
}
}
if (!selectedContentTypeDescriptor)
{
if (contentTypeEntries && contentTypeEntries.length > 0)
{
selectedContentTypeDescriptor = contentTypeEntries[0];
}
}
model.selectedContentTypeDescriptor = selectedContentTypeDescriptor;
// we set this here in case any dependent code needs this observable
// (such as the create content wizard which links from this page)
if (selectedContentTypeDescriptor)
{
self.observable("selected-content-type").set(selectedContentTypeDescriptor);
}
callback();
});
});
});
}
}));
});