Esempio n. 1
0
  /**
   * @see org.opencms.widgets.I_CmsWidget#setEditorValue(org.opencms.file.CmsObject, java.util.Map,
   *     org.opencms.widgets.I_CmsWidgetDialog, org.opencms.widgets.I_CmsWidgetParameter)
   */
  public void setEditorValue(
      CmsObject cms,
      Map formParameters,
      I_CmsWidgetDialog widgetDialog,
      I_CmsWidgetParameter param) {

    String[] values = (String[]) formParameters.get(param.getId());
    if ((values != null) && (values.length > 0)) {
      String val = CmsEncoder.decode(values[0], CmsEncoder.ENCODING_UTF_8);
      param.setStringValue(cms, val);
    }
  }
  /**
   * Internal action method.
   *
   * <p>
   *
   * @param setting the setting to look up
   * @param defaultValue the default value
   * @param escape if the result String should be HTML escaped or not
   * @param req the current request
   * @return the value of the element setting or <code>null</code> if not found
   */
  public static String elementSettingTagAction(
      String setting, String defaultValue, boolean escape, ServletRequest req) {

    String value = elementSettingTagAction(req).get(setting);
    if (value == null) {
      value = defaultValue;
    }
    if (escape) {
      // HTML escape the value
      value = CmsEncoder.escapeHtml(value);
    }
    return value;
  }
  /**
   * @see org.opencms.widgets.I_CmsWidget#getDialogWidget(org.opencms.file.CmsObject,
   *     org.opencms.widgets.I_CmsWidgetDialog, org.opencms.widgets.I_CmsWidgetParameter)
   */
  public String getDialogWidget(
      CmsObject cms, I_CmsWidgetDialog widgetDialog, I_CmsWidgetParameter param) {

    String id = param.getId();
    long idHash = id.hashCode();
    if (idHash < 0) {
      // negative hash codes will not work as JS variable names, so convert them
      idHash = -idHash;
      // add 2^32 to the value to ensure that it is unique
      idHash += 4294967296L;
    }
    StringBuffer result = new StringBuffer(128);
    result.append("<td class=\"xmlTd\">");
    result.append(
        "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td class=\"xmlTd\">");
    result.append("<input class=\"xmlInput textInput");
    if (param.hasError()) {
      result.append(" xmlInputError");
    }
    result.append("\" value=\"");
    String value = param.getStringValue(cms);
    result.append(value);
    result.append("\" name=\"");
    result.append(id);
    result.append("\" id=\"");
    result.append(id);
    result.append("\" onkeyup=\"checkPreview('");
    result.append(id);
    result.append("');\"></td>");
    result.append(widgetDialog.dialogHorizontalSpacer(10));
    result.append(
        "<td><table class=\"editorbuttonbackground\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>");

    result.append(
        widgetDialog.button(
            "javascript:open"
                + getNameUpper()
                + "Gallery('"
                + A_CmsAjaxGallery.MODE_WIDGET
                + "',  '"
                + id
                + "',  '"
                + idHash
                + "');return false;",
            null,
            getNameLower() + "gallery",
            Messages.getButtonName(getNameLower()),
            widgetDialog.getButtonStyle()));
    // create preview button
    String previewClass = "hide";
    if (showPreview(value)) {
      // show button if preview is enabled
      previewClass = "show";
    }
    result.append("<td class=\"");
    result.append(previewClass);
    result.append("\" id=\"preview");
    result.append(id);
    result.append("\">");
    result.append("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>");
    result.append(
        widgetDialog.button(
            "javascript:preview" + getNameUpper() + "('" + id + "');return false;",
            null,
            "preview.png",
            Messages.GUI_BUTTON_PREVIEW_0,
            widgetDialog.getButtonStyle()));
    result.append("</tr></table>");

    result.append("</td></tr></table>");

    result.append("</td>");
    result.append("</tr></table>");

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

    if (getNameLower().equals("image")) {
      // reads the configuration String for this widget
      CmsVfsImageWidgetConfiguration configuration =
          new CmsVfsImageWidgetConfiguration(cms, widgetDialog, param, getConfiguration());

      if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(configuration.getStartup())) {
        result.append("\n<script type=\"text/javascript\">");
        result
            .append("\nvar startupFolder")
            .append(idHash)
            .append(" = \"")
            .append(configuration.getStartup())
            .append("\";");
        result
            .append("\nvar startupType")
            .append(idHash)
            .append(" = \"")
            .append(configuration.getType())
            .append("\";");
        result.append("\n</script>");
      } else {
        result.append("\n<script type=\"text/javascript\">");
        result.append("\nvar startupFolder").append(idHash).append(" = null;");
        result.append("\nvar startupType").append(idHash).append(" = null;");
        result.append("\n</script>");
      }

      // This part is not used in javascript for now
      if (configuration.isShowFormat()) {
        // create hidden field to store the matching image format value
        result.append("\n<script type=\"text/javascript\">");
        JSONArray formatsJson = new JSONArray(configuration.getFormatValues());
        result.append("\nvar imgFmts").append(idHash).append(" = ").append(formatsJson).append(";");
        result
            .append("\nvar imgFmtNames")
            .append(idHash)
            .append(" = \"")
            .append(
                CmsEncoder.escape(configuration.getSelectFormatString(), CmsEncoder.ENCODING_UTF_8))
            .append("\";");
        result.append("\nvar useFmts").append(idHash).append(" = true;");
        result.append("\n</script>");
      } else {
        result.append("\n<script type=\"text/javascript\">");
        result.append("\nvar useFmts").append(idHash).append(" = false;");
        result.append("\nvar imgFmts").append(idHash).append(" = null;");
        result.append("\nvar imgFmtNames").append(idHash).append(" = null;");
        result.append("\n</script>");
      }
    } else { // for download, link, html or table galleries
      // reads the configuration String for this widget
      CmsGalleryWidgetConfiguration configuration =
          new CmsGalleryWidgetConfiguration(cms, widgetDialog, param, getConfiguration());

      if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(configuration.getStartup())) {
        result.append("\n<script type=\"text/javascript\">");
        result
            .append("\nvar startupFolder")
            .append(idHash)
            .append(" = \"")
            .append(configuration.getStartup())
            .append("\";");
        result
            .append("\nvar startupType")
            .append(idHash)
            .append(" = \"")
            .append(configuration.getType())
            .append("\";");
        result.append("\n</script>");
      } else {
        result.append("\n<script type=\"text/javascript\">");
        result.append("\nvar startupFolder").append(idHash).append(" = null;");
        result.append("\nvar startupType").append(idHash).append(" = null;");
        result.append("\n</script>");
      }
    }

    return result.toString();
  }
  /**
   * Returns the HTML for the dialog input form to comment the images.
   *
   * <p>
   *
   * @return the HTML for the dialog input form to comment the images
   */
  public String buildDialogForm() {

    StringBuffer result = new StringBuffer(16384);
    Iterator i = getImages().iterator();

    result.append("<div style=\"height: 450px; padding: 4px; overflow: auto;\">");

    while (i.hasNext()) {
      CmsResource res = (CmsResource) i.next();
      String imageName = res.getName();
      String propertySuffix = "" + imageName.hashCode();
      result.append(dialogBlockStart(imageName));
      result.append("<table border=\"0\">\n");
      result.append("<tr>\n\t<td style=\"vertical-align: top;\">");
      // create image tag
      result.append("<img src=\"");
      StringBuffer link = new StringBuffer(256);
      link.append(getCms().getSitePath(res));
      link.append(getImageScaler().toRequestParam());
      result.append(getJsp().link(link.toString()));
      result.append("\" border=\"0\" alt=\"\" width=\"");
      result.append(getImageScaler().getWidth());
      result.append("\" height=\"");
      result.append(getImageScaler().getHeight());
      result.append("\">");

      result.append("</td>\n");
      result.append("\t<td class=\"maxwidth\" style=\"vertical-align: top;\">\n");

      result.append("\t\t<table border=\"0\">\n");

      // build title property input row
      String title = "";
      try {
        title =
            getCms()
                .readPropertyObject(res, CmsPropertyDefinition.PROPERTY_TITLE, false)
                .getValue();
      } catch (CmsException e) {
        // log, should never happen
        if (LOG.isErrorEnabled()) {
          LOG.error(e.getLocalizedMessage(getLocale()));
        }
      }
      result.append("\t\t<tr>\n\t\t\t<td style=\"white-space: nowrap;\" unselectable=\"on\">");
      result.append(key(Messages.GUI_LABEL_TITLE_0));
      result.append(":</td>\n\t\t\t<td class=\"maxwidth\">");
      result.append("<input type=\"text\" class=\"maxwidth\" name=\"");
      result.append(PREFIX_TITLE);
      result.append(propertySuffix);
      result.append("\" value=\"");
      if (CmsStringUtil.isNotEmpty(title)) {
        result.append(CmsEncoder.escapeXml(title));
      }
      result.append("\">");
      result.append("</td>\n\t\t</tr>\n");

      // build description property input row
      String description = "";
      try {
        description =
            getCms()
                .readPropertyObject(res, CmsPropertyDefinition.PROPERTY_DESCRIPTION, false)
                .getValue();
      } catch (CmsException e) {
        // log, should never happen
        if (LOG.isErrorEnabled()) {
          LOG.error(e.getLocalizedMessage(getLocale()));
        }
      }
      result.append(
          "\t\t<tr>\n\t\t\t<td style=\"white-space: nowrap; vertical-align: top;\" unselectable=\"on\">");
      result.append(key(Messages.GUI_LABEL_DESCRIPTION_0));
      result.append(":</td>\n\t\t\t<td style=\"vertical-align: top; height: 110px;\">");
      result.append("<textarea rows=\"8\" class=\"maxwidth\" style=\"overflow: auto;\" name=\"");
      result.append(PREFIX_DESCRIPTION);
      result.append(propertySuffix);
      result.append("\">");
      if (CmsStringUtil.isNotEmpty(description)) {
        result.append(CmsEncoder.escapeXml(description));
      }
      result.append("</textarea>");
      result.append("</td>\n\t\t</tr>\n");

      result.append("\t\t</table>\n");

      result.append("</td>\n</tr>\n");
      result.append("</table>\n");
      result.append(dialogBlockEnd());

      if (i.hasNext()) {
        // append spacer if another entry follows
        result.append(dialogSpacer());
      }
    }

    result.append("</div>");

    return result.toString();
  }