Search in sources :

Example 46 with Select

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;
}
Also used : DBConnection(db.DBConnection) RecordOwnerAccessPolicy(db.access.RecordOwnerAccessPolicy) LookupColumn(db.column.LookupColumn) SQLException(java.sql.SQLException) LookupColumn(db.column.LookupColumn) BooleanColumn(db.column.BooleanColumn) Column(db.column.Column) TextAreaColumn(db.column.TextAreaColumn) Select(db.Select) ResultSet(java.sql.ResultSet) ViewDef(db.ViewDef) AccessPolicy(db.access.AccessPolicy) RecordOwnerAccessPolicy(db.access.RecordOwnerAccessPolicy)

Example 47 with Select

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

Example 48 with Select

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

Example 49 with Select

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

Example 50 with Select

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

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