|  | @@ -310,20 +310,15 @@ module.exports = {
 | 
	
		
			
				|  |  |          subtitle: content.meta.subtitle || '',
 | 
	
		
			
				|  |  |          parentTitle: content.parent.title || '',
 | 
	
		
			
				|  |  |          parentPath: parentPath,
 | 
	
		
			
				|  |  | -        isDirectory: false
 | 
	
		
			
				|  |  | +        isDirectory: false,
 | 
	
		
			
				|  |  | +        isEntry: true
 | 
	
		
			
				|  |  |        }, {
 | 
	
		
			
				|  |  |          new: true,
 | 
	
		
			
				|  |  |          upsert: true
 | 
	
		
			
				|  |  |        })
 | 
	
		
			
				|  |  |      }).then(result => {
 | 
	
		
			
				|  |  | -      return db.Entry.distinct('parentPath', { parentPath: { $ne: '' } }).then(allPaths => {
 | 
	
		
			
				|  |  | -        if (allPaths.length > 0) {
 | 
	
		
			
				|  |  | -          return db.Entry.updateMany({ _id: { $in: allPaths } }, { $set: { isDirectory: true } }).then(() => {
 | 
	
		
			
				|  |  | -            return result
 | 
	
		
			
				|  |  | -          })
 | 
	
		
			
				|  |  | -        } else {
 | 
	
		
			
				|  |  | -          return result
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +      return self.updateTreeInfo().then(() => {
 | 
	
		
			
				|  |  | +        return result
 | 
	
		
			
				|  |  |        })
 | 
	
		
			
				|  |  |      }).catch(err => {
 | 
	
		
			
				|  |  |        winston.error(err)
 | 
	
	
		
			
				|  | @@ -331,6 +326,28 @@ module.exports = {
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * Update tree info for all directory and parent entries
 | 
	
		
			
				|  |  | +   *
 | 
	
		
			
				|  |  | +   * @returns {Promise<Boolean>} Promise of the operation
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  updateTreeInfo () {
 | 
	
		
			
				|  |  | +    return db.Entry.distinct('parentPath', { parentPath: { $ne: '' } }).then(allPaths => {
 | 
	
		
			
				|  |  | +      if (allPaths.length > 0) {
 | 
	
		
			
				|  |  | +        return Promise.map(allPaths, pathItem => {
 | 
	
		
			
				|  |  | +          let parentPath = _.chain(pathItem).split('/').initial().join('/').value()
 | 
	
		
			
				|  |  | +          let guessedTitle = _.chain(pathItem).split('/').last().startCase().value()
 | 
	
		
			
				|  |  | +          return db.Entry.update({ _id: pathItem }, {
 | 
	
		
			
				|  |  | +            $set: { isDirectory: true },
 | 
	
		
			
				|  |  | +            $setOnInsert: { isEntry: false, title: guessedTitle, parentPath }
 | 
	
		
			
				|  |  | +          }, { upsert: true })
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        return true
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    /**
 | 
	
		
			
				|  |  |     * Create a new document
 | 
	
		
			
				|  |  |     *
 | 
	
	
		
			
				|  | @@ -428,6 +445,6 @@ module.exports = {
 | 
	
		
			
				|  |  |     * @return {Promise<Array>} List of entries
 | 
	
		
			
				|  |  |     */
 | 
	
		
			
				|  |  |    getFromTree (basePath) {
 | 
	
		
			
				|  |  | -    return db.Entry.find({ parentPath: basePath })
 | 
	
		
			
				|  |  | +    return db.Entry.find({ parentPath: basePath }, 'title parentPath isDirectory isEntry').sort({ title: 'asc' })
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 |