rename(newLabel) {

    if (typeof newLabel !== 'string') {

      return false;
    }

    if (utils.inArray('/', newLabel)) {

      $tm.notify('A view name must not contain any "/"');

      return false;
    }

    // keep a reference to the old label before we change it
    const oldLabel = this.getLabel();

    // start the renaming
    const newRoot = env.path.views + '/' + newLabel;
    const oldRoot = this.getRoot();

    utils.mv(oldRoot, newRoot, true);

    // update references

    if ($tm.config.sys.defaultView === oldLabel) {
      utils.setEntry($tm.ref.sysUserConf, 'defaultView', newLabel);
    }

    if ($tm.config.sys.liveTab.fallbackView === oldLabel) {
      utils.setEntry($tm.ref.sysUserConf, 'liveTab.fallbackView', newLabel);
    }

    $tw.wiki.each((tObj, tRef) => {

      if (tObj.fields['tmap.open-view'] === oldLabel) {

        // update global node data fields referencing this view
        utils.setField(tRef, 'tmap.open-view', newLabel);

        return;

      }

      if (ViewAbstraction.exists(tRef)) {

        // update all local node data referencing this view
        const view = new ViewAbstraction(tRef);
        const nodes = view.getNodeData();

        for (let id in nodes) {
          if (nodes[id]['open-view'] === oldLabel) {
            nodes[id]['open-view'] = newLabel;
          }
        }

        view.saveNodeData(nodes);

      }

    });

    // clear caches registered to previous root before registering new paths
    this._clearCaches();
    this._registerPaths(newLabel);

  }
Renames the view.

@param {string} newLabel
@return {boolean}