Search in sources :

Example 41 with Select

use of db.Select in project common by zenlunatics.

the class News method deleteItem.

// --------------------------------------------------------------------------
private void deleteItem(int id, Request request) {
    Person user = request.getUser();
    String[] item = request.db.readRow(new Select("provider,item_id,_owner_").from("news").whereIdEquals(id));
    if (item == null)
        return;
    if (user.getId() == Integer.parseInt(item[2]) || request.userIsAdmin()) {
        request.db.deleteById("news", id);
        request.db.deleteById(m_providers.get(item[0]).getTable(), Integer.parseInt(item[1]));
    }
}
Also used : Select(db.Select) Person(app.Person)

Example 42 with Select

use of db.Select in project common by zenlunatics.

the class News method writeItems.

// --------------------------------------------------------------------------
public void writeItems(String where, Request request) throws IOException {
    HTMLWriter writer = request.writer;
    // String sql = "SELECT DISTINCT provider FROM news";
    // if (where != null)
    // sql += " WHERE " + where;
    // List<String> providers = request.db.readValues(sql);
    // new Select("providers").setOptions(providers).write(request);
    // sql = "SELECT DISTINCT _owner_ FROM news";
    // if (where != null)
    // sql += " WHERE " + where;
    // ResultSet rs = request.db.select("SELECT id,first,last FROM people WHERE id IN(" + sql + ")");
    // try {
    // rs.getStatement().close();
    // } catch (SQLException e) {
    // throw new RuntimeException(e);
    // }
    writer.write("<div id=\"news_items\" class=\"news_items\">");
    if (where != null)
        request.setSessionAttribute("news where", where);
    ResultSet rs = request.db.select(new Select("*").from("news").where(where).orderBy("last_update DESC").limit(20));
    State state = (State) request.getSessionAttribute("news state");
    if (state == null) {
        state = new State();
        request.setSessionAttribute("news state", state);
    } else {
        state.earliest = null;
        state.latest = null;
    }
    writeItems(20, rs, request);
    writer.write("</div>");
    writer.scriptOpen();
    writer.write("var fetching=false;");
    writer.jsFunction("fetch_new", null, "fetching=true;" + "new Request.HTML({evalScripts:false,onSuccess:function(t,e,h,j){" + "var ni=$('news_items');" + "for(var i=t.length-1;i>=0;i--){" + "var item=$(t[i].id);" + "if(item)" + "item.destroy();" + "ni.grab(t[i],'top');" + "}" + "Browser.exec(j);" + "fetching=false;" + "},url:context+'/News/new'}).get();");
    writer.jsFunction("fetch_next", null, "fetching=true;" + "new Request.HTML({evalScripts:false,onSuccess:function(t,e,h,j){" + "var ni=$('news_items');" + "while(t.length>0)" + "ni.grab(t[0]);" + "Browser.exec(j);" + "fetching=false;" + "},url:context+'/News/next'}).get();");
    writer.jsFunction("item_popup", "e,id,ce,cd", "if(!e.firstChild){" + "d=new Dropdown(e);" + "if(ce)" + "d.add('Edit',function(){new Dialog({url:context+'/News/'+id+'/edit',title:'Edit Post',dialog_class:'news_item_dialog',e:e,cancel:'Cancel'});});" + "if(cd)" + "d.add('Delete',function(){" + "dialog_confirm('Delete this post?',function(){XHR_post(context+'/News/'+id+'/delete',null,function(){e.getParent('div.news_item').dispose();});});" + "});" + "d.show();" + "} else " + "e.getFirst().retrieve('object').show();");
    writer.jsFunction("replace_news_item", "id", "var ni=Dialog.top().options.e.getParent('div.news_item');" + "Dialog.top().close();" + "new Request.HTML({evalScripts:false,onSuccess:function(t,e,h,j){" + "t[0].replaces(ni);" + "Browser.exec(j);" + "},url:context+'/News/'+id}).get();");
    writer.write("window.addEvent('domready', function(){" + "document.addEvent('scroll',function(){" + "if(!fetching)" + "if(document.getScroll().y>document.getScrollSize().y-document.getSize().y-10)" + "fetch_next();" + "else if(document.getScroll().y<100)" + "fetch_new();" + "})});");
    Likes.writeJavascriptFunctions(writer);
    writer.scriptClose();
}
Also used : HTMLWriter(web.HTMLWriter) ResultSet(java.sql.ResultSet) Select(db.Select)

Example 43 with Select

use of db.Select in project common by zenlunatics.

the class NewsItem method writeHeader.

