UNPKG

generator-cloudcms

Version:

A generator for bootstrapping a new Cloud CMS project for a client engagement.

155 lines (124 loc) 5.67 kB
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(); }); }); }); } })); });