วันพุธที่ 25 สิงหาคม พ.ศ. 2553

การเพิ่มข้อความ successMessage ให้แสดงข้อความแจ้งว่าทำงานสำเร็จแล้ว

โดยปกติเมื่อมีการทำงานสำเร็จแล้ว เช่น ทำการอัพเดตงานสำเร็จ หรือทำการสร้างงานสำเร็จ ควรจะมีการแจ้งผลของงาน ว่าสำเร็จหรือไม่ ดังรูป


ทำได้โดยการเพิ่มโค้ดดังนี้ ใน service ที่มีการทำงาน

<property-to-field resource="DefaultMessages" property="service.default.message" field="successMessage"/>

เช่นต้องการสร้างข้อความแสดงผลของการ update Project Phase จึงเพิ่มโค้ดในไฟล์ ProjectsServices.xml เป็นต้น

วันพฤหัสบดีที่ 19 สิงหาคม พ.ศ. 2553

การสร้าง List โดยใช้ Dojo

ในการสร้างฟอร์มเพื่อช่วยคัดกรองรายงานในโมดูล report ของ imas จะมีขั้นตอนดังบทความ การเพิ่ม filter ในการแสดงรายงานโดยใช้ dojo และ การทำ lookup ให้กับการเลือกดูฟอร์ม โดยใช้ dojo ดังนั้น ในบทความนี้จะแสดงเฉพาะในส่วนของการสร้าง List โดยใช้ Dojo มีขั้นตอนดังนี้

1. ใน form ทำการสร้าง drop down list ดังนี้

<select id="ProductTypeInventory" name="ProductTypeInventory" dojoType="dijit.form.ComboBox" autocomplete="false" >
                        <option value="">${uiLabelMap.CommonSelect}</option>
                            <#list productTypeList as productTypeListMap>
                                <option value="${productTypeListMap.productTypeId}">${productTypeListMap.description}</option>
                             </#list>
</select>

2. สร้าง screen ดังนี้

<screen name="ProductSummaryDialog">
        <section>
            <actions>
                <property-map resource="iMAS-ReportUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="iMAS-AccountingUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="CommonUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="iMAS-InventoryUiLabels" map-name="uiLabelMap" global="true"/>
                <set field="headerItem" value="ProductSummaryDialog"/>
                <entity-condition list="productTypeList" entity-name="ProductType">
                </entity-condition>
            </actions>
            <widgets>
                    <platform-specific>
                        <html>
                            <html-template location="component://imas-report/webapp/imas-report/report/inventory/page/ProductSummaryDialog.ftl"/>
                        </html>
                    </platform-specific>
            </widgets>
        </section>
    </screen>

อธิบายโค้ด
กำหนดว่าจะดึงข้อมูลจาก entity ไหน โดยใช้คำสั่ง
<entity-condition list="productTypeList" entity-name="ProductType"></entity-condition>
จากตัวอย่าง จะเป็นการเลือกข้อมูลจาก entity ชื่อ ProductType

จะได้ฟอร์มที่สามารถเลือกข้อมูลจาก drop down list ของ ProductType ได้ดังนี้


การทำ lookup ให้กับการเลือกดูฟอร์ม โดยใช้ dojo

จากบทความ การเพิ่ม filter ในการแสดงรายงานโดยใช้ dojo ก่อนหน้านี้ ได้พูดถึงการอำนวยความสะดวกให้แก่ผู้ใช้งานโปรแกรม โดยการใช้ calendar ของ dojo ในการเลือกวันที่ ส่วนในบทความนี้จะพูดถึงการใช้ dojo ดึงเอา Lookup ของ OFBiz มาแสดงเป็น popup แบบ ajax ที่มีลักษณะดังรูป


มีขั้นตอนดังนี้

1. เพิ่มฟิลด์ที่ลงในไฟล์ ARAccruedInvoiceDialog.ftl ดังนี้

<input name="partyIdFrom" size="25" id="findCommEvents_partyIdFrom" type="text">
            <a href="javascript:call_fieldlookup2(document.ARCardForm.partyIdFrom,'LookupPartyName');">
                <img src="/images/fieldlookup.gif" alt="Lookup" border="0" height="14" width="15">
            </a>

อธิบายโค้ด
สร้าง input ชนิด textbox เพิ่มเข้าไปในฟอร์ม และสร้าง link โดยเรียกใช้ function ของ java script ชื่อ call_fieldlookup2 ซึ่งต้องส่ง parameter ดังนี้

call_fieldlookup2(target, viewName)

2. ทำการ include controller ของ module ที่มี lookup เข้าไปใน controller ของ component ที่ทำงานอยู่ เช่น จะเรียกใช้ lookup ที่มีการเรียก party id ใน component report ต้องทำการ include controller ของ party มา ดังนี้

<include location="component://imas-partymgr/webapp/partymgr/WEB-INF/controller.xml"/>

ผลที่ได้ จะสามารถใช้งาน lookup ได้