Versions Compared

Key

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

...

ไฟล์โครงการที่สร้างจะถูกวางไว้ที่ไดเรกทอรีที่ระบุในพรอมต์คำสั่งเช่น: เรียกใช้คำสั่งใน "C:\" จะวางไฟล์โครงการไว้ภายในไดรฟ์ C

To get the correct jogetDependencyVersion in order to build a proper project file with correct dependencies, check the file name specified in the ในการรับ jogetDependencyVersion ที่ถูกต้อง ต้องสร้างไฟล์โปรเจ็กต์ที่เหมาะสมโดยมีการพึ่งพาที่ถูกต้องให้ตรวจสอบชื่อไฟล์ที่ระบุใน ".m2" folder under directory of, eg:ภายใต้โฟลเดอร์ เช่น

C:\Users\(your computer name)\.m2\repository\org\joget\wflow-core\"5.0.11"

...

Code Block
/joget_src/wflow-plugin-archetype/create-plugin.sh packageName pluginFolderName jogetDependencyVersion

-  Sample Screenshot in ภาพตัวอย่างหน้าจอใน Mac:                                                                                                                                        
 

c. Open/Import the maven project with your favorite IDE. Joget team recommends  เปิด / นำเข้าโครงการ Maven ด้วย IDE ที่คุณชื่นชอบ ทีม Joget แนะนำ NetBeans IDE.  

7.

...

เริ่มโค้ด!

a. Extending the abstract class of a plugin type

Refer to the document of the plugin type listed in อ้างถึงเอกสารประเภทปลั๊กอินที่ระบุไว้ใน Plugin Types.  Find the ค้นหา abstract class and interface that need to be extended and implemented by your plugin.และ interface ที่ต้องการขยายและดำเนินการโดยปลั๊กอินของคุณ

ตัวอย่าง: เพื่อพัฒนา Example: To develop a Userview Menu plugin, the plugin class need to extends the org.joget.apps.userview.model.UserviewMenu abstract class.

...

A plugin will have to implements the abstract method of Plugin Base Abstract Class and Interface and also the abstract method of the individual abstract class and interface for the plugin type. 

Exampleตัวอย่าง: To develop a Userview Menu plugin, the following methods have to be implemented by the plugin. Please refer to the plugin documents for the details of each methods.

...

  • Create a property file with the plugin class name in "[Plugin project directory]/src/main/resources/message" directory. 

    Exampleตัวอย่าง: For a plugin named "GanttChartMenu", we need to create a "GanttChartMenu.properties" file under "[Plugin project directory]/src/main/resources/message" directory. 

    Sample content for GanttChartMenu.properties file

    Code Block
    languagejava
    org.joget.sample.GanttChartMenu.pluginLabel=Gantt Chart 
    org.joget.sample.GanttChartMenu.pluginDesc=To display form data in Gantt Chart layout 
    userview.ganttChart.label.title=Title 
    userview.ganttChart.label.week=Week
  • Use getMessage(String key, String pluginName, String translationPath) of PluginManager or AppPluginUtil to retrieve i18n label.

    Example: Use the getMessage method in getLabel and getDescription methods to return i18n label and description.

    Code Block
    languagejava
    public String getLabel() { 
        return AppPluginUtil.getMessage("org.joget.sample.GanttChartMenu.pluginLabel", getClassName(), "message/GanttChartMenu"); 
    } 
    public String getDescription() { 
        return AppPluginUtil.getMessage("org.joget.sample.GanttChartMenu.pluginDesc", getClassName(), "message/GanttChartMenu"); 
    }
  • Pass a translation file path to readPluginResource(String pluginName, String resourceUrl, Object[] arguments, boolean removeNewLines, String translationFileName) method of AppUtil to provide the plugin properties option with i18n label.  We can use "@@message.key@@" in the JSON of ตัวเลือกคุณสมบัติปลั๊กอิน.

    Example: For property options of a GanttChartMenu plugin, the following shows the sample code implementation of getPropertyOptions method and the GanttChartMenu.json file

    Code Block
    languagejava
    public String getPropertyOptions() { 
        return AppUtil.readPluginResource(getClassName(), "/properties/GanttChartMenu.json", null, true, "message/GanttChartMenu"); 
    }
    Code Block
    languagejs
    [{ 
        title : '@@userview.ganttChart.edit@@', 
        properties : [{ 
            name : 'id', 
            label : 'Id', 
            type : 'hidden' 
        }, 
        { 
            name : 'customId', 
            label : '@@userview.ganttChart.customId@@', 
            type : 'textfield', 
            regex_validation : '^[a-zA-Z0-9_]+$', 
            validation_message : '@@userview.ganttChart.invalidId@@' 
        }, 
        { 
            name : 'label', 
            label : '@@userview.ganttChart.label@@', 
            type : 'textfield', 
            required : 'True', 
            value : '@@userview.ganttChart.label.value@@' 
        }] 
    }]
  • Pass a translation file path to getPluginFreeMarkerTemplate(Map data, final String pluginName, final String templatePath, String translationPath) method of PluginManager whenever retrieving a HTML template. Once we passed a translation file path, we can use "@@message.key@@" in the freemarker template to retrieve i18n label.

    Example: For getRenderPage method of a GanttChartMenu plugin, the following show the sample code implementation of getRenderPage method and the "GanttChartMenu.ftl" FreeMarker template. 

    Code Block
    languagejava
        public String getRenderPage() { 
            Map model = new HashMap(); 
            model.put("request", getRequestParameters()); 
            model.put("element", this); 
             
            PluginManager pluginManager = (PluginManager)AppUtil.getApplicationContext().getBean("pluginManager"); 
            String content = pluginManager.getPluginFreeMarkerTemplate(model, getClasstName(), "/templates/GanttChartMenu.ftl", "message/GanttChartMenu"); 
            return content; 
        }
    Code Block
    languagexml
    <div> 
        <h1>@@userview.ganttChart.label.title@@ : ${element.properties.title!}</h1> 
    </div>
  • Postfix the plugin class name with an underscore and language code to create a message resource bundle property file for other language. 

...