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');\"> </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\"> </td>");
sb.append(" <td class=\"igtd\"> </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\"> </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\"> </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\"> </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();\"/> <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++;