docs: public boolean checkCreatable(CmsObject cms, String pageFolderRootPath) throws CmsException {
  
          if (cms.getRequestContext().getCurrentProject().isOnlineProject()) {
              return false;
          }
          if (OpenCms.getRoleManager().hasRole(cms, CmsRole.ROOT_ADMIN)) {
              return true;
          }
          if (CmsXmlDynamicFunctionHandler.TYPE_FUNCTION.equals(m_typeName)
              || CmsResourceTypeFunctionConfig.TYPE_NAME.equals(m_typeName)) {
              return OpenCms.getRoleManager().hasRole(cms, CmsRole.DEVELOPER);
          }
          checkInitialized();
          String folderPath = getFolderPath(cms, pageFolderRootPath);
          String oldSiteRoot = cms.getRequestContext().getSiteRoot();
          cms.getRequestContext().setSiteRoot("");
          //tryToUnlock(cms, folderPath);
          CmsResource permissionCheckFolder = null;
          for (String currentPath = folderPath; currentPath != null; currentPath = CmsResource.getParentFolder(
              currentPath)) {
              try {
                  permissionCheckFolder = cms.readResource(currentPath);
                  break;
              } catch (CmsVfsResourceNotFoundException e) {
                  // ignore
              }
          }
          try {
              if (permissionCheckFolder == null) {
                  return false;
              }
              LOG.info("Using " + permissionCheckFolder + " as a permission check folder for " + folderPath);
              CmsExplorerTypeSettings settings = OpenCms.getWorkplaceManager().getExplorerTypeSetting(m_typeName);
              if (settings == null) {
                  return false;
              }
              boolean editable = settings.isEditable(cms, permissionCheckFolder);
              boolean controlPermission = settings.getAccess().getPermissions(
                  cms,
                  permissionCheckFolder).requiresControlPermission();
              boolean hasWritePermission = cms.hasPermissions(
                  permissionCheckFolder,
                  CmsPermissionSet.ACCESS_WRITE,
                  false,
                  CmsResourceFilter.ONLY_VISIBLE_NO_DELETED);
              return editable && controlPermission && hasWritePermission;
          } catch (CmsVfsResourceNotFoundException e) {
              return false;
          } catch (CmsException e) {
              LOG.error(e.getLocalizedMessage(), e);
              return false;
          } finally {
              cms.getRequestContext().setSiteRoot(oldSiteRoot);
          }
      }