Search in sources :

Example 1 with Form

use of db.Form in project common by zenlunatics.

the class Admin method writeTableCreateForm.

// --------------------------------------------------------------------------
private void writeTableCreateForm(Request request) throws IOException {
    HTMLWriter writer = request.writer;
    web.Form form = new web.Form(null, "admin", writer).setOnClick("send_form(this,function(t){dialog_alert('','table created');get_nav_list('tables');})").setSubmitText("create").setButtonsLocation(Form.Location.BOTTOM).open();
    writer.hiddenInput("action", "table_create");
    form.rowOpen("table");
    writer.textInput("table", null, null);
    form.rowOpen("columns");
    writer.textAreaOpen("columns", "2", "80");
    writer.tagClose();
    form.close();
}
Also used : HTMLWriter(web.HTMLWriter) Form(db.Form)

Example 2 with Form

use of db.Form in project common by zenlunatics.

the class MailLists method _newViewDef.

// --------------------------------------------------------------------------
// @AdminTask
// public static void
// moveAllMessagesToDisk(Request request)
// {
// try {
// List<String> lists = request.db.readValues(new Select("name").from("mail_lists").where("NOT store_on_disk"));
// for (String list : lists) {
// request.writer.write("writing " + list + "<br />");
// System.out.println("writing " + list);
// new MailList(list, request.site, request.db).moveMessagesToDisk(request);
// }
// } catch (IOException e) {
// request.abort(e);
// }
// }
// --------------------------------------------------------------------------
// @AdminTask({"list name"})
// public static void
// moveMessagesToDisk(String list_name, Request request)
// {
// try {
// new MailList(list_name, request.site, request.db).moveMessagesToDisk(request);
// } catch (IOException e) {
// request.abort(e);
// }
// }
// --------------------------------------------------------------------------
@Override
public ViewDef _newViewDef(String name, Site site) {
    if (name.equals("additional_emails"))
        return new ViewDef(name).setDefaultOrderBy("email").setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM, View.Mode.READ_ONLY_FORM).setRecordName("Additional email");
    if (name.equals("mail_lists"))
        return new ViewDef(name) {

            @Override
            public boolean beforeUpdate(int id, NameValuePairs name_value_pairs, Map<String, Object> previous_values, Request request) {
                if (!name_value_pairs.getBoolean("active") && request.db.lookupBoolean(new Select("active").from("mail_lists").whereIdEquals(id)))
                    request.db.delete("mail_lists_people", "mail_lists_id=" + id);
                return super.beforeUpdate(id, name_value_pairs, previous_values, request);
            }
        }.addDeleteHook(this).addInsertHook(this).addUpdateHook(this).setDefaultOrderBy("name").setRecordName("Mail List").setColumnNamesForm(new String[] { "name", "send_to", "active", "announce_only", "archive", "archives_public", "footer", "allow_from_outside", "allow_from_outside_subscribers", "subscribers", "username", "host", "password", "store_on_disk" }).setColumnNamesFormTable(new String[] { "name" }).setColumnNamesTable(new String[] { "name", "send_to", "active" }).setColumn(new Column("allow_from_outside").setDisplayName("accept posts from outside non-subscribers (i.e. anyone)")).setColumn(new Column("allow_from_outside_subscribers").setDisplayName("accept posts from outside subscribers")).setColumn(new Column("announce_only").setTitle("If this is checked, replies to posts from this list will be ignored.")).setColumn(new Column("footer").setTitle("Optional text that will be added to the bottom of every post to this list")).setColumn(new Column("host").setIsHidden(true)).setColumn(new Column("name").setPostText("@" + site.getDomain()).setDisplayName("address").setIsRequired(true)).setColumn(new Column("password").setDefaultToUUID().setIsHidden(true)).setColumn(new Column("send_to") {

            @Override
            protected void writeInput(Mode mode, String default_value, View view, Form form, Request request) throws IOException {
                String value = null;
                if (mode == Mode.EDIT_FORM)
                    value = view.data().getString("send_to");
                HTMLWriter writer = request.writer;
                writer.write("<select name=\"send_to\"><option value=\"Subscribers\">Subscribers</options>");
                for (MailHandlerFactory mail_handler_factory : m_mail_handler_factories) mail_handler_factory.writeSendToOptions(value, request.db, writer);
                writer.write("</select>");
            }

            @Override
            public boolean writeValue(View view, Map<String, Object> data, Request request) throws IOException {
                String send_to = view.data().getString("send_to");
                if ("Subscribers".equals(send_to))
                    request.writer.write(send_to);
                else {
                    MailHandler mail_handler = getMailHandler(view.data().getString("name"), request.db);
                    if (mail_handler != null)
                        request.writer.write(mail_handler.getDisplayName());
                }
                return true;
            }
        }).setColumn(new Column("store_on_disk").setIsHidden(true)).setColumn(new Column("username").setIsHidden(true)).addRelationshipDef(new ManyToMany("people", "mail_lists_people", "first,last").setViewRole("administrator")).addRelationshipDef(new OneToMany("subscribers").setSpanFormCols(false));
    if (name.equals("mail_lists_people"))
        return new ViewDef(name).setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM).setColumn(new LookupColumn("mail_lists_id", "mail_lists", "name", new Select("id,name,send_to,active").from("mail_lists").orderBy("name"), "name").setFilter(new Filter() {

            @Override
            public boolean accept(ResultSet rs, Request request) {
                try {
                    return rs.getBoolean("active") && "Subscribers".equals(rs.getString("send_to"));
                } catch (SQLException e) {
                    request.abort(e);
                }
                return false;
            }
        }).setDisplayName("mail list")).setColumn(new LookupColumn("people_id", "people", "first,last").setFilter(site.getPeopleFilter()));
    if (name.startsWith("ml_"))
        return new ViewDef(name).setAccessPolicy(new RoleAccessPolicy("admin").delete()).setDefaultOrderBy("arrived DESC").setRecordName("Message").setRowWindowSize(0).setShowFilterLink(false).setShowHead(false).setColumnNamesTable(new String[] { "arrived", "sender", "subject" }).setColumn(new Column("subject") {

            @Override
            public boolean writeValue(View view, Map<String, Object> data, Request request) throws IOException {
                String subject = view.data().getString("subject");
                if (subject == null || subject.length() == 0)
                    subject = "(no subject)";
                request.writer.aOnClick(subject, "new Dialog({url:context+'/MailLists?list=" + view.getViewDef().getName() + "&cmd=get_message&db_key_value=" + view.data().getString("id") + "',title:'" + HTMLWriter.escapeJSString(subject) + "'});");
                return true;
            }
        });
    if (name.equals("people mail_lists"))
        return new ViewDef(name).setAccessPolicy(new AccessPolicy().add().delete()).setAddButtonText("subscribe").setDeleteButtonText("unsubscribe").setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM).setFrom("mail_lists").setRecordName("Mail List").setColumnNamesTable(new String[] { "name" });
    if (name.equals("subscribers"))
        return new ViewDef(name).setDefaultOrderBy("email").setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM).setRecordName("Outside Subscriber");
    return null;
}
Also used : Form(db.Form) SQLException(java.sql.SQLException) ViewDef(db.ViewDef) AccessPolicy(db.access.AccessPolicy) RoleAccessPolicy(db.access.RoleAccessPolicy) JDBCColumn(db.JDBCColumn) LookupColumn(db.column.LookupColumn) Column(db.column.Column) ResultSet(java.sql.ResultSet) RoleAccessPolicy(db.access.RoleAccessPolicy) HTMLWriter(web.HTMLWriter) NameValuePairs(db.NameValuePairs) Mode(db.View.Mode) Request(app.Request) ManyToMany(db.ManyToMany) OneToMany(db.OneToMany) View(db.View) LookupColumn(db.column.LookupColumn) Filter(db.Filter) FileFilter(java.io.FileFilter) Select(db.Select) DBObject(db.DBObject) Map(java.util.Map) HashMap(java.util.HashMap)