// --------------------------------------------------------------------------
protected final void writeHeader(Calendar now, HTMLWriter writer) throws IOException {
    String[] person = m_request.db.readRow(new Select("first,last,picture").from("people").whereIdEquals(m_person_id));
    writer.write("<div class=\"news_item_header\">");
    if (person != null) {
        Person user = m_request.getUser();
        boolean can_delete = m_provider.canDelete() && user != null && (m_person_id == user.getId() || m_request.userIsAdmin());
        boolean can_edit = m_provider.canEdit() && user != null && m_person_id == user.getId();
        if (can_delete || can_edit)
            writer.setAttribute("onclick", "item_popup(this," + m_news_id + (can_edit ? ",true" : ",false") + (can_delete ? ",true" : ",false") + ");return false;").icon("chevron-down");
        if (person[2] != null)
            writer.write("<img src=\"" + m_request.getContext() + "/people/" + m_person_id + "/" + person[2] + "\" onclick=\"new Dialog({url:context+'/People/").write(m_person_id).write("'});return false;\" style=\"cursor:pointer\"/>");
    }
    writer.write("<div style=\"display:inline-block;vertical-align:middle;\">");
    writer.write("<h5 style=\"color:inherit;\">");
    if (person != null)
        writer.write("<span class=\"news_item_person\" onclick=\"new Dialog({url:context+'/People/").write(m_person_id).write("'});return false;\" style=\"cursor:pointer\">").write(Util.join(" ", person[0], person[1])).write("</span> ");
    String action = getAction();
    if (action != null)
        writer.write(action);
    writer.write("</h5>");
    writer.write(m_request.date_time_formatter.getTimeAgo(m_timestamp, now));
    writer.write("</div></div>");
}
Also used : Select(db.Select) Person(app.Person)

Example 44 with Select

use of db.Select in project common by zenlunatics.

the class Survey method writeAnswers.

// ----------------------------------------------------------------------
public void writeAnswers(Request request) throws IOException {
    NumberFormat nf = NumberFormat.getInstance();
    nf.setMaximumFractionDigits(2);
    HTMLWriter writer = request.writer;
    try {
        ResultSet rs = request.db.select(new Select("title,show_names,number_questions").from("surveys").whereIdEquals(m_id));
        rs.next();
        writer.h3(rs.getString(1));
        String answers_table = "survey_answers" + m_id;
        boolean show_names = (rs.getBoolean(2) || request.userIsAdministrator()) && request.db.getTable(answers_table).getColumn("_owner_") != null;
        boolean number_questions = rs.getBoolean(3);
        rs.getStatement().close();
        int num_participants = request.db.countRows(answers_table, "surveys_id=" + m_id);
        writer.write(num_participants);
        writer.write(" participant");
        if (num_participants != 1)
            writer.write('s');
        ResultSet questions = request.db.select("SELECT id,question,answer_type,type_data FROM survey_questions WHERE surveys_id=" + m_id + " ORDER BY _order_");
        View answers = request.site.newView(answers_table, request);
        answers.setWhere("surveys_id=" + m_id);
        int question_num = 0;
        while (questions.next()) {
            String type = questions.getString(3);
            if (type.equals("Divider") || type.equals("HTML") || type.equals("Page Break"))
                continue;
            String question_id = questions.getString(1);
            String answer_column = "a" + question_id;
            int from = 0;
            int[] ratings = null;
            if (type.equals("Rating")) {
                String[] td = questions.getString(4).split("\\|");
                from = Integer.parseInt(td[0]);
                int to = Integer.parseInt(td[1]);
                ratings = new int[to - from + 1];
            }
            Map<String, Integer> choices = null;
            if (type.equals("Choices"))
                choices = new TreeMap<String, Integer>();
            writer.write("<p><div class=\"survey_block\"><div class=\"survey_title\">");
            if (number_questions) {
                writer.write(++question_num);
                writer.write(". ");
            }
            writer.write(questions.getString(2));
            writer.write("</div>");
            if (show_names)
                answers.setSelectColumns(answer_column + ",_owner_");
            else
                answers.setSelectColumns(answer_column);
            answers.select();
            int num_answers = 0;
            while (answers.next()) {
                String answer = answers.getColumnHTML(answer_column);
                if (type.equals("Choices")) {
                    if (!answers.data().wasNull()) {
                        Integer i = choices.get(answer);
                        if (i == null)
                            choices.put(answer, new Integer(1));
                        else
                            choices.put(answer, new Integer(i.intValue() + 1));
                        ++num_answers;
                    }
                } else if (type.equals("Rating")) {
                    if (!answers.data().wasNull()) {
                        ratings[Integer.parseInt(answer) - from]++;
                        ++num_answers;
                    }
                } else if (show_names || answer.length() > 0) {
                    if (num_answers > 0)
                        writer.hr();
                    writer.write("<div style=\"padding:2px\">");
                    if (answer.length() > 0)
                        writer.write(answer);
                    if (show_names) {
                        writer.write("<br /><span style=\"font-weight:bold\">");
                        answers.writeColumnHTML("_owner_");
                        writer.write("</span>");
                    }
                    writer.write("</div>");
                    ++num_answers;
                }
            }
            if (type.equals("Choices")) {
                writer.write("totals: ");
                Iterator<String> i = choices.keySet().iterator();
                boolean first = true;
                while (i.hasNext()) {
                    if (first)
                        first = false;
                    else
                        writer.write(", ");
                    String key = i.next();
                    writer.write(key);
                    writer.write(": ");
                    writer.write(choices.get(key).intValue());
                }
            } else if (type.equals("Rating")) {
                int total = 0;
                writer.write("totals: ");
                for (int i = 0; i < ratings.length; i++) {
                    if (i > 0)
                        writer.write(", ");
                    writer.write(i + from);
                    writer.write(": ");
                    writer.write(ratings[i]);
                    total += ratings[i] * (i + 1);
                }
                writer.write(". average: ");
                writer.write(nf.format((double) total / num_answers + from));
            }
            writer.write("</div>");
        }
        questions.getStatement().close();
    } catch (SQLException e) {
        throw new RuntimeException(e);
    }
}
Also used : HTMLWriter(web.HTMLWriter) SQLException(java.sql.SQLException) TreeMap(java.util.TreeMap) View(db.View) ResultSet(java.sql.ResultSet) Select(db.Select) NumberFormat(java.text.NumberFormat)

