Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Form

  1. Add a Hidden Field to the first form, set the ID to "id" and add in the following value into Default Value. The first form meant here is the one that it mapped to the Run Process entity in the process activity mapping.

    Thai

    เพิ่มเขตข้อมูลที่ซ่อนอยู่ในแบบฟอร์มแรกตั้งค่า ID เป็น "id" และเพิ่มค่าต่อไปนี้เป็นค่าเริ่มต้น รูปแบบแรกหมายถึงที่นี่เป็นรูปแบบที่แมปกับเอนทิตี Run Process ในการแมปกิจกรรมกระบวนการ

    Code Block
    #requestParam.recordId#

    This is so that, if there's existing record being loaded, when the new process instance is created, the process instance will refer to this very record subsequently.

    Thai

    นี่คือเพื่อที่ว่าถ้ามีการโหลดเร็กคอร์ดที่มีอยู่เมื่ออินสแตนซ์กระบวนการใหม่ถูกสร้างขึ้นอินสแตนซ์กระบวนการจะอ้างถึงเรกคอร์ดที่มากนี้ในภายหลัง

  2. In the same form, create a new section, leave it empty. Edit the section, set the Load Binder to Bean Shell Form Binder. Insert the following code into it.

    Thai

    ในฟอร์มเดียวกันให้สร้างหัวข้อใหม่เว้นว่างไว้ แก้ไขส่วนตั้งค่าเครื่องผูกการโหลดเป็น Bean Shell Form Binder ใส่รหัสต่อไปนี้ลงไป

    Code Block
    languagejava
    linenumberstrue
    import org.joget.apps.form.lib.SaveAsDraftButton;
    import org.joget.apps.form.lib.CustomHTML;
    import org.joget.apps.form.model.Column;
    import org.joget.apps.form.model.Element;
    import org.joget.apps.form.model.FormAction;
    import org.joget.apps.form.model.FormData;
    import org.joget.apps.form.model.Section;
    import org.joget.apps.form.service.FormUtil;
    import java.util.ArrayList;
    import java.util.Collection;
    
    Collection formActions = new ArrayList();
    
    String saveButtonLabel = "Save As Draft";
    Element saveButton = new SaveAsDraftButton();
    saveButton.setProperty(FormUtil.PROPERTY_ID, "saveAsDraft");
    saveButton.setProperty("label", saveButtonLabel);
    
    formActions.add(saveButton);
    Section section = element;
    ArrayList columns = (ArrayList) section.getChildren();
    Column column = columns.get(0);
    column.setProperty("horizontal", "true");
    column.setChildren(formActions);
    
    //add a custom html to fix the layout issue
    Element html = new CustomHTML();
    String script = "<script>$(document).ready(function(){";
    script += "$(\"#"+section.getPropertyString("id")+"\").find(\".form-cell\").prependTo(\"#section-actions .form-column\");";
    script += "$(\"#"+section.getPropertyString("id")+"\").remove();";
    script += "});</script>";
    
    html.setProperty("id", "button_layout_fixes");
    html.setProperty("label", "");
    html.setProperty("value", script);
    
    formActions.add(html);
    
    return null;

Userview

  1. In the Userview, add a Run Process, name the Custom ID to something meaningful, e.g. "startApplication". Set the label appropriately, e.g. "Start Application".

    Thai

    ใน Userview ให้เพิ่มกระบวนการเรียกใช้ตั้งชื่อรหัสที่กำหนดเองให้กับสิ่งที่มีความหมายเช่น "startApplication" ตั้งค่าป้ายกำกับอย่างเหมาะสมเช่น "เริ่มแอปพลิเคชัน"

    Info
    titleWhy are we doing this?

    This is so that user can start a new process instance.

    Thai

    นี่คือเพื่อให้ผู้ใช้สามารถเริ่มต้นอินสแตนซ์กระบวนการใหม่

  2. Add a List/CRUD into the Userview, edit the list in Datalist Builder, add in a Hyperlink action. Set the label appropriately, e.g. "Application Draft".

    Thai

    เพิ่มรายการ / CRUD ลงใน Userview แก้ไขรายการใน Datalist Builder เพิ่มในแอ็คชันไฮเปอร์ลิงก์ ตั้งค่าป้ายกำกับอย่างเหมาะสมเช่น "ร่างแอปพลิเคชัน"


    1. Set Hyperlink to "startApplication" (the same value that we set in Custom ID in Step 1 earlier).

      Thai

      ตั้งค่าไฮเปอร์ลิงก์เป็น "startApplication" (ค่าเดียวกับที่เราตั้งไว้ใน Custom ID ในขั้นตอนที่ 1 ก่อนหน้า)

    2. In Hyperlink Parameters, add a new row - parameter name as "recordId", column name as "id".

      Thai

      ในพารามิเตอร์การเชื่อมโยงหลายมิติให้เพิ่มแถวใหม่ - ชื่อพารามิเตอร์เป็น "recordId", ชื่อคอลัมน์เป็น "id"

    3. Set the label to "Edit".

      Thai

      ตั้งป้ายกำกับเป็น "แก้ไข"

    Info
    titleWhy are we doing this?

    This is so that user can access the drafts applications that they have already started.

    Thai

    นี่คือเพื่อให้ผู้ใช้สามารถเข้าถึงแอปพลิเคชันแบบร่างที่พวกเขาได้เริ่มแล้ว

    Info
    titleWhat's next?

    The list may be showing all the drafts started by all other users. You may want to edit the list in Datalist Builder to only show entries from the person that initiated it. See Advanced Form Data Binder on how to filter the list.

    Thai

    รายการอาจแสดงแบบร่างทั้งหมดที่เริ่มต้นโดยผู้ใช้รายอื่นทั้งหมด คุณอาจต้องการแก้ไขรายการในตัวสร้างดาต้าลิสต์เพื่อแสดงเฉพาะรายการจากบุคคลที่เริ่มต้น ดู Advanced Form Data Binder เกี่ยวกับวิธีกรองรายการ

Redirection

To enable redirection upon clicking on "Save as Draft" button, add the following lines of codes below into the Bean Shell Form Binder between line 30 to 31


Code Block
languagejava
script += "$(\"#"+section.getPropertyString("id")+"\").remove();";

//check whether it is save as draft and redirect to inbox after submission
FormData fd = formData;
if (fd.getRequestParameter("saveAsDraft") != null) {
    script += "window.location.href=\'inbox\'";
}
//inbox is the Custom ID of an Inbox menu in the Userview Builder

script += "});</script>";


Related Elements

Thai

องค์ประกอบที่เกี่ยวข้อง