CÔNG NGHỆ WEB VÀ DỊCH VỤ TRỰC TUYẾN

28 917 0
CÔNG NGHỆ WEB  VÀ DỊCH VỤ TRỰC TUYẾN

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

CÔNG NGHỆ WEB VÀ DỊCH VỤ TRỰC TUYẾN

Viện công nghệ thông tin truyền thông Trường Đại học Bách Khoa Hà Nội ------------------------------------------------ ĐỒ ÁN: CÔNG NGHỆ WEB DỊCH VỤ TRỰC TUYẾN Nhóm 5 Đề tài 9 : Tạo giao diện với Velocity template. Giáo viên hướng dẫn: TS Tạ. Tuấn Anh Thành viên nhóm: Ngô Đức Chí shsv:20070311 – HTTT K52 Nguyễn Đắc Đồng shsv:20070813 – HTTT K52 Nguyễn Thành Công shsv:20070364 – HTTT K52 Lê Văn Đoàn shsv:20070777 – HTTT K52 1 MỤC LỤC 2.Velocity trong portlet .16 2 A. Velocity template 1. Tổng quan - Velocity là 1 template engine có mã nguồn mở được phát triển bởi các lập trình viên trên khắp thế giới. Đây là dự án của Apache Software Foundation. Velocity sử dụng các template dựa trên Java (Java-based) để hợp nhất các mẫu. - 1 template engine là 1 phần mềm được thiết kế để xử lý các web templates các thành phần thông tin để tạo ra các tài liệu web ( web documents) . Mọi velocity project bao gồm 2 thứ : velocity template chương trình Java. - Chúng ta có thể tham chiếu các đối tượng được định nghĩa = mã Java với Velocity template language. Do đó, 1 Velocity template có thể được sử dụng tạo giao diện trong các ứng dụng web. Velocity sẽ giúp hoàn tất việc tách biệt giữa trình bày các layout thực thi các business logic. - 1 veloctiy template là 1 file text có phần mở rộng là .vm , bao gồm các kí tự văn bản thường gặp 1 số kí tự đặc biệt dùng trong velocity. Ví dụ : $name. 2. Velocity template language CÂU LỆNH THAM CHIẾU Dưới đây là 1 câu lệnh VTL: #set ($me = "Velocity") Một câu lệnh VTL bắt đầu với một dấu #. Từ “set” là để chỉ thị. Trong VTL, 1 tham chiếu bắt đầu với một ký tự $. Vì vậy, “$me” là một tham chiếu, hay là 1 biến tham chiếu trong trường hợp này. Biến “$me” được gán giá trị là “Velocity”. Velocity là một chuỗi. Trong VTL một chuỗi có thể kèm theo trong dấu nháy đơn hoặc kép. Một chuỗi trong dấu nháy đơn được được thể hiện trực tiếp trong khi một chuỗi trong dấu nháy kép có thể chứa các biến mà sẽ được thay thế bằng giá trị của chúng khi template được hợp thành. Có 1 cách khác để sử dụng các tham chiếu: $witness.getMessage() Ở đây chúng ta sử dụng một tham chiếu để gọi phương thức của một đối tượng đã được định nghĩa = mã Java đã được thêm vào Velocity context. Công cụ template sẽ in ra một tin nhắn trả về bởi phương thức getMessage () của witness. CÂU ĐIỀU KIỆN 3 Mọi ngôn ngữ kịch bản( dùng để báo cho chương trình cách thực hiện các thủ tục) đều có các câu lệnh điều kiện vì nguyên lý đó đã được xây dựng trong CPU. #if( $ihave > 199 ) <b>Buy iPhone</b> #elseif( $ihave == 199 ) <b>Buy Nexus One</b> #else <b>Play volleyball</b> #end Từ chỉ thị if kết thúc với từ chỉ thị end. Bạn có thể thấy nó, không cần quan tâm chúng ta đang có gì ở đây. LOOPS Trong VTL cũng có lặp. <ul> #foreach( $energy in $cleanEnergies ) <li>$energy</li> #end </ul> Nó sẽ in ra như sau: Solar energy Wind power Hyropower Geothermal energy Directives Từ chỉ thị include cho phép công cụ dùng để viết template import(nạp) vào 1 local file(tệp tin cục bộ). Các nội dung của local file sẽ được thêm vào template ở vị trí mà từ chỉ thị include được định nghĩa. Các nội dung của tệp tin sẽ được template engine hiểu. #include( "snippet.html" ) Chúng ta cũng có từ chỉ thị parse . Nó sẽ truyền cho tệp tin template(template file) 1 đối số. Template engine sẽ phân tích template file trả ra nội dung của nó. Đây là câu lệnh: #parse ("navigation.vm") Câu lệnh này sẽ trả ra the navigation.vm template. Từ chỉ thị stop dừng việc running của template engine. Nó có thể được dùng cho mục đích debug : #stop VELOCIMACROS Các Velocity templates trong Liferay cũng sử dụng Velocity macros để gọi Velocimacros. Một Velocimacro là 1 hàm nhỏ trong VTL. Nó có thể sử dụng để xử lý các xâu. Nó lấy các tham số làm đầu vào in ra text. Nó không trả ra giá trị. A template developer có thể sử dụng từ chỉ thị macro để viết 1 Velocimacro, nó có thể được sử dụng nhiều lần trong 1 Velocity template. 4 #macro (printSwimmingPools $val) #if ($val ) #foreach ($e in $val) <tr><td bgcolor="#0000FF">$e</td></tr> #end #end #end Còn đây là cách làm thế nào để sử dụng Velocimacro trên trong 1 template: #set( $nemoSwimmingPools = ["The Pacific Ocean","The Atlantic Ocean","The Indian Ocean"] ) <table> #printSwimmingPools( $nemoSwimmingPools ) </table> Thường thì các Velocimacros được định nghĩa trong 1 file gọi là VM_global_library.vm (Đây trường hợp dùng trong Liferay). Đồng thời, Liferay sử dụng $ {PORTAL_SRC_HOME}/portal-impl/src/VM_liferay.vm của chính để tạo Velocimacros của nó. Trong Liferay, các thuộc tính của Velocity được thiết lập trong file ${PORTAL_SRC_HOME}/portal-impl/src/portal.properties (Sau khi biên dịch, file portal.properties này sẽ nằm trong file ${AS_ROOT_HOME}/WEB-INF/lib/portal- impl.jar ): velocity.engine.velocimacro.library=VM_global_library.vm,VM_liferay.vm CHÚ THÍCH Đây là 1 điều khác mà bạn sẽ biết về VTL – làm thế nào để thêm các dòng chú thích. ## single line comment. #* multi-line comment. *# Trong 1 Velocity template, các dòng này sẽ được Velocity engine bỏ qua không hiện ra trên portal page. Người dùng sẽ không thấy chúng. Để có thêm thông tin về VTL, bạn có thể tham khảo Velocity User Guide at http://velocity.apache.org/. 5 B. Velocity template trong Liferay I. Velocity Liferay 1. Tại sao Velocity là template mặc định của Liferay - Velocity template là template được mặc định trong Liferay.( Liferay còn có 1 template nữa là Free Maker). Vậy tại sao Liferay không lựa chọn Free Maker làm template mặc định cho mình? Lí do là: • Free Maker chỉ mới được hỗ trợ trong Liferay chưa được kiểm tra kĩ lưỡng. • Các Liferay developers đã quá quen thuộc với Velocity, họ cho rằng “ It is core to Liferay”. Thế nên việc thay đổi là không hề dễ dàng. Tuy nhiên thì, Free Maker cũng có 1 số ưu thế: • Một số người “quyền lực” trong Liferay nhiều developers rất nhiệt tình với Free Maker. • Hầu hết những gì Velocity làm được thì Free Maker cũng làm được. • Free Maker có 1 số ưu điểm so với Velocity. Ví dụ, trong Velocity, có khó khăn khi truy cập vào các thuộc tính tĩnh (static fields), còn trong Free Maker thì không, … thế nên nhiều developers đã lựa chọn Free Maker để tạo source code cho mình.  Rất có thể trong tương lai, Free Maker sẽ thay thế cho Velocity trong Liferay. - Velocity template được sử dụng trong ba vị trí trong mô hình Liferay : • Theme • Portlet • Web content 2. Các Velocity template mặc định trong Liferay Mặc định trong Liferay có 5 file Velocity template được tạo ra khi triển khai 1 theme gồm : init_custom.vm : file này cho phép bạn ghi đè định nghĩa các biến velocity mới. navigation.vm : file này được gọi từ portal_normal.vm cung cấp HTML để tạo các navigation menus. 6 portal_normal.vm : file này điều khiển khung HTML cơ bản của trang mà Liferay sẽ phục vụ. portal_pop_up.vm : file này điều khiển layout của các portal templates dành cho thông báo dạng pop-up. porlet.vm : file này gói các phần của mọi porlet. init_custom.vm Trong file này, bạn có thể khai báo mọi biến sử dụng trong portal_normal.vm . + Khai báo 1 biến velocity mới ( ở trên là $any_custom_name) để sử dụng cho theme. + Có thể ghi đè giá trị của các biến velocity đã có ( như ở trên là $company_name ) nếu bạn có biến cùng tên ở đây. Ví dụ: #set ($theme_name = "palm-tree-publications-theme") #set ($the_title = "Palm Tree Publications Theme") #set ($company_name = "Palm Tree Publications Inc.") #set ($community_name = "Palm Tree Publication Reviewers") #set ($any_custom_name = "This is just a sample custom name") portal_normal.vm Đây là file chính để phục vụ , giống như là main frame của template. Mọi biến mới hoặc đã tồn tại được định nghĩa trong file init_custom.vm có thể được gọi trong file này. Bạn có thể thêm mới hoặc thay đổi các mã HTML hoặc gọi các định nghĩa CSS trong file này hoàn tất thiết kế của bạn. Ví dụ, bạn có thể muốn thay đổi hiển thị nội dung và/hoặc look and feel của các vùng header hoặc footer. Để tùy biến footer , ta thay đổi mã giữa 2 thẻ <footer></footer> , đó là các phần tử HTML5. Nếu cần thêm 1 velocity template mới, như là docroot/_diffs/templates/any_custom_velocity_file.vm => dòng dưới đây sẽ được thêm vào file portal_normal.vm : #parse ("$full_templates_path/any_custom_velocity_file.vm") navigation.vm 7 Navigation template được gọi trong file portal_normal.vm , để hiển thị navigation menu: #if ($has_navigation) #parse ("$full_templates_path/navigation.vm") #end  Thay đổi file navigation.vm để thay đổi hiển thị của navigation menu. porlet.vm Template này xác định làm thế nào 1 porlet chuẩn được đưa ra trên 1 trang portal. được gọi trong portal_normal.vm: $theme.wrapPortlet("portlet.vm", $content_include) Có thể thêm các tính năng khác , như các print help icon, hoặc xóa 1 số icons có sẵn như minimize, maximize hoặc close trong file porlet.vm . Ghi nhớ rằng thay đổi trên sẽ sẽ áp dụng cho tất cả các trang sử dụng theme này. thể xem các Velocity tags thể sử dụng cho theme trong file: ${liferay.portal.src.dir}\util-taglib\src\com\liferay\taglib\util\VelocityTaglib.java Mỗi phương thức trong file này có thể sử dụng trong theme như 1 Velocity tag , phương thức có dạng : $theme.{method.name}. ví dụ như: $theme.iconOptions() $theme.iconMinimize() $theme.iconMaximize() $theme.iconClose() $theme.iconPortlet() $theme.search() 8 portal_pop_up.vm File này có đường dẫn : /docroot/_diffs/templates/portal_pop_up.vm . File này được sử dụng để tùy biến look and feel của các cửa sổ thông báo dạng pop-up. - Đối với các Velocity template trong Liferay, chúng ta có thể: • Thêm 1 template mới để nó được gọi bởi file portal_normal.vm. Mỗi template phụ trách 1 số thành phần nào đó của theme. Nếu muốn thêm 1 số thành phần mới hay thông tin phụ, chỉ việc tạo 1 template mới thêm nó vào file portal_normal.vm hoặc file portal_popup.vm. • Thay đổi các file template đã có. O Thay đổi các giá trị tham số của Velocity trong file init_custom.vm O Thay đổi nội dung trong các template hỗ trợ ví dụ như file navigator.vm portlet.vm O Thêm một portlet trong một template sẽ hiển thị trong theme II. Tạo giao diện với Velocity template 1. Velocity template trong themes 1.1 Tại sao, khi nào dùng Velocity template trong theme Câu hỏi đặt ra là: để tùy chỉnh themes, bạn có thể kéo thả các portlet đặt vào vị trí nào đó mình muốn trong theme, như vậy dễ dàng, nhanh trực quan hơn rất nhiều. Vậy tại sao lại sử dụng Velocity template, phải sửa code , rồi thực thi lại theme… Trả lời: Việc kéo thả các portlet chỉ áp dụng cho trang web hiện tại đang dùng theme đó, chứ không phải áp dụng cho theme, không thể chỉnh sửa thực sự được theme đó. Nếu như 1 portlet cần phải nhúng nhiều lần, mỗi lần tạo 1 trang web bạn lại phải kéo thả portlet đó vào trong theme của trang web đó. Sẽ rất mất công làm đi làm lại. Bằng việc sử Velocity template, bạn có thể sửa theme thực sự, theme sau khi được chỉnh sửa đó có thể áp dụng cho mọi trang web sau này sử dụng themes đó. Việc nhúng portlet chỉ làm 1 lần mà vẫn được áp dụng nhiều lần, bất kì khi nào sử dụng themes đã chỉnh sửa.  Vậy, chúng ta sử dụng Velocity template tùy biến theme khi: 9 Phải sử dụng 1 theme nào đó nhiều lần, trong theme đó có 1 số portlet phải dùng lại nhiều lần => sử dụng Velocity template để nhúng “cố định” các portlet cần dùng vào theme đó. 1.2 Áp dụng Velocity template trong theme Chúng ta có thể tùy biến theme thông qua Velocity template. Sử dụng các Velocity template đã có hoặc tạo template mới để: - Thêm vào 1 thành phần giao diện thông qua 1 template. - Nhúng 1 porlet vào trong theme. - Sử dụng các Liferay service qua Velocity template. 1.2.1 Thêm 1 thành phần giao diện vào theme Chúng ta có thể thêm nhiều thành phần giao diện vào trong theme thông qua 1 template. Ví như 1 ô tìm kiếm, hay 1 danh sách đường link tới các trang khác với tùy chỉnh hiển thị bằng CSS, … Chúng ta đi vào ví dụ cụ thể: Ở đây chúng ta thêm vào theme : 1 ô tìm kiếm 1 danh sách các đường link ở cuối trang. a. Đầu tiên chúng ta tạo triển khai 1 theme nào đó. Ở đây tạo triển khai theme Noir: • Chạy lệnh create.bat noir Noir sau khi từ màn hình cmd đã vào đường dẫn PLUGINS_SDK_HOME}/themes/ . Câu lệnh này sẽ tạo một theme có tên là Noir. Trong thư mục theme, thư mục con noir-theme sẽ được tạo. • Sao chép các thư mục css, images, js templates vào folder _diffs theo đường dẫn ${PLUGINS_SDK_HOME}/themes/noir-theme/docroot/_diffs/ • Chạy lệnh ant deploy trong đường dẫn $ {PLUGINS_SDK_HOME}/themes/noir-theme/  Một theme Noir đã được tạo triển khai (deploy). b. Chúng ta có thể thêm 1 ô tìm kiếm vào theme này 1 cách rất đơn giản như sau: Thêm đoạn mã sau vào template portal_normal.vm : Trong đoạn code trên: • $theme là biến tham chiếu đến đối tượng theme, là đối tượng của lớp com.liferay.portal.model.Theme • journalContentSearch() là 1 phương thức của đối tượng theme Đoạn mã trên được viết với một thẻ <div> . Nó sẽ tạo ra một hộp tìm kiếm nội dung web. Bạn có thể nhập vào một từ khóa trong hộp đó ấn phím Enter để tìm kiếm nội dung web theo từ khóa. 10 <div class="search"> $theme.journalContentSearch() </div> [...]... 18 Web content template cũng giống như portal_normal.vm template Điểm khác biệt là portal_normal.vm template áp dụng cho toàn bộ trang portal, còn Web content template chỉ áp dụng cho các khu vực trong Web Content Display portlet 19 3.1 Tạo sử dụng Velocity template cho web content Ở đây, chúng ta cấu trúc cho web content với 1 Velocity template như sau: 1 Đăng nhập vào Liferay 2 Thêm Structure vào... template content code vào trong hộp thoại - Lưu lại 4 Thêm Web Content - Chọn WEEV-TEMPLATE - Với css description , chọn HTML - Publish => việc tạo web content đã hoàn thành 5 Sử dụng web content - Tạo thêm 1 trang Content-Page ở Homepage của Liferay - Add thêm portlet Web Content Display vào trang vừa tạo - Trong phần config của portlet vừa thêm, chọn WEEV-ARTICLE rồi lưu lại cuối cùng là kết... đến người dung ( nếu dịch vụ mail được cài đặt đúng) Phần chính của email sẽ được phân chia dựa theo ${PLUGINS_SDK_HOME}/portlets/vmail-portlet/docroot /WEB- INF/src/com/sample/jsp/portlet/etemplate.vm của Velocity template 3 Velocity template trong web content Velocity templates cũng được sử dụng trong quản lí nội dung web trong Liferay Web content khi được hiển thị trong portlet Web Content Display... việc hiển thị trang web không được đẹp, vậy nên ta có thể tùy chỉnh, bỏ đi đường bao ngoài của portlet vừa nhúng vào theme 3 Click vào biểu tượng thiết lập cấu hình trên portlet Embed Click vào Look and Feel 4 Bỏ dấu tích ở ô Show Borders click vào nút Save 5 Đóng cửa sổ Look and Feel tải lại trang- các đường bo ngoài của portlet đã được bỏ đi, chỉnh sửa cho portlet được nhúng đã hoàn chỉnh Bạn... $page.getName($locale) | #end Copy đoạn trích code paste ở chỗ phù hợp trong file portal_normal.vm Khi chạy, nó sẽ in ra tên của tất cả những public web (các trang với cho phép mọi người đều có thể truy nhâp) trong tập các web Tên của các trang web sẽ được phân định bằng 1 thanh đứng Velocity không có chức năng xử lí các trường hợp ngoại lệ trong khi nhiều dịch vụ Liferay khác cũng bỏ qua các ngoại lệ này... com.sample.jsp.portlet.Ecompany được khởi tạo được đặt trong đối tượng java.util.Map Đối tượng java.util.Map chuỗi kí tự mẫu được truyền vào Velocity engine để hoàn tất mọi việc Chuỗi văn bản mẫu được gửi tới người dùng chính là phần body text của email Tên địa chỉ hòm thư của người dùng được lấy từ giao điện người dùng Sau khi thêm Vmail portlet vào 1 trang, bạn sẽ thấy Sau khi bạn gõ username địa chỉ email, click... gọn hết những dịch vụ cơ bản với 1 proxy, nó sẽ bắt các ngoại lệ trả lại giá trị null 2 Velocity trong portlet Tạo 1 portlet với Velocity sử dụng nó Có rất nhiều cách sử dụng Velocity templates Ví dụ, ta có thể sử dụng 1 Velocity template để tạo body của 1 email Ta đặt phần body của email trong 1 templates thay cho việc tạo hard-coding (cốt cứng) trong Java Ta cũng đặt tên người gửi địa chỉ email... -Chọn phần Configuration o Chọn thẻ sharing, tìm id của portlet Như trong hình vẽ, portletid của portlet Hi là : hi_War_hiportlet_INSTANCE_18qD 13 Sau khi đã nhúng portlet xong, ta xem kết quả: Thực thi lại theme Noir tải lại trang tin Portlet được nhúng sẽ hiển thị với các đường bao ngoài đôi khi đường bao ngoài sẽ làm cho việc hiển thị trang web không được đẹp, vậy nên ta có thể tùy chỉnh,... $nav_item.getTarget()>$nav_item.getName() • Chúng ta thêm một vài đoạn mã CSS vào trong file custom.css theo đường link sau $ {PLUGINS_SDK_HOME}/themes/noir-theme/docroot/_diff/css/custom.css : #end #footer { background: url( /images/calendar/day_heading.png) no-repeat; color: #739ABE; height: 106px; position: relative; đây width:quả: là kết 962px; } 11 1.2.2 Nhúng 1 portlet sẵn có vào trong theme Đôi khi việc chúng... Hiển nhiên là bạn có thể nhúng nhiều portlet vào cùng một theme 1.2.3 Sử dụng Liferay services Có nhiều tính năng mạnh mẽ chúng ta có thể sử dụng trong Velocity templates, điển hình là những dịch vụ Liferay Những dịch vụ cuả Liferay có thể được sử dụng để truy 15 cập nhiều tài nguyên từ cổng kết nối Ví dụ, ta sẽ thử sử dụng LayoutLocalService Dưới đây là code : #set($layoutService=serviceLocator.findService("com.liferay.portal.service.LayoutL

Ngày đăng: 25/04/2013, 19:04

Hình ảnh liên quan

Để dễ hình dung, ta có ví dụ sau: -Portlet Hi   đã được tạo sẵn. -Kéo thả vào 1 trang nào đó - CÔNG NGHỆ WEB  VÀ DỊCH VỤ TRỰC TUYẾN

d.

ễ hình dung, ta có ví dụ sau: -Portlet Hi đã được tạo sẵn. -Kéo thả vào 1 trang nào đó Xem tại trang 13 của tài liệu.
3. Click vào biểu tượng thiết lập cấu hình trên portlet Embed. Click vào Look and Feel. - CÔNG NGHỆ WEB  VÀ DỊCH VỤ TRỰC TUYẾN

3..

Click vào biểu tượng thiết lập cấu hình trên portlet Embed. Click vào Look and Feel Xem tại trang 14 của tài liệu.
Template được định nghĩa với các bảng HTML. Các tham chiếu Velocity được sử dụng để thiết lập động các giá trị - CÔNG NGHỆ WEB  VÀ DỊCH VỤ TRỰC TUYẾN

emplate.

được định nghĩa với các bảng HTML. Các tham chiếu Velocity được sử dụng để thiết lập động các giá trị Xem tại trang 21 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan