Package org.infoglue.deliver.util

Examples of org.infoglue.deliver.util.Timer


   * This is the method that will render the page. It uses the new component based structure.
   */
 
  public void invokePage() throws SystemException, Exception
  {
    Timer timer = new Timer();
    timer.setActive(false);
   
    String decoratePageTemplate = "";
   
    NodeDeliveryController nodeDeliveryController = NodeDeliveryController.getNodeDeliveryController(this.getDeliveryContext());
   
    timer.printElapsedTime("Initialized controllers");
   
    Integer repositoryId = nodeDeliveryController.getSiteNodeVO(getDatabase(), this.getDeliveryContext().getSiteNodeId()).getRepositoryId();
    String componentXML = getPageComponentsString(getDatabase(), this.getTemplateController(), this.getDeliveryContext().getSiteNodeId(), this.getDeliveryContext().getLanguageId(), this.getDeliveryContext().getContentId());
    //logger.info("componentXML:" + componentXML);
   
    componentXML = appendPagePartTemplates(componentXML, this.getDeliveryContext().getSiteNodeId());
   
    Timer decoratorTimer = new Timer();
    decoratorTimer.setActive(false);

    InfoGlueComponent baseComponent = null;
   
    if(componentXML == null || componentXML.length() == 0)
    {
View Full Code Here


   * This method adds the necessary html to a template to make it right-clickable.
   */ 

  private String decorateTemplate(TemplateController templateController, String template, DeliveryContext deliveryContext, InfoGlueComponent component)
  {
    Timer timer = new Timer();
    timer.setActive(false);

    String decoratedTemplate = template;
   
    try
    {
      String cmsBaseUrl = CmsPropertyHandler.getCmsBaseUrl();
      String componentEditorUrl = CmsPropertyHandler.getComponentEditorUrl();

      InfoGluePrincipal principal = templateController.getPrincipal();
        String cmsUserName = (String)templateController.getHttpServletRequest().getSession().getAttribute("cmsUserName");
        if(cmsUserName != null && !CmsPropertyHandler.getAnonymousUser().equalsIgnoreCase(cmsUserName))
        {
          InfoGluePrincipal newPrincipal = templateController.getPrincipal(cmsUserName);
          if(newPrincipal != null)
            principal = newPrincipal;
        }
       
        Locale locale = templateController.getLocaleAvailableInTool(principal);

        boolean hasAccessToAccessRights   = AccessRightController.getController().getIsPrincipalAuthorized(templateController.getDatabase(), principal, "ComponentEditor.ChangeSlotAccess", "");
      boolean hasAccessToAddComponent   = AccessRightController.getController().getIsPrincipalAuthorized(templateController.getDatabase(), principal, "ComponentEditor.AddComponent", "" + component.getContentId() + "_" + component.getSlotName());
      boolean hasAccessToDeleteComponent   = AccessRightController.getController().getIsPrincipalAuthorized(templateController.getDatabase(), principal, "ComponentEditor.DeleteComponent", "" + component.getContentId() + "_" + component.getSlotName());
      boolean hasAccessToChangeComponent   = AccessRightController.getController().getIsPrincipalAuthorized(templateController.getDatabase(), principal, "ComponentEditor.ChangeComponent", "" + component.getContentId() + "_" + component.getSlotName());
      boolean hasSaveTemplateAccess     = AccessRightController.getController().getIsPrincipalAuthorized(templateController.getDatabase(), principal, "ComponentEditor.SavePageTemplate", true, false, true);
        boolean hasSubmitToPublishAccess   = AccessRightController.getController().getIsPrincipalAuthorized(templateController.getDatabase(), principal, "ComponentEditor.SubmitToPublish", true, false, true);
        boolean hasPageStructureAccess     = AccessRightController.getController().getIsPrincipalAuthorized(templateController.getDatabase(), principal, "ComponentEditor.PageStructure", true, false, true);
        boolean hasOpenInNewWindowAccess   = AccessRightController.getController().getIsPrincipalAuthorized(templateController.getDatabase(), principal, "ComponentEditor.OpenInNewWindow", true, false, true);
        boolean hasViewSourceAccess     = AccessRightController.getController().getIsPrincipalAuthorized(templateController.getDatabase(), principal, "ComponentEditor.ViewSource", true, false, true);

        boolean showNotifyUserOfPage     = AccessRightController.getController().getIsPrincipalAuthorized(templateController.getDatabase(), principal, "ComponentEditor.NotifyUserOfPage", true, false, true);
        boolean showContentNotifications   = AccessRightController.getController().getIsPrincipalAuthorized(templateController.getDatabase(), principal, "ComponentEditor.ContentNotifications", true, false, true);
        boolean showPageNotifications     = AccessRightController.getController().getIsPrincipalAuthorized(templateController.getDatabase(), principal, "ComponentEditor.PageNotifications", true, false, true);

        boolean showW3CValidator       = AccessRightController.getController().getIsPrincipalAuthorized(templateController.getDatabase(), principal, "ComponentEditor.W3CValidator", true, false, true);
        boolean showLanguageMenu       = AccessRightController.getController().getIsPrincipalAuthorized(templateController.getDatabase(), principal, "ComponentEditor.ShowLanguageMenu", true, false, true);

        boolean showHomeButton         = AccessRightController.getController().getIsPrincipalAuthorized(templateController.getDatabase(), principal, "ComponentEditor.ShowHomeButton", true, false, true);
        boolean showMySettingsButton     = AccessRightController.getController().getIsPrincipalAuthorized(templateController.getDatabase(), principal, "ComponentEditor.ShowMySettingsButton", true, false, true);

        String useApprovalFlow         = CmsPropertyHandler.getUseApprovalFlow();
        String autoShowApprovalButtons     = CmsPropertyHandler.getAutoShowApprovalButtons();
       
        String extraHeader   = FileHelper.getFileAsString(new File(CmsPropertyHandler.getContextDiskPath() + (CmsPropertyHandler.getContextDiskPath().endsWith("/") ? "" : "/") + "preview/pageComponentEditorHeader.vm"), "iso-8859-1");
        String extraBody   = FileHelper.getFileAsString(new File(CmsPropertyHandler.getContextDiskPath() + (CmsPropertyHandler.getContextDiskPath().endsWith("/") ? "" : "/") + "preview/pageComponentEditorBody.vm"), "iso-8859-1");
        boolean oldUseFullUrl = this.getTemplateController().getDeliveryContext().getUseFullUrl();
      this.getTemplateController().getDeliveryContext().setUseFullUrl(true);
     
      String parameters = "repositoryId=" + templateController.getSiteNode().getRepositoryId() + "&siteNodeId=" + templateController.getSiteNodeId() + "&languageId=" + templateController.getLanguageId() + "&contentId=" + templateController.getContentId() + "&componentId=" + this.getRequest().getParameter("activatedComponentId") + "&componentContentId=" + this.getRequest().getParameter("componentContentId") + "&showSimple=false&showLegend=false&originalUrl=" + URLEncoder.encode(this.getTemplateController().getCurrentPageUrl(), "UTF-8");

      String WYSIWYGEditorFile = "ckeditor/ckeditor.js";
      if(!CmsPropertyHandler.getPrefferedWYSIWYG().equals("ckeditor4"))
        WYSIWYGEditorFile = "FCKEditor/fckeditor.js";
     
      StringBuffer path = getPagePathAsCommaseparatedIds(templateController);
     
      extraHeader = extraHeader.replaceAll("\\$\\{focusElementId\\}", "" + this.getRequest().getParameter("focusElementId"));
      extraHeader = extraHeader.replaceAll("\\$\\{cmsBaseUrl\\}", cmsBaseUrl);
      extraHeader = extraHeader.replaceAll("\\$\\{contextName\\}", this.getRequest().getContextPath());
      extraHeader = extraHeader.replaceAll("\\$\\{componentEditorUrl\\}", componentEditorUrl);
      if(principal.getName().equalsIgnoreCase(CmsPropertyHandler.getAnonymousUser()))
        extraHeader = extraHeader.replaceAll("\\$\\{limitedUserWarning\\}", "alert('Your session must have expired as you are now in decorated mode as " + principal.getName() + ". Please close browser and login again.');");
      else
        extraHeader = extraHeader.replaceAll("\\$\\{limitedUserWarning\\}", "");
      //extraHeader = extraHeader.replaceAll("\\$\\{currentUrl\\}", URLEncoder.encode(this.getTemplateController().getCurrentPageUrl(), "UTF-8"));
      extraHeader = extraHeader.replaceAll("\\$\\{currentUrl\\}", URLEncoder.encode(this.getTemplateController().getOriginalFullURL(), "UTF-8"));
      extraHeader = extraHeader.replaceAll("\\$\\{activatedComponentId\\}", "" + this.getRequest().getParameter("activatedComponentId"));
      extraHeader = extraHeader.replaceAll("\\$\\{parameters\\}", parameters);
      extraHeader = extraHeader.replaceAll("\\$\\{siteNodeId\\}", "" + templateController.getSiteNodeId());
      extraHeader = extraHeader.replaceAll("\\$\\{languageId\\}", "" + templateController.getLanguageId());
      extraHeader = extraHeader.replaceAll("\\$\\{contentId\\}", "" + templateController.getContentId());
      extraHeader = extraHeader.replaceAll("\\$\\{metaInfoContentId\\}", "" + templateController.getMetaInformationContentId());
      extraHeader = extraHeader.replaceAll("\\$\\{parentSiteNodeId\\}", "" + templateController.getSiteNode().getParentSiteNodeId());
      extraHeader = extraHeader.replaceAll("\\$\\{repositoryId\\}", "" + templateController.getSiteNode().getRepositoryId());
      extraHeader = extraHeader.replaceAll("\\$\\{path\\}", "" + path.substring(1));
      extraHeader = extraHeader.replaceAll("\\$\\{userPrefferredLanguageCode\\}", "" + CmsPropertyHandler.getPreferredLanguageCode(principal.getName()));
      extraHeader = extraHeader.replaceAll("\\$\\{userPrefferredWYSIWYG\\}", "" + CmsPropertyHandler.getPrefferedWYSIWYG());
      extraHeader = extraHeader.replaceAll("\\$\\{WYSIWYGEditorJS\\}", WYSIWYGEditorFile);

      extraHeader = extraHeader.replaceAll("\\$\\{publishedLabel\\}", getLocalizedString(locale, "tool.contenttool.state.published"));

      if(CmsPropertyHandler.getPersonalDisableEditOnSightToolbar(principal.getName()))
      {       
        extraHeader = extraHeader.replaceAll("\\$\\{editOnSightFooterToolbarIsActive\\}", "false");
        extraHeader = extraHeader.replaceAll("\\$\\{editOnSightFooterToolbarOverideCSS\\}", ".editOnSightFooterToolbar{display:none}");
      }
      else
      {
        extraHeader = extraHeader.replaceAll("\\$\\{editOnSightFooterToolbarIsActive\\}", "true");
        extraHeader = extraHeader.replaceAll("\\$\\{editOnSightFooterToolbarOverideCSS\\}", "");
      }

      if(CmsPropertyHandler.getShowInlinePropertiesIcon().equalsIgnoreCase("false"))
      {       
        extraHeader = extraHeader.replaceAll("\\$\\{useInlinePropertiesIcon\\}", "false");
      }
      else
      {
        extraHeader = extraHeader.replaceAll("\\$\\{useInlinePropertiesIcon\\}", "true");
      }

      if(getRequest().getParameter("approveEntityName") != null && !getRequest().getParameter("approveEntityName").equals("") && getRequest().getParameter("approveEntityId") != null && !getRequest().getParameter("approveEntityId").equals(""))
      {
        extraHeader = extraHeader.replaceAll("\\$\\{approveEntityName\\}", "" + getRequest().getParameter("approveEntityName"));
        extraHeader = extraHeader.replaceAll("\\$\\{approveEntityId\\}", "" + getRequest().getParameter("approveEntityId"));
        extraHeader = extraHeader.replaceAll("\\$\\{publishingEventId\\}", "" + getRequest().getParameter("publishingEventId"));
      }
      else
      {
        extraHeader = extraHeader.replaceAll("\\$\\{approveEntityName\\}", "");
        extraHeader = extraHeader.replaceAll("\\$\\{approveEntityId\\}", "");
        extraHeader = extraHeader.replaceAll("\\$\\{publishingEventId\\}", "");
      }

      StringBuffer skinCSS = new StringBuffer();

      String theme = CmsPropertyHandler.getTheme(principal.getName());
      if(!theme.equalsIgnoreCase("Default"))
      {
        skinCSS.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + this.getRequest().getContextPath() + "/css/skins/" + theme + "/componentEditor.css\" />");
        String themeFileJQueryUI = CmsPropertyHandler.getThemeFile(theme, "jquery-ui.css");
        if(themeFileJQueryUI != null)
          skinCSS.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + this.getRequest().getContextPath() + "/css/skins/" + theme + "/jquery-ui.css\" />");
        else
          skinCSS.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"script/jqueryplugins-latest/ui/css/jquery-ui.css\" />");
      }
      else
      {
        skinCSS.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"script/jqueryplugins-latest/ui/css/jquery-ui.css\" />");
      }
      extraHeader = extraHeader.replaceAll("\\$\\{skinDeliveryCSS\\}", skinCSS.toString());
     
      String sortBaseUrl = componentEditorUrl + "ViewSiteNodePageComponents!moveComponent.action?siteNodeId=" + templateController.getSiteNodeId() + "&languageId=" + templateController.getLanguageId() + "&contentId=" + templateController.getContentId() + "&showSimple=" + this.getTemplateController().getDeliveryContext().getShowSimple() + "";
      extraHeader = extraHeader.replaceAll("\\$\\{sortBaseUrl\\}", sortBaseUrl);
     
      this.getTemplateController().getDeliveryContext().setUseFullUrl(oldUseFullUrl);

        String changeUrl = componentEditorUrl + "ViewSiteNodePageComponents!listComponentsForChange.action?siteNodeId=" + templateController.getSiteNodeId() + "&amp;languageId=" + templateController.getLanguageId() + "&amp;contentId=" + templateController.getContentId() + "&amp;componentId=" + component.getId() + "&amp;slotId=base&amp;showSimple=" + this.getTemplateController().getDeliveryContext().getShowSimple();
        extraBody = extraBody + "<script type=\"text/javascript\">$(function() { initializeComponentEventHandler('base0_" + component.getId() + "Comp', '" + component.getId() + "', '', '" + componentEditorUrl + "ViewSiteNodePageComponents!deleteComponent.action?siteNodeId=" + templateController.getSiteNodeId() + "&amp;languageId=" + templateController.getLanguageId() + "&amp;contentId=" + templateController.getContentId() + "&amp;componentId=" + component.getId() + "&amp;slotId=base&amp;showSimple=" + this.getTemplateController().getDeliveryContext().getShowSimple() + "','" + changeUrl + "'); }); </script>";
       
      String submitToPublishHTML         = getLocalizedString(locale, "deliver.editOnSight.submitToPublish");
        String addComponentHTML         = getLocalizedString(locale, "deliver.editOnSight.addComponentHTML");
      String deleteComponentHTML         = getLocalizedString(locale, "deliver.editOnSight.deleteComponentHTML");
      String changeComponentHTML         = getLocalizedString(locale, "deliver.editOnSight.changeComponentHTML");
      String accessRightsHTML         = getLocalizedString(locale, "deliver.editOnSight.accessRightsHTML");
      String pageComponentsHTML         = getLocalizedString(locale, "deliver.editOnSight.pageComponentsHTML");
      String viewSourceHTML           = getLocalizedString(locale, "deliver.editOnSight.viewSourceHTML");
      String componentEditorInNewWindowHTML   = getLocalizedString(locale, "deliver.editOnSight.componentEditorInNewWindowHTML");
      String savePageTemplateHTML       = getLocalizedString(locale, "deliver.editOnSight.savePageTemplateHTML");
      String savePagePartTemplateHTML     = getLocalizedString(locale, "deliver.editOnSight.savePagePartTemplateHTML");
      String editHTML             = getLocalizedString(locale, "deliver.editOnSight.editHTML");
      String editInlineHTML           = getLocalizedString(locale, "deliver.editOnSight.editContentInlineLabel");
      String propertiesHTML           = getLocalizedString(locale, "deliver.editOnSight.propertiesHTML");
      String favouriteComponentsHeader    = getLocalizedString(locale, "tool.common.favouriteComponentsHeader");
      String noActionAvailableHTML       = getLocalizedString(locale, "deliver.editOnSight.noActionAvailableHTML");
       
      String notifyLabel             = getLocalizedString(locale, "deliver.editOnSight.notifyLabel");
        String subscribeToContentLabel       = getLocalizedString(locale, "deliver.editOnSight.subscribeToContentLabel");
        String subscribeToPageLabel       = getLocalizedString(locale, "deliver.editOnSight.subscribeToPageLabel");
        String translateContentLabel       = getLocalizedString(locale, "deliver.editOnSight.translateContentLabel");
       
        String confirmDeleteLabel        = getLocalizedString(locale, "deliver.editOnSight.confirmDeleteLabel");
        String leaveWarningOnDirtyPageText    = getLocalizedString(locale, "deliver.editOnSight.leaveWarningOnDirtyPage.text");
     
      String saveTemplateUrl = "saveComponentStructure('" + componentEditorUrl + "CreatePageTemplate!input.action?contentId=" + templateController.getSiteNode(deliveryContext.getSiteNodeId()).getMetaInfoContentId() + "');";
      String savePartTemplateUrl = "savePartComponentStructure('" + componentEditorUrl + "CreatePageTemplate!input.action?contentId=" + templateController.getSiteNode(deliveryContext.getSiteNodeId()).getMetaInfoContentId() + "');";
      if(!hasSaveTemplateAccess)
      {
        saveTemplateUrl = "alert('Not authorized to save template');";
        savePartTemplateUrl = "alert('Not authorized to save part template');";
      }
     
      String personalStartUrl = "/";
      String repositoryId = CmsPropertyHandler.getPreferredRepositoryId(principal.getName());
      logger.info("repositoryId: " + repositoryId);
      if(repositoryId == null)
      {
        List<RepositoryVO> repos = RepositoryController.getController().getAuthorizedRepositoryVOList(principal, false);
        if(repos.size() > 0)
          repositoryId = "" + repos.get(0).getId();
      }
      if(repositoryId != null)
      {
        SiteNodeVO siteNodeVO = SiteNodeController.getController().getRootSiteNodeVO(new Integer(repositoryId), templateController.getDatabase());
        personalStartUrl = "ViewPage!renderDecoratedPage.action?siteNodeId=" + siteNodeVO.getId();
      }
     
      String returnAddress = "" + componentEditorUrl + "ViewInlineOperationMessages.action";

        String notifyUrl       = componentEditorUrl + "CreateEmail!inputChooseRecipientsV3.action?enableUsers=true&originalUrl=" + URLEncoder.encode(templateController.getOriginalFullURL().replaceFirst("cmsUserName=.*?", ""), "utf-8") + "&amp;returnAddress=" + URLEncoder.encode(returnAddress, "utf-8") + "&amp;extraTextProperty=tool.managementtool.createEmailNotificationPageExtraText.text";
        String pageSubscriptionUrl   = componentEditorUrl + "Subscriptions!input.action?interceptionPointCategory=SiteNodeVersion&amp;entityName=" + SiteNode.class.getName() + "&amp;entityId=" + templateController.getSiteNodeId() + "&amp;returnAddress=" + URLEncoder.encode(returnAddress, "utf-8");

      extraBody = extraBody.replaceAll("\\$siteNodeId", "" + templateController.getSiteNodeId());
      extraBody = extraBody.replaceAll("\\$languageId", "" + templateController.getLanguageId());
      extraBody = extraBody.replaceAll("\\$repositoryId", "" + templateController.getSiteNode().getRepositoryId());
      extraBody = extraBody.replaceAll("\\$originalFullURL", URLEncoder.encode(templateController.getOriginalFullURL(), "UTF-8"));
      extraBody = extraBody.replaceAll("\\$notifyUrl", notifyUrl);
      extraBody = extraBody.replaceAll("\\$pageSubscriptionUrl", pageSubscriptionUrl);
     
      extraBody = extraBody.replaceAll("\\$editHTML", editHTML);
      extraBody = extraBody.replaceAll("\\$submitToPublishHTML", submitToPublishHTML);
     
      extraBody = extraBody.replaceAll("\\$confirmDeleteLabel", confirmDeleteLabel);
      extraBody = extraBody.replaceAll("\\$\\{leaveWarningOnDirtyPageText\\}", leaveWarningOnDirtyPageText);

      extraBody = extraBody.replaceAll("\\$notifyHTML", notifyLabel);
      extraBody = extraBody.replaceAll("\\$subscribeToContentHTML", subscribeToContentLabel);
      extraBody = extraBody.replaceAll("\\$subscribeToPageHTML", subscribeToPageLabel);
     
      extraBody = extraBody.replaceAll("\\$addComponentHTML", addComponentHTML);
      extraBody = extraBody.replaceAll("\\$deleteComponentHTML", deleteComponentHTML);
      extraBody = extraBody.replaceAll("\\$changeComponentHTML", changeComponentHTML);
        extraBody = extraBody.replaceAll("\\$accessRightsHTML", accessRightsHTML);
       
        extraBody = extraBody.replaceAll("\\$pageComponents", pageComponentsHTML);
        extraBody = extraBody.replaceAll("\\$componentEditorInNewWindowHTML", componentEditorInNewWindowHTML);
        extraBody = extraBody.replaceAll("\\$savePageTemplateHTML", savePageTemplateHTML);
        extraBody = extraBody.replaceAll("\\$savePagePartTemplateHTML", savePagePartTemplateHTML);
        extraBody = extraBody.replaceAll("\\$saveTemplateUrl", saveTemplateUrl);
        extraBody = extraBody.replaceAll("\\$savePartTemplateUrl", savePartTemplateUrl);
        extraBody = extraBody.replaceAll("\\$viewSource", viewSourceHTML);
      extraBody = extraBody.replaceAll("\\$propertiesHTML", propertiesHTML);
      extraBody = extraBody.replaceAll("\\$favouriteComponentsHeader", favouriteComponentsHeader);
      extraBody = extraBody.replaceAll("\\$noActionAvailableHTML", noActionAvailableHTML);

      extraBody = extraBody.replaceAll("\\$\\{deliver.editOnSight.pendingPageApproval.title\\}", getLocalizedString(locale, "deliver.editOnSight.pendingPageApproval.title"));
      extraBody = extraBody.replaceAll("\\$\\{deliver.editOnSight.pendingContentApproval.title\\}", getLocalizedString(locale, "deliver.editOnSight.pendingContentApproval.title"));
      extraBody = extraBody.replaceAll("\\$\\{deliver.editOnSight.toolbarInlineEditing.title\\}", getLocalizedString(locale, "deliver.editOnSight.toolbarInlineEditing.title"));
      extraBody = extraBody.replaceAll("\\$\\{deliver.editOnSight.toolbarState.title\\}", getLocalizedString(locale, "deliver.editOnSight.toolbarState.title"));
      extraBody = extraBody.replaceAll("\\$\\{tool.contenttool.approve.label\\}", getLocalizedString(locale, "tool.contenttool.approve.label"));
      extraBody = extraBody.replaceAll("\\$\\{tool.contenttool.deny.label\\}", getLocalizedString(locale, "tool.contenttool.deny.label"));

      extraBody = extraBody.replaceAll("\\$\\{tool.common.saveButton.label\\}", getLocalizedString(locale, "tool.common.saveButton.label"));
      extraBody = extraBody.replaceAll("\\$\\{tool.common.cancelButton.label\\}", getLocalizedString(locale, "tool.common.cancelButton.label"));
      extraBody = extraBody.replaceAll("\\$\\{tool.common.publishing.publishButtonLabel\\}", getLocalizedString(locale, "tool.common.publishing.publishButtonLabel"));
      extraBody = extraBody.replaceAll("\\$\\{tool.structuretool.toolbarV3.previewPageLabel\\}", getLocalizedString(locale, "tool.structuretool.toolbarV3.previewPageLabel"));

      extraBody = extraBody.replaceAll("\\$\\{tool.structuretool.toolbarV3.disableEditmodeNotAllowed\\}", getLocalizedString(locale, "tool.structuretool.toolbarV3.disableEditmodeNotAllowed"));

      extraBody = extraBody.replaceAll("\\$\\{homeURL\\}", personalStartUrl);

      extraBody = extraBody.replaceAll("\\$\\{currentLanguageCode\\}", ""+templateController.getLanguageCode(templateController.getLanguageId()).getLanguage().toUpperCase());
      extraBody = extraBody.replaceAll("\\$\\{currentLanguageName\\}", templateController.getLanguageCode(templateController.getLanguageId()).getDisplayName().toUpperCase());

      StringBuffer languagesSB = new StringBuffer();
      List<LanguageVO> languages = templateController.getAvailableLanguages();
      for(LanguageVO language : languages)
      {
        if(language.getId() != templateController.getLanguageId())
          languagesSB.append("<li style=\"margin-bottom: 6px;\"><a style=\"color: black;\" href=\"" + templateController.getCurrentPageUrl().replaceAll("languageId=" + templateController.getLanguageId(), "languageId=" + language.getId()) + "\">" + language.getLanguageCode().toUpperCase() + "</a></li>");
      }
      extraBody = extraBody.replaceAll("\\$\\{languageList\\}", languagesSB.toString());

        extraBody = extraBody.replaceAll("\\$addComponentJavascript", "window.hasAccessToAddComponent" + component.getId() + "_" + component.getSlotName().replaceAll("[^0-9,a-z,A-Z]", "_") + " = " + hasAccessToAddComponent + ";");
        extraBody = extraBody.replaceAll("\\$deleteComponentJavascript", "window.hasAccessToDeleteComponent" + component.getId() + "_" + component.getSlotName().replaceAll("[^0-9,a-z,A-Z]", "_") + " = " + hasAccessToDeleteComponent + ";");
        extraBody = extraBody.replaceAll("\\$changeComponentJavascript", "window.hasAccessToChangeComponent" + component.getId() + "_" + component.getSlotName().replaceAll("[^0-9,a-z,A-Z]", "_") + " = " + hasAccessToChangeComponent + ";");
        extraBody = extraBody.replaceAll("\\$changeAccessJavascript", "window.hasAccessToAccessRights" + " = " + hasAccessToAccessRights + ";");
       
        extraBody = extraBody.replaceAll("\\$submitToPublishJavascript", "window.hasAccessToSubmitToPublish = " + hasSubmitToPublishAccess + ";");
        extraBody = extraBody.replaceAll("\\$pageStructureJavascript", "window.hasPageStructureAccess = " + hasPageStructureAccess + ";");
        extraBody = extraBody.replaceAll("\\$openInNewWindowJavascript", "window.hasOpenInNewWindowAccess = " + hasOpenInNewWindowAccess + ";");
        extraBody = extraBody.replaceAll("\\$allowViewSourceJavascript", "window.hasAccessToViewSource = " + hasViewSourceAccess + ";");
        extraBody = extraBody.replaceAll("\\$allowSavePageTemplateJavascript", "window.hasAccessToSavePageTemplate = " + hasSaveTemplateAccess + ";");

        extraBody = extraBody.replaceAll("\\$submitToNotifyJavascript", "window.hasAccessToNotifyUserOfPage = " + showNotifyUserOfPage + ";");
        extraBody = extraBody.replaceAll("\\$contentNotificationsJavascript", "window.hasAccessToContentNotifications = " + showContentNotifications + ";");
        extraBody = extraBody.replaceAll("\\$pageNotificationsJavascript", "window.hasAccessToPageNotifications = " + showPageNotifications + ";");

        extraBody = extraBody.replaceAll("\\$W3CValidatorJavascript", "window.hasAccessToW3CValidator = " + showW3CValidator + ";");
        extraBody = extraBody.replaceAll("\\$ShowLanguageMenuJavascript", "window.hasAccessToShowLanguageMenu = " + showLanguageMenu + ";");
        extraBody = extraBody.replaceAll("\\$ShowApproveButtonsJavascript", "window.useApprovalFlow = " + useApprovalFlow + ";");
        extraBody = extraBody.replaceAll("\\$autoShowApprovalButtonsJavascript", "window.autoShowApprovalButtons = " + autoShowApprovalButtons + ";");
        extraBody = extraBody.replaceAll("\\$useDoubleClickOnTextToInlineEdit", "" + CmsPropertyHandler.getUseDoubleClickOnTextToInlineEdit());
       
        extraBody = extraBody.replaceAll("\\$showHomeButtonJavascript", "window.showHomeButton = " + showHomeButton + ";");
        extraBody = extraBody.replaceAll("\\$showMySettingsButtonJavascript", "window.showMySettingsButton = " + showMySettingsButton + ";");
       
        extraBody = extraBody.replaceAll("\\$\\{deliver.editOnSight.toolbarHomeButton.title\\}", getLocalizedString(new Locale(CmsPropertyHandler.getPreferredLanguageCode(principal.getName())), "deliver.editOnSight.toolbarHomeButton.title"));
        extraBody = extraBody.replaceAll("\\$\\{deliver.editOnSight.toolbarValidateW3CButton.title\\}", getLocalizedString(new Locale(CmsPropertyHandler.getPreferredLanguageCode(principal.getName())), "deliver.editOnSight.toolbarValidateW3CButton.title"));
        extraBody = extraBody.replaceAll("\\$\\{deliver.editOnSight.toolbarNewWindowButton.title\\}", getLocalizedString(new Locale(CmsPropertyHandler.getPreferredLanguageCode(principal.getName())), "deliver.editOnSight.toolbarNewWindowButton.title"));
        extraBody = extraBody.replaceAll("\\$\\{deliver.editOnSight.toolbarMySettingsButton.title\\}", getLocalizedString(new Locale(CmsPropertyHandler.getPreferredLanguageCode(principal.getName())), "deliver.editOnSight.toolbarMySettingsButton.title"));
        extraBody = extraBody.replaceAll("\\$\\{deliver.editOnSight.toolbarValidateW3CErrorsQuestion.label\\}", getLocalizedString(new Locale(CmsPropertyHandler.getPreferredLanguageCode(principal.getName())), "deliver.editOnSight.toolbarValidateW3CErrorsQuestion.label"));
        extraBody = extraBody.replaceAll("\\$\\{deliver.editOnSight.toolbarValidateW3CNoErrors.label\\}", getLocalizedString(new Locale(CmsPropertyHandler.getPreferredLanguageCode(principal.getName())), "deliver.editOnSight.toolbarValidateW3CNoErrors.label"));

      StringBuffer userDefinedButtonsSB = new StringBuffer();
      List<ToolbarButton> buttons = AdminToolbarService.getService().getFooterToolbarButtons("tool.deliver.editOnSight.toolbarRight", principal, locale, templateController.getHttpServletRequest(), true);
     
      for(ToolbarButton button : buttons)
      {
        try
        {
          if(button.getCustomMarkup() == null)
          {
            userDefinedButtonsSB.append("<div id=\"" + button.getId() + "\" class=\"right editOnSightToolbarButton " + button.getCssClass() + "\" title=\"" + button.getTitle() + "\" onclick=\"" + button.getActionURL() + "\"></div>")
          }
          else
          {
            if(button.getCustomMarkupPlacement().equals("before"))
              userDefinedButtonsSB.append("" + button.getCustomMarkup());
           
            userDefinedButtonsSB.append("<div id=\"" + button.getId() + "\" class=\"right editOnSightToolbarButton " + button.getCssClass() + "\" title=\"" + button.getTitle() + "\" onclick=\"" + button.getActionURL() + "\">" + (button.getCustomMarkupPlacement().equals("inside") ? button.getCustomMarkup() : "") + "</div>");           
           
            if(button.getCustomMarkupPlacement().equals("after"))
              userDefinedButtonsSB.append("" + button.getCustomMarkup());
          }
        }
        catch (Exception e)
        {
          logger.warn("Problem adding custome EOS button: " + e.getMessage(), e);
        }
      }
      extraBody = extraBody.replaceAll("\\$\\{userDefinedButtons\\}", userDefinedButtonsSB.toString());

        //List tasks = getTasks();
      //component.setTasks(tasks);
     
      //String tasks = templateController.getContentAttribute(component.getContentId(), "ComponentTasks", true);
     
      /*
      Map context = new HashMap();
      context.put("templateLogic", templateController);
      StringWriter cacheString = new StringWriter();
      PrintWriter cachedStream = new PrintWriter(cacheString);
      new VelocityTemplateProcessor().renderTemplate(context, cachedStream, extraBody);
      extraBody = cacheString.toString();
      */
     
      //extraHeader.replaceAll()
     
      timer.printElapsedTime("Read files");
     
      StringBuffer modifiedTemplate = new StringBuffer(template);
     
      //Adding stuff in the header
      int indexOfHeadEndTag = modifiedTemplate.indexOf("</head");
      if(indexOfHeadEndTag == -1)
        indexOfHeadEndTag = modifiedTemplate.indexOf("</HEAD");
     
      if(indexOfHeadEndTag > -1)
      {
        modifiedTemplate = modifiedTemplate.replace(indexOfHeadEndTag, modifiedTemplate.indexOf(">", indexOfHeadEndTag) + 1, extraHeader);
      }
      else
      {
        int indexOfHTMLStartTag = modifiedTemplate.indexOf("<html");
        if(indexOfHTMLStartTag == -1)
          indexOfHTMLStartTag = modifiedTemplate.indexOf("<HTML");
   
        if(indexOfHTMLStartTag > -1)
        {
          modifiedTemplate = modifiedTemplate.insert(modifiedTemplate.indexOf(">", indexOfHTMLStartTag) + 1, "<head>" + extraHeader);
        }
        else
        {
          logger.info("The current template is not a valid document. It does not comply with the simplest standards such as having a correct header.");
        }
      }

      timer.printElapsedTime("Header handled");

      //Adding stuff in the body 
      int indexOfBodyStartTag = modifiedTemplate.indexOf("<body");
      if(indexOfBodyStartTag == -1)
        indexOfBodyStartTag = modifiedTemplate.indexOf("<BODY");
     
      if(indexOfBodyStartTag > -1)
      {
          //String pageComponentStructureDiv = "";
        String pageComponentStructureDiv = getPageComponentStructureDiv(templateController, deliveryContext.getSiteNodeId(), deliveryContext.getLanguageId(), component);
        timer.printElapsedTime("pageComponentStructureDiv");
        String componentPaletteDiv = getComponentPaletteDiv(deliveryContext.getSiteNodeId(), deliveryContext.getLanguageId(), templateController);
        //String componentPaletteDiv = "";
        timer.printElapsedTime("componentPaletteDiv");
        modifiedTemplate = modifiedTemplate.insert(modifiedTemplate.indexOf(">", indexOfBodyStartTag) + 1, extraBody + pageComponentStructureDiv + componentPaletteDiv);
      }
      else
      {
        logger.info("The current template is not a valid document. It does not comply with the simplest standards such as having a correct body.");
      }
     
      timer.printElapsedTime("Body handled");

      decoratedTemplate = modifiedTemplate.toString();
    }
    catch(Exception e)
    {
View Full Code Here

    //logger.info("decorateComponent:" + component.getName());
   
    String componentEditorUrl = CmsPropertyHandler.getComponentEditorUrl();

    Timer timer = new Timer();
    timer.setActive(false);

    try
    {
      String componentString = getComponentString(templateController, component.getContentId(), component);
      //System.out.println("componentString:" + componentString);
View Full Code Here

 
      if(templateController.getRequestParameter("skipPropertiesDiv") != null && templateController.getRequestParameter("skipPropertiesDiv").equalsIgnoreCase("true"))
          return "";

      StringBuffer sb = new StringBuffer();
    Timer timer = new Timer();
    timer.setActive(false);

    InfoGluePrincipal principal = templateController.getPrincipal();
    String cmsUserName = (String)templateController.getHttpServletRequest().getSession().getAttribute("cmsUserName");
      if(cmsUserName != null && !CmsPropertyHandler.getAnonymousUser().equalsIgnoreCase(cmsUserName))
      {
        InfoGluePrincipal newPrincipal = templateController.getPrincipal(cmsUserName);
        if(newPrincipal != null)
          principal = newPrincipal;
      }
   
    //Locale locale = templateController.getLocale();
      Locale locale = templateController.getLocaleAvailableInTool(principal);

    timer.printElapsedTime("After locale");
     
    String componentEditorUrl = CmsPropertyHandler.getComponentEditorUrl();

    String componentName = component.getName();
    if(componentName.length() > 20)
      componentName = componentName.substring(0, 20) + "...";
   
    String slotName = component.getSlotName();
    if(slotName.length() > 10)
      slotName = slotName.substring(0, 10) + "...";
   
    List languages = LanguageDeliveryController.getLanguageDeliveryController().getLanguagesForSiteNode(getDatabase(), siteNodeId, templateController.getPrincipal());
   
    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++;
              accessablePropertyIndex++;
          }
        }
      }
    }
   
    timer.printElapsedTime("getComponentPropertiesDiv: 5");
   
    if(numberOfHiddenProperties > 0)
    {
      sb.append("    <tr class=\"igtr\">");
      sb.append("      <td colspan=\"4\" class=\"igtd igpropertyDivider\" style=\"padding: 6px 0px 6px 2px; color: darkred;\">" + getLocalizedString(locale, "deliver.editOnSight.protectedPropertiesExists") + "</td>");
View Full Code Here

      sb.append("</script>");
      return sb.toString();
    }
     
      StringBuffer sb = new StringBuffer();
    Timer timer = new Timer();
    timer.setActive(false);

    String componentEditorUrl = "" + CmsPropertyHandler.getComponentEditorUrl();
    String originalFullURL = "" + templateController.getOriginalFullURL();
    String componentRendererUrl = "" + CmsPropertyHandler.getComponentRendererUrl();
