use of app.Person in project common by zenlunatics.
the class PicturesView method writePictures.
// --------------------------------------------------------------------------
private void writePictures() throws IOException {
m_view_def.getFrom();
Person user = m_request.getUser();
m_writer.write("<table width=\"100%\">");
// if (m_state.filter != null) {
// if (m_state.filter.indexOf("tags") != -1) {
// m_select_from = from + " JOIN " + from + "_" + from + "_tags ON " + from + ".id=" + from + "_" + from + "_tags." + from + "_id";
// m_writer.write("<tr><td style=\"text-align:center;font-size:x-large\">");
// m_writer.write(m_request.db.lookupString("tag", m_view_def.getName() + "_tags", Integer.parseInt(m_state.filter.substring(m_state.filter.indexOf('=') + 1))));
// m_writer.write("</td></tr>");
// // setSelectRelationships(true);
// } else {
// m_writer.write("<tr><td style=\"text-align:center\">posted by <span style=\"font-size:x-large\">");
// m_writer.write(m_request.site.lookupName(Integer.parseInt(m_state.filter.substring(m_state.filter.indexOf('=') + 1)), m_request.db));
// m_writer.write("</span></td></tr>");
// }
// m_writer.write("<tr><td style=\"text-align:center\">");
// m_writer.aButtonOnClick("view all pictures", "XHR_post(context+'/db','db_cmd=clear_filter&db_view_def=pictures',function(){c_(this).replace();}.bind(this))");
// m_writer.write("</td></tr>");
// }
m_writer.write("<tr><td><div class=\"well well-sm\">");
m_writer.addStyle("float:right");
writeButtonAdd();
int rwc_id = writeRowWindowControlsSpan();
m_writer.write(" posted by: ");
StringBuilder query = new StringBuilder("SELECT DISTINCT people.id,first || ' ' || last AS name FROM people JOIN pictures ON people.id=pictures._owner_");
if (m_where != null)
query.append(" WHERE ").append(m_where);
query.append(" ORDER BY 2");
Select select = new RowsSelect(null, query.toString(), "name", "id", m_request).addFirstOption("Anyone", "").setOnChange("var self=this;var v=this.options[this.selectedIndex].value;XHR_post(context+'/ViewStates/pictures',v?'filter=_owner_='+v:'filter=',function(){c_(self).replace(context + '/Views/pictures?db_mode=" + View.Mode.LIST + "');})");
String filter = getState().filter;
if (filter != null) {
int index = filter.indexOf("_owner_");
if (index != -1)
if (filter.charAt(index + 7) == '=')
select.setSelectedOption(null, filter.substring(index + 8));
else
select.setSelectedOption(null, "null");
}
select.write(m_request);
m_writer.write(" tagged: ");
query = new StringBuilder("SELECT DISTINCT ON(lower(tag)) pictures_tags.id,tag FROM pictures_tags JOIN pictures_pictures_tags ON pictures_tags.id=pictures_pictures_tags.pictures_tags_id JOIN pictures ON pictures_pictures_tags.pictures_id=pictures.id");
if (m_where != null)
query.append(" WHERE ").append(m_where);
query.append(" ORDER BY lower(tag)");
select = new RowsSelect(null, query.toString(), "tag", "id", m_request).addFirstOption("Any", "").setOnChange("var self=this;var v=this.options[this.selectedIndex].value;XHR_post(context+'/ViewStates/pictures',v?'filter=EXISTS(SELECT 1 FROM pictures_pictures_tags WHERE pictures_id=pictures.id AND pictures_tags_id='+v+')':'filter=',function(){c_(self).replace(context + '/Views/pictures?db_mode=" + View.Mode.LIST + "');})");
filter = getState().filter;
if (filter != null && filter.startsWith("EXISTS")) {
int index = filter.lastIndexOf('=');
if (index != -1)
select.setSelectedOption(null, filter.substring(index + 1, filter.length() - 1));
else
select.setSelectedOption(null, "null");
}
select.write(m_request);
m_writer.write("</div></td></tr></table>");
setAddOneColumns(false);
select();
skip();
m_writer.write("<table style=\"width:100%\"><tr>");
while (next()) {
String row = Integer.toString(m_data.getRow() - 1);
if (m_num_rows % 5 == 0)
m_writer.write("</tr><tr>");
m_writer.write("<td align=\"center\" valign=\"bottom\"><table><tr><td align=\"center\">");
m_writer.setAttribute("id", "pic" + row);
m_writer.aOnClickOpen("Gallery.open(" + row + ")");
m_writer.write("<div class=\"gallery_img\">").img("thumbs/" + m_data.getString("file"), m_pictures_url).write("</div>");
m_writer.tagClose();
m_writer.write("</td></tr><tr><td align=\"center\">");
m_writer.write(m_data.getString("caption"));
if (m_view_def.getAccessPolicy().showEditButtonForRow(this, m_request) || user != null && user.isAdministrator()) {
m_writer.br();
m_writer.addStyle("cursor:pointer");
m_writer.setAttribute("onclick", "Gallery.rotate('counterclockwise'," + row + ")");
m_writer.img("gallery/rotate_counterclockwise.png");
m_writer.space();
m_writer.addStyle("cursor:pointer");
m_writer.setAttribute("onclick", "Gallery.rotate('clockwise'," + row + ")");
m_writer.img("gallery/rotate_clockwise.png");
m_writer.space();
writeButtons();
}
m_writer.write("</td></tr></table></td>");
++m_num_rows;
if (isRowWindowLast())
break;
}
m_writer.write("</tr>");
m_writer.write("</table>");
writeRowWindowControls(rwc_id);
m_writer.scriptOpen();
ArrayList<String> ids = writeFiles();
String show_picture_id = m_request.getParameter("db_key_value");
if (show_picture_id != null) {
int show_picture_index = -1;
for (int i = 0, n = ids.size(); i < n; i++) if (ids.get(i).equals(show_picture_id)) {
show_picture_index = i;
break;
}
if (show_picture_index != -1) {
m_writer.write("Gallery.open(");
m_writer.write(show_picture_index);
String db_comment_id = m_request.getParameter("db_comment_id");
if (db_comment_id != null) {
m_writer.write(',');
m_writer.write(db_comment_id);
}
m_writer.write(");");
}
}
m_writer.scriptClose();
}
use of app.Person 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 app.Person in project common by zenlunatics.
the class Comments method writeComment.
// --------------------------------------------------------------------------
private static void writeComment(String table, Object[] values, List<Object[]> rows, int depth, Calendar now, Request request) throws IOException {
HTMLWriter writer = request.writer;
writer.write("<div class=\"comment");
if (values[0].equals(request.getParameter("db_comment_id")))
writer.write(" comments_hilite");
writer.write('"');
if (depth > 0)
writer.write(" style=\"padding-left:").write(depth * 15).write("px;\"");
writer.write('>');
Person user = request.getUser();
boolean can_delete = ((Integer) values[3]).intValue() == user.getId() || request.userIsAdmin();
boolean can_edit = ((Integer) values[3]).intValue() == user.getId();
if (can_edit || can_delete)
writer.setAttribute("onclick", "comment_popup(this,'" + table + "_comments'," + values[0] + "," + (can_edit ? "true" : "false") + "," + (can_delete ? "true" : "false") + ");return false;").icon("chevron-down");
if (values[8] != null)
writer.write("<div style=\"float:left;\"><img src=\"").write(request.getContext()).write("/people/").write(values[5]).write("/").write(values[8]).write("\" onclick=\"new Dialog({url:context+'/People/").write(values[5]).write("'});return false;\" style=\"cursor:pointer\"/></div>");
writer.write("<div class=\"comment_text\">");
writer.write("<span class=\"comment_person\" onclick=\"new Dialog({url:context+'/People/").write(values[5]).write("'});return false;\" style=\"cursor:pointer\">").write(Util.join(" ", (String) values[6], (String) values[7])).write("</span> ");
writer.writeWithLinks(values[1].toString());
writer.write("<div class=\"comment_time\">");
writer.write(request.date_time_formatter.getTimeAgo((Timestamp) values[4], now));
writer.write("</div></div></div>");
Integer id = (Integer) values[0];
for (Object[] row_values : rows) if (id.equals(row_values[2]))
writeComment(table, row_values, rows, depth + 1, now, request);
}
use of app.Person in project common by zenlunatics.
the class Comments method deleteItem.
// --------------------------------------------------------------------------
private void deleteItem(int id, Request request) {
Person user = request.getUser();
String[] item = request.db.readRow(new Select("_owner_").from(m_name).whereIdEquals(id));
if (item == null)
return;
if (user.getId() == Integer.parseInt(item[0]) || request.userIsAdmin())
request.db.deleteById(m_name, id);
}
use of app.Person in project common by zenlunatics.
the class Likes method write.
// --------------------------------------------------------------------------
public static void write(NewsProvider provider, int item_id, Request request) throws IOException {
HTMLWriter writer = request.writer;
StringBuilder people = null;
boolean user_likes = false;
String likes = request.db.lookupString("likes", provider.getTable(), item_id);
if (likes != null) {
String[] ids = likes.split(",");
Person user = request.getUser();
String user_id = user == null ? null : Integer.toString(user.getId());
people = new StringBuilder();
for (String id : ids) if (user_id != null && id.equals(user_id)) {
if (people.length() > 0)
people.insert(0, ", ");
people.insert(0, "You");
user_likes = true;
} else {
if (people.length() > 0)
people.append(", ");
people.append(request.site.lookupName(Integer.parseInt(id), request.db));
}
}
writer.write("<div class=\"likes\"><a href=\"#\" title=\"").write(user_likes ? "Unlike" : "Like").write(" this\" onclick=\"return ").write(user_likes ? "unlike" : "like").write("(this,'").write(provider.getName()).write("',").write(item_id).write(")\">").write(user_likes ? "Unlike" : "Like").write("</a>");
if (people != null) {
writer.write(" ยท ");
int comma = people.lastIndexOf(",");
if (comma == -1)
writer.write(people.toString()).write("You".equals(people.toString()) ? " like this." : " likes this.");
else
writer.write(people.substring(0, comma)).write(" and").write(people.substring(comma + 1)).write(" like this.");
}
writer.write("</div>");
}
Aggregations