use of db.column.Column in project common by zenlunatics.
the class Surveys method newAnswerColumn.
// ----------------------------------------------------------------------
private static ColumnBase<?> newAnswerColumn(String question_id, String display_name, String pre_text, String post_text, String answer_type, String type_data, boolean required, DBConnection db) {
ColumnBase<?> column;
if (answer_type.equals("Choices")) {
if (type_data.charAt(0) == 'r')
column = new Column("a" + question_id).setInputRenderer(new SelectRenderer(type_data.substring(5).split("\n")).setType(web.Select.Type.RADIO));
else
column = new Column("a" + question_id).setInputRenderer(new SelectRenderer(type_data.substring(6).split("\n")).setAllowNoSelection(true));
} else if (answer_type.equals("Rating")) {
String[] td = type_data.split("\\|");
column = new Column("a" + question_id).setInputRenderer(new RatingInputRenderer(Integer.parseInt(td[0]), td[2], Integer.parseInt(td[1]), td[3]));
} else {
TextAreaColumn c = new TextAreaColumn("a" + question_id);
if (answer_type.equals("Integer")) {
c.setCols(10);
c.setRows(1);
} else if (answer_type.equals("String")) {
c.setCols(Integer.parseInt(type_data));
c.setRows(1);
} else if (answer_type.equals("Text"))
c.setCols(80);
column = c;
}
column.setDisplayName(display_name);
if (required)
column.setIsRequired(true);
if (pre_text != null)
column.setPreText(pre_text);
if (post_text != null)
column.setPostText(post_text);
return column;
}
use of db.column.Column 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.column.Column in project common by zenlunatics.
the class Surveys method newAnswersViewDef.
// ----------------------------------------------------------------------
private ViewDef newAnswersViewDef(String name, Site site) {
ViewDef view_def = new ViewDef(name);
String surveys_id = name.substring(14);
DBConnection db = new DBConnection(site);
boolean one_answer = db.lookupBoolean(new Select("one_answer").from("surveys").whereIdEquals(surveys_id));
boolean show_names = db.lookupBoolean(new Select("show_names").from("surveys").whereIdEquals(surveys_id));
view_def.addInsertHook(this);
if (one_answer || show_names)
view_def.setAccessPolicy(new RecordOwnerAccessPolicy().add().delete().edit());
else
view_def.setAccessPolicy(new AccessPolicy().add().edit());
view_def.setFormButtonsLocation(Form.Location.BOTTOM);
view_def.setDefaultOrderBy("id");
view_def.setOnSuccess("$('survey_page').replace(context+'/Surveys?action=writeForm&id='+$('survey_page').get('survey_id'));");
view_def.setRecordName("Answer");
view_def.setRowWindowSize(0);
view_def.setTimestampRecords(true);
try {
boolean answer_table_exists = db.tableExists(name);
ResultSet questions = db.select("*", "survey_questions", "surveys_id=" + surveys_id, "id");
if (!questions.isBeforeFirst()) {
questions.getStatement().close();
throw new RuntimeException("no questions defined");
}
if (!answer_table_exists)
db.createManyTable("surveys", name, null, one_answer || show_names ? "people" : null, true);
while (questions.next()) {
String answer_type = questions.getString("answer_type");
if (answer_type.equals("Divider") || answer_type.equals("HTML"))
continue;
String question_id = questions.getString("id");
String type_data = questions.getString("type_data");
view_def.setColumn(newAnswerColumn(question_id, questions.getString("question"), questions.getString("pre_text"), questions.getString("post_text"), answer_type, type_data, questions.getBoolean("required"), db));
if (!answer_table_exists)
addAnswerTableColumn(name, question_id, answer_type, type_data, db);
}
questions.getStatement().close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
db.close();
view_def.setColumn(new LookupColumn("_owner_", "people", "first,last").setDefaultToUserId());
view_def.setColumn(new Column("surveys_id").setIsHidden(true));
return view_def;
}
use of db.column.Column in project common by zenlunatics.
the class ToDos method _newViewDef.
// --------------------------------------------------------------------------
@Override
public ViewDef _newViewDef(String name, Site site) {
if (name.equals("todos")) {
ViewDef view_def = new ViewDef(name);
view_def.setDefaultOrderBy("task");
view_def.setRecordName("Task");
ArrayList<String> column_names_form = new ArrayList<String>();
column_names_form.add("task");
column_names_form.add("notes");
if (m_group_by_project) {
column_names_form.add("project");
view_def.setColumn(new Column("project").setPostText("(optional)"));
view_def.setSectionDef(new SectionDef("project", Type.SEPARATOR_ROWS, new OrderBy("project")));
}
if (m_prioritize) {
view_def.setDefaultOrderBy("priority");
column_names_form.add("priority");
view_def.setColumn(new Column("priority").setInputRenderer(new SelectRenderer(new String[] { "1 - high", "2 - medium", "3 - low" })));
}
if (m_assign_tasks) {
column_names_form.add("assigned_to");
view_def.setColumn(new LookupColumn("assigned_to", "people", "first,last").setFilter(this).setDefaultToUserId());
}
if (m_one_table != null) {
column_names_form.add(m_one_table + "_id");
view_def.setColumn(new Column(m_one_table + "_id").setDefaultToSessionAttribute().setIsHidden(true));
}
view_def.setColumnNamesForm(column_names_form.toArray(new String[column_names_form.size()]));
view_def.setColumnNamesTable(new String[] { "task" });
view_def.setColumn(new Column("task") {
@Override
public boolean writeValue(View view, Map<String, Object> data, Request p) throws IOException {
String notes = view.data().getString("notes");
if (notes.length() > 0)
p.writer.write("<div onmouseover=\"if(!this.f){var e=$(this.lastChild);this.f=new Fx.Slide(e,{link:'cancel'});this.f.hide();e.setStyle('display','');$(this).addEvent('mouseout',function(e){if(!this.isAncestor(e.relatedTarget))this.f.slideOut()}.bind(this))}this.f.slideIn()\">");
p.writer.write(view.data().getString("task"));
if (notes.length() > 0) {
p.writer.write("<div style=\"background-color:white;padding:5px;font-size:smaller;display:none\">");
view.writeColumnHTML("notes");
p.writer.write("</div></div>");
}
return true;
}
});
return view_def;
}
return null;
}
use of db.column.Column in project common by zenlunatics.
the class Discussions method _newViewDef.
// --------------------------------------------------------------------------
@Override
public ViewDef _newViewDef(String name, Site site) {
if (name.equals("discussions")) {
RecordOwnerAccessPolicy record_owner_access_policy = (RecordOwnerAccessPolicy) new RecordOwnerAccessPolicy().add().delete().edit().view();
return addHooks(new ViewDef(name).setAccessPolicy(record_owner_access_policy).setDefaultOrderBy("_timestamp_ DESC").setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM).setRecordName("Discussion").setTimestampRecords(true).setColumnNamesForm(new String[] { "title", "text", "_owner_" }).setColumnNamesTable(new String[] { "title" }).setColumn(record_owner_access_policy.getColumn("posted by", site)).setColumn(new Column("_timestamp_").setDisplayName("when"))).addRelationshipDef(new OneToMany(name + "_attachments"));
}
if (name.equals(m_table + "_attachments")) {
ViewDef view_def = new ViewDef(name);
view_def.setRecordName("Attachment");
view_def.setColumn(new FileColumn("filename", view_def, m_table + "/attachments").setAllowEditing(false).setDirColumn(m_table + "_id").setTitleColumn("filename"));
return view_def;
}
return null;
}
Aggregations