nnnjjj123
2020-11-17 1b2c1edb61190eeb19f465ff031eaa3b2a1b8dbc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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;
    }
  });
});