Subversion-Projekte lars-tiefland.prado

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<com:TContent ID="Main">
2
 
3
<h1>Menggunakan Tema dan Skin</h1>
4
 
5
<p>
6
PRADO memiliki dukungan dasar untuk <a href="http://www.pradosoft.com/demos/quickstart/?page=Advanced.Themes">tema</a>. Dengan menggunakan tema, kita dapat memisahkan logika dan penyajian secara lebih baik, dan kita juga bisa mengubah penampilan keseluruhan pada sistem blog kita jauh lebih mudah.
7
</p>
8
 
9
<h2>Membuat Tema</h2>
10
 
11
<p>
12
Pertama kita buat direktori baru bernama <tt>themes</tt>. Ini adalah direktori leluhur bagi semua tema terkait aplikasi PRADO tertentu. Setiap subdirektori di bawah direktori ini yang nama temanya adalah nama subdirektori.
13
</p>
14
 
15
<p>
16
Untuk membuat tema bernama <tt>Basic</tt>, kita membuat subdirektori <tt>theme/Basic</tt>. Di bawah direktori ini, kita dapat menempatkan file stylesheet dependen-tema, file Javascript, gambar, dan file skin.
17
</p>
18
 
19
<com:InfoBox>
20
Direktori <tt>themes</tt> harus bisa diakses dari Web, seperti halnya direktori <tt>assets</tt>. Jangan menempatkan file data sensitif di bawah direktori ini. Anda bisa mengubah nama atau lokasi dari direktori ini dengan mengkonfigurasi modul <a href="http://www.pradosoft.com/docs/classdoc/TThemeManager">TThemeManager</a> dalam konfigurasi aplikasi.
21
</com:InfoBox>
22
 
23
 
24
<h3>Membuat File Stylesheet</h2>
25
 
26
<p>
27
Di bawah direktori <tt>themes/Basic</tt>, kita membuat sebuah file CSS stylesheet bernama <tt>style.css</tt>. ketika sebuah halaman menggunakan tema ini, PRADO secara otomatis akan mengimpor stylesheet ini ke halaman. Hal yang sama terjadi untuk file Javascript.
28
</p>
29
 
30
<p>
31
File CSS ditampilkan seperti berikut.
32
</p>
33
 
34
<com:TTextHighlighter CssClass="source">
35
body {
36
	font-family: verdana, 'trebuchet ms', sans-serif;
37
	font-size: 10pt;
38
	background: white;
39
}
40
#page {
41
	margin: 0 auto 0 auto;
42
	width: 600px;
43
}
44
#footer {
45
	text-align: center;
46
	margin-top: 10px;
47
	padding: 10px;
48
	border-top: 1px solid silver;
49
}
50
.post-box {
51
	margin-bottom: 10px;
52
	padding: 5px;
53
}
54
.post-box h3 {
55
	padding: 5px;
56
	font-size: 13pt;
57
	background: lightgray;
58
}
59
.post-box a {
60
	color: black;
61
	text-decoration: none;
62
}
63
.post-box a:hover {
64
	color: red;
65
}
66
</com:TTextHighlighter>
67
 
68
 
69
<h3>Membuat File Skin</h2>
70
 
71
<p>
72
Kita menggunakan skin untuk menginisialisasi properti kontrol PRADO. Skin disimpan sebagai file skin (nama berakhiran <tt>.skin</tt>) di bawah direktori tema. Setiap file skin bisa berisi multipel skin untuk satu atau beberapa tipe kontrol.
73
</p>
74
 
75
<p>
76
Sebagai pengujian, kita akan mencoba membuat sebuah skin yang mengubah warna latar belakang link tombol dalam footer halaman. Kita membuat sebuah file bernama <tt>button.skin</tt> di bawah direktori tema <tt>themes/Basic</tt>.
77
</p>
78
 
79
<com:TTextHighlighter CssClass="source" Language="prado">
80
&lt;com:THyperLink SkinID="MainMenu" BackColor="lightgreen" />
81
</com:TTextHighlighter>
82
 
83
<p>
84
File skin <tt>button.skin</tt> hanya berisi satu skin untuk kontrol <tt>THyperLink</tt> yang properti <tt>SkinID</tt>-nya adalah <tt>MainMenu</tt>. Skin menyetel warna latar belakang kontrol ke hijau-terang.
85
</p>
86
 
87
<p>
88
Sejalan dengan itu, kita perlu memodifikasi <tt>protected/common/MainLayout.tpl</tt> agar link tombol dalam footer menggunakan <tt>MainMenu</tt> sebagai <tt>SkinID</tt>-nya.
89
</p>
90
<com:TTextHighlighter CssClass="source" Language="prado">
91
......
92
<div id="footer">
93
......
94
&lt;com:THyperLink Text="Home" SkinID="MainMenu"
95
	NavigateUrl="&lt;%= $this->Service->DefaultPageUrl %>" />
96
 
97
&lt;com:THyperLink Text="New Post" SkinID="MainMenu"
98
	NavigateUrl="&lt;%= $this->Service->constructUrl('posts.NewPost') %>"
99
	Visible="&lt;%= !$this->User->IsGuest %>" />
100
......
101
</div>
102
......
103
</com:TTextHighlighter>
104
 
105
<com:InfoBox>
106
Sintaks untuk file skin sangat mirip dengan template PRADO. Setiap tag <tt>&lt;com:&gt;</tt> mendefinisikan sebuah skin untuk tipe kontrol tertentu. PRADO secara otomatis mengumpulkan seluruh file skin dalam sebuah tema dan menerapkannya ketika halaman bertema sedang disajikan.
107
</com:InfoBox>
108
 
109
 
110
<h2>Menggunakan Tema</h2>
111
 
112
<p>
113
Untuk menggunakan tema yang baru kita buat, kita memodifikasi konfigurasi aplikasi seperti berikut. Seperti kita lihat, properti <tt>Theme</tt> untuk semua halaman disetel sebagai <tt>Basic</tt>, nama tema yang baru saja kita buat.
114
</p>
115
 
116
<com:TTextHighlighter CssClass="source" Language="xml">
117
......
118
  <services>
119
    <service id="page" class="TPageService" DefaultPage="posts.ListPost">
120
      <pages MasterClass="Application.layouts.MainLayout" Theme="Basic" />
121
    </service>
122
  </services>
123
......
124
</com:TTextHighlighter>
125
 
126
<com:InfoBox>
127
Dimungkinkan untuk menetapkan tema berbeda untuk halaman yang berbeda, dan ini dapat dikerjakan baik dalam konfigurasi aplikasi/halaman ataupun secara programatis (perhatikan <tt>Theme</tt> adalah properti halaman). Untuk yan gterakhir, ia harus dikerjakan dalam metode <tt>onPreInit()</tt> pada halaman karena PRADO menerapkan tema ke halaman sebelumnya dalam masa hidup halaman.
128
</com:InfoBox>
129
 
130
 
131
<h2>Pengujian</h2>
132
<p>
133
Untuk melihat bagaimana halaman blog terlihat, kunjungi URL <tt>http://hostname/blog/index.php</tt>. Kita akan melihat font, tata letak, bingkai beruah dalam halaman. Juga, link tombol dalam footer mempunyai latar belakang hijau terang.
134
</p>
135
 
136
<img src="<%~ output.gif %>" class="output" />
137
 
138
</com:TContent>