2008年5月28日水曜日

Grails WebAlbumを動かしてみる5

$ALBUM_HOME/grails-app/views/shared/_creators.gspの内容を見ると、ログインすれば”New Picture”のリンクが出てきそうなことが書いてあります。

<div class='nav'>
    <span class="menuButton"><g:link controller="user" class="create" action="create">New User</g:link></span>
    <wa:ifUser>
        <span class="menuButton"><g:link controller="album" class="create" action="create">New Album</g:link></span>
        <wa:ifUserHasAlbums>
            <span class="menuButton"><g:link controller="picture" class="create" action="create">New Picture</g:link></span>
        </wa:ifUserHasAlbums>
    </wa:ifUser>
</div>

”<wa:ifUser>”、”<wa:ifUserHasAlbums>”の定義は$ALBUM_HOME/grails-app/taglib/WebAlbumTagLib.groovyに記述されています。

static namespace = "wa"

def ifUser = { attrs, body ->
boolean valid = session.userId != null
if (attrs.not) {
valid = !valid
}
if (valid) {
out << body()
}
}

def ifUserHasAlbums = { attrs, body ->
boolean valid = session.albumsCount && session.albumsCount > 0
if (attrs.not) {
valid = !valid
}
if (valid) {
out << body()
}
}

”attr.not”は<wa:ifUser not="true">と書いた場合trueになるものです。”body()”はタグに囲まれた部分のことです。
アルバムを2つ持つ”jhl”でログインすると”New Picture”リンクが出てきます。
クリックしてみましょう。
表示された”Create Picture”画面に従って操作します。
”Show Album”画面に戻ってpaginatorを操作すると、エラーが出てしまいます。
$ALBUM_HOME/grails-app/view/album/show.gspのpaginator部分を次のように直しましょう。

<g:paginate 
    total="${paginateCount}" 
    controller="album" 
    action="show" 
    id="${album.id}" 
    max="2" />

0 件のコメント: