docs: private CmsClientTemplateBean getTemplateBean(CmsObject cms, CmsResource resource) throws CmsException {
  
          CmsProperty titleProp = cms.readPropertyObject(resource, CmsPropertyDefinition.PROPERTY_TITLE, false);
          CmsProperty descProp = cms.readPropertyObject(resource, CmsPropertyDefinition.PROPERTY_DESCRIPTION, false);
          CmsProperty imageProp = cms.readPropertyObject(resource, CmsPropertyDefinition.PROPERTY_TEMPLATE_IMAGE, false);
          CmsProperty selectValueProp = cms.readPropertyObject(
              resource,
              CmsPropertyDefinition.PROPERTY_TEMPLATE_PROVIDER,
              false);
          String sitePath = cms.getSitePath(resource);
          String templateValue = sitePath;
          if (!selectValueProp.isNullProperty() && !CmsStringUtil.isEmptyOrWhitespaceOnly(selectValueProp.getValue())) {
              String selectValue = selectValueProp.getValue();
              CmsMacroResolver resolver = new CmsMacroResolver();
              resolver.addMacro(MACRO_TEMPLATEPATH, sitePath);
              templateValue = resolver.resolveMacros(selectValue);
          }
          return new CmsClientTemplateBean(
              titleProp.getValue(),
              descProp.getValue(),
              templateValue,
              imageProp.getValue());
      }