Example 3 with Form

use of db.Form in project common by zenlunatics.

the class Admin method importFile.

// --------------------------------------------------------------------------
private void importFile(Request request) throws IOException {
    String step = request.getParameter("step");
    HTMLWriter writer = request.writer;
    if (step == null) {
        String id = writer.componentOpen(null, null);
        web.Form form = componentFormOpen(id, request).setSubmitText("Start");
        writer.hiddenInput("action", "import file");
        writer.hiddenInput("step", "2");
        form.rowOpen("filename");
        writer.textInput("filename", null, null);
        form.close();
        writer.tagClose();
    } else if ("2".equals(step)) {
        String filename = request.getParameter("filename");
        BufferedReader br = new BufferedReader(new FileReader(request.site.getBaseFilePath().append(filename).toString()));
        String l = br.readLine();
        br.close();
        writer.write("$('").write(request.getParameter("id")).write("').innerHTML='");
        web.Form form = componentFormOpen(null, request).setSubmitText("Import");
        writer.hiddenInput("action", "import file");
        writer.hiddenInput("filename", filename);
        writer.hiddenInput("step", "3");
        form.rowOpen("table");
        writer.textInput("table", null, null);
        form.rowOpen("columns");
        Table table = new Table(writer);
        String[] types = new String[] { "INT", "VARCHAR" };
        String[] columns = l.split("\t");
        for (String column : columns) {
            table.tr().td();
            writer.checkbox("col" + column, column, null, true, false);
            table.td();
            writer.radioButtons(column, types, null, null);
        }
        table.close();
        form.close();
        writer.write('\'');
    } else if ("3".equals(step)) {
        StringBuilder sb = new StringBuilder();
        Enumeration<String> parameter_names = request.getParameterNames();
        while (parameter_names.hasMoreElements()) {
            String parameter_name = parameter_names.nextElement();
            if (parameter_name.startsWith("col")) {
                if (sb.length() > 0)
                    sb.append(',');
                String column = parameter_name.substring(3);
                sb.append(column);
                sb.append(' ');
                sb.append(request.getParameter(column));
            }
        }
        String table = request.getParameter("table");
        request.db.createTable(table, sb.toString());
        String filename = request.getParameter("filename");
        BufferedReader br = new BufferedReader(new FileReader(request.site.getBaseFilePath().append(filename).toString()));
        String l = br.readLine();
        String[] columns = l.split("\t");
        l = br.readLine();
        NameValuePairs name_value_pairs = new NameValuePairs();
        while (l != null) {
            String[] values = l.split("\t");
            for (String column : columns) if (request.getParameter(column) != null)
                name_value_pairs.set(column, values[Util.indexOf(columns, column)]);
            request.db.insert(table, name_value_pairs);
            l = br.readLine();
        }
        br.close();
    }
}
Also used : HTMLWriter(web.HTMLWriter) Table(web.Table) JDBCTable(db.JDBCTable) NameValuePairs(db.NameValuePairs) Form(db.Form) BufferedReader(java.io.BufferedReader) FileReader(java.io.FileReader)

