RSS

bootstrap.cssの対応(for Play framework)

09 10月

メモ。
ちょっと家庭内制作で「phpじゃないやつで!」ということになってjavaでrailsライクなplayframeworkいぢってんですが、
来月の某締切りにむけて画面周りで、Bootstrap を使ってます。
で、playはそもそもrailsライクってことで、cakephpと非常に似ているので、ファイルの構成とかは分かりやすい。
まあおいおいいろいろかけたらと思うんですけど、ひとまず、今Bootstrapが流行っているので、playframeworkで使ってみたい!ってことで使ってたんですが、一点、pagenateについてがどうにも、見た目を変更する必要がありました。

なので、paginateの導入も含めてメモしときます。

※試行錯誤なんで、自己責任でよろしくおねがいします><

1.2.2使っているので、コンソールでとりあえず

play install paginate

する。そうすると、コンソールで「いれちゃうぜ?」てきいてくるので、はいyて答える。

そうすると・・・playインストール場所/modulre/paginate-0.11

という構成になり、そこにモジュールが展開される。

そのあと、

conf/dependencies.ymlに

~ require:

~ play -> paginate 0.11
これを追記して、さらに
conf/application.confに
# Import the pagenate module
module.paginate=${play.path}/modules/paginate-0.11
こんな感じで、play再起動。起動時に、
Module paginate is available (/home/yashiro/play-1.2.2/modules/paginate-0.11)
とかいうログが見えると、無事paginateモジュールが読み込まれています。
さて、そのモジュールの中に、htmlが入っていて、(playの雛形みたいな)paginateに対してどういう記述をするか
が書かれているControls.htmlをいうソースを探し出します( paginate-0.11/app/views/にありました)。
それをコピーして、app/views/paginate/Controls.htmlという構成にします。
(やってることはcakephpで、helperを自分のappの配下にもってきて変更していることにそっくり。)

それでそのファイルをこんな感じで修正してみました。そしたらデモで見えるようなpaginateが表示されたよ!

(実際はpaginateを表示させるところまで、これ以外にもいろいろ道のりがあったんですが・・それは割愛)

app/views/paginate/Controls.html

%{
int __firstPage = 1;
int __currentPage = _items.pageNumber;
int __pagesDisplayed = _items.pagesDisplayed;
int __pagesBeforeMiddle = __pagesDisplayed / 2;
int __maxPage = _items.pageCount;
if (__currentPage > (__pagesDisplayed / 2)) {
	__firstPage = __currentPage - __pagesBeforeMiddle;
}
int __lastPage = __currentPage + (__pagesDisplayed - __pagesBeforeMiddle - 1);
if (__currentPage < (__pagesDisplayed - __pagesBeforeMiddle)) {
	__lastPage = __pagesDisplayed;
}
if (__lastPage > __maxPage) {
	__lastPage = __maxPage;
}
boolean __hasPrev = _items.hasPreviousPage;
boolean __hasNext = _items.hasNextPage;
String __firstURL = __hasPrev ? _items.getCallbackURL(1) : "#";
String __prevURL = __hasPrev ? _items.getCallbackURL(__currentPage-1) : "#";
String __nextURL = __hasNext ? _items.getCallbackURL(__currentPage+1) : "#";
String __lastURL = __hasNext ? _items.getCallbackURL(__maxPage) : "#";
%}
<div class="pagination">
	<ul>
%{ if (_items.boundaryControlsEnabled) { %}
		<li class="${__currentPage == 1 ? 'disabled' : 'first'}"><a href="${__firstURL}">&{'play-paginate.first'}</a></li>
%{ } %}
		<li class="${__hasPrev ? 'previous' : 'disabled'}"><a href="${__prevURL}">&{'play-paginate.prev'}</a></li>
%{
for (__idx = __firstPage; __idx <= __lastPage; __idx++) {
boolean __active = __currentPage == __idx;
%}
		<li class="${__active ? 'active' : 'inactive'}"><a href="${_items.getCallbackURL(__idx)}">${__idx}</a></li>
%{
}
%}
		<li class="${__hasNext ? '' : 'disabled'}"><a href="${__nextURL}">&{'play-paginate.next'}</a></li>
%{ if (_items.boundaryControlsEnabled) { %}
		<li class="${__currentPage == __maxPage ? 'disabled' : ''} next"><a href="${__lastURL}">&{'play-paginate.last'}</a></li>
%{ } %}
	</ul>
</div>
<br style="clear:both;"/>

まあここまではよかったんだけど、lastページになると、PreviousとNextのあいだのページ数が一個減るという謎の

現象に・・まあこれは次回でもどうにか修正することにしましょう。

 

※10年ぶりにJavaとか見たら、「アノテーション」とかいう謎の識別子がついていて時代を感じた。

広告
 
コメントする

投稿者: : 10月 9, 2011 投稿先 Uncategorized

 

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

 
%d人のブロガーが「いいね」をつけました。