package com.psddev.cms.rte; import com.google.common.collect.ImmutableMap; import com.psddev.cms.db.RichTextElement; import com.psddev.cms.tool.ToolPageContext; import com.psddev.dari.util.ObjectUtils; import java.io.IOException; import java.util.Map; @ExternalContentRichTextElement.DisplayName("External Content") @RichTextElement.Tag(value = "brightspot-cms-external-content", initialBody = "...", block = true, preview = true, readOnly = true) public class ExternalContentRichTextElement extends RichTextElement { private String url; private String maximumWidth; private String maximumHeight; public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getMaximumWidth() { return maximumWidth; } public void setMaximumWidth(String maximumWidth) { this.maximumWidth = maximumWidth; } public String getMaximumHeight() { return maximumHeight; } public void setMaximumHeight(String maximumHeight) { this.maximumHeight = maximumHeight; } @Override public void fromAttributes(Map<String, String> attributes) { if (attributes != null) { setUrl(attributes.get("url")); } } @Override public Map<String, String> toAttributes() { return ImmutableMap.of("url", getUrl()); } @Override public void fromBody(String body) { setUrl("...".equals(body) ? null : body); } @Override public String toBody() { return ObjectUtils.firstNonBlank(getUrl(), "..."); } @Override public void writePreviewHtml(ToolPageContext page) throws IOException { page.writeStart("iframe", "class", "ExternalPreviewFrame", "src", page.cmsUrl("/content/externalPreviewFrame", "url", getUrl())); page.writeEnd(); } }