use of db.SelectRenderer 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.SelectRenderer in project common by zenlunatics.
the class EventProvider method _newViewDef.
// --------------------------------------------------------------------------
@Override
public ViewDef _newViewDef(String name, Site site) {
if (name.equals(m_name)) {
ViewDef view_def = new EventViewDef(m_name, m_support_registrations);
view_def.addFormHook(new FormHook() {
@Override
public void after(View view, View.Mode mode, boolean printer_friendly, Request request) throws IOException {
writeAutomaticReminders(view, request);
}
});
if (m_access_policy != null)
view_def.setAccessPolicy(m_access_policy);
view_def.setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM, View.Mode.READ_ONLY_FORM);
view_def.setFrom(m_events_table);
view_def.setRecordName("Event");
ArrayList<String> column_names_form = new ArrayList<String>();
DBConnection db = new DBConnection(site);
for (int i = 0; i < m_filter_columns.size(); i += 2) {
column_names_form.add(m_filter_columns.get(i));
view_def.setColumn(new Column(m_filter_columns.get(i)).setDefaultValue(m_filter_columns.get(i + 1)).setIsHidden(true));
}
db.close();
column_names_form.add("date");
view_def.setColumn(new Column("date").setDisplayName(m_start_date_label).setIsRequired(true));
if (m_events_have_start_time) {
column_names_form.add("start_time");
column_names_form.add("end_time");
}
if (m_events_have_event) {
column_names_form.add("event");
view_def.setColumn(new Column("event").setIsRequired(true));
}
column_names_form.add("notes");
if (m_events_can_repeat) {
column_names_form.add("repeat");
view_def.setColumn(new Column("repeat").setInputAndValueRenderers(new SelectRenderer(s_repeat_periods).setOnChange("var i=this.selectedIndex;var d=document.querySelector('#date_row input');var ed=document.querySelector('#end_date_row input');if(i==0)ed.value='';else if(i==1){if(ed.value=='')ed.value=d.value;}else if(ed.value==d.value)ed.value='';$('end_date_row').style.display=i==0?'none':null;return false"), true));
column_names_form.add("end_date");
view_def.setColumn(new Column("end_date").setDisplayName(m_end_date_label));
}
if (m_events_have_category) {
column_names_form.add(m_events_table + "_categories_id");
m_categories.setAllowEditing(!m_only_admins_can_edit_categories);
view_def.setColumn(m_categories.newColumn(m_events_table + "_categories_id").setDisplayName("category"));
}
if (m_events_have_location) {
String locations_table = getLocationsTable();
column_names_form.add(locations_table + "_id");
m_locations.setAllowEditing(!m_only_admins_can_edit_locations);
view_def.setColumn(m_locations.newColumn(locations_table + "_id").setDisplayName("location"));
}
if (m_events_have_color) {
column_names_form.add("color");
view_def.setColumn(new ColorColumn("color"));
}
if (m_support_reminders)
view_def.addRelationshipDef(new OneToMany(m_name + "_reminders").setSpanFormCols(false));
if (m_support_registrations) {
column_names_form.add("register_people");
view_def.setColumn(new Column("register_people").setDisplayName("allow people to register for this " + getEventCrumb()));
}
if (m_events_are_owned) {
if (m_access_policy == null)
view_def.setAccessPolicy(new Or(new RecordOwnerAccessPolicy().add().delete().edit(), new RoleAccessPolicy("calendar editor")));
column_names_form.add("_owner_");
LookupColumn owner_column = new PersonColumn("_owner_", false, site.getPeopleFilter()).setDefaultToUserId().setDisplayName("posted by");
if (m_role == null)
owner_column.setIsReadOnly(true);
view_def.setColumn(owner_column);
}
column_names_form.add("_timestamp_");
view_def.setColumn(new Column("_timestamp_").setDisplayName("added").setIsReadOnly(true).setShowOnAddForm(false));
view_def.setColumnNamesForm(column_names_form.toArray(new String[column_names_form.size()]));
return view_def;
}
if (name.equals(getCategoriesTable()))
return m_categories.addHooks(new ViewDef(name).setColumn(new ColorColumn("color")));
if (name.equals(getLocationsTable()))
return m_locations.newViewDef(name, site).setDefaultOrderBy("lower(text)").setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM, View.Mode.READ_ONLY_FORM).setRecordName("Location").setColumn(new Column("text").setDisplayName("location").setIsRequired(true));
if (name.equals(m_name + "_registrations"))
return new ViewDef(name).setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM, View.Mode.READ_ONLY_FORM).setFrom(m_events_table + "_registrations").setRecordName("Registration").setColumnNamesTableAndForm(new String[] { "person", "note" }).setColumn(new LookupColumn("person", "people", "first,last").setDefaultToUserId().setFilter(site.getPeopleFilter()));
if (name.equals(m_name + "_reminders")) {
RecordOwnerAccessPolicy access_policy = (RecordOwnerAccessPolicy) new RecordOwnerAccessPolicy().add().delete().edit();
return new ViewDef(name).setAccessPolicy(access_policy).setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM, View.Mode.READ_ONLY_FORM).setFrom(m_events_table + "_reminders").setRecordName("Reminder").setColumnNamesForm(new String[] { "before", "note", "email" }).setColumnNamesTable(new String[] { "email", "before" }).setColumn(new EmailColumn("email") {
@Override
public String getDefaultValue(Request request) {
return request.getUser().getEmail();
}
@Override
public String validate(String table, String value, int id, Request request) {
if ("poster".equals(value))
return null;
return super.validate(table, value, id, request);
}
}.setDisplayName("send to").setIsRequired(true)).setColumn(new ReminderWhenColumn("before", m_name, m_events_table, m_events_have_start_time, m_events_can_repeat, false).setDisplayName("when")).setColumn(access_policy.getColumn("person", site));
}
if (name.equals(m_name + "_reminders auto"))
return new ViewDef(name).setBaseFilter(m_events_table + "_id IS NULL").setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM, View.Mode.READ_ONLY_FORM).setFrom(m_events_table + "_reminders").setRecordName("Reminder").setColumnNamesForm(new String[] { "before", "note", "email" }).setColumnNamesTable(new String[] { "email", "before" }).setColumn(new EmailColumn("email") {
@Override
public String validate(String table, String value, int id, Request request) {
if ("poster".equals(value))
return null;
return super.validate(table, value, id, request);
}
}.setDisplayName("send to").setIsRequired(true).setTitle("Enter the special value \"poster\" to send to the event poster")).setColumn(new ReminderWhenColumn("before", m_name, m_events_table, m_events_have_start_time, m_events_can_repeat, true).setDisplayName("when"));
return null;
}
use of db.SelectRenderer 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;
}
Aggregations