define([ 'dojo/_base/declare', 'dojo/_base/lang', 'dojo/_base/array', 'dojo/Deferred', 'dijit/_WidgetBase', 'dijit/_TemplatedMixin', 'dijit/_WidgetsInTemplateMixin', 'dojo/text!./templates/AddItemForm.html', 'jimu/portalUtils', 'jimu/portalUrlUtils', 'dojo/data/ItemFileWriteStore', 'dijit/form/ValidationTextBox', 'dijit/form/FilteringSelect', 'jimu/dijit/LoadingShelter' ], function(declare, lang, array, Deferred, _WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin, template, portalUtils, portalUrlUtils, ItemFileWriteStore){ return declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], { baseClass: "jimu-item-form", templateString: template, appConfig: null, folderStore: null, portalUser: null, postMixInProperties:function(){ this.nls = window.jimuNls.common; }, postCreate: function(){ this.inherited(arguments); var portalUrl = portalUrlUtils.getStandardPortalUrl(this.appConfig.portalUrl); var portal = portalUtils.getPortal(portalUrl); portal.getUser().then(lang.hitch(this, function(user) { this.portalUser = user; return user.getContent(); })).then(lang.hitch(this, function(res) { this.folderStore = this._createFolderStore(res.folders, this.portalUser.username); this.itemFolder.set("store", this.folderStore); this.itemFolder.set("required", true); this.itemFolder.set("searchAttr", "name"); this.itemFolder.set("displayedValue", this.portalUser.username); })); }, getName: function() { return this.itemName.get('value'); }, getFolderId: function() { return this.itemFolder.item ? this.folderStore.getValue(this.itemFolder.item, 'id') : ''; }, showBusy: function() { this.shelter.show(); }, hideBusy: function() { this.shelter.hide(); }, validate: function(){ var def = new Deferred(); if (!this.itemForm.validate()) { def.resolve({ valid: false, message: 'param requried' }); } else { // check whether the item name duplicated? def.resolve({ valid: true }); } return def; }, addItem: function(args, folderId) { if (this.portalUser) { return this.portalUser.addItem(args, folderId); } else { var def = new Deferred(); def.resolve({ error: { message: 'portalUser is null' } }); return def; } }, _createFolderStore: function(folders, username) { var folderStore = new ItemFileWriteStore({data: {identifier: "id", label:"name", items:[]}}); folderStore.newItem({name: username, id:""}); array.forEach(folders,function(folder){ folderStore.newItem({name:folder.title, id:folder.id}); }); return folderStore; } }); });