View Full Code Here

  {
    //TODO - h�r kan vi s�kert cache:a.
   
    //logger.info("componentPropertiesXML:" + componentPropertiesXML);
    List componentProperties = new ArrayList();
    Timer timer = new Timer();
    timer.setActive(false);

    try
    {
      if(document != null)
      {
        timer.printElapsedTime("Read document");

        String propertyXPath = "//property";
        //logger.info("propertyXPath:" + propertyXPath);
        List anl = document.selectNodes(propertyXPath);
        timer.printElapsedTime("Set property xpath");
        //logger.info("*********************************************************anl:" + anl.getLength());
        Iterator anlIterator = anl.iterator();
        while(anlIterator.hasNext())
        {
          Element binding = (Element)anlIterator.next();
         
          String name               = binding.attributeValue("name");
          String displayName           = binding.attributeValue("displayName");
          String description           = binding.attributeValue("description");
          String defaultValue           = binding.attributeValue("defaultValue");
          String allowLanguageVariations     = binding.attributeValue("allowLanguageVariations");
          String dataProvider           = binding.attributeValue("dataProvider");
          String dataProviderParameters     = binding.attributeValue("dataProviderParameters");
          String type               = binding.attributeValue("type");
          String allowedContentTypeNamesString = binding.attributeValue("allowedContentTypeDefinitionNames");
          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)) 
          {   
View Full Code Here

  {
    //TODO - h�r kan vi s�kert cache:a.
   
    //logger.info("componentPropertiesXML:" + componentPropertiesXML);
    List componentProperties = new ArrayList();
    Timer timer = new Timer();
    timer.setActive(false);

    try
    {
      if(document != null)
      {
      //if(componentPropertiesXML != null && componentPropertiesXML.length() > 0)
      //{
        //org.w3c.dom.Document document = XMLHelper.readDocumentFromByteArray(componentPropertiesXML.getBytes("UTF-8"));

        timer.printElapsedTime("Read document");

        String propertyXPath = "//property";
        //logger.info("propertyXPath:" + propertyXPath);
        List anl = document.selectNodes(propertyXPath);
        timer.printElapsedTime("Set property xpath");
        //logger.info("*********************************************************anl:" + anl.getLength());
        Iterator anlIterator = anl.iterator();
        while(anlIterator.hasNext())
        {
          Element binding = (Element)anlIterator.next();
         
          String name               = binding.attributeValue("name");
          String displayName           = binding.attributeValue("displayName");
          String description           = binding.attributeValue("description");
          String defaultValue           = binding.attributeValue("defaultValue");
          String allowLanguageVariations     = binding.attributeValue("allowLanguageVariations");
          String dataProvider           = binding.attributeValue("dataProvider");
          String dataProviderParameters     = binding.attributeValue("dataProviderParameters");
          String type               = binding.attributeValue("type");
          String allowedContentTypeNamesString = binding.attributeValue("allowedContentTypeDefinitionNames");
          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)) 
          {   
View Full Code Here

   */
  
  private List getComponentTasks(Integer componentId, Document document) throws Exception
  {
    List componentTasks = new ArrayList();
    Timer timer = new Timer();
    timer.setActive(false);

    try
    {
      if(document != null)
      {
        timer.printElapsedTime("Read document");

        String propertyXPath = "//task";
        //logger.info("propertyXPath:" + propertyXPath);
        List anl = document.selectNodes(propertyXPath);
        timer.printElapsedTime("Set property xpath");
        Iterator anlIterator = anl.iterator();
        while(anlIterator.hasNext())
        {
          Element binding = (Element)anlIterator.next();
         
View Full Code Here

 
  private String getComponentPropertyValue(Integer componentId, String name, boolean allowLanguageVariations) throws Exception
  {
    String value = "Undefined";
   
    Timer timer = new Timer();
    timer.setActive(false);
       
    Integer siteNodeId = null;
    Integer languageId = null;
   
    if(this.getRequest() != null && this.getRequest().getParameter("siteNodeId") != null && this.getRequest().getParameter("siteNodeId").length() > 0)
View Full Code Here

 
  private List<ComponentBinding> getComponentPropertyBindings(Integer componentId, String name, TemplateController templateController) throws Exception
  {
    List<ComponentBinding> componentBindings = new ArrayList<ComponentBinding>();
   
    Timer timer = new Timer();
    timer.setActive(false);
       
    Integer siteNodeId = null;
    Integer languageId = null;
   
    if(this.getRequest() != null && this.getRequest().getParameter("siteNodeId") != null && this.getRequest().getParameter("siteNodeId").length() > 0)
View Full Code Here

TOP

Related Classes of org.infoglue.deliver.util.Timer

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.