วันนี้เราจะมาเพิ่ม Property เข้าไปใน User Profiles กันครับ ซึ่งการที่เราสามารถเพิ่ม Property เข้าไปใน User Profile ได้เพิ่มเติมนั้น จะมีประโยชน์มากนะครับ เช่น
- กรณีที่เราต้องการ Sync ข้อมูลจาก Ldap มาเก็บไว้ที่ Alfresco เราก็สามารถเพิ่ม Property และทำการ Sync ข้อมูลเพิ่มเติมได้นะครับ
- เราต้องการกำหนดให้ User บางคนมีสิทธิ์ในการทำงานเพิ่มเติม เราก็สามารถทำการเพิ่ม Property และทำการกำหนดให้ User นั้นๆ มีสิทธิ์เพิ่มเติมได้นนะครับ
- บางครั้งต้องการเก็บข้อมูลบางอย่างที่จะใช้ใน Workflow เช่น ลายเซ็น ซึ่งก็คงจำเป็นที่จะต้องเพิ่ม Property และทำการกำหนดลายเซ็นของแต่ละคนนะครับ
สำหรับ User Profile นั้นจะเข้าไปดูได้จากการคลิกที่ มุมด้านบนขวานะครับ คลิกที่ชื่อของ User ที่ Login เข้าสู่ระบบ จากนั้นคลิกที่ My Profile นะครับ
จะปรากฏหน้าจอดังรูปนะครับ ด้านล่างนะครับ ให้คลิกที่ปุ่ม Edit Profile เพื่อดูข้อมูลทั้งหมดนะครับ
จากรูปจะแสดงข้อมูล 2 ส่วนนะครับ คือ Contact Information และ Company Details และเราสามารถเพิ่ม Property เองได้ โดยมีวิธีการ ดังต่อไปนี้นะครับ
การเพิ่ม Property เข้าไปที่ User Profile ขั้นแรกเราต้องทำการสร้าง Model กันก่อนนะครับ (ได้ Code มาจาก Jeff Pots นะครับ) โดยเริ่มจากสร้างไฟล์ Context.xml นะครับ และชี้ไปที่ scPeopleModel.xml
ที่ไฟล์ scPeopleModel.xml ให้ทำการสร้าง Field ขึ้นมานะครับ จากตัวอย่างจะเป็นการสร้าง Aspect ชื่อ scp:person มี property ชื่อ scp:shirtSize, scp:significantOther, scp:birthDate, scp:likesNeilDiamond ดังรูปนะครับ
ทำการ Config ที่ไฟล์ custom-slingshort-application-context.xml โดยการเพิ่ม Bean เข้าไปนะครับ เพื่อทำการ Override Class ของ User Profile ดังรูปนะครับ
ทำการเพิ่ม Config เข้าไปที่ share-config-custom.xml โดย เป็นการบอก Alfresco ให้ใช้ Bean ID ที่สร้างขึ้นมาด้วย ดังรูปด้านล่าง
ทำการ Replace ไฟล์ userprofile.get.head.ftl และ userprofile.get.html.ftl โดยที่ไฟล์นี้จะเป็นการ render json ที่มีการเพิ่ม Field เรียบร้อยแล้ว
สำหรับไฟล์ userprofile.get.head.ftl เป็นไฟล์ที่กำหนดว่า จะ Include ไฟล์อะไรเข้ามาบ้าง ในตัวอย่างจะเป็นการเพิ่ม sc-profile.js เข้ามา
ในส่วนของไฟล์ userprofile.get.html.ftl จะเป็นไฟล์ที่เอาไว้ Show การแสดงผลนะครับ
ในตัวอย่างจะมีไฟล์ .class เพิ่มเติมด้วยนะครับ ชื่อว่า SomeCoUserFactory.class ใน class จะมี override method ชื่อ constructUser และ saveUserทำการเพิ่ม Code ในส่วนของ Property ใหม่เข้าไปนะครับ (ตามตัวอย่างได้เลยครับ) จากนั้นก็ Copy ไฟล์ class ไปไว้ที่
บทความนี้ผมยัง Research ไม่เสร็จนะครับ เพราะว่าตอนนี้ Alfresco มองเห็น Class ที่ modify ใหม่แล้วเพียงแต่ว่าตอนนี้ยัง error json อยู่นะครับ และในหน้า Info ยังไม่ขึ้นนะครับ (ต้องเอา .ftl ออกไปจึงมองเห็นเป็นปกติ) เอาไว้ทำต่อเมื่อมีเวลานะครับ