アーカイブ
Tyzohブログ - ikarashiさんのエントリ
 ikarashiさんのエントリ配信

2007/07/03
[Secure-SBM:019] タグによる検索

執筆者: ikarashi (10:29 am)
こんにちは五十嵐です.タグによる検索の設定です.表示されたタグをクリックして,同じタグを持つブックマークを表示します.

ブックマークの一覧でタグを表示させましたが,その部分を以下のように変更します.
root/template/personal/personal_center.tt:
[%- FOREACH tag_v IN bookmark_v.tags -%]
  [%- SET tagelement = 'tag_' _ bookmark_v.id _ tag_v | html | collapse -%]
  <span id="[% tagelement %]" class="eachtag">
  [%- tag_v | html %]</span>,
[%- END -%]

javascript を追加して,マウスのポインタがタグ表示の上を通過したときに表示が変わるようにします.
[% FOREACH tag_v IN bookmark_v.tags %]
    [%- SET tagelement = 'tag_' _ bookmark_v.id _ tag_v | html | collapse -%]
    var var_[% tagelement %]
        = _getElementById('[% tagelement %]');
    var_[% tagelement %].onmouseover
        = function () {
            this.style.color='#ffffff';
            this.style.background='#999999'; 
            this.style.cursor='pointer';
        }
    var_[% tagelement %].onmouseout
        = function () {
            this.style.color='#000000';
            this.style.background='#ffffff';
            this.style.cursor='auto';
        }
    var_[% tagelement %].onclick
        = function () {
            location.href 
                = '/searchbookmark?tag='
                    + encodeURI('[% tag_v | html %]');
        }
[% END %]
クリックすると /searchbookmark を呼び出します.

サーバ側ではタグに対応するブックマークを検索し,応答を返します.
sub searchbookmark : Path('/searchbookmark') {
    my ( $self, $c ) = @_;
...(省略)
    # Bookmark の検索
    $tid = $c->model('SecureSBMDB::Tag')->
                   find( {tag_name => $data{tag}} )->tag_id;
    foreach my $ub ($udb->user_bookmarks->all){
        foreach my $t ($ub->user_bookmark_tags->all){
            if( $t->tag_id == $tid ){
                my $tmpbe = _makeOneBookmarkEntry( $c, $ub->bookmark_id );
                if( $tmpbe ){
                    unshift( @bookmarks, $tmpbe );
                }
            }
        }
    }

    $c->stash->{pagetitle} = 'Secure-SBM Search Bookmark Result';
    $c->stash->{template} = 'personal/personal.tt';

    $c->stash->{mybookmarks} = \@bookmarks;
}
タグのマッチングを行い,結果を mybookmarks に格納しています._makeOneBookmarkEntry() は,「[Secure-SBM:017] ブックマークの登録(2)」 で使用したものです.テンプレートは personal.tt をそのまま使用します.

次回は,ロールに関する処理を追加します.

2007/04/02 記

参考:

Keyword: Perl Catalyst Secure-SBM SSBM セキュア・ソーシャル・ブックマーク
ikarashiさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (2696)
Trackback is not accepted now.
印刷用ページ 友達に送る
 
投稿された内容の著作権はコメントの投稿者に帰属します。
サイト内検索
ブログ カレンダー
«  «  2008 3月  »  »
24 25 26 27 28 29 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5