Example 4 with Form

use of db.Form in project common by zenlunatics.

the class Admin method writeColumnForm.

// --------------------------------------------------------------------------
private void writeColumnForm(String table, JDBCColumn jdbc_column, Request request) throws IOException {
    HTMLWriter writer = request.writer;
    web.Form form = new web.Form(null, null, writer).setButtonsLocation(web.Form.Location.NONE).open();
    writer.hiddenInput("table", table);
    if (jdbc_column == null) {
        writer.hiddenInput("action", "column_add");
        form.rowOpen("name");
        writer.write("<input type=\"text\" name=\"column\" />");
    } else {
        writer.hiddenInput("action", "set column type");
        writer.hiddenInput("column", jdbc_column.name);
    }
    form.rowOpen("type");
    Select types = new Select("type", JDBCColumn.types);
    if (jdbc_column != null)
        types.setSelectedOption(jdbc_column.type_name, null);
    types.write(request);
    form.rowOpen("size");
    if (jdbc_column != null && jdbc_column.type_name.endsWith("char") && jdbc_column.size > 0 && jdbc_column.size < 1000)
        writer.textInput("size", "3", Integer.toString(jdbc_column.size));
    else
        writer.textInput("size", "3", null);
    if (jdbc_column == null) {
        form.rowOpen("references");
        new Select("reftable", request.db.getTableNames(false)).setAllowNoSelection(true).write(request);
    }
    form.close();
}
Also used : HTMLWriter(web.HTMLWriter) Form(db.Form) Select(web.Select)

Example 5 with Form

use of db.Form in project common by zenlunatics.

the class EventProvider method writeEventForm.

// --------------------------------------------------------------------------
void writeEventForm(Request request) throws IOException {
    if (m_support_reminders && !request.userIsAdministrator())
        ViewState.setBaseFilter(m_name + "_reminders", "_owner_=" + request.getUser().getId(), request);
    View view = request.site.newView(m_name, request);
    // do this before checking showEditButtonForRow so we get the event selected
    Form form = view.newEditForm();
    if (view.getMode() == View.Mode.EDIT_FORM && m_access_policy != null && !request.userIsAdmin() && !m_access_policy.showEditButtonForRow(view, request))
        form.setMode(View.Mode.READ_ONLY_FORM);
    form.write();
}
Also used : Form(db.Form) View(db.View)

Aggregations

Form (db.Form)5 HTMLWriter (web.HTMLWriter)4 NameValuePairs (db.NameValuePairs)2 View (db.View)2 Request (app.Request)1 DBObject (db.DBObject)1 Filter (db.Filter)1 JDBCColumn (db.JDBCColumn)1 JDBCTable (db.JDBCTable)1 ManyToMany (db.ManyToMany)1 OneToMany (db.OneToMany)1 Select (db.Select)1 Mode (db.View.Mode)1 ViewDef (db.ViewDef)1 AccessPolicy (db.access.AccessPolicy)1 RoleAccessPolicy (db.access.RoleAccessPolicy)1 Column (db.column.Column)1 LookupColumn (db.column.LookupColumn)1 BufferedReader (java.io.BufferedReader)1 FileFilter (java.io.FileFilter)1