Example 45 with Select

use of db.Select in project common by zenlunatics.

the class Survey method formOpen.

// ----------------------------------------------------------------------
private void formOpen(Request request) throws IOException {
    String answer_table = "survey_answers" + m_id;
    View answers = request.site.newView(answer_table, request);
    ViewState.setShowReturnLink(answer_table, false, request);
    HTMLWriter writer = request.writer;
    if (getPageNum(request) == 0) {
        writer.write("<table align=\"center\" style=\"width:600px\"><tr><td>");
        if (m_show_title) {
            writer.tag("h3", m_title);
            writer.write("<p style=\"width:600px\">");
            if (m_description != null)
                writer.write(m_description);
            writer.write("</p>");
            if (m_write_settings_text) {
                writer.write("<p style=\"width:600px\">");
                if (m_one_answer)
                    writer.write("After you save your answers you may edit them again later. ");
                if (!m_show_answers)
                    writer.write("Your answers will not be viewable by others. ");
                else {
                    writer.write("Your answers will be viewable by others. ");
                    if (m_show_names)
                        writer.write("Your name will be shown with your answers, you do not need to type it. ");
                    else
                        writer.write("Your answers are anonymous, your name will not be shown with your answers. You may type your name at the end of each answer if you want to sign them. ");
                }
                writer.write("</p>");
            }
        }
        writer.write("</td></tr><tr><td id=\"survey_page\" survey_id=\"").write(m_id).write("\">");
    }
    Integer id = (Integer) request.getSessionAttribute("survey" + m_id + "_id");
    if (id != null) {
        answers.setWhere("id=" + id);
        answers.select();
        answers.next();
        m_form = answers.newEditForm();
        m_form.open();
    } else if (request.db.getTable(answer_table).getColumn("_owner_") != null) {
        answers.setWhere("surveys_id=" + m_id + " AND _owner_=" + request.getUser().getId());
        answers.select();
        if (answers.next()) {
            m_form = answers.newEditForm();
            m_form.open();
        } else {
            m_form = answers.newAddForm();
            m_form.open();
            writer.hiddenInput("surveys_id", Integer.toString(m_id));
            writer.hiddenInput("_owner_", Integer.toString(request.getUser().getId()));
        }
    } else {
        m_form = answers.newAddForm();
        m_form.open();
        writer.hiddenInput("surveys_id", Integer.toString(m_id));
    }
    writer.setAttribute("style", "padding:0 10px");
    writer.tagOpen("div");
    try {
        m_questions = request.db.select(new Select("*").from("survey_questions").whereEquals("surveys_id", m_id).orderBy("_order_"));
        if (!m_questions.isBeforeFirst()) {
            m_questions.getStatement().close();
            throw new RuntimeException("no questions defined");
        }
    } catch (SQLException e) {
        throw new RuntimeException(e);
    }
}
Also used : HTMLWriter(web.HTMLWriter) SQLException(java.sql.SQLException) Select(db.Select) View(db.View)

Aggregations

Select (db.Select)67 SQLException (java.sql.SQLException)24 ResultSet (java.sql.ResultSet)21 HTMLWriter (web.HTMLWriter)18 ArrayList (java.util.ArrayList)9 JDBCColumn (db.JDBCColumn)7 File (java.io.File)7 IOException (java.io.IOException)6 MessagingException (javax.mail.MessagingException)6 MimeMessage (javax.mail.internet.MimeMessage)6 AdminTask (web.AdminTask)6 FilePathStringBuilder (web.FilePathStringBuilder)6 Person (app.Person)5 JDBCTable (db.JDBCTable)5 NameValuePairs (db.NameValuePairs)5 View (db.View)5 DBObject (db.DBObject)4 ViewDef (db.ViewDef)4 InternetAddress (javax.mail.internet.InternetAddress)4 Page (app.Page)3