use of db.Form in project common by zenlunatics.
the class Admin method writeTableCreateForm.
// --------------------------------------------------------------------------
private void writeTableCreateForm(Request request) throws IOException {
HTMLWriter writer = request.writer;
web.Form form = new web.Form(null, "admin", writer).setOnClick("send_form(this,function(t){dialog_alert('','table created');get_nav_list('tables');})").setSubmitText("create").setButtonsLocation(Form.Location.BOTTOM).open();
writer.hiddenInput("action", "table_create");
form.rowOpen("table");
writer.textInput("table", null, null);
form.rowOpen("columns");
writer.textAreaOpen("columns", "2", "80");
writer.tagClose();
form.close();
}
use of db.Form in project common by zenlunatics.
the class MailLists method _newViewDef.
// --------------------------------------------------------------------------
// @AdminTask
// public static void
// moveAllMessagesToDisk(Request request)
// {
// try {
// List<String> lists = request.db.readValues(new Select("name").from("mail_lists").where("NOT store_on_disk"));
// for (String list : lists) {
// request.writer.write("writing " + list + "<br />");
// System.out.println("writing " + list);
// new MailList(list, request.site, request.db).moveMessagesToDisk(request);
// }
// } catch (IOException e) {
// request.abort(e);
// }
// }
// --------------------------------------------------------------------------
// @AdminTask({"list name"})
// public static void
// moveMessagesToDisk(String list_name, Request request)
// {
// try {
// new MailList(list_name, request.site, request.db).moveMessagesToDisk(request);
// } catch (IOException e) {
// request.abort(e);
// }
// }
// --------------------------------------------------------------------------
@Override
public ViewDef _newViewDef(String name, Site site) {
if (name.equals("additional_emails"))
return new ViewDef(name).setDefaultOrderBy("email").setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM, View.Mode.READ_ONLY_FORM).setRecordName("Additional email");
if (name.equals("mail_lists"))
return new ViewDef(name) {
@Override
public boolean beforeUpdate(int id, NameValuePairs name_value_pairs, Map<String, Object> previous_values, Request request) {
if (!name_value_pairs.getBoolean("active") && request.db.lookupBoolean(new Select("active").from("mail_lists").whereIdEquals(id)))
request.db.delete("mail_lists_people", "mail_lists_id=" + id);
return super.beforeUpdate(id, name_value_pairs, previous_values, request);
}
}.addDeleteHook(this).addInsertHook(this).addUpdateHook(this).setDefaultOrderBy("name").setRecordName("Mail List").setColumnNamesForm(new String[] { "name", "send_to", "active", "announce_only", "archive", "archives_public", "footer", "allow_from_outside", "allow_from_outside_subscribers", "subscribers", "username", "host", "password", "store_on_disk" }).setColumnNamesFormTable(new String[] { "name" }).setColumnNamesTable(new String[] { "name", "send_to", "active" }).setColumn(new Column("allow_from_outside").setDisplayName("accept posts from outside non-subscribers (i.e. anyone)")).setColumn(new Column("allow_from_outside_subscribers").setDisplayName("accept posts from outside subscribers")).setColumn(new Column("announce_only").setTitle("If this is checked, replies to posts from this list will be ignored.")).setColumn(new Column("footer").setTitle("Optional text that will be added to the bottom of every post to this list")).setColumn(new Column("host").setIsHidden(true)).setColumn(new Column("name").setPostText("@" + site.getDomain()).setDisplayName("address").setIsRequired(true)).setColumn(new Column("password").setDefaultToUUID().setIsHidden(true)).setColumn(new Column("send_to") {
@Override
protected void writeInput(Mode mode, String default_value, View view, Form form, Request request) throws IOException {
String value = null;
if (mode == Mode.EDIT_FORM)
value = view.data().getString("send_to");
HTMLWriter writer = request.writer;
writer.write("<select name=\"send_to\"><option value=\"Subscribers\">Subscribers</options>");
for (MailHandlerFactory mail_handler_factory : m_mail_handler_factories) mail_handler_factory.writeSendToOptions(value, request.db, writer);
writer.write("</select>");
}
@Override
public boolean writeValue(View view, Map<String, Object> data, Request request) throws IOException {
String send_to = view.data().getString("send_to");
if ("Subscribers".equals(send_to))
request.writer.write(send_to);
else {
MailHandler mail_handler = getMailHandler(view.data().getString("name"), request.db);
if (mail_handler != null)
request.writer.write(mail_handler.getDisplayName());
}
return true;
}
}).setColumn(new Column("store_on_disk").setIsHidden(true)).setColumn(new Column("username").setIsHidden(true)).addRelationshipDef(new ManyToMany("people", "mail_lists_people", "first,last").setViewRole("administrator")).addRelationshipDef(new OneToMany("subscribers").setSpanFormCols(false));
if (name.equals("mail_lists_people"))
return new ViewDef(name).setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM).setColumn(new LookupColumn("mail_lists_id", "mail_lists", "name", new Select("id,name,send_to,active").from("mail_lists").orderBy("name"), "name").setFilter(new Filter() {
@Override
public boolean accept(ResultSet rs, Request request) {
try {
return rs.getBoolean("active") && "Subscribers".equals(rs.getString("send_to"));
} catch (SQLException e) {
request.abort(e);
}
return false;
}
}).setDisplayName("mail list")).setColumn(new LookupColumn("people_id", "people", "first,last").setFilter(site.getPeopleFilter()));
if (name.startsWith("ml_"))
return new ViewDef(name).setAccessPolicy(new RoleAccessPolicy("admin").delete()).setDefaultOrderBy("arrived DESC").setRecordName("Message").setRowWindowSize(0).setShowFilterLink(false).setShowHead(false).setColumnNamesTable(new String[] { "arrived", "sender", "subject" }).setColumn(new Column("subject") {
@Override
public boolean writeValue(View view, Map<String, Object> data, Request request) throws IOException {
String subject = view.data().getString("subject");
if (subject == null || subject.length() == 0)
subject = "(no subject)";
request.writer.aOnClick(subject, "new Dialog({url:context+'/MailLists?list=" + view.getViewDef().getName() + "&cmd=get_message&db_key_value=" + view.data().getString("id") + "',title:'" + HTMLWriter.escapeJSString(subject) + "'});");
return true;
}
});
if (name.equals("people mail_lists"))
return new ViewDef(name).setAccessPolicy(new AccessPolicy().add().delete()).setAddButtonText("subscribe").setDeleteButtonText("unsubscribe").setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM).setFrom("mail_lists").setRecordName("Mail List").setColumnNamesTable(new String[] { "name" });
if (name.equals("subscribers"))
return new ViewDef(name).setDefaultOrderBy("email").setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM).setRecordName("Outside Subscriber");
return null;
}
use of db.Form in project common by zenlunatics.
the class Admin method importFile.
// --------------------------------------------------------------------------
private void importFile(Request request) throws IOException {
String step = request.getParameter("step");
HTMLWriter writer = request.writer;
if (step == null) {
String id = writer.componentOpen(null, null);
web.Form form = componentFormOpen(id, request).setSubmitText("Start");
writer.hiddenInput("action", "import file");
writer.hiddenInput("step", "2");
form.rowOpen("filename");
writer.textInput("filename", null, null);
form.close();
writer.tagClose();
} else if ("2".equals(step)) {
String filename = request.getParameter("filename");
BufferedReader br = new BufferedReader(new FileReader(request.site.getBaseFilePath().append(filename).toString()));
String l = br.readLine();
br.close();
writer.write("$('").write(request.getParameter("id")).write("').innerHTML='");
web.Form form = componentFormOpen(null, request).setSubmitText("Import");
writer.hiddenInput("action", "import file");
writer.hiddenInput("filename", filename);
writer.hiddenInput("step", "3");
form.rowOpen("table");
writer.textInput("table", null, null);
form.rowOpen("columns");
Table table = new Table(writer);
String[] types = new String[] { "INT", "VARCHAR" };
String[] columns = l.split("\t");
for (String column : columns) {
table.tr().td();
writer.checkbox("col" + column, column, null, true, false);
table.td();
writer.radioButtons(column, types, null, null);
}
table.close();
form.close();
writer.write('\'');
} else if ("3".equals(step)) {
StringBuilder sb = new StringBuilder();
Enumeration<String> parameter_names = request.getParameterNames();
while (parameter_names.hasMoreElements()) {
String parameter_name = parameter_names.nextElement();
if (parameter_name.startsWith("col")) {
if (sb.length() > 0)
sb.append(',');
String column = parameter_name.substring(3);
sb.append(column);
sb.append(' ');
sb.append(request.getParameter(column));
}
}
String table = request.getParameter("table");
request.db.createTable(table, sb.toString());
String filename = request.getParameter("filename");
BufferedReader br = new BufferedReader(new FileReader(request.site.getBaseFilePath().append(filename).toString()));
String l = br.readLine();
String[] columns = l.split("\t");
l = br.readLine();
NameValuePairs name_value_pairs = new NameValuePairs();
while (l != null) {
String[] values = l.split("\t");
for (String column : columns) if (request.getParameter(column) != null)
name_value_pairs.set(column, values[Util.indexOf(columns, column)]);
request.db.insert(table, name_value_pairs);
l = br.readLine();
}
br.close();
}
}
use of db.Form in project common by zenlunatics.
the class Admin method writeColumnForm.
// --------------------------------------------------------------------------
private void writeColumnForm(String table, JDBCColumn jdbc_column, Request request) throws IOException {
HTMLWriter writer = request.writer;
web.Form form = new web.Form(null, null, writer).setButtonsLocation(web.Form.Location.NONE).open();
writer.hiddenInput("table", table);
if (jdbc_column == null) {
writer.hiddenInput("action", "column_add");
form.rowOpen("name");
writer.write("<input type=\"text\" name=\"column\" />");
} else {
writer.hiddenInput("action", "set column type");
writer.hiddenInput("column", jdbc_column.name);
}
form.rowOpen("type");
Select types = new Select("type", JDBCColumn.types);
if (jdbc_column != null)
types.setSelectedOption(jdbc_column.type_name, null);
types.write(request);
form.rowOpen("size");
if (jdbc_column != null && jdbc_column.type_name.endsWith("char") && jdbc_column.size > 0 && jdbc_column.size < 1000)
writer.textInput("size", "3", Integer.toString(jdbc_column.size));
else
writer.textInput("size", "3", null);
if (jdbc_column == null) {
form.rowOpen("references");
new Select("reftable", request.db.getTableNames(false)).setAllowNoSelection(true).write(request);
}
form.close();
}
use of db.Form in project common by zenlunatics.
the class EventProvider method writeEventForm.
// --------------------------------------------------------------------------
void writeEventForm(Request request) throws IOException {
if (m_support_reminders && !request.userIsAdministrator())
ViewState.setBaseFilter(m_name + "_reminders", "_owner_=" + request.getUser().getId(), request);
View view = request.site.newView(m_name, request);
// do this before checking showEditButtonForRow so we get the event selected
Form form = view.newEditForm();
if (view.getMode() == View.Mode.EDIT_FORM && m_access_policy != null && !request.userIsAdmin() && !m_access_policy.showEditButtonForRow(view, request))
form.setMode(View.Mode.READ_ONLY_FORM);
form.write();
}
Aggregations