package com.psddev.cms.tool.content;
import com.google.common.base.Throwables;
import com.psddev.cms.db.Localization;
import com.psddev.cms.db.Page;
import com.psddev.cms.db.Template;
import com.psddev.cms.tool.ContentEditWidgetPlacement;
import com.psddev.cms.tool.ToolPageContext;
import com.psddev.cms.tool.UpdatingContentEditWidget;
import com.psddev.dari.db.DatabaseEnvironment;
import com.psddev.dari.db.ObjectField;
import com.psddev.dari.db.State;
import java.io.IOException;
public class SeoWidget extends UpdatingContentEditWidget {
@Override
@SuppressWarnings("deprecation")
public boolean shouldDisplay(ToolPageContext page, Object content) {
if (!Page.class.isInstance(content)
&& Template.class.isInstance(content)
&& !Template.Static.findUsedTypes(page.getSite()).contains(State.getInstance(content).getType())) {
return false;
} else {
return super.shouldDisplay(page, content);
}
}
@Override
public ContentEditWidgetPlacement getPlacement(ToolPageContext page, Object content) {
return ContentEditWidgetPlacement.TAB;
}
@Override
public String getHeading(ToolPageContext page, Object content) {
return Localization.currentUserText(getClass(), "title");
}
@Override
@SuppressWarnings("deprecation")
public void displayOrUpdate(ToolPageContext page, Object content, ContentEditWidgetPlacement placement) throws IOException {
State state = State.getInstance(content);
DatabaseEnvironment environment = state.getDatabase().getEnvironment();
ObjectField[] seoFields = {
environment.getField("cms.seo.title"),
environment.getField("cms.seo.description"),
environment.getField("cms.seo.keywords"),
environment.getField("cms.seo.robots") };
if (placement == null) {
try {
for (ObjectField seoField : seoFields) {
page.processField(content, seoField);
}
return;
} catch (Throwable error) {
throw Throwables.propagate(error);
}
}
for (ObjectField seoField : seoFields) {
page.renderField(content, seoField);
}
}
}