Package org.infoglue.deliver.applications.databeans

Examples of org.infoglue.deliver.applications.databeans.ComponentProperty


      String componentEditorUrl = CmsPropertyHandler.getComponentEditorUrl();
 
      DecoratedComponentBasedHTMLPageInvoker dec = new DecoratedComponentBasedHTMLPageInvoker();
      Collection properties = dec.getComponentProperties(this.getComponentLogic().getInfoGlueComponent().getId(), this, siteNodeId, languageId, this.getComponentLogic().getInfoGlueComponent().getContentId());
 
      ComponentProperty property = null;
      Iterator propertiesIterator = properties.iterator();
      while(propertiesIterator.hasNext())
      {
        ComponentProperty propertyCandidate = (ComponentProperty)propertiesIterator.next();
        if(logger.isInfoEnabled())
          logger.info("propertyCandidate:" + propertyCandidate.getName());
        if(propertyCandidate.getName().equals(propertyName)) 
          property = propertyCandidate;
      }
     
      String contentId = "-1";
     
View Full Code Here


    Collection componentProperties = getComponentProperties(componentId, document);
    boolean skipLanguageDrop = true;
    Iterator componentPropertiesIterator = componentProperties.iterator();
    while(componentPropertiesIterator.hasNext())
    {
      ComponentProperty componentProperty = (ComponentProperty)componentPropertiesIterator.next();
      boolean allowLanguageVariations = componentProperty.getAllowLanguageVariations();
      if(allowLanguageVariations)
        skipLanguageDrop = false;
    }
   
    sb.append("<div id=\"component" + componentId + "Properties\" class=\"componentProperties\" style=\"right:5px; top:5px; position: absolute; visibility:hidden; display: none;\">");
    sb.append("  <div id=\"component" + componentId + "PropertiesHandle\" class=\"componentPropertiesHandle\"><div class=\"leftPaletteHandleCompProps\">Properties - " + componentName + " in slot " + slotName + "</div><div class=\"rightPaletteHandleCompProps closeDialog\" onclick=\"hideDiv('component" + componentId + "Properties');\">&nbsp;</div></div>");

    sb.append("  <form id=\"component" + componentId + "PropertiesForm\" name=\"component" + componentId + "PropertiesForm\" action=\"" + componentEditorUrl + "ViewSiteNodePageComponents!updateComponentProperties.action\" method=\"post\">");
    if(languages.size() == 1 || skipLanguageDrop)
      sb.append("<input type=\"hidden\" name=\"languageId\" value=\"" + ((LanguageVO)languages.get(0)).getId() + "\"/>");
   
    sb.append("    <div id=\"component" + componentId + "PropertiesBody\" class=\"componentPropertiesBody\">");
   
    sb.append("    <table class=\"igPropertiesTable\" border=\"0\" cellpadding=\"4\" cellspacing=\"0\" style='padding: 2px; margin-bottom: 6px;'>");
   
    sb.append("    <tr>");
    sb.append("      <td width=\"20%\"><img src='css/images/trans.gif' width='1' height='1' alt=\"trans\"/></td><td width=\"75%\"><img src='css/images/trans.gif' width='1' height='1' alt=\"trans\"/></td><td width=\"16\"><img src='css/images/trans.gif' width='16' height='1' alt=\"trans\"/></td><td width=\"16\"><img src='css/images/trans.gif' width='16' height='1' alt=\"trans\"/></td>");
    sb.append("    </tr>");

    if(languages.size() > 1 && !skipLanguageDrop)
    {
      sb.append("    <tr class=\"igtr\">");
      sb.append("      <td class=\"igpropertylabel\" align=\"left\">" + getLocalizedString(locale, "deliver.editOnSight.changeLanguage") + "</td>");
      sb.append("      <td class=\"igtd\" align=\"left\">");
   
      sb.append("      ");
      sb.append("      <select class=\"mediumdrop\" name=\"languageId\" onchange=\"javascript:changeLanguage(" + siteNodeId + ", this, " + contentId + ");\">");
     
      Iterator languageIterator = languages.iterator();
      int index = 0;
      int languageIndex = index;
      while(languageIterator.hasNext())
      {
        LanguageVO languageVO = (LanguageVO)languageIterator.next();
        if(languageVO.getLanguageId().intValue() == languageId.intValue())
        {
          sb.append("          <option class=\"iglabel\" value=\"" + languageVO.getLanguageId() + "\" selected=\"selected\">" + languageVO.getName() + "</option>");
          languageIndex = index;
        }
        else
        {
          sb.append("          <option value=\"" + languageVO.getLanguageId() + "\">" + languageVO.getName() + "</option>");
        }
        index++;
      }
      sb.append("      </select>");
      sb.append("      <!--");
      sb.append("        var originalIndex = " + languageIndex + ";");
      sb.append("      -->");
 
      sb.append("      </td>");
      sb.append("      <td class=\"igtd\">&nbsp;</td>");
      sb.append("      <td class=\"igtd\">&nbsp;</td>");
      sb.append("    </tr>");

      sb.append("    <tr>");
      sb.append("      <td class=\"igtd igpropertyDivider\" colspan='4'><img src='css/images/trans.gif' width='100' height='5' alt=\"trans\"/></td>");
      sb.append("    </tr>");
    }
   
    //Collection componentProperties = getComponentProperties(componentId, document);
   
    String hideProtectedProperties = CmsPropertyHandler.getHideProtectedProperties();
    int numberOfHiddenProperties = 0;
   
    int propertyIndex = 0;
    int accessablePropertyIndex = 0;
    boolean isAdvancedProperties = false;
    //Iterator componentPropertiesIterator = componentProperties.iterator();
    componentPropertiesIterator = componentProperties.iterator();
    while(componentPropertiesIterator.hasNext())
    {
      ComponentProperty componentProperty = (ComponentProperty)componentPropertiesIterator.next();
   
      boolean hasAccessToProperty = AccessRightController.getController().getIsPrincipalAuthorized(templateController.getDatabase(), principal, "ComponentPropertyEditor.EditProperty", "" + componentContentId + "_" + componentProperty.getName(), true);
      boolean isFirstAdvancedProperty = false;
      if(componentProperty.getName().equalsIgnoreCase("CacheResult"))
      {
        isFirstAdvancedProperty = true;
        isAdvancedProperties = true;
      }
     
      //logger.info("componentProperty:" + componentProperty.getName() + ":" + isAdvancedProperties);
      if(componentProperty.getName().equalsIgnoreCase("CacheResult") ||
         componentProperty.getName().equalsIgnoreCase("UpdateInterval") ||
         componentProperty.getName().equalsIgnoreCase("CacheKey") ||
         componentProperty.getName().equalsIgnoreCase("PreRenderOrder"))
      {
        hasAccessToProperty = true;
      }
     
      String title = "";
     
      //Advanced properties
      if(isFirstAdvancedProperty)
      {
        if(componentProperties.size() - numberOfHiddenProperties < 1)
        {
          sb.append("    <tr class=\"igtr\">");
          sb.append("      <td class=\"igpropertyvalue\" valign=\"top\" align=\"left\" colspan=\"4\" style=\"padding: 6px 0px 6px 2px;\">" + getLocalizedString(locale, "deliver.editOnSight.noPropertiesVisible") + " </td>");
          sb.append("    </tr>");
        }
       
        boolean hasAccessToAdvancedProperties = AccessRightController.getController().getIsPrincipalAuthorized(templateController.getDatabase(), principal, "ComponentPropertyEditor.EditAdvancedProperties", true, false, false);
        if(hasAccessToAdvancedProperties)
        {
          sb.append("    <tr class=\"igtr\">");
          sb.append("      <td class=\"igpropertylabel\" valign=\"top\" align=\"left\" colspan=\"4\" style=\"padding: 6px 0px 6px 2px; font-weight: bold;\">" + getLocalizedString(locale, "deliver.editOnSight.advancedProperties") + " <img src='css/images/downArrow.gif' onclick=\"$('.advancedProperty" + componentId + "').toggle();\" alt=\"toggle\"/></td>");
          sb.append("    </tr>");
        }
      }

      if(!hasAccessToProperty && hideProtectedProperties.equalsIgnoreCase("true"))
      {
        numberOfHiddenProperties++;
      }
      else
      {
        StringBuffer helpSB = new StringBuffer();
        helpSB.append("<div class=\"tooltipDiv\" id=\"helpLayer" + componentProperty.getComponentId() + "_" + formatter.replaceNonAscii(componentProperty.getName(), "_") + "\">");
        helpSB.append("" + (componentProperty.getDescription() == null || componentProperty.getDescription().equalsIgnoreCase("") ? "No description" : componentProperty.getDescription()) + "");
        helpSB.append("</div>");
 
        if(componentProperty.getType().equalsIgnoreCase(ComponentProperty.BINDING))
        {
          String assignUrl = "";
          String createUrl = "";
          
          if(componentProperty.getVisualizingAction() != null && !componentProperty.getVisualizingAction().equals(""))
          {
            assignUrl = componentEditorUrl + componentProperty.getVisualizingAction() + "?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + getTemplateController().getDeliveryContext().getShowSimple();
          }
          else
         
            if(componentProperty.getEntityClass().equalsIgnoreCase("Content"))
            {
                String allowedContentTypeIdParameters = "";
 
                if(componentProperty.getAllowedContentTypeNamesArray() != null && componentProperty.getAllowedContentTypeNamesArray().length > 0)
                {
                    allowedContentTypeIdParameters = "&" + componentProperty.getAllowedContentTypeIdAsUrlEncodedString(templateController.getDatabase());
                    logger.info("allowedContentTypeIdParameters:" + allowedContentTypeIdParameters);
                }
               
              if(componentProperty.getIsMultipleBinding())
              {
                if(componentProperty.getIsAssetBinding())
                {
                  if(CmsPropertyHandler.getComponentBindningAssetBrowser().equalsIgnoreCase("classic"))
                    assignUrl = componentEditorUrl + "ViewSiteNodePageComponents!showContentTreeForMultipleAssetBinding.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + allowedContentTypeIdParameters + "&showSimple=" + getTemplateController().getDeliveryContext().getShowSimple();
                  else
                    assignUrl = componentEditorUrl + "ViewContentVersion!viewAssetBrowserForMultipleComponentBindingV3.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + allowedContentTypeIdParameters + "&assetTypeFilter=" + componentProperty.getAssetMask() + "&showSimple=" + getTemplateController().getDeliveryContext().getShowSimple();
                }
                else
                  assignUrl = componentEditorUrl + "ViewSiteNodePageComponents!showContentTreeForMultipleBindingV3.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + allowedContentTypeIdParameters + "&showSimple=" + getTemplateController().getDeliveryContext().getShowSimple();
             
                if(componentProperty.getBindings().size() > 0)
                {
                  ComponentBinding firstBinding = componentProperty.getBindings().get(0);
                  title = templateController.getContentPath(firstBinding.getEntityId(), true, true);
                }
              }
              else
              {
                if(componentProperty.getIsAssetBinding())
                {
                  String assignedParameters = "";
                  Iterator<ComponentBinding> bindingsIterator = componentProperty.getBindings().iterator();
                  while(bindingsIterator.hasNext())
                  {
                    ComponentBinding componentBinding = bindingsIterator.next();
                    assignedParameters = "&assignedContentId=" + componentBinding.getEntityId() + "&assignedAssetKey=" + formatter.encodeURI(componentBinding.getAssetKey()) + "&assignedPath=" + formatter.encodeURI(componentProperty.getValue());
                  }
                 
                  if(CmsPropertyHandler.getComponentBindningAssetBrowser().equalsIgnoreCase("classic"))
                    assignUrl = componentEditorUrl + "ViewContentVersion!viewAssetsForComponentBinding.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + allowedContentTypeIdParameters + "&showSimple=" + getTemplateController().getDeliveryContext().getShowSimple() + assignedParameters;
                  else
                    assignUrl = componentEditorUrl + "ViewContentVersion!viewAssetBrowserForComponentBindingV3.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + allowedContentTypeIdParameters + "&assetTypeFilter=" + componentProperty.getAssetMask() + "&showSimple=" + getTemplateController().getDeliveryContext().getShowSimple() + assignedParameters;
                }
                else
                  assignUrl = componentEditorUrl + "ViewSiteNodePageComponents!showContentTreeV3.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + allowedContentTypeIdParameters + "&showSimple=" + getTemplateController().getDeliveryContext().getShowSimple();

                if(componentProperty.getBindings().size() > 0)
                {
                  ComponentBinding firstBinding = componentProperty.getBindings().get(0);
                  title = templateController.getContentPath(firstBinding.getEntityId(), true, true);
                }
              }
            }
            else if(componentProperty.getEntityClass().equalsIgnoreCase("SiteNode"))
            {
              if(componentProperty.getIsMultipleBinding())
                assignUrl = componentEditorUrl + "ViewSiteNodePageComponents!showStructureTreeForMultipleBindingV3.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + getTemplateController().getDeliveryContext().getShowSimple();
              else
                assignUrl = componentEditorUrl + "ViewSiteNodePageComponents!showStructureTreeV3.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + getTemplateController().getDeliveryContext().getShowSimple();

              if(componentProperty.getBindings().size() > 0)
              {
                ComponentBinding firstBinding = componentProperty.getBindings().get(0);
                title = templateController.getPagePath(firstBinding.getEntityId(), languageId); // .getContentPath(firstBinding.getEntityId(), true, true);
              }
            }
            else if(componentProperty.getEntityClass().equalsIgnoreCase("Category"))
            {
              if(componentProperty.getIsMultipleBinding())
                assignUrl = componentEditorUrl + "ViewSiteNodePageComponents!showCategoryTreeForMultipleBinding.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + getTemplateController().getDeliveryContext().getShowSimple();
              else
                assignUrl = componentEditorUrl + "ViewSiteNodePageComponents!showCategoryTree.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + getTemplateController().getDeliveryContext().getShowSimple();
            }
          }
           
          if(componentProperty.getCreateAction() != null && !componentProperty.getCreateAction().equals(""))
          {
            createUrl = componentEditorUrl + componentProperty.getCreateAction() + "?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + getTemplateController().getDeliveryContext().getShowSimple();
          }
          else
         
            if(componentProperty.getVisualizingAction() != null && !componentProperty.getVisualizingAction().equals(""))
            {
              createUrl = assignUrl;
            }
            else if(componentProperty.getEntityClass().equalsIgnoreCase("Content"))
            {
                String allowedContentTypeIdParameters = "";
 
                if(componentProperty.getAllowedContentTypeNamesArray() != null && componentProperty.getAllowedContentTypeNamesArray().length > 0)
                {
                    allowedContentTypeIdParameters = "&" + componentProperty.getAllowedContentTypeIdAsUrlEncodedString(templateController.getDatabase());
                    logger.info("allowedContentTypeIdParameters:" + allowedContentTypeIdParameters);
                }
 
                String returnAddress = URLEncoder.encode("ViewSiteNodePageComponents!addComponentPropertyBinding.action?siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=-1&entity=Content&entityId=#entityId&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&path=#path&showSimple=" + this.getTemplateController().getDeliveryContext().getShowSimple() + "", "UTF-8");
             
                  String cancelKey = templateController.getOriginalFullURL();
                  String cancelAddress = (String)CacheController.getCachedObjectFromAdvancedCache("encodedStringsCache", cancelKey);
                  if(cancelAddress == null)
                  {
                    cancelAddress = URLEncoder.encode(cancelKey, "UTF-8");
                    CacheController.cacheObjectInAdvancedCache("encodedStringsCache", cancelKey, cancelAddress);
                  }
 
              if(componentProperty.getIsMultipleBinding())
                createUrl = componentEditorUrl + "CreateContentWizardFinish!V3.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + allowedContentTypeIdParameters + "&refreshAddress=" + returnAddress + "&cancelAddress=" + cancelAddress + "&showSimple=" + this.getTemplateController().getDeliveryContext().getShowSimple();
              else
                createUrl = componentEditorUrl + "CreateContentWizardFinish!V3.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + allowedContentTypeIdParameters + "&refreshAddress=" + returnAddress + "&cancelAddress=" + cancelAddress + "&showSimple=" + this.getTemplateController().getDeliveryContext().getShowSimple();
            }
            else if(componentProperty.getEntityClass().equalsIgnoreCase("SiteNode"))
            {
              //createUrl = null;
 
                String returnAddress = URLEncoder.encode("ViewSiteNodePageComponents!addComponentPropertyBinding.action?siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=-1&entity=Content&entityId=#entityId&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&path=#path&showSimple=" + this.getTemplateController().getDeliveryContext().getShowSimple() + "", "UTF-8");
             
                  String cancelKey = templateController.getOriginalFullURL();
                  String cancelAddress = (String)CacheController.getCachedObjectFromAdvancedCache("encodedStringsCache", cancelKey);
                  if(cancelAddress == null)
                  {
                    cancelAddress = URLEncoder.encode(cancelKey, "UTF-8");
                    CacheController.cacheObjectInAdvancedCache("encodedStringsCache", cancelKey, cancelAddress);
                  }
 
              if(componentProperty.getIsMultipleBinding())
                createUrl = componentEditorUrl + "CreateSiteNodeWizardFinish.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&refreshAddress=" + returnAddress + "&cancelAddress=" + cancelAddress + "&showSimple=" + this.getTemplateController().getDeliveryContext().getShowSimple();
              else
                createUrl = componentEditorUrl + "CreateSiteNodeWizardFinish.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&refreshAddress=" + returnAddress + "&cancelAddress=" + cancelAddress + "&showSimple=" + this.getTemplateController().getDeliveryContext().getShowSimple();
            }
          }
                 
          boolean isPuffContentForPage = false;
          if(componentProperty.getType().equalsIgnoreCase(ComponentProperty.BINDING) && componentProperty.getEntityClass().equalsIgnoreCase("Content") && componentProperty.getIsPuffContentForPage())
            isPuffContentForPage = true;
         
          String dividerClass = "igpropertyDivider";
          if(isPuffContentForPage)
            dividerClass = "";
         
          if(isAdvancedProperties)
            sb.append("    <tr class=\"igtr advancedProperty" + componentId + "\" style='display:none;'>");
          else
            sb.append("    <tr class=\"igtr\">");
         
          sb.append("        <td class=\"igpropertylabel " + dividerClass + "\" valign=\"top\" align=\"left\">" + componentProperty.getDisplayName() + "</td>");
          sb.append("        <td class=\"igpropertyvalue " + dividerClass + "\" align=\"left\">");
 
          if(hasAccessToProperty)
          {
            String warningText = getLocalizedString(locale, "deliver.editOnSight.dirtyWarning");
            sb.append("<a title=\"" + title + "\" class=\"componentEditorLink\" href=\"#\" onclick=\"if(checkDirty('" + warningText + "')){openInlineDivImpl('" + assignUrl + "', 900, 850, true, true);} return false;\">");
          }
 
          String additionalInformation = "";
          if(componentProperty.getIsAssetBinding())
          {
            additionalInformation += " (" + componentProperty.getAssetKey() + ")";
          }
          if(componentProperty.getIsSupplementingEntity())
          {
            additionalInformation += " (" + "*" + ")";
          }
 
          sb.append("" + (componentProperty.getValue() == null || componentProperty.getValue().equalsIgnoreCase("") ? "Undefined" : componentProperty.getValue()) + additionalInformation);
         
          if(hasAccessToProperty)
            sb.append("</a>");
         
          sb.append("</td>");
         
          if(componentProperty.getValue() != null && componentProperty.getValue().equalsIgnoreCase("Undefined"))
          { 
            if(hasAccessToProperty && createUrl != null)
              sb.append("      <td class=\"igtd " + dividerClass + "\" width=\"16\"><a class=\"componentEditorLink\" href=\"#\" onclick=\"openInlineDivImpl('" + createUrl + "', 900, 850, true, true); return false;\"><img src=\"" + componentEditorUrl + "/css/images/createContent.gif\" border=\"0\" alt=\"Create new content to show\"/></a></td>");
            else
              sb.append("      <td class=\"igtd " + dividerClass + "\" width=\"16\">&nbsp;</td>");
          }
          else
          {
            if(hasAccessToProperty)
              sb.append("      <td class=\"igtd " + dividerClass + "\" width=\"16\"><a class=\"componentEditorLink\" href=\"" + componentEditorUrl + "ViewSiteNodePageComponents!deleteComponentPropertyValue.action?siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + this.getTemplateController().getDeliveryContext().getShowSimple() + "\"><img src=\"" + componentEditorUrl + "/css/images/delete.gif\" border=\"0\" style='padding-top: 2px;' alt=\"delete\"/></a></td>");
          }
          sb.append("      <td class=\"igtd " + dividerClass + "\" width=\"16\"><img class=\"questionMark\" src=\"" + componentEditorUrl + "/css/images/questionMarkGrad.gif\" onmouseover=\"javascript:showDiv('helpLayer" + componentProperty.getComponentId() + "_" + formatter.replaceNonAscii(componentProperty.getName(), "_") + "');\" onmouseout=\"javascript:hideDiv('helpLayer" + componentProperty.getComponentId() + "_" + formatter.replaceNonAscii(componentProperty.getName(), "_") + "');\" alt=\"question\"/>" + helpSB + "</td>");
         
          sb.append("    </tr>");
         
          if(isPuffContentForPage && componentProperty.getBindings() != null && componentProperty.getBindings().size() > 0)
          {
            sb.append("  <tr>");

            ComponentBinding binding = componentProperty.getBindings().get(0);
            List referencingPages = templateController.getReferencingPages(binding.getEntityId(), 50, new Boolean(true));
           
            if(referencingPages.size() == 0)
            {
              sb.append("      <td class=\"igpropertylabel igpropertyDivider\" valign=\"top\" align=\"left\">&nbsp;</td><td class=\"igpropertyvalue igpropertyDivider\" valign=\"top\" align=\"left\">");
              sb.append("      " + getLocalizedString(locale, "deliver.editOnSight.noDetailPageWithContentBinding.label"));
            }
            else if(referencingPages.size() == 1)
            {
              SiteNodeVO siteNodeVO = (SiteNodeVO)referencingPages.get(0);
              String path = templateController.getPagePath(siteNodeVO.getId(), templateController.getLanguageId());
              sb.append("      <td class=\"igpropertylabel igpropertyDivider\" valign=\"top\" align=\"left\">&nbsp;</td><td class=\"igpropertyvalue igpropertyDivider\" valign=\"top\" align=\"left\">");
              sb.append("      " + getLocalizedString(locale, "deliver.editOnSight.detailPageWithContentBinding.label") + "<span title='" + path + "'>" + siteNodeVO.getName() + "(" + siteNodeVO.getSiteNodeId() + ")</span>");
            }
            else
            {
              sb.append("      <td class=\"igpropertylabel igpropertyDivider\" valign=\"top\" align=\"left\">" + getLocalizedString(locale, "deliver.editOnSight.detailPagesWithContentBinding.label") + "</td><td class=\"igpropertyvalue igpropertyDivider\" valign=\"top\" align=\"left\">");
              sb.append("      <input type=\"hidden\" name=\"" + propertyIndex + "_propertyName\" value=\"" + componentProperty.getName() + "_detailSiteNodeId\"/>");
              sb.append("      <select class=\"propertyselect\" name=\"" + componentProperty.getName() + "_detailSiteNodeId\">")
              Iterator referencingPagesIterator = referencingPages.iterator();
              while(referencingPagesIterator.hasNext())
              {
                SiteNodeVO siteNodeVO = (SiteNodeVO)referencingPagesIterator.next();
                String path = templateController.getPagePath(siteNodeVO.getId(), templateController.getLanguageId());
                Integer detailSiteNodeId = componentProperty.getDetailSiteNodeId();
               
                if(detailSiteNodeId != null && detailSiteNodeId.equals(siteNodeVO.getSiteNodeId()))
                  sb.append("      <option value='" + siteNodeVO.getSiteNodeId() + "' title='" + path + "' selected=\"1\">" + siteNodeVO.getName() + "(" + siteNodeVO.getSiteNodeId() + ")" + "</option>");               
                else
                  sb.append("      <option value='" + siteNodeVO.getSiteNodeId() + "' title='" + path + "'>" + siteNodeVO.getName() + "(" + siteNodeVO.getSiteNodeId() + ")" + "</option>");               
              }
              sb.append("      </select>")

              if(hasAccessToProperty)
                  propertyIndex++;
            }
            sb.append("      </td>");
            sb.append("      <td class=\"igpropertylabel igpropertyDivider\"></td>");
            sb.append("      <td class=\"igpropertylabel igpropertyDivider\"></td>");
            sb.append("    </tr>");
          }

          if(hasAccessToProperty)
              accessablePropertyIndex++;
        }
        else if(componentProperty.getType().equalsIgnoreCase(ComponentProperty.EXTERNALBINDING))
        {
          String dividerClass = "igpropertyDivider";
          sb.append("  <tr class=\"igtr\">");

          sb.append("    <td class=\"igpropertylabel igpropertyDivider\" valign=\"top\" align=\"left\">" + componentProperty.getDisplayName() + "</td>");

          sb.append("      <td class=\"igpropertyvalue " + dividerClass + "\" align=\"left\">");
          if(hasAccessToProperty)
          {
            String warningText = getLocalizedString(locale, "deliver.editOnSight.dirtyWarning");
            String assignUrl = componentEditorUrl + "ViewSiteNodePageComponents!showExternalBinding.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + getTemplateController().getDeliveryContext().getShowSimple() + "&externalBindingAction=" + URIUtil.encodeWithinQuery(componentProperty.getExternalBindingConfig()) + "&supplementingEntityType=" + componentProperty.getSupplementingEntityType();
            sb.append("<a title=\"" + title + "\" class=\"componentEditorLink\" href=\"#\" onclick=\"if(checkDirty('" + warningText + "')){window.open('" + assignUrl + "','Assign','toolbar=no,status=yes,scrollbars=yes,location=no,menubar=no,directories=no,resizable=no,width=800,height=600,left=5,top=5');} return false;\">"); //openInlineDivImpl('" + assignUrl + "', 900, 850, true, true);
          }

          sb.append("" + (componentProperty.getValue() == null || componentProperty.getValue().equalsIgnoreCase("") ? "Undefined" : componentProperty.getValue()) + (componentProperty.getIsAssetBinding() ? " (" + componentProperty.getAssetKey() + ")" : ""));

          if(hasAccessToProperty)
            sb.append("</a>");

          sb.append("</td>");

          if(hasAccessToProperty)
            sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"><a class=\"componentEditorLink\" href=\"" + componentEditorUrl + "ViewSiteNodePageComponents!deleteComponentPropertyValue.action?siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + this.getTemplateController().getDeliveryContext().getShowSimple() + "\"><img src=\"" + componentEditorUrl + "/images/delete.gif\" border=\"0\" style='padding-top: 2px;' alt=\"delete\"/></a></td>");
          else
            sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"></td>");

          sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"><img class=\"questionMark\" src=\"" + componentEditorUrl + "/images/questionMarkGrad.gif\" onmouseover=\"showDiv('helpLayer" + componentProperty.getComponentId() + "_" + formatter.replaceNonAscii(componentProperty.getName(), "_") + "');\" onmouseout=\"javascript:hideDiv('helpLayer" + componentProperty.getComponentId() + "_" + formatter.replaceNonAscii(componentProperty.getName(), "_") + "');\" alt=\"question\"/>" + helpSB + "</td>");
          sb.append("  </tr>");

          if(hasAccessToProperty)
          {
              //propertyIndex++;
              accessablePropertyIndex++;
          }
        }       
        else if(componentProperty.getType().equalsIgnoreCase(ComponentProperty.TEXTFIELD))
        {
          if(isAdvancedProperties)
            sb.append("  <tr class=\"igtr advancedProperty" + componentId + "\" style='display:none;'>");
          else
            sb.append("  <tr class=\"igtr\">");
         
          sb.append("      <td class=\"igpropertylabel igpropertyDivider\" valign=\"top\" align=\"left\">" + componentProperty.getDisplayName() + "</td>");
         
          if(hasAccessToProperty)
            sb.append("      <td class=\"igpropertyvalue igpropertyDivider\" align=\"left\"><input type=\"hidden\" name=\"" + propertyIndex + "_propertyName\" value=\"" + componentProperty.getName() + "\"/><input type=\"text\" class=\"propertytextfield\" name=\"" + componentProperty.getName() + "\" value=\"" + componentProperty.getValue() + "\" onkeydown=\"setDirty();\"/></td>");
          else
            sb.append("      <td class=\"igpropertyvalue igpropertyDivider\" align=\"left\">" + componentProperty.getValue() + "</td>");
   
          if(hasAccessToProperty)
            sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"><a class=\"componentEditorLink\" href=\"" + componentEditorUrl + "ViewSiteNodePageComponents!deleteComponentPropertyValue.action?siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + this.getTemplateController().getDeliveryContext().getShowSimple() + "\"><img src=\"" + componentEditorUrl + "/css/images/delete.gif\" border=\"0\" style='padding-top: 2px;' alt=\"delete\"/></a></td>");
          else
            sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"></td>");
         
          sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"><img class=\"questionMark\" src=\"" + componentEditorUrl + "/css/images/questionMarkGrad.gif\" onmouseover=\"showDiv('helpLayer" + componentProperty.getComponentId() + "_" + formatter.replaceNonAscii(componentProperty.getName(), "_") + "');\" onmouseout=\"javascript:hideDiv('helpLayer" + componentProperty.getComponentId() + "_" + formatter.replaceNonAscii(componentProperty.getName(), "_") + "');\" alt=\"question\"/>" + helpSB + "</td>");
          sb.append("    </tr>");
         
          if(hasAccessToProperty)
          {
              propertyIndex++;
              accessablePropertyIndex++;
          }
        }
        else if(componentProperty.getType().equalsIgnoreCase(ComponentProperty.DATEFIELD))
        {
          sb.append("  <tr class=\"igtr\">");
         
          sb.append("      <td class=\"igpropertylabel igpropertyDivider\" valign=\"top\" align=\"left\">" + componentProperty.getDisplayName() + "</td>");
         
          if(hasAccessToProperty)
          {
            sb.append("      <td class=\"igpropertyvalue igpropertyDivider\" align=\"left\">");
         
            sb.append("      <input type=\"hidden\" name=\"" + propertyIndex + "_propertyName\" value=\"" + componentProperty.getName() + "\"/>");
            sb.append("      <input type=\"text\" class=\"propertydatefield\" style=\"width: 100px;\" id=\"" + componentProperty.getName() + "\" name=\"" + componentProperty.getName() + "\" value=\"" + componentProperty.getValue() + "\" onkeydown=\"setDirty();\"/>&nbsp;<a name=\"calendar_" + componentProperty.getName() + "\" id=\"calendar_" + componentProperty.getName() + "\"><img src=\"" + componentEditorUrl + "/css/images/calendar.gif\" border=\"0\"/></a>");
            sb.append("      <script type=\"text/javascript\">");
            sb.append("        Calendar.setup({");
            sb.append("              inputField     :    \"" + componentProperty.getName() + "\",");
            sb.append("              ifFormat       :    \"%Y-%m-%d %H:%M\",");
            sb.append("              button         :    \"calendar_" + componentProperty.getName() + "\",");
            sb.append("              align          :    \"BR\",");
            sb.append("              singleClick    :    true,");
            sb.append("              firstDay       :   1,");
            sb.append("              showsTime     :    true,");
            sb.append("              timeFormat     :    \"24\"");
            sb.append("        });");
            sb.append("      </script>");
            sb.append("      </td>");
          }
          else
            sb.append("      <td class=\"igpropertyvalue igpropertyDivider\" align=\"left\">" + componentProperty.getValue() + "</td>");
   
          if(hasAccessToProperty)
            sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"><a class=\"componentEditorLink\" href=\"" + componentEditorUrl + "ViewSiteNodePageComponents!deleteComponentPropertyValue.action?siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + this.getTemplateController().getDeliveryContext().getShowSimple() + "\"><img src=\"" + componentEditorUrl + "/css/images/delete.gif\" border=\"0\" style='padding-top: 2px;' alt=\"delete\"/></a></td>");
          else
            sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"></td>");
         
          sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"><img class=\"questionMark\" src=\"" + componentEditorUrl + "/css/images/questionMarkGrad.gif\" onmouseover=\"showDiv('helpLayer" + componentProperty.getComponentId() + "_" + formatter.replaceNonAscii(componentProperty.getName(), "_") + "');\" onmouseout=\"javascript:hideDiv('helpLayer" + componentProperty.getComponentId() + "_" + formatter.replaceNonAscii(componentProperty.getName(), "_") + "');\" alt=\"question\"/>" + helpSB + "</td>");
          sb.append("    </tr>");
         
          if(hasAccessToProperty)
          {
              propertyIndex++;
              accessablePropertyIndex++;
          }
        }
        else if(componentProperty.getType().equalsIgnoreCase(ComponentProperty.CUSTOMFIELD))
        {
          String processedMarkup =  componentProperty.getCustomMarkup().replaceAll("propertyName", componentProperty.getName());
          processedMarkup = processedMarkup.replaceAll("propertyValue", componentProperty.getValue());
          if(logger.isInfoEnabled())
            logger.info("processedMarkup: " + processedMarkup);
          int styleTagStart = processedMarkup.toLowerCase().indexOf("<link");
          while(styleTagStart > -1)
          {
            int styleTagEnd  = processedMarkup.toLowerCase().indexOf(">", styleTagStart);
           
            if(styleTagEnd > -1)
            {
              String extractedStyleTag = processedMarkup.substring(styleTagStart, styleTagEnd + 1);
              if(logger.isInfoEnabled())
                logger.info("extractedStyleTag:" + extractedStyleTag);
              templateController.getDeliveryContext().getHtmlHeadItems().add(extractedStyleTag);
            }
           
            styleTagStart = processedMarkup.toLowerCase().indexOf("<link", styleTagStart + 10);
          }
          processedMarkup = processedMarkup.replaceAll("<link.*?>", "");

          if(logger.isInfoEnabled())
            logger.info("processedMarkup2: " + processedMarkup);
         
          sb.append("  <tr class=\"igtr\">");
         
          sb.append("      <td class=\"igpropertylabel igpropertyDivider\" valign=\"top\" align=\"left\">" + componentProperty.getDisplayName() + "</td>");
         
          if(hasAccessToProperty)
          {
            sb.append("      <td class=\"igpropertyvalue igpropertyDivider\" align=\"left\">\n");
            sb.append("        <input type=\"hidden\" name=\"" + propertyIndex + "_propertyName\" value=\"" + componentProperty.getName() + "\"/>\n");
            sb.append("        " + processedMarkup + "");
            sb.append("      </td>");
          }
          else
            sb.append("      <td class=\"igpropertyvalue igpropertyDivider\" align=\"left\">" + componentProperty.getValue() + "</td>");
   
          if(hasAccessToProperty)
            sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"><a class=\"componentEditorLink\" href=\"" + componentEditorUrl + "ViewSiteNodePageComponents!deleteComponentPropertyValue.action?siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + this.getTemplateController().getDeliveryContext().getShowSimple() + "\"><img src=\"" + componentEditorUrl + "/css/images/delete.gif\" border=\"0\" style='padding-top: 2px;' alt=\"delete\"/></a></td>");
          else
            sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"></td>");
         
          sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"><img class=\"questionMark\" src=\"" + componentEditorUrl + "/css/images/questionMarkGrad.gif\" onmouseover=\"showDiv('helpLayer" + componentProperty.getComponentId() + "_" + formatter.replaceNonAscii(componentProperty.getName(), "_") + "');\" onmouseout=\"javascript:hideDiv('helpLayer" + componentProperty.getComponentId() + "_" + formatter.replaceNonAscii(componentProperty.getName(), "_") + "');\" alt=\"question\"/>" + helpSB + "</td>");
          sb.append("    </tr>");
         
          if(hasAccessToProperty)
          {
              propertyIndex++;
              accessablePropertyIndex++;
          }
        }
        else if(componentProperty.getType().equalsIgnoreCase(ComponentProperty.TEXTAREA))
        {
          if(isAdvancedProperties)
            sb.append("  <tr class=\"igtr advancedProperty" + componentId + "\" style='display:none;'>");
          else
            sb.append("  <tr class=\"igtr\">");

          sb.append("      <td class=\"igpropertylabel igpropertyDivider\" valign=\"top\" align=\"left\" colspan=\"2\">" + componentProperty.getDisplayName() + "");
         
          String separator = System.getProperty("line.separator");
          String propertyValue = componentProperty.getValue();
         
          if(separator == null || propertyValue == null)
          { 
            propertyValue = "Undefined";
            logger.warn("Problem with component:" + componentName + ", propertyName: " + componentProperty.getName() + ", value:" + propertyValue);
          }
          else
            propertyValue = propertyValue.replaceAll("igbr", separator);
         
          if(hasAccessToProperty)
          { 
            sb.append("      <input type=\"hidden\" name=\"" + propertyIndex + "_propertyName\" value=\"" + componentProperty.getName() + "\"/>");
           
            if(componentProperty.getIsWYSIWYGEnabled())
              sb.append("      <textarea toolbarName=\"" + componentProperty.getWYSIWYGToolbar() + "\" class=\"propertytextarea wysiwygeditor\" id=\"" + componentId + "_" + componentProperty.getName() + "\" name=\"" + componentProperty.getName() + "\" onkeydown=\"setDirty();\">" + (propertyValue == null ? "" : PageEditorHelper.parseAttributeForInlineEditing(propertyValue, false, CmsPropertyHandler.getServletContext(), contentId, languageId)) + "</textarea>");
            else
              sb.append("      <textarea class=\"propertytextarea\" id=\"" + componentId + "_" + componentProperty.getName() + "\" name=\"" + componentProperty.getName() + "\" onkeydown=\"setDirty();\">" + (propertyValue == null ? "" : propertyValue) + "</textarea>");
          }
          else
            sb.append("      <div style=\"igpropertyvalue\">" + propertyValue + "</div>");
   
          sb.append("        </td>");
         
          if(hasAccessToProperty)
            sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"><a class=\"componentEditorLink\" href=\"" + componentEditorUrl + "ViewSiteNodePageComponents!deleteComponentPropertyValue.action?siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + this.getTemplateController().getDeliveryContext().getShowSimple() + "\"><img src=\"" + componentEditorUrl + "/css/images/delete.gif\" border=\"0\" style='padding-top: 2px;' alt=\"delete\"/></a></td>");
          else
            sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"></td>");
         
          sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"><img class=\"questionMark\" src=\"" + componentEditorUrl + "/css/images/questionMarkGrad.gif\" onmouseover=\"showDiv('helpLayer" + componentProperty.getComponentId() + "_" + formatter.replaceNonAscii(componentProperty.getName(), "_") + "');\" onmouseout=\"hideDiv('helpLayer" + componentProperty.getComponentId() + "_" + formatter.replaceNonAscii(componentProperty.getName(), "_") + "');\"/>" + helpSB + "</td>");
          sb.append("    </tr>");
         
          if(hasAccessToProperty)
          {
              propertyIndex++;
              accessablePropertyIndex++;
          }
        }
        else if(componentProperty.getType().equalsIgnoreCase(ComponentProperty.SELECTFIELD))
        {
          if(isAdvancedProperties)
            sb.append("  <tr class=\"igtr advancedProperty" + componentId + "\" style='display:none;'>");
          else
            sb.append("  <tr class=\"igtr\">");

          sb.append("      <td class=\"igpropertylabel igpropertyDivider\" valign=\"top\" align=\"left\">" + componentProperty.getDisplayName() + "</td>");
         
          if(hasAccessToProperty)
          {
            sb.append("      <td class=\"igpropertyvalue igpropertyDivider\" align=\"left\"><input type=\"hidden\" name=\"" + propertyIndex + "_propertyName\" value=\"" + componentProperty.getName() + "\"/><select class=\"propertyselect\" name=\"" + componentProperty.getName() + "\" onchange=\"setDirty();\"" + (componentProperty.getAllowMultipleSelections() ? " multiple=\"1\" size=\"3\"" : "") + ">");
           
            Iterator optionsIterator = componentProperty.getOptions().iterator();
            List<GenericOptionDefinition> options = null;
             
            if(componentProperty.getDataProvider() != null && !componentProperty.getDataProvider().equals(""))
            {
              try
              {
                PropertyOptionsDataProvider provider = (PropertyOptionsDataProvider)Class.forName(componentProperty.getDataProvider()).newInstance();
                logger.info("componentProperty.getDataProviderParameters():" + componentProperty.getDataProviderParameters());
                Map parameters = httpHelper.toMap(componentProperty.getDataProviderParameters(), "UTF-8", ";");
                options = provider.getOptions(parameters, locale.getLanguage(), principal, templateController.getDatabase());
                optionsIterator = options.iterator();
              }
              catch (Exception e)
              {
                logger.warn("A problem loading the data provider for property " + componentProperty.getName() + ":" + e.getMessage(), e);
                List<ComponentPropertyOption> errorOptions = new ArrayList<ComponentPropertyOption>();
                ComponentPropertyOption componentPropertyOption = new ComponentPropertyOption();
                componentPropertyOption.setName("Error:" + e.getMessage());
                componentPropertyOption.setValue("");
                errorOptions.add(componentPropertyOption);
                optionsIterator = errorOptions.iterator();
              }
            }
           
            String exactMatchOptionName = getExactMatch(componentProperty, options);
           
            //Now let's check for smaller matches
            while(optionsIterator.hasNext())
            {
                ComponentPropertyOption option = (ComponentPropertyOption)optionsIterator.next();
                boolean debug = false;
                if(componentProperty.getName().equalsIgnoreCase("SelectTest"))
                  debug = true;
               
                try
                {
                  boolean isSame = false;
                  if(componentProperty != null && componentProperty.getValue() != null && option != null && option.getValue() != null)
                  {
                    if(exactMatchOptionName != null && option.getName().equals(exactMatchOptionName))
                    {
                      isSame = true;
                    }
                    else if(exactMatchOptionName == null)
                    {
                      //The option values
                      String optionValue = option.getValue();
                      //The saved values
                      String[] values = componentProperty.getValue().split(",");
                      logger.debug("optionValue:" + optionValue);
                      logger.debug("savedValue:" + componentProperty.getValue());
                     
                      int matches = 0;
                      for(int i=0; i<values.length; i++)
                      {
                        String savedValue = values[i];
                        logger.debug("savedValue part:" + savedValue);
                        logger.debug("optionValue:" + optionValue);
                        boolean matchesValue = savedValue.equals(optionValue);
                        if(matchesValue)
                        {
                          isSame = true;
                          logger.debug("Match on individual saved value:" + optionValue);
                          break;
                        }
                      }
                    }
                  }
                 
                  logger.debug("isSame: " + isSame + " : " + option.getValue());
     
                  sb.append("<option value=\"" + option.getValue() + "\"" + (isSame ? " selected=\"1\"" : "") + ">" + option.getName() + "</option>");
                }
                catch (Exception e)
                {
                  logger.error("Error setting picked value:" + e.getMessage(), e);
              }
            }
           
              sb.append("</select></td>");
          }
          else
            sb.append("      <td class=\"igpropertyvalue igpropertyDivider\" align=\"left\">" + componentProperty.getDisplayName() + "</td>");
   
          if(hasAccessToProperty)
            sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"><a class=\"componentEditorLink\" href=\"" + componentEditorUrl + "ViewSiteNodePageComponents!deleteComponentPropertyValue.action?siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + this.getTemplateController().getDeliveryContext().getShowSimple() + "\"><img src=\"" + componentEditorUrl + "/css/images/delete.gif\" border=\"0\" style='padding-top: 2px;' alt=\"delete\"/></a></td>");
          else
            sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"></td>");
         
          sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"><img class=\"questionMark\" src=\"" + componentEditorUrl + "/css/images/questionMarkGrad.gif\" onmouseover=\"showDiv('helpLayer" + componentProperty.getComponentId() + "_" + formatter.replaceNonAscii(componentProperty.getName(), "_") + "');\" onmouseout=\"javascript:hideDiv('helpLayer" + componentProperty.getComponentId() + "_" + formatter.replaceNonAscii(componentProperty.getName(), "_") + "');\" alt=\"question\"/>" + helpSB + "</td>");
          sb.append("    </tr>");
         
          if(hasAccessToProperty)
          {
              propertyIndex++;
              accessablePropertyIndex++;
          }
        }
        else if(componentProperty.getType().equalsIgnoreCase(ComponentProperty.CHECKBOXFIELD))
        {
          if(isAdvancedProperties)
            sb.append("  <tr class=\"igtr advancedProperty" + componentId + "\" style='display:none;'>");
          else
            sb.append("  <tr class=\"igtr\">");

          sb.append("      <td class=\"igpropertylabel igpropertyDivider\" valign=\"top\" align=\"left\">" + componentProperty.getDisplayName() + "</td>");
         
          if(hasAccessToProperty)
          {
            sb.append("      <td class=\"igpropertyvalue igpropertyDivider\" align=\"left\"><input type=\"hidden\" name=\"" + propertyIndex + "_propertyName\" value=\"" + componentProperty.getName() + "\"/>");
           
            Iterator optionsIterator = componentProperty.getOptions().iterator();
           
            if(componentProperty.getDataProvider() != null && !componentProperty.getDataProvider().equals(""))
            {
              try
              {
                PropertyOptionsDataProvider provider = (PropertyOptionsDataProvider)Class.forName(componentProperty.getDataProvider()).newInstance();
                logger.info("componentProperty.getDataProviderParameters():" + componentProperty.getDataProviderParameters());
                Map parameters = httpHelper.toMap(componentProperty.getDataProviderParameters(), "UTF-8", ";");
                optionsIterator = provider.getOptions(parameters, locale.getLanguage(), principal, templateController.getDatabase()).iterator();
              }
              catch (Exception e)
              {
                logger.warn("A problem loading the data provider for property " + componentProperty.getName() + ":" + e.getMessage(), e);
                List<ComponentPropertyOption> errorOptions = new ArrayList<ComponentPropertyOption>();
                ComponentPropertyOption componentPropertyOption = new ComponentPropertyOption();
                componentPropertyOption.setName("Error:" + e.getMessage());
                componentPropertyOption.setValue("");
                errorOptions.add(componentPropertyOption);
                optionsIterator = errorOptions.iterator();
              }
            }

            while(optionsIterator.hasNext())
            {
                ComponentPropertyOption option = (ComponentPropertyOption)optionsIterator.next();
                boolean isSame = false;
                if(componentProperty != null && componentProperty.getValue() != null && option != null && option.getValue() != null)
                {
                  String[] values = componentProperty.getValue().split(",");
                  for(int i=0; i<values.length; i++)
                  {
                    isSame = values[i].equals(option.getValue());
                    if(isSame)
                      break;
                  }
                }
 
                sb.append("<input type=\"checkbox\" name=\"" + componentProperty.getName() + "\" value=\"" + option.getValue() + "\"" + (isSame ? " checked=\"1\"" : "") + " onclicked=\"setDirty();\"/>" + option.getName() + " ");
            }
           
              sb.append("</td>");
          }
          else
            sb.append("      <td class=\"igpropertyvalue igpropertyDivider\" align=\"left\">" + componentProperty.getDisplayName() + "</td>");
   
          if(hasAccessToProperty)
            sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"><a class=\"componentEditorLink\" href=\"" + componentEditorUrl + "ViewSiteNodePageComponents!deleteComponentPropertyValue.action?siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + this.getTemplateController().getDeliveryContext().getShowSimple() + "\"><img src=\"" + componentEditorUrl + "/css/images/delete.gif\" border=\"0\" style='padding-top: 2px;' alt=\"delete\"/></a></td>");
          else
            sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"></td>");
         
          sb.append("      <td class=\"igtd igpropertyDivider\" width=\"16\"><img class=\"questionMark\" src=\"" + componentEditorUrl + "/css/images/questionMarkGrad.gif\" onmouseover=\"showDiv('helpLayer" + componentProperty.getComponentId() + "_" + formatter.replaceNonAscii(componentProperty.getName(), "_") + "');\" onmouseout=\"javascript:hideDiv('helpLayer" + componentProperty.getComponentId() + "_" + formatter.replaceNonAscii(componentProperty.getName(), "_") + "');\" alt=\"question\"/>" + helpSB + "</td>");
          sb.append("    </tr>");
         
          if(hasAccessToProperty)
          {
              propertyIndex++;
View Full Code Here

   * This method returns a bean representing a list of ComponentProperties that the component has.
   */
  
  public void addSystemProperties(List componentProperties, Integer componentId) throws Exception
  {
    ComponentProperty cacheResultProperty = new ComponentProperty();
    cacheResultProperty.setComponentId(componentId);
    cacheResultProperty.setName("CacheResult");
    cacheResultProperty.setDisplayName("Cache Result");
    cacheResultProperty.setDescription("Do you want to cache the components rendered result.");
    cacheResultProperty.setDefaultValue("false");
    cacheResultProperty.setAllowLanguageVariations(new Boolean(false));
    cacheResultProperty.setDataProvider("");
    cacheResultProperty.setType("select");
    cacheResultProperty.setVisualizingAction("");
    cacheResultProperty.setCreateAction("");
   
    ComponentPropertyOption cpoNo = new ComponentPropertyOption("No", "false");
    ComponentPropertyOption cpoYes = new ComponentPropertyOption("Yes", "true");
    cacheResultProperty.getOptions().add(cpoNo);
    cacheResultProperty.getOptions().add(cpoYes);
     
    String value = getComponentPropertyValue(componentId, "CacheResult", cacheResultProperty.getAllowLanguageVariations());
    cacheResultProperty.setValue(value);
   
    componentProperties.add(cacheResultProperty);

    ComponentProperty cacheIntervalProperty = new ComponentProperty();
    cacheIntervalProperty.setComponentId(componentId);
    cacheIntervalProperty.setName("UpdateInterval");
    cacheIntervalProperty.setDisplayName("Cache Update Interval");
    cacheIntervalProperty.setDescription("Interval before the cache gets updated");
    cacheIntervalProperty.setDefaultValue("-1");
    cacheIntervalProperty.setAllowLanguageVariations(new Boolean(false));
    cacheIntervalProperty.setDataProvider("");
    cacheIntervalProperty.setType("select");
    cacheIntervalProperty.setVisualizingAction("");
    cacheIntervalProperty.setCreateAction("");
   
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("1 second", "1"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("2 seconds", "2"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("3 seconds", "3"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("4 seconds", "4"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("5 seconds", "5"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("10 seconds", "10"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("15 seconds", "15"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("20 seconds", "20"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("30 seconds", "30"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("1 minute", "60"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("2 minutes", "120"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("5 minutes", "300"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("10 minutes", "600"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("30 minutes", "1800"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("1 hour", "3600"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("2 hours", "7200"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("6 hours", "21600"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("12 hours", "43200"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("24 hours", "86400"));

    String updateIntervalValue = getComponentPropertyValue(componentId, "UpdateInterval", cacheIntervalProperty.getAllowLanguageVariations());
    cacheIntervalProperty.setValue(updateIntervalValue);
   
    componentProperties.add(cacheIntervalProperty);

    ComponentProperty cacheKeyProperty = new ComponentProperty();
    cacheKeyProperty.setComponentId(componentId);
    cacheKeyProperty.setName("CacheKey");
    cacheKeyProperty.setDisplayName("Cache Key");
    cacheKeyProperty.setDescription("Key for the component cache");
    cacheKeyProperty.setDefaultValue("");
    cacheKeyProperty.setAllowLanguageVariations(new Boolean(false));
    cacheKeyProperty.setDataProvider("");
    cacheKeyProperty.setType("textfield");
    cacheKeyProperty.setVisualizingAction("");
    cacheKeyProperty.setCreateAction("");
   
    String cacheKeyValue = getComponentPropertyValue(componentId, "CacheKey", cacheKeyProperty.getAllowLanguageVariations());
    cacheKeyProperty.setValue(cacheKeyValue);
   
    componentProperties.add(cacheKeyProperty);

    ComponentProperty priorityProperty = new ComponentProperty();
    priorityProperty.setComponentId(componentId);
    priorityProperty.setName("PreRenderOrder");
    priorityProperty.setDisplayName("Pre processing order");
    priorityProperty.setDescription("State the order in which the component get's prerendered");
    priorityProperty.setDefaultValue("99");
    priorityProperty.setAllowLanguageVariations(new Boolean(false));
    priorityProperty.setDataProvider("");
    priorityProperty.setType("select");
    priorityProperty.setVisualizingAction("");
    priorityProperty.setCreateAction("");
   
    for(int i=0; i<15; i++)
      priorityProperty.getOptions().add(new ComponentPropertyOption("" + i, "" + i));

    String preRenderOrderPropertyValue = getComponentPropertyValue(componentId, "PreRenderOrder", priorityProperty.getAllowLanguageVariations());
    priorityProperty.setValue(preRenderOrderPropertyValue);
   
    componentProperties.add(priorityProperty);

  }
View Full Code Here

          String visualizingAction        = binding.attributeValue("visualizingAction");
          String createAction          = binding.attributeValue("createAction");
          //logger.info("name:" + name);
          //logger.info("type:" + type);

          ComponentProperty property = new ComponentProperty();
          property.setComponentId(componentId);
          property.setName(name);
          property.setDisplayName(displayName);
          property.setDescription(description);
          property.setDefaultValue(defaultValue);
          property.setAllowLanguageVariations(new Boolean(allowLanguageVariations));
          property.setDataProvider(dataProvider);
          property.setDataProviderParameters(dataProviderParameters);
          property.setType(type);
          property.setVisualizingAction(visualizingAction);
          property.setCreateAction(createAction);
          if(allowedContentTypeNamesString != null && allowedContentTypeNamesString.length() > 0)
          {
              String[] allowedContentTypeNamesArray = allowedContentTypeNamesString.split(",");
              property.setAllowedContentTypeNamesArray(allowedContentTypeNamesArray);
          }
         
          if(type.equalsIgnoreCase(ComponentProperty.BINDING))
          {
            String entity   = binding.attributeValue("entity");
            String supplementingEntityType  = binding.attributeValue("supplementingEntityType");
            boolean isMultipleBinding     = new Boolean(binding.attributeValue("multiple")).booleanValue();
            boolean isAssetBinding         = new Boolean(binding.attributeValue("assetBinding")).booleanValue();
            String assetMask        = binding.attributeValue("assetMask");
            boolean isPuffContentForPage   = new Boolean(binding.attributeValue("isPuffContentForPage")).booleanValue();
           
            property.setEntityClass(entity);
            String value = getComponentPropertyValue(componentId, name, false);
            timer.printElapsedTime("Set property1");

            property.setSupplementingEntityType(supplementingEntityType);

            property.setValue(value);
            property.setIsMultipleBinding(isMultipleBinding);
            property.setIsAssetBinding(isAssetBinding);
            property.setAssetMask(assetMask);
            property.setIsPuffContentForPage(isPuffContentForPage);
            List<ComponentBinding> bindings = getComponentPropertyBindings(componentId, name, this.getTemplateController());
            property.setBindings(bindings);
            if(entity.equals("Content") && isPuffContentForPage)
            {
              String detailSiteNodeId = getComponentPropertyValue(componentId, name + "_detailSiteNodeId", false);
              if(detailSiteNodeId != null && !detailSiteNodeId.equals("") && !detailSiteNodeId.equals("Undefined"))
                property.setDetailSiteNodeId(new Integer(detailSiteNodeId));
            }
          }
          else if(type.equalsIgnoreCase(ComponentProperty.EXTERNALBINDING)) 
          {
            String entity   = binding.attributeValue("entity");
            String supplementingEntityType  = binding.attributeValue("supplementingEntityType");
            property.setEntityClass(entity);
            property.setSupplementingEntityType(supplementingEntityType);
            String externalBindingConfig = binding.attributeValue("externalBindingConfig");
            property.setExternalBindingConfig(externalBindingConfig);
            String value = getComponentPropertyValue(componentId, name, false);
            property.setValue(value);
            List<ComponentBinding> bindings = getComponentPropertyBindings(componentId, name, this.getTemplateController());
            property.setBindings(bindings);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.TEXTFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, property.getAllowLanguageVariations());
            timer.printElapsedTime("Set property2");
            //logger.info("value:" + value);
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.DATEFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, property.getAllowLanguageVariations());
            timer.printElapsedTime("Set property2");
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.CUSTOMFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, property.getAllowLanguageVariations());
            String customMarkup = binding.attributeValue("customMarkup");
            String processedMarkup = "";
            if(customMarkup != null)
            {
              processedMarkup = customMarkup.replaceAll("propertyName", name);
              processedMarkup = processedMarkup.replaceAll("propertyValue", value);
            }
           
            property.setCustomMarkup(processedMarkup);
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.TEXTAREA)) 
          {   
            boolean WYSIWYGEnabled = new Boolean(binding.attributeValue("WYSIWYGEnabled")).booleanValue();
            property.setWYSIWYGEnabled(WYSIWYGEnabled);
            String WYSIWYGToolbar = binding.attributeValue("WYSIWYGToolbar");
            property.setWYSIWYGToolbar(WYSIWYGToolbar);

            String value = getComponentPropertyValue(componentId, name, property.getAllowLanguageVariations());
            timer.printElapsedTime("Set property2");
            //logger.info("value:" + value);
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.SELECTFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, property.getAllowLanguageVariations());
            String allowMultipleSelections = binding.attributeValue("allowMultipleSelections");
            if(allowMultipleSelections != null && allowMultipleSelections.equalsIgnoreCase("true"))
              property.setAllowMultipleSelections(true);
           
            List optionList = binding.elements("option");
            Iterator optionListIterator = optionList.iterator();
            while(optionListIterator.hasNext())
            {
              Element option = (Element)optionListIterator.next();
              String optionName  = option.attributeValue("name");
              String optionValue  = option.attributeValue("value");
              ComponentPropertyOption cpo = new ComponentPropertyOption(optionName, optionValue);
              property.getOptions().add(cpo);
            }
           
            //logger.info("value:" + value);
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.CHECKBOXFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, property.getAllowLanguageVariations());
            String allowMultipleSelections = binding.attributeValue("allowMultipleSelections");
            if(allowMultipleSelections != null && allowMultipleSelections.equalsIgnoreCase("true"))
              property.setAllowMultipleSelections(true);
           
            List optionList = binding.elements("option");
            Iterator optionListIterator = optionList.iterator();
            while(optionListIterator.hasNext())
            {
              Element option = (Element)optionListIterator.next();
              String optionName  = option.attributeValue("name");
              String optionValue  = option.attributeValue("value");
              ComponentPropertyOption cpo = new ComponentPropertyOption(optionName, optionValue);
              property.getOptions().add(cpo);
            }
           
            //logger.info("value:" + value);
            property.setValue(value);
          }
         
          componentProperties.add(property);
        }
      }
View Full Code Here

          String visualizingAction        = binding.attributeValue("visualizingAction");
          String createAction          = binding.attributeValue("createAction");
          //logger.info("name:" + name);
          //logger.info("type:" + type);

          ComponentProperty property = new ComponentProperty();
          property.setComponentId(componentId);
          property.setName(name);
          property.setDisplayName(displayName);
          property.setDescription(description);
          property.setDefaultValue(defaultValue);
          property.setAllowLanguageVariations(new Boolean(allowLanguageVariations));
          property.setDataProvider(dataProvider);
          property.setDataProviderParameters(dataProviderParameters);
          property.setType(type);
          property.setVisualizingAction(visualizingAction);
          property.setCreateAction(createAction);
          if(allowedContentTypeNamesString != null && allowedContentTypeNamesString.length() > 0)
          {
              String[] allowedContentTypeNamesArray = allowedContentTypeNamesString.split(",");
              property.setAllowedContentTypeNamesArray(allowedContentTypeNamesArray);
          }
         
          if(type.equalsIgnoreCase(ComponentProperty.BINDING))
          {
            String entity   = binding.attributeValue("entity");
            String supplementingEntityType  = binding.attributeValue("supplementingEntityType");
            boolean isMultipleBinding     = new Boolean(binding.attributeValue("multiple")).booleanValue();
            boolean isAssetBinding       = new Boolean(binding.attributeValue("assetBinding")).booleanValue();
            String assetMask        = binding.attributeValue("assetMask");
            boolean isPuffContentForPage   = new Boolean(binding.attributeValue("isPuffContentForPage")).booleanValue();

            property.setEntityClass(entity);
            String value = getComponentPropertyValue(componentId, name, templateController, property.getAllowLanguageVariations());

            property.setSupplementingEntityType(supplementingEntityType);

            property.setValue(value);
            property.setIsMultipleBinding(isMultipleBinding);
            property.setIsAssetBinding(isAssetBinding);
            property.setAssetMask(assetMask);
            property.setIsPuffContentForPage(isPuffContentForPage);
            List<ComponentBinding> bindings = getComponentPropertyBindings(componentId, name, templateController);
            property.setBindings(bindings);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.TEXTFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, templateController, property.getAllowLanguageVariations());
            timer.printElapsedTime("Set property2");
            //logger.info("value:" + value);
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.DATEFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, templateController, property.getAllowLanguageVariations());
            timer.printElapsedTime("Set property2");
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.CUSTOMFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, templateController, property.getAllowLanguageVariations());
            String customMarkup = binding.attributeValue("customMarkup");
            String processedMarkup =  customMarkup.replaceAll("propertyName", name);
            processedMarkup = processedMarkup.replaceAll("propertyValue", value);

            property.setCustomMarkup(processedMarkup);
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.TEXTAREA)) 
          {   
            boolean WYSIWYGEnabled = new Boolean(binding.attributeValue("WYSIWYGEnabled")).booleanValue();
            property.setWYSIWYGEnabled(WYSIWYGEnabled);
            String WYSIWYGToolbar = binding.attributeValue("WYSIWYGToolbar");
            property.setWYSIWYGToolbar(WYSIWYGToolbar);

            String value = getComponentPropertyValue(componentId, name, templateController, property.getAllowLanguageVariations());
            timer.printElapsedTime("Set property2");
            //logger.info("value:" + value);
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.SELECTFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, templateController, property.getAllowLanguageVariations());
            String allowMultipleSelections = binding.attributeValue("allowMultipleSelections");
            if(allowMultipleSelections != null && allowMultipleSelections.equalsIgnoreCase("true"))
              property.setAllowMultipleSelections(true);
           
            List optionList = binding.elements("option");
            Iterator optionListIterator = optionList.iterator();
            while(optionListIterator.hasNext())
            {
              Element option = (Element)optionListIterator.next();
              String optionName  = option.attributeValue("name");
              String optionValue  = option.attributeValue("value");
              ComponentPropertyOption cpo = new ComponentPropertyOption(optionName, optionValue);
              property.getOptions().add(cpo);
            }
           
            //logger.info("value:" + value);
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.CHECKBOXFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, templateController, property.getAllowLanguageVariations());
            String allowMultipleSelections = binding.attributeValue("allowMultipleSelections");
            if(allowMultipleSelections != null && allowMultipleSelections.equalsIgnoreCase("true"))
              property.setAllowMultipleSelections(true);
           
            List optionList = binding.elements("option");
            Iterator optionListIterator = optionList.iterator();
            while(optionListIterator.hasNext())
            {
              Element option = (Element)optionListIterator.next();
              String optionName  = option.attributeValue("name");
              String optionValue  = option.attributeValue("value");
              ComponentPropertyOption cpo = new ComponentPropertyOption(optionName, optionValue);
              property.getOptions().add(cpo);
            }
           
            //logger.info("value:" + value);
            property.setValue(value);
          }
         
          componentProperties.add(property);
        }
      }
View Full Code Here

          String visualizingAction        = binding.attributeValue("visualizingAction");
          String createAction          = binding.attributeValue("createAction");
          //logger.info("name:" + name);
          //logger.info("type:" + type);

          ComponentProperty property = new ComponentProperty();
          property.setComponentId(componentId);
          property.setName(name);
          property.setDisplayName(displayName);
          property.setDescription(description);
          property.setDefaultValue(defaultValue);
          property.setAllowLanguageVariations(new Boolean(allowLanguageVariations));
          property.setDataProvider(dataProvider);
          property.setDataProviderParameters(dataProviderParameters);
          property.setType(type);
          property.setVisualizingAction(visualizingAction);
          property.setCreateAction(createAction);
          if(allowedContentTypeNamesString != null && allowedContentTypeNamesString.length() > 0)
          {
              String[] allowedContentTypeNamesArray = allowedContentTypeNamesString.split(",");
              property.setAllowedContentTypeNamesArray(allowedContentTypeNamesArray);
          }
         
          if(type.equalsIgnoreCase(ComponentProperty.BINDING))
          {
            String entity           = binding.attributeValue("entity");
            boolean isMultipleBinding     = new Boolean(binding.attributeValue("multiple")).booleanValue();
            boolean isAssetBinding      = new Boolean(binding.attributeValue("assetBinding")).booleanValue();
            String assetMask        = binding.attributeValue("assetMask");
            boolean isPuffContentForPage  = new Boolean(binding.attributeValue("isPuffContentForPage")).booleanValue();
           
            property.setEntityClass(entity);
            String value = getComponentPropertyValue(componentId, name, siteNodeId, languageId, contentId, locale, db, principal, property);

            property.setValue(value);
            property.setIsMultipleBinding(isMultipleBinding);
            property.setIsAssetBinding(isAssetBinding);
            property.setAssetMask(assetMask);
            property.setIsPuffContentForPage(isPuffContentForPage);
            List<ComponentBinding> bindings = getComponentPropertyBindings(componentId, name, siteNodeId, languageId, contentId, locale, db, principal);
            property.setBindings(bindings);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.TEXTFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, siteNodeId, languageId, contentId, locale, db, principal, property);
            timer.printElapsedTime("Set property2");
            //logger.info("value:" + value);
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.DATEFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, siteNodeId, languageId, contentId, locale, db, principal, property);
            timer.printElapsedTime("Set property2");
            //logger.info("value:" + value);
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.CUSTOMFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, siteNodeId, languageId, contentId, locale, db, principal, property);
            String customMarkup = binding.attributeValue("customMarkup");
            String processedMarkup =  customMarkup.replaceAll("propertyName", name);
            processedMarkup = processedMarkup.replaceAll("propertyValue", value);

            property.setCustomMarkup(processedMarkup);
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.TEXTAREA)) 
          {   
            boolean WYSIWYGEnabled = new Boolean(binding.attributeValue("WYSIWYGEnabled")).booleanValue();
            property.setWYSIWYGEnabled(WYSIWYGEnabled);
            String WYSIWYGToolbar = binding.attributeValue("WYSIWYGToolbar");
            property.setWYSIWYGToolbar(WYSIWYGToolbar);

            String value = getComponentPropertyValue(componentId, name, siteNodeId, languageId, contentId, locale, db, principal, property);
            timer.printElapsedTime("Set property2");
            //logger.info("value:" + value);
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.SELECTFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, siteNodeId, languageId, contentId, locale, db, principal, property);
            String allowMultipleSelections = binding.attributeValue("allowMultipleSelections");
            if(allowMultipleSelections != null && allowMultipleSelections.equalsIgnoreCase("true"))
              property.setAllowMultipleSelections(true);
             
            List optionList = binding.elements("option");
            Iterator optionListIterator = optionList.iterator();
            while(optionListIterator.hasNext())
            {
              Element option = (Element)optionListIterator.next();
              String optionName  = option.attributeValue("name");
              String optionValue  = option.attributeValue("value");
              ComponentPropertyOption cpo = new ComponentPropertyOption();
              cpo.setName(optionName);
              cpo.setValue(optionValue);
              property.getOptions().add(cpo);
            }
           
            //logger.info("value:" + value);
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.CHECKBOXFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, siteNodeId, languageId, contentId, locale, db, principal, property);
            String allowMultipleSelections = binding.attributeValue("allowMultipleSelections");
            if(allowMultipleSelections != null && allowMultipleSelections.equalsIgnoreCase("true"))
              property.setAllowMultipleSelections(true);
           
            List optionList = binding.elements("option");
            Iterator optionListIterator = optionList.iterator();
            while(optionListIterator.hasNext())
            {
              Element option = (Element)optionListIterator.next();
              String optionName  = option.attributeValue("name");
              String optionValue  = option.attributeValue("value");
              ComponentPropertyOption cpo = new ComponentPropertyOption();
              cpo.setName(optionName);
              cpo.setValue(optionValue);
              property.getOptions().add(cpo);
            }
           
            //logger.info("value:" + value);
            property.setValue(value);
          }
         
          componentProperties.add(property);
        }
      }
