use of db.Select 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.Select in project common by zenlunatics.
the class TagsColumn method writeInput.
// --------------------------------------------------------------------------
@Override
public boolean writeInput(View view, Form form, ColumnBase<?> column, View.Mode mode, String default_value, Request request) throws IOException {
String tags_table = m_table + "_tags";
String many_many_table = m_table + "_" + tags_table;
HTMLWriter writer = request.writer;
writer.setAttribute("id", column.getName());
writer.textInput(column.getName(), null, null);
writer.scriptOpen();
writer.write("JS.get('tags',function(){var tl=new TextboxList('").write(column.getName()).write("',{bitsOptions:{editable:{addOnBlur:true}},encode:function(a){var n=[];for(var i=0,l=a.length;i<l;i++)n[i]=a[i][1];return n.join('\t');},plugins:{autocomplete:{maxResults:-1}}})");
if (mode == View.Mode.EDIT_FORM) {
List<String> tags = request.db.readValues(new Select("tag").from(tags_table + " JOIN " + many_many_table + " ON " + many_many_table + "." + tags_table + "_id=" + tags_table + ".id").where(many_many_table + "." + m_table + "_id=" + view.data().getString("id")));
for (String tag : tags) writer.write(".add(").jsString(tag).write(")");
}
writer.write(";tl.plugins['autocomplete'].setValues([");
List<String> tags = request.db.readValues(new Select("tag").distinct().from(tags_table).orderBy("tag"));
for (int i = 0, n = tags.size(); i < n; i++) {
if (i > 0)
writer.write(',');
writer.write("[null,").jsString(tags.get(i)).write(",null]");
}
writer.write("]);tl.container.setStyle('max-width',tl.container.getSize().x);$('").write(column.getName()).write("').validate=function(){tl.blur();return true;};});");
writer.scriptClose();
return true;
}
use of db.Select in project common by zenlunatics.
the class SiteMenu method beforeDelete.
// --------------------------------------------------------------------
@Override
public boolean beforeDelete(StringBuilder where, Request request) {
String name = request.db.lookupString(new Select("name").from("pages").where(where.toString()));
request.db.delete("menu", "name='" + DBConnection.escape(name) + "'");
request.db.delete("menu_items", "name='" + DBConnection.escape(name) + "'");
m_menu.empty();
return true;
}
use of db.Select in project common by zenlunatics.
the class SiteMenu method write.
// --------------------------------------------------------------------------
public void write(String current_page, Request request) throws IOException {
String context = request.getContext();
NavBar nav_bar = new NavBar(request.writer).setActiveItem(current_page).setStaticTop(true);
@SuppressWarnings("unchecked") DBObjects<MenuItem> user_pages = (DBObjects<MenuItem>) request.getSessionAttribute("menu_items");
if (user_pages == null && request.getUser() != null) {
user_pages = new DBObjects<MenuItem>(new Select("name").from("menu_items").where("people_id=" + request.getUser().getId()).orderBy("_order_"), MenuItem.class, request.site);
request.setSessionAttribute("menu_items", user_pages);
}
List<MenuItem> menu_items = null;
if (user_pages != null)
menu_items = user_pages.getObjects();
if (menu_items == null || menu_items.size() == 0)
menu_items = m_menu.getObjects();
if (m_home_page != null && request.userHasRole("coho")) {
String label = request.site.getSettings().getString("home");
if (label == null)
label = "Home";
nav_bar.setBrand(label, context + "/" + m_home_page);
}
nav_bar.open();
Pages pages = request.site.getPages();
for (MenuItem menu_item : menu_items) {
Page page = pages.getPageByName(menu_item.name);
if (page != null)
if ("Other".equals(page.getURL())) {
boolean first = true;
for (Page p : pages.getPages()) if (p.onMainMenu() && !menu_items.contains(p) && p.canView(request)) {
if (first) {
nav_bar.dropdownOpen(page.getName());
first = false;
}
p.a(nav_bar, request);
}
if (!first)
nav_bar.dropdownClose();
} else if (page.canView(request))
page.a(nav_bar, request);
}
nav_bar.ulOpen(true);
if (request.userHasRole("coho")) {
String label = request.site.getSettings().getString("help");
if (label == null)
label = "Help";
nav_bar.a(label, context + "/Help");
}
request.site.writeUserDropdown(nav_bar, request);
nav_bar.close();
Person user = request.getUser();
if (user != null)
request.setSessionAttribute("current page", current_page);
}
use of db.Select in project common by zenlunatics.
the class SiteMenu method beforeUpdate.
// --------------------------------------------------------------------
@Override
public boolean beforeUpdate(int id, NameValuePairs name_value_pairs, Map<String, Object> previous_values, Request request) {
String name = request.db.lookupString(new Select("name").from("pages").whereIdEquals(id));
previous_values.put("name", name);
return true;
}
Aggregations