package com.psddev.cms.tool.page;
import java.io.IOException;
import javax.servlet.ServletException;
import com.psddev.cms.tool.PageServlet;
import com.psddev.cms.tool.Search;
import com.psddev.cms.tool.SearchResultRenderer;
import com.psddev.cms.tool.ToolPageContext;
import com.psddev.dari.db.Query;
import com.psddev.dari.db.State;
import com.psddev.dari.util.ObjectUtils;
import com.psddev.dari.util.RoutingFilter;
@RoutingFilter.Path(application = "cms", value = "queryFieldResult")
public class QueryFieldResult extends PageServlet {
private static final long serialVersionUID = 1L;
@Override
protected String getPermissionId() {
return null;
}
@Override
protected void doService(ToolPageContext page) throws IOException, ServletException {
Search search = new Search(page);
Renderer renderer = new Renderer(page, search);
renderer.render();
String pageId = page.createId();
Query<?> query;
try {
query = search.toQuery(page.getSite());
} catch (IllegalArgumentException | Query.NoFieldException error) {
return;
}
State queryState = query.getState();
queryState.put("cms.ui.search", search.getState().getSimpleValues());
page.writeStart("div", "id", pageId);
page.writeEnd();
page.writeStart("script", "type", "text/javascript");
page.writeRaw("var $page = $('#").writeRaw(pageId).writeRaw("'),");
page.writeRaw("$frame = $page.closest('.queryField_frames > .frame'),");
page.writeRaw("$field = $.data($frame[0], 'query-$field'),");
page.writeRaw("$input = $field.find('input');");
page.writeRaw("$input.val('");
page.writeRaw(page.js(ObjectUtils.toJson(queryState.getSimpleValues())));
page.writeRaw("');");
page.writeRaw("$input.change();");
page.writeEnd();
}
private static class Renderer extends SearchResultRenderer {
public Renderer(ToolPageContext page, Search search) throws IOException {
super(page, search);
}
@Override
public void renderBeforeItem(Object item) throws IOException {
}
@Override
public void renderAfterItem(Object item) throws IOException {
}
}
}