View Full Code Here

   * This method returns a bean representing a list of ComponentProperties that the component has.
   */
  
  public void addSystemProperties(List componentProperties, Integer componentId, Integer siteNodeId, Integer languageId, Integer contentId, Locale locale, Database db, InfoGluePrincipal principal) throws Exception
  {
    ComponentProperty cacheResultProperty = new ComponentProperty();
    cacheResultProperty.setComponentId(componentId);
    cacheResultProperty.setName("CacheResult");
    cacheResultProperty.setDisplayName("Cache Result");
    cacheResultProperty.setDescription("Do you want to cache the components rendered result.");
    cacheResultProperty.setDefaultValue("false");
    cacheResultProperty.setAllowLanguageVariations(false);
    cacheResultProperty.setDataProvider("");
    cacheResultProperty.setType("select");
    cacheResultProperty.setVisualizingAction("");
    cacheResultProperty.setCreateAction("");
   
    ComponentPropertyOption cpoNo = new ComponentPropertyOption("No", "false");
    ComponentPropertyOption cpoYes = new ComponentPropertyOption("Yes", "true");
    cacheResultProperty.getOptions().add(cpoNo);
    cacheResultProperty.getOptions().add(cpoYes);
     
    String value = getComponentPropertyValue(componentId, "CacheResult", siteNodeId, languageId, contentId, locale, db, principal, cacheResultProperty);
    cacheResultProperty.setValue(value);
   
    componentProperties.add(cacheResultProperty);

    ComponentProperty cacheIntervalProperty = new ComponentProperty();
    cacheIntervalProperty.setComponentId(componentId);
    cacheIntervalProperty.setName("UpdateInterval");
    cacheIntervalProperty.setDisplayName("Cache Update Interval");
    cacheIntervalProperty.setDescription("Interval before the cache gets updated");
    cacheIntervalProperty.setDefaultValue("-1");
    cacheIntervalProperty.setAllowLanguageVariations(false);
    cacheIntervalProperty.setDataProvider("");
    cacheIntervalProperty.setType("select");
    cacheIntervalProperty.setVisualizingAction("");
    cacheIntervalProperty.setCreateAction("");
   
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("1 second", "1"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("2 seconds", "2"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("3 seconds", "3"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("4 seconds", "4"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("5 seconds", "5"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("10 seconds", "10"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("15 seconds", "15"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("20 seconds", "20"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("30 seconds", "30"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("1 minute", "60"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("2 minutes", "120"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("5 minutes", "300"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("10 minutes", "600"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("30 minutes", "1800"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("1 hour", "3600"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("2 hours", "7200"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("6 hours", "21600"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("12 hours", "43200"));
    cacheIntervalProperty.getOptions().add(new ComponentPropertyOption("24 hours", "86400"));

    String updateIntervalValue = getComponentPropertyValue(componentId, "UpdateInterval", siteNodeId, languageId, contentId, locale, db, principal, cacheIntervalProperty);
    cacheIntervalProperty.setValue(updateIntervalValue);
   
    componentProperties.add(cacheIntervalProperty);

    ComponentProperty cacheKeyProperty = new ComponentProperty();
    cacheKeyProperty.setComponentId(componentId);
    cacheKeyProperty.setName("CacheKey");
    cacheKeyProperty.setDisplayName("Cache Key");
    cacheKeyProperty.setDescription("Key for the component cache");
    cacheKeyProperty.setDefaultValue("");
    cacheKeyProperty.setAllowLanguageVariations(false);
    cacheKeyProperty.setDataProvider("");
    cacheKeyProperty.setType("textfield");
    cacheKeyProperty.setVisualizingAction("");
    cacheKeyProperty.setCreateAction("");
   
    String cacheKeyValue = getComponentPropertyValue(componentId, "CacheKey", siteNodeId, languageId, contentId, locale, db, principal, cacheKeyProperty);
    cacheKeyProperty.setValue(cacheKeyValue);
   
    componentProperties.add(cacheKeyProperty);

    ComponentProperty priorityProperty = new ComponentProperty();
    priorityProperty.setComponentId(componentId);
    priorityProperty.setName("PreRenderOrder");
    priorityProperty.setDisplayName("Pre processing order");
    priorityProperty.setDescription("State the order in which the component get's prerendered");
    priorityProperty.setDefaultValue("99");
    priorityProperty.setAllowLanguageVariations(false);
    priorityProperty.setDataProvider("");
    priorityProperty.setType("select");
    priorityProperty.setVisualizingAction("");
    priorityProperty.setCreateAction("");
   
    for(int i=0; i<15; i++)
      priorityProperty.getOptions().add(new ComponentPropertyOption("" + i, "" + i));

    String preRenderOrderPropertyValue = getComponentPropertyValue(componentId, "PreRenderOrder", siteNodeId, languageId, contentId, locale, db, principal, priorityProperty);
    priorityProperty.setValue(preRenderOrderPropertyValue);
   
    componentProperties.add(priorityProperty);

  }
View Full Code Here

    int propertyIndex = 0;
    boolean isAdvancedProperties = false;
    Iterator componentPropertiesIterator = componentProperties.iterator();
    while(componentPropertiesIterator.hasNext())
    {
      ComponentProperty componentProperty = (ComponentProperty)componentPropertiesIterator.next();
     
      boolean hasAccessToProperty = AccessRightController.getController().getIsPrincipalAuthorized(db, principal, "ComponentPropertyEditor.EditProperty", "" + componentContentId + "_" + componentProperty.getName(), true);
      boolean isFirstAdvancedProperty = false;
     
      if(componentProperty.getName().equalsIgnoreCase("CacheResult"))
      {
        isFirstAdvancedProperty = true;
        isAdvancedProperties = true;
      }
     
      if(componentProperty.getName().equalsIgnoreCase("CacheResult") ||
         componentProperty.getName().equalsIgnoreCase("UpdateInterval") ||
         componentProperty.getName().equalsIgnoreCase("CacheKey") ||
         componentProperty.getName().equalsIgnoreCase("PreRenderOrder"))
      {
        hasAccessToProperty = true;
      }

      //Advanced properties
      if(isFirstAdvancedProperty)
      {
        if(componentProperties.size() - numberOfHiddenProperties < 1)
        {
          sb.append("  <div class=\"propertyRow\">");
          sb.append("    <div class=\"propertyRowLeft\">");
          sb.append("      <label>" + getLocalizedString(locale, "deliver.editOnSight.noPropertiesVisible") + "</label>");
          sb.append("    </div>");
          sb.append("  </div>");
          sb.append("  <div style=\"clear:both;\"></div>");
        }

        sb.append("  <div class=\"propertyRow\">");
        sb.append("    <div class=\"propertyRowLeft\">");
        sb.append("      " + getLocalizedString(locale, "deliver.editOnSight.advancedProperties") + " <img src='css/images/downArrow.gif' onclick=\"$('.advancedProperty" + componentId + "').toggle();\"/>");
        sb.append("    </div>");
        sb.append("  </div>");
        sb.append("  <div style=\"clear:both;\"></div>");
      }
     
      if(!hasAccessToProperty && hideProtectedProperties.equalsIgnoreCase("true"))
      {
        numberOfHiddenProperties++;
      }
      else
      {
        if(componentProperty.getType().equalsIgnoreCase(ComponentProperty.BINDING))
        {
          String assignUrl = "";
          String createUrl = "";
          
          if(componentProperty.getVisualizingAction() != null && !componentProperty.getVisualizingAction().equals(""))
          {
            assignUrl = componentEditorUrl + componentProperty.getVisualizingAction() + "?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + showSimple;
          }
          else
         
            if(componentProperty.getEntityClass().equalsIgnoreCase("Content"))
            {
                String allowedContentTypeIdParameters = "";
 
                if(componentProperty.getAllowedContentTypeNamesArray() != null && componentProperty.getAllowedContentTypeNamesArray().length > 0)
                {
                    allowedContentTypeIdParameters = "&" + componentProperty.getAllowedContentTypeIdAsUrlEncodedString(db);
                }
               
              if(componentProperty.getIsMultipleBinding())
              {
                if(componentProperty.getIsAssetBinding())
                {
                  if(CmsPropertyHandler.getComponentBindningAssetBrowser().equalsIgnoreCase("classic"))
                    assignUrl = componentEditorUrl + "ViewSiteNodePageComponents!showContentTreeForMultipleAssetBindingV3.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + allowedContentTypeIdParameters + "&showSimple=" + showSimple;
                  else
                    assignUrl = componentEditorUrl + "ViewContentVersion!viewAssetBrowserForMultipleComponentBindingV3.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + allowedContentTypeIdParameters + "&assetTypeFilter=" + componentProperty.getAssetMask() + "&showSimple=" + showSimple;
                }
                else
                  assignUrl = componentEditorUrl + "ViewSiteNodePageComponents!showContentTreeForMultipleBindingV3.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + allowedContentTypeIdParameters + "&showSimple=" + showSimple;
              }
              else
              {
                if(componentProperty.getIsAssetBinding())
                {
                  String assignedParameters = "";
                  Iterator<ComponentBinding> bindingsIterator = componentProperty.getBindings().iterator();
                  while(bindingsIterator.hasNext())
                  {
                    ComponentBinding componentBinding = bindingsIterator.next();
                    assignedParameters = "&assignedContentId=" + componentBinding.getEntityId() + "&assignedAssetKey=" + componentBinding.getAssetKey() + "&assignedPath=" + formatter.encodeURI(componentProperty.getValue());
                  }
                 
                  if(CmsPropertyHandler.getComponentBindningAssetBrowser().equalsIgnoreCase("classic"))
                    assignUrl = componentEditorUrl + "ViewContentVersion!viewAssetsForComponentBindingV3.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + allowedContentTypeIdParameters + "&showSimple=" + showSimple + assignedParameters;
                  else
                    assignUrl = componentEditorUrl + "ViewContentVersion!viewAssetBrowserForComponentBindingV3.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + allowedContentTypeIdParameters + "&assetTypeFilter=" + componentProperty.getAssetMask() + "&showSimple=" + showSimple + assignedParameters;
                }
                else
                  assignUrl = componentEditorUrl + "ViewSiteNodePageComponents!showContentTreeV3.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + allowedContentTypeIdParameters + "&showSimple=" + showSimple;
              }
            }
            else if(componentProperty.getEntityClass().equalsIgnoreCase("SiteNode"))
            {
              if(componentProperty.getIsMultipleBinding())
                assignUrl = componentEditorUrl + "ViewSiteNodePageComponents!showStructureTreeForMultipleBindingV3.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + showSimple;
              else
                assignUrl = componentEditorUrl + "ViewSiteNodePageComponents!showStructureTreeV3.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + showSimple;
            }
            else if(componentProperty.getEntityClass().equalsIgnoreCase("Category"))
            {
              if(componentProperty.getIsMultipleBinding())
                assignUrl = componentEditorUrl + "ViewSiteNodePageComponents!showCategoryTreeForMultipleBindingV3.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + showSimple;
              else
                assignUrl = componentEditorUrl + "ViewSiteNodePageComponents!showCategoryTreeV3.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + showSimple;
            }
          }
           
          if(componentProperty.getCreateAction() != null && !componentProperty.getCreateAction().equals(""))
          {
            createUrl = componentEditorUrl + componentProperty.getCreateAction() + "?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + showSimple;
          }
          else
         
            if(componentProperty.getVisualizingAction() != null && !componentProperty.getVisualizingAction().equals(""))
            {
              createUrl = assignUrl;
            }
            else if(componentProperty.getEntityClass().equalsIgnoreCase("Content"))
            {
                String allowedContentTypeIdParameters = "";
 
                if(componentProperty.getAllowedContentTypeNamesArray() != null && componentProperty.getAllowedContentTypeNamesArray().length > 0)
                {
                    allowedContentTypeIdParameters = "&" + componentProperty.getAllowedContentTypeIdAsUrlEncodedString(db);
                }
 
                String returnAddress = URLEncoder.encode("ViewSiteNodePageComponents!addComponentPropertyBinding.action?siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=-1&entity=Content&entityId=#entityId&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&path=#path&showSimple=" + showSimple + "", "UTF-8");
             
                  String cancelKey = originalFullURL;
                  String cancelAddress = (String)CacheController.getCachedObjectFromAdvancedCache("encodedStringsCache", cancelKey);
                  if(cancelAddress == null)
                  {
                    cancelAddress = URLEncoder.encode(cancelKey, "UTF-8");
                    CacheController.cacheObjectInAdvancedCache("encodedStringsCache", cancelKey, cancelAddress);
                  }
 
              if(componentProperty.getIsMultipleBinding())
                createUrl = componentEditorUrl + "CreateContentWizardFinish.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + allowedContentTypeIdParameters + "&refreshAddress=" + returnAddress + "&cancelAddress=" + cancelAddress + "&showSimple=" + showSimple;
              else
                createUrl = componentEditorUrl + "CreateContentWizardFinish.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + allowedContentTypeIdParameters + "&refreshAddress=" + returnAddress + "&cancelAddress=" + cancelAddress + "&showSimple=" + showSimple;
            }
            else if(componentProperty.getEntityClass().equalsIgnoreCase("SiteNode"))
            {
                String returnAddress = URLEncoder.encode("ViewSiteNodePageComponents!addComponentPropertyBinding.action?siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=-1&entity=Content&entityId=#entityId&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&path=#path&showSimple=" + showSimple + "", "UTF-8");
             
                  String cancelKey = originalFullURL;
                  String cancelAddress = (String)CacheController.getCachedObjectFromAdvancedCache("encodedStringsCache", cancelKey);
                  if(cancelAddress == null)
                  {
                    cancelAddress = URLEncoder.encode(cancelKey, "UTF-8");
                    CacheController.cacheObjectInAdvancedCache("encodedStringsCache", cancelKey, cancelAddress);
                  }
 
              if(componentProperty.getIsMultipleBinding())
                createUrl = componentEditorUrl + "CreateSiteNodeWizardFinish.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&refreshAddress=" + returnAddress + "&cancelAddress=" + cancelAddress + "&showSimple=" + showSimple;
              else
                createUrl = componentEditorUrl + "CreateSiteNodeWizardFinish.action?repositoryId=" + repositoryId + "&siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&refreshAddress=" + returnAddress + "&cancelAddress=" + cancelAddress + "&showSimple=" + showSimple;
            }
          }
         
          boolean isPuffContentForPage = false;
          if(componentProperty.getType().equalsIgnoreCase(ComponentProperty.BINDING) && componentProperty.getEntityClass().equalsIgnoreCase("Content") && componentProperty.getIsPuffContentForPage())
            isPuffContentForPage = true;

          if(isAdvancedProperties)
            sb.append("  <div class=\"propertyRow advancedProperty" + componentId + "\" style='display:none;'>");
          else
            sb.append("  <div class=\"propertyRow\"" + (isPuffContentForPage ? " style='border-bottom: 0px;'" : "") + ">");
         
          sb.append("      <div class=\"propertyRowLeft\">");
          sb.append("        <label for=\"" + componentProperty.getName() + "\">" + componentProperty.getDisplayName() + "</label>");
          sb.append("      </div>");
 
          sb.append("      <div class=\"propertyRowRight\">");
         
          if(hasAccessToProperty)
          {
            String warningText = getLocalizedString(locale, "deliver.editOnSight.dirtyWarning");
            sb.append("      <div class=\"fieldGroup\">");                 
            sb.append("        <a name=\"" + componentProperty.getName() + "\" class=\"componentEditorLink\" href=\"javascript:openAssignDialog('" + warningText + "', '" + assignUrl +"');\">");
          }
         
          sb.append("          " + (componentProperty.getValue() == null || componentProperty.getValue().equalsIgnoreCase("") ? componentProperty.getDefaultValue() : componentProperty.getValue()) + (componentProperty.getIsAssetBinding() ? " (" + componentProperty.getAssetKey() + ")" : ""));
         
          if(hasAccessToProperty)
          {
            sb.append("        </a>");
            sb.append("      </div>");
          }       
         
          sb.append("        <div class=\"actionGroup\">");
          if(componentProperty.getValue() != null && componentProperty.getValue().equalsIgnoreCase("Undefined"))
          { 
            if(hasAccessToProperty && createUrl != null)
            {
              sb.append("      <a class=\"componentEditorLink\" href=\"" + createUrl + "\"><img src=\"" + componentEditorUrl + "/css/images/createContent.gif\" border=\"0\" alt=\"Create new content to show\"></a>");
            }
          }
          else
          {
            if(hasAccessToProperty)
            {
              sb.append("      <a class=\"componentEditorLink\" href=\"" + componentEditorUrl + "ViewSiteNodePageComponents!deleteComponentPropertyValue.action?siteNodeId=" + siteNodeId + "&languageId=" + languageId + "&contentId=" + contentId + "&componentId=" + componentId + "&propertyName=" + componentProperty.getName() + "&showSimple=" + showSimple + "\"><img src=\"" + componentEditorUrl + "/css/images/delete.gif\" border=\"0\"/></a>");
            }
          }
          sb.append("      </div>");
          sb.append("      </div>");
 
          sb.append("    </div>");
         
          if(isPuffContentForPage && componentProperty.getBindings() != null && componentProperty.getBindings().size() > 0)
          {
            sb.append("  <div class=\"propertyRow\">");
           
            ComponentBinding binding = componentProperty.getBindings().get(0);
            List referencingPages = getReferencingPages(binding.getEntityId(), siteNodeId, 50, new Boolean(true), db);
           
            if(referencingPages.size() == 0)
            {
              sb.append("  <div class=\"propertyRowLeft\">");
              sb.append("    <label>" + getLocalizedString(locale, "deliver.editOnSight.noDetailPageWithContentBinding.label") + "</label>");
              sb.append("  </div>");
            }
            else if(referencingPages.size() == 1)
            {
              SiteNodeVO siteNodeVO = (SiteNodeVO)referencingPages.get(0);
              String path = getPagePath(siteNodeVO.getId(), languageId, db, principal);
              sb.append("  <div class=\"propertyRowLeft\">");
              sb.append("    <label>" + getLocalizedString(locale, "deliver.editOnSight.detailPageWithContentBinding.label") + "<span title='" + path + "'>" + siteNodeVO.getName() + "(" + siteNodeVO.getSiteNodeId() + ")</span>" + "</label>");
              sb.append("  </div>");
            }
            else
            {
              sb.append("  <div class=\"propertyRowLeft\">");
              sb.append("    <label>" + getLocalizedString(locale, "deliver.editOnSight.detailPagesWithContentBinding.label") + "</label>");
              sb.append("  </div>");
              sb.append("  <div class=\"propertyRowRight\">");
              sb.append("    <input type=\"hidden\" name=\"" + propertyIndex + "_propertyName\" value=\"" + componentProperty.getName() + "_detailSiteNodeId\"/>");
              sb.append("    <select class=\"propertyselect\" name=\"" + componentProperty.getName() + "_detailSiteNodeId\">")
              Iterator referencingPagesIterator = referencingPages.iterator();
              while(referencingPagesIterator.hasNext())
              {
                SiteNodeVO siteNodeVO = (SiteNodeVO)referencingPagesIterator.next();
                String path = getPagePath(siteNodeVO.getId(), languageId, db, principal);
                Integer detailSiteNodeId = componentProperty.getDetailSiteNodeId();
               
                if(detailSiteNodeId != null && detailSiteNodeId.equals(siteNodeVO.getSiteNodeId()))
                  sb.append("  <option value='" + siteNodeVO.getSiteNodeId() + "' title='" + path + "' selected=\"1\">" + siteNodeVO.getName() + "(" + siteNodeVO.getSiteNodeId() + ")" + "</option>");               
                else
                  sb.append("  <option value='" + siteNodeVO.getSiteNodeId() + "' title='" + path + "'>" + siteNodeVO.getName() + "(" + siteNodeVO.getSiteNodeId() + ")" + "</option>");               
              }
              sb.append("    </select>")
              sb.append("  </div>");

              if(hasAccessToProperty)
                  propertyIndex++;
            }
           
            sb.append("  </div>");
          }

        }
        else if(componentProperty.getType().equalsIgnoreCase(ComponentProperty.TEXTFIELD))
        {
          if(isAdvancedProperties)
            sb.append("  <div class=\"propertyRow advancedProperty" + componentId + "\" style='display:none;'>");
          else
            sb.append("  <div class=\"propertyRow\">");
         
          //sb.append("  <div class=\"propertyRow\">");
          sb.append("    <div class=\"propertyRowLeft\">");
          sb.append("      <label for=\"" + componentProperty.getName() + "\" onmouseover=\"showDiv('helpLayer" + componentProperty.getComponentId() + "_" + componentProperty.getName() + "');\" onMouseOut=\"javascript:hideDiv('helpLayer" + componentProperty.getComponentId() + "_" + componentProperty.getName() + "');\">" + componentProperty.getDisplayName() + "</label>");
          sb.append("    </div>");
 
          sb.append("    <div class=\"propertyRowRight\">");
         
          sb.append("      <div class=\"fieldGroup\">");                 
          if(hasAccessToProperty)
          {
            sb.append("      <input type=\"hidden\" name=\"" + propertyIndex + "_propertyName\" value=\"" + componentProperty.getName() + "\"/>");
            sb.append("      <input type=\"text\" class=\"propertytextfield\" name=\"" + componentProperty.getName() + "\" value=\"" + componentProperty.getValue() + "\" onkeydown=\"setDirty();\"/>");
          }
          else
            sb.append("  " + componentProperty.getValue() + "");
          sb.append("      </div>");
   
          if(hasAccessToProperty)
          {
            sb.append("  <div class=\"actionGroup\">");
            sb.append("    <a class=\"componentEditorLink\" href=\"" + componentEditorUrl + "ViewSiteNodePageComponents!deleteComponentPropertyValue.action?siteNodeId=" + siteNodeId + "&amp;languageId=" + languageId + "&amp;contentId=" + contentId + "&amp;componentId=" + componentId + "&amp;propertyName=" + componentProperty.getName() + "&amp;showSimple=" + showSimple + "\"><img src=\"" + componentEditorUrl + "/css/images/delete.gif\" border=\"0\"/></a>");
            sb.append("  </div>");
          }
          sb.append("  </div>");
 
          sb.append("  </div>");
 
          if(hasAccessToProperty)
              propertyIndex++;
        }
        else if(componentProperty.getType().equalsIgnoreCase(ComponentProperty.DATEFIELD))
        {
          if(isAdvancedProperties)
            sb.append("  <div class=\"propertyRow advancedProperty" + componentId + "\" style='display:none;'>");
          else
            sb.append("  <div class=\"propertyRow\">");
         
          //sb.append("  <div class=\"propertyRow\">");
          sb.append("    <div class=\"propertyRowLeft\">");
          sb.append("      <label for=\"" + componentProperty.getName() + "\" onMouseOver=\"showDiv('helpLayer" + componentProperty.getComponentId() + "_" + componentProperty.getName() + "');\" onMouseOut=\"javascript:hideDiv('helpLayer" + componentProperty.getComponentId() + "_" + componentProperty.getName() + "');\">" + componentProperty.getDisplayName() + "</label>");
          sb.append("    </div>");
 
          sb.append("    <div class=\"propertyRowRight\">");
         
          sb.append("      <div class=\"fieldGroup\">");                 
          if(hasAccessToProperty)
          {
            sb.append("      <input type=\"hidden\" name=\"" + propertyIndex + "_propertyName\" value=\"" + componentProperty.getName() + "\"/>");
            sb.append("      <input type=\"text\" class=\"propertydatefield\" style=\"width: 100px;\" id=\"" + componentProperty.getName() + "\" name=\"" + componentProperty.getName() + "\" value=\"" + componentProperty.getValue() + "\" onkeydown=\"setDirty();\"/>&nbsp;<a name=\"calendar_" + componentProperty.getName() + "\" id=\"calendar_" + componentProperty.getName() + "\"><img src=\"" + componentEditorUrl + "/css/images/calendar.gif\" border=\"0\"/></a>");
            sb.append("      <script type=\"text/javascript\">");
            sb.append("        Calendar.setup({");
            sb.append("              inputField     :    \"" + componentProperty.getName() + "\",");
            sb.append("              ifFormat       :    \"%Y-%m-%d %H:%M\",");
            sb.append("              button         :    \"calendar_" + componentProperty.getName() + "\",");
            sb.append("              align          :    \"BR\",");
            sb.append("              singleClick    :    true,");
            sb.append("              firstDay       :   1,");
            sb.append("              showsTime     :    true,");
            sb.append("              timeFormat     :    \"24\"");
            sb.append("        });");
            sb.append("      </script>");
          }
          else
            sb.append("  " + componentProperty.getValue() + "");
          sb.append("      </div>");
   
          if(hasAccessToProperty)
          {
            sb.append("  <div class=\"actionGroup\">");
            sb.append("    <a class=\"componentEditorLink\" href=\"" + componentEditorUrl + "ViewSiteNodePageComponents!deleteComponentPropertyValue.action?siteNodeId=" + siteNodeId + "&amp;languageId=" + languageId + "&amp;contentId=" + contentId + "&amp;componentId=" + componentId + "&amp;propertyName=" + componentProperty.getName() + "&amp;showSimple=" + showSimple + "\"><img src=\"" + componentEditorUrl + "/css/images/delete.gif\" border=\"0\"/></a>");
            sb.append("  </div>");
          }
          sb.append("  </div>");
 
          sb.append("  </div>");
 
          if(hasAccessToProperty)
              propertyIndex++;
        }
        else if(componentProperty.getType().equalsIgnoreCase(ComponentProperty.TEXTAREA))
        {
          if(isAdvancedProperties)
            sb.append("  <div class=\"propertyRow advancedProperty" + componentId + "\" style='display:none;'>");
          else
            sb.append("  <div class=\"propertyRow\">");
         
          //sb.append("  <div class=\"propertyRow\">");
          sb.append("    <div class=\"propertyRowLeft\">");
          sb.append("    <label for=\"" + componentProperty.getName() + "\" onMouseOver=\"showDiv('helpLayer" + componentProperty.getComponentId() + "_" + componentProperty.getName() + "');\" onMouseOut=\"javascript:hideDiv('helpLayer" + componentProperty.getComponentId() + "_" + componentProperty.getName() + "');\">" + componentProperty.getDisplayName() + "</label>");
          sb.append("    </div>");
 
          sb.append("    <div class=\"propertyRowRight\">");
         
          sb.append("      <div class=\"fieldGroup\">");                 
          if(hasAccessToProperty)
          {
            sb.append("  <input type=\"hidden\" name=\"" + propertyIndex + "_propertyName\" value=\"" + componentProperty.getName() + "\"/>");

            if(componentProperty.getIsWYSIWYGEnabled())
            {
              sb.append("  <textarea toolbarName=\"" + componentProperty.getWYSIWYGToolbar() + "\" class=\"propertytextarea wysiwygeditor\" id=\"" + componentProperty.getName() + "\" name=\"" + componentProperty.getName() + "\" onkeydown=\"setDirty();\">" + (componentProperty.getValue() == null ? "" : componentProperty.getValue()) + "</textarea>");
            }
            else
            {
              sb.append("  <textarea class=\"propertytextarea\" id=\"" + componentProperty.getName() + "\" name=\"" + componentProperty.getName() + "\" onkeydown=\"setDirty();\">" + (componentProperty.getValue() == null ? "" : componentProperty.getValue()) + "</textarea>");
            }
          }
          else
            sb.append("  " + componentProperty.getValue() + "");
          sb.append("      </div>");
   
          if(hasAccessToProperty)
          {
            sb.append("  <div class=\"actionGroup\">");
            sb.append("  <a class=\"componentEditorLink\" href=\"" + componentEditorUrl + "ViewSiteNodePageComponents!deleteComponentPropertyValue.action?siteNodeId=" + siteNodeId + "&amp;languageId=" + languageId + "&amp;contentId=" + contentId + "&amp;componentId=" + componentId + "&amp;propertyName=" + componentProperty.getName() + "&amp;showSimple=" + showSimple + "\"><img src=\"" + componentEditorUrl + "/css/images/delete.gif\" border=\"0\"/></a>");
            sb.append("  </div>");
          }
          sb.append("  </div>");
 
          sb.append("  </div>");
         
          if(hasAccessToProperty)
              propertyIndex++;
        }
        else if(componentProperty.getType().equalsIgnoreCase(ComponentProperty.SELECTFIELD))
        {
          if(isAdvancedProperties)
            sb.append("  <div class=\"propertyRow advancedProperty" + componentId + "\" style='display:none;'>");
          else
            sb.append("  <div class=\"propertyRow\">");
         
          //sb.append("  <div class=\"propertyRow\">");
          sb.append("    <div class=\"propertyRowLeft\">");
          sb.append("    <label for=\"" + componentProperty.getName() + "\" onMouseOver=\"showDiv('helpLayer" + componentProperty.getComponentId() + "_" + componentProperty.getName() + "');\" onMouseOut=\"javascript:hideDiv('helpLayer" + componentProperty.getComponentId() + "_" + componentProperty.getName() + "');\">" + componentProperty.getDisplayName() + "</label>");
          sb.append("    </div>");
 
          sb.append("    <div class=\"propertyRowRight\">");
         
          sb.append("      <div class=\"fieldGroup\">");                 
          if(hasAccessToProperty)
          {
            sb.append("  <input type=\"hidden\" name=\"" + propertyIndex + "_propertyName\" value=\"" + componentProperty.getName() + "\">");
            sb.append("  <select class=\"propertyselect\" name=\"" + componentProperty.getName() + "\" onchange=\"setDirty();\">");
           
            Iterator<GenericOptionDefinition> optionsIterator = componentProperty.getOptions().iterator();
 
            if(componentProperty.getDataProvider() != null && !componentProperty.getDataProvider().equals(""))
            {
              try
              {
                PropertyOptionsDataProvider provider = (PropertyOptionsDataProvider)Class.forName(componentProperty.getDataProvider()).newInstance();
                Map parameters = httpHelper.toMap(componentProperty.getDataProviderParameters(), "UTF-8", ";");
                optionsIterator = provider.getOptions(parameters, locale.getLanguage(), principal, db).iterator();
              }
              catch (Exception e)
              {
                logger.warn("A problem loading the data provider for property " + componentProperty.getName() + ":" + e.getMessage(), e);
                List<GenericOptionDefinition> errorOptions = new ArrayList<GenericOptionDefinition>();
                ComponentPropertyOption componentPropertyOption = new ComponentPropertyOption();
                componentPropertyOption.setName("Error:" + e.getMessage());
                componentPropertyOption.setValue("");
                errorOptions.add(componentPropertyOption);
                optionsIterator = errorOptions.iterator();
              }
            }
           
            while(optionsIterator.hasNext())
            {
                ComponentPropertyOption option = (ComponentPropertyOption)optionsIterator.next();
                boolean isSame = false;
                if(componentProperty != null && componentProperty.getValue() != null && option != null && option.getValue() != null)
                  isSame = componentProperty.getValue().equals(option.getValue());
                sb.append("<option value=\"" + option.getValue() + "\"" + (isSame ? " selected=\"1\"" : "") + ">" + option.getName() + "</option>");
            }
           
            sb.append("  </select>");         
          }
          else
            sb.append("  " + componentProperty.getName() + "");
          sb.append("    </div>");
   
          if(hasAccessToProperty)
          {
            sb.append("  <div class=\"actionGroup\">");
            sb.append("  <a class=\"componentEditorLink\" href=\"" + componentEditorUrl + "ViewSiteNodePageComponents!deleteComponentPropertyValue.action?siteNodeId=" + siteNodeId + "&amp;languageId=" + languageId + "&amp;contentId=" + contentId + "&amp;componentId=" + componentId + "&amp;propertyName=" + componentProperty.getName() + "&amp;showSimple=" + showSimple + "\"><img src=\"" + componentEditorUrl + "/css/images/delete.gif\" border=\"0\"/></a>");
            sb.append("  </div>");
          }
          sb.append("  </div>");
       
          sb.append("  </div>");
         
          if(hasAccessToProperty)
              propertyIndex++;
        }
        else if(componentProperty.getType().equalsIgnoreCase(ComponentProperty.CHECKBOXFIELD))
        {
          if(isAdvancedProperties)
            sb.append("  <div class=\"propertyRow advancedProperty" + componentId + "\" style='display:none;'>");
          else
            sb.append("  <div class=\"propertyRow\">");
         
          //sb.append("  <div class=\"propertyRow\">");
          sb.append("    <div class=\"propertyRowLeft\">");
          sb.append("    <label for=\"" + componentProperty.getName() + "\" onMouseOver=\"showDiv('helpLayer" + componentProperty.getComponentId() + "_" + componentProperty.getName() + "');\" onMouseOut=\"javascript:hideDiv('helpLayer" + componentProperty.getComponentId() + "_" + componentProperty.getName() + "');\">" + componentProperty.getDisplayName() + "</label>");
          sb.append("    </div>");
 
          sb.append("    <div class=\"propertyRowRight\">");
          sb.append("      <div class=\"fieldGroup\">");                 
          if(hasAccessToProperty)
          {
            sb.append("    <input type=\"hidden\" name=\"" + propertyIndex + "_propertyName\" value=\"" + componentProperty.getName() + "\">");
            int numberOfCheckboxes = 0;
            Iterator optionsIterator = componentProperty.getOptions().iterator();
           
            if(componentProperty.getDataProvider() != null && !componentProperty.getDataProvider().equals(""))
            {
              try
              {
                PropertyOptionsDataProvider provider = (PropertyOptionsDataProvider)Class.forName(componentProperty.getDataProvider()).newInstance();
                Map parameters = httpHelper.toMap(componentProperty.getDataProviderParameters(), "UTF-8", ";");
                optionsIterator = provider.getOptions(parameters, locale.getLanguage(), principal, db).iterator();
              }
              catch (Exception e)
              {
                logger.warn("A problem loading the data provider for property " + componentProperty.getName() + ":" + e.getMessage(), e);
                List<ComponentPropertyOption> errorOptions = new ArrayList<ComponentPropertyOption>();
                ComponentPropertyOption componentPropertyOption = new ComponentPropertyOption();
                componentPropertyOption.setName("Error:" + e.getMessage());
                componentPropertyOption.setValue("");
                errorOptions.add(componentPropertyOption);
                optionsIterator = errorOptions.iterator();
              }
            }

            while(optionsIterator.hasNext())
            {
                ComponentPropertyOption option = (ComponentPropertyOption)optionsIterator.next();
                boolean isSame = false;
                if(componentProperty != null && componentProperty.getValue() != null && option != null && option.getValue() != null)
                {
                  String[] values = componentProperty.getValue().split(",");
                  for(int i=0; i<values.length; i++)
                  {
                    isSame = values[i].equals(option.getValue());
                    if(isSame)
                      break;
                  }
                }
 
                sb.append("<input type=\"checkbox\" style=\"width: 20px; border: 0px;\" name=\"" + componentProperty.getName() + "\" value=\"" + option.getValue() + "\"" + (isSame ? " checked=\"1\"" : "") + " onclicked=\"setDirty();\"/>" + option.getName() + " ");
                numberOfCheckboxes++;
                if(numberOfCheckboxes == 2)
                {
                  numberOfCheckboxes = 0;
                  //sb.append("<br/>");
                }
            }
          }
          else
            sb.append("  " + componentProperty.getName() + "");
 
          sb.append("  </div>");
 
          if(hasAccessToProperty)
          {
            sb.append("  <div class=\"actionGroup\">");
            sb.append("  <a class=\"componentEditorLink\" href=\"" + componentEditorUrl + "ViewSiteNodePageComponents!deleteComponentPropertyValue.action?siteNodeId=" + siteNodeId + "&amp;languageId=" + languageId + "&amp;contentId=" + contentId + "&amp;componentId=" + componentId + "&amp;propertyName=" + componentProperty.getName() + "&amp;showSimple=" + showSimple + "\"><img src=\"" + componentEditorUrl + "/css/images/delete.gif\" border=\"0\"/></a>");
            sb.append("  </div>");
          }
         
          sb.append("  </div>");
         
View Full Code Here

          String visualizingAction        = binding.attributeValue("visualizingAction");
          String createAction          = binding.attributeValue("createAction");
          //logger.info("name:" + name);
          //logger.info("type:" + type);

          ComponentProperty property = new ComponentProperty();
          property.setComponentId(componentId);
          property.setName(name);
          property.setDisplayName(displayName);
          property.setDescription(description);
          property.setDefaultValue(defaultValue);
          property.setAllowLanguageVariations(new Boolean(allowLanguageVariations));
          property.setDataProvider(dataProvider);
          property.setType(type);
          property.setVisualizingAction(visualizingAction);
          property.setCreateAction(createAction);
          if(allowedContentTypeNamesString != null && allowedContentTypeNamesString.length() > 0)
          {
              String[] allowedContentTypeNamesArray = allowedContentTypeNamesString.split(",");
              property.setAllowedContentTypeNamesArray(allowedContentTypeNamesArray);
          }
         
          if(type.equalsIgnoreCase(ComponentProperty.BINDING))
          {
            String entity   = binding.attributeValue("entity");
            boolean isMultipleBinding     = new Boolean(binding.attributeValue("multiple")).booleanValue();
            boolean isAssetBinding         = new Boolean(binding.attributeValue("assetBinding")).booleanValue();
            String assetMask        = binding.attributeValue("assetMask");
            boolean isPuffContentForPage   = new Boolean(binding.attributeValue("isPuffContentForPage")).booleanValue();

            property.setEntityClass(entity);
            String value = getComponentPropertyValue(componentId, name, property.getAllowLanguageVariations());
            timer.printElapsedTime("Set property1");

            property.setValue(value);
            property.setIsMultipleBinding(isMultipleBinding);
            property.setIsAssetBinding(isAssetBinding);
            property.setAssetMask(assetMask);
            property.setIsPuffContentForPage(isPuffContentForPage);
            List<ComponentBinding> bindings = getComponentPropertyBindings(componentId, name, this.getTemplateController());
            property.setBindings(bindings);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.TEXTFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, property.getAllowLanguageVariations());
            timer.printElapsedTime("Set property2");
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.DATEFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, property.getAllowLanguageVariations());
            timer.printElapsedTime("Set property2");
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.CUSTOMFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, property.getAllowLanguageVariations());
            String customMarkup = binding.attributeValue("customMarkup");
            String processedMarkup =  customMarkup.replaceAll("propertyName", name);
            processedMarkup = processedMarkup.replaceAll("propertyValue", value);

            property.setCustomMarkup(processedMarkup);
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.TEXTAREA)) 
          {   
            boolean WYSIWYGEnabled = new Boolean(binding.attributeValue("WYSIWYGEnabled")).booleanValue();
            property.setWYSIWYGEnabled(WYSIWYGEnabled);
            String WYSIWYGToolbar = binding.attributeValue("WYSIWYGToolbar");
            property.setWYSIWYGToolbar(WYSIWYGToolbar);

            String value = getComponentPropertyValue(componentId, name, property.getAllowLanguageVariations());
            timer.printElapsedTime("Set property2");
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.SELECTFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, property.getAllowLanguageVariations());
            timer.printElapsedTime("Set property2");
           
            List optionList = binding.elements("option");
            Iterator optionListIterator = optionList.iterator();
            while(optionListIterator.hasNext())
            {
              Element option = (Element)optionListIterator.next();
              String optionName  = option.attributeValue("name");
              String optionValue  = option.attributeValue("value");
              ComponentPropertyOption cpo = new ComponentPropertyOption();
              cpo.setName(optionName);
              cpo.setValue(optionValue);
              property.getOptions().add(cpo);
            }
           
            //logger.info("value:" + value);
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.CHECKBOXFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, property.getAllowLanguageVariations());
            timer.printElapsedTime("Set property3");
           
            List optionList = binding.elements("option");
            Iterator optionListIterator = optionList.iterator();
            while(optionListIterator.hasNext())
            {
              Element option = (Element)optionListIterator.next();
              String optionName  = option.attributeValue("name");
              String optionValue  = option.attributeValue("value");
              ComponentPropertyOption cpo = new ComponentPropertyOption();
              cpo.setName(optionName);
              cpo.setValue(optionValue);
              property.getOptions().add(cpo);
            }
           
            //logger.info("value:" + value);
            property.setValue(value);
          }
         
          componentProperties.add(property);
        }
      }
View Full Code Here

          String visualizingAction        = binding.attributeValue("visualizingAction");
          String createAction          = binding.attributeValue("createAction");
          //logger.info("name:" + name);
          //logger.info("type:" + type);

          ComponentProperty property = new ComponentProperty();
          property.setComponentId(componentId);
          property.setName(name);
          property.setDisplayName(displayName);
          property.setDescription(description);
          property.setDefaultValue(defaultValue);
          property.setAllowLanguageVariations(new Boolean(allowLanguageVariations));
          property.setDataProvider(dataProvider);
          property.setType(type);
          property.setVisualizingAction(visualizingAction);
          property.setCreateAction(createAction);
          if(allowedContentTypeNamesString != null && allowedContentTypeNamesString.length() > 0)
          {
              String[] allowedContentTypeNamesArray = allowedContentTypeNamesString.split(",");
              property.setAllowedContentTypeNamesArray(allowedContentTypeNamesArray);
          }
         
          if(type.equalsIgnoreCase(ComponentProperty.BINDING))
          {
            String entity           = binding.attributeValue("entity");
            boolean isMultipleBinding     = new Boolean(binding.attributeValue("multiple")).booleanValue();
            boolean isAssetBinding       = new Boolean(binding.attributeValue("assetBinding")).booleanValue();
            String assetMask        = binding.attributeValue("assetMask");
            boolean isPuffContentForPage   = new Boolean(binding.attributeValue("isPuffContentForPage")).booleanValue();

            property.setEntityClass(entity);
            String value = getComponentPropertyValue(componentId, name, templateController, property.getAllowLanguageVariations());
            timer.printElapsedTime("Set property1");

            property.setValue(value);
            property.setIsMultipleBinding(isMultipleBinding);
            property.setIsAssetBinding(isAssetBinding);
            property.setAssetMask(assetMask);
            property.setIsPuffContentForPage(isPuffContentForPage);
            List<ComponentBinding> bindings = getComponentPropertyBindings(componentId, name, templateController);
            property.setBindings(bindings);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.TEXTFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, templateController, property.getAllowLanguageVariations());
            timer.printElapsedTime("Set property2");
            //logger.info("value:" + value);
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.DATEFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, property.getAllowLanguageVariations());
            timer.printElapsedTime("Set property2");
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.CUSTOMFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, property.getAllowLanguageVariations());
            String customMarkup = binding.attributeValue("customMarkup");
            String processedMarkup =  customMarkup.replaceAll("propertyName", name);
            processedMarkup = processedMarkup.replaceAll("propertyValue", value);

            property.setCustomMarkup(processedMarkup);
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.TEXTAREA)) 
          {   
            boolean WYSIWYGEnabled = new Boolean(binding.attributeValue("WYSIWYGEnabled")).booleanValue();
            property.setWYSIWYGEnabled(WYSIWYGEnabled);
            String WYSIWYGToolbar = binding.attributeValue("WYSIWYGToolbar");
            property.setWYSIWYGToolbar(WYSIWYGToolbar);

            String value = getComponentPropertyValue(componentId, name, templateController, property.getAllowLanguageVariations());
            timer.printElapsedTime("Set property2");
            //logger.info("value:" + value);
            property.setValue(value);
          }
          else if(type.equalsIgnoreCase(ComponentProperty.SELECTFIELD)) 
          {   
            String value = getComponentPropertyValue(componentId, name, templateController, property.getAllowLanguageVariations());
            timer.printElapsedTime("Set property2");
           
            List optionList = binding.elements("option");
            Iterator optionListIterator = optionList.iterator();
            while(optionListIterator.hasNext())
            {
              Element option = (Element)optionListIterator.next();
              String optionName  = option.attributeValue("name");
              String optionValue  = option.attributeValue("value");
              ComponentPropertyOption cpo = new ComponentPropertyOption();
              cpo.setName(optionName);
              cpo.setValue(optionValue);
              property.getOptions().add(cpo);
            }
           
            //logger.info("value:" + value);
            property.setValue(value);
          }
         
          componentProperties.add(property);
        }
      }
View Full Code Here

TOP

Related Classes of org.infoglue.deliver.applications.databeans.ComponentProperty

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.