Search in sources :

Example 6 with Person

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();
}
Also used : RowsSelect(db.RowsSelect) Select(web.Select) RowsSelect(db.RowsSelect) Person(app.Person)

Example 7 with Person

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);
}
Also used : Pages(app.Pages) DBObjects(db.DBObjects) NavBar(web.NavBar) Select(db.Select) Page(app.Page) Person(app.Person)

Example 8 with Person

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);
}
Also used : HTMLWriter(web.HTMLWriter) Person(app.Person) Timestamp(java.sql.Timestamp)

Example 9 with Person

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);
}
Also used : Select(db.Select) Person(app.Person)

Example 10 with Person

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>");
}
Also used : HTMLWriter(web.HTMLWriter) Person(app.Person)

Aggregations

Person (app.Person)14 HTMLWriter (web.HTMLWriter)7 Select (db.Select)5 Page (app.Page)1 Pages (app.Pages)1 Request (app.Request)1 DBObjects (db.DBObjects)1 RowsSelect (db.RowsSelect)1 FileColumn (db.column.FileColumn)1 IOException (java.io.IOException)1 ResultSet (java.sql.ResultSet)1 SQLException (java.sql.SQLException)1 Timestamp (java.sql.Timestamp)1 Calendar (java.util.Calendar)1 Enumeration (java.util.Enumeration)1 ServletException (javax.servlet.ServletException)1 HttpServletRequest (javax.servlet.http.HttpServletRequest)1 NavBar (web.NavBar)1 Select (web.Select)1