File name
        Commit message
        Commit date
    File name
        Commit message
        Commit date
    File name
        Commit message
        Commit date
    File name
        Commit message
        Commit date
    File name
        Commit message
        Commit date
    @**
* Yobi, Project Hosting SW
*
* Copyright 2014 NAVER Corp.
* http://yobi.io
*
* @author Insanehong
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**@
@(group: Organization, project: Project, searchResult: SearchResult)
@isActiveMenu(search_type:SearchType) = @{
    if(search_type == searchResult.getSearchType()){ "active" }
}
@makeSearchLink() = @{
    if(project != null) {
        routes.SearchApp.searchInAProject(project.owner, project.name)
    } else if (group !=null) {
        routes.SearchApp.searchInAGroup(group.name)
    } else {
        routes.SearchApp.searchInAll()
    }
}
@makeTilte(search_type:SearchType) =@{
    search_type match {
        case SearchType.ISSUE => { Messages("search.menu.issues") }
        case SearchType.USER => { Messages("search.menu.users") }
        case SearchType.PROJECT => { Messages("search.menu.projects") }
        case SearchType.POST => { Messages("search.menu.boards") }
        case SearchType.MILESTONE => { Messages("search.menu.milestones") }
        case SearchType.ISSUE_COMMENT => { Messages("search.menu.issue.comments") }
        case SearchType.POST_COMMENT => { Messages("search.menu.board.comments") }
        case SearchType.REVIEW => { Messages("search.menu.reviews") }  
        case SearchType.NA => { }
    }
}
@getCurrentlySearchCount(search_type:SearchType) =@{
    search_type match {
        case SearchType.ISSUE => { searchResult.getIssuesCount }
        case SearchType.USER => { searchResult.getUsersCount }
        case SearchType.PROJECT => { searchResult.getProjectsCount }
        case SearchType.POST => { searchResult.getPostsCount }
        case SearchType.MILESTONE => { searchResult.getMilestonesCount }
        case SearchType.ISSUE_COMMENT => { searchResult.getIssueCommentsCount }
        case SearchType.POST_COMMENT => { searchResult.getPostCommentsCount }
        case SearchType.REVIEW => { searchResult.getReviewsCount }  
        case SearchType.NA => { }
    }
}
<div class="site-breadcrumb-outer">
    <div class="site-breadcrumb-inner">
        <h3>
            @Messages("title.search")
        </h3>
    </div>
</div>
<div class="page-wrap-outer">
    <div class="project-page-wrap">
        <div class="project-page-wrap">
            <div class="row-fluid">
                <div class="span2">
                    <ul class="lst-stacked unstyled search-category-wrap">
                        <li class="@isActiveMenu(SearchType.ISSUE) @if(searchResult.getIssuesCount == 0) {empty}">
                            <a href="#" data-toggle="search-category" data-type="@SearchType.ISSUE.getType()">
                                @Messages("search.menu.issues")
                                <span class="num-badge pull-right">@searchResult.getIssuesCount</span>
                            </a>
                        </li>
                        <li class="@isActiveMenu(SearchType.USER) @if(searchResult.getUsersCount == 0) {empty}">
                            <a href="#" data-toggle="search-category" data-type="@SearchType.USER.getType()">
                                @Messages("search.menu.users")
                                <span class="num-badge pull-right">@searchResult.getUsersCount</span>
                            </a>
                        </li>
                        @if(project == null) {
                        <li class="@isActiveMenu(SearchType.PROJECT) @if(searchResult.getProjectsCount == 0) {empty}">
                            <a href="#" data-toggle="search-category" data-type="@SearchType.PROJECT.getType()">
                                @Messages("search.menu.projects")
                                <span class="num-badge pull-right">@searchResult.getProjectsCount</span>
                            </a>    
                        </li>
                        }
                        <li class="@isActiveMenu(SearchType.POST) @if(searchResult.getPostsCount == 0) {empty}">
                            <a href="#" data-toggle="search-category" data-type="@SearchType.POST.getType()">
                                @Messages("search.menu.boards")
                                <span class="num-badge pull-right">@searchResult.getPostsCount</span>
                            </a>
                        </li>
                        <li class="@isActiveMenu(SearchType.MILESTONE) @if(searchResult.getMilestonesCount == 0) {empty}">
                            <a href="#" data-toggle="search-category" data-type="@SearchType.MILESTONE.getType()">
                                @Messages("search.menu.milestones")
                                <span class="num-badge pull-right">@searchResult.getMilestonesCount</span>
                            </a>
                        </li>
                        <li class="@isActiveMenu(SearchType.ISSUE_COMMENT) @if(searchResult.getIssueCommentsCount == 0) {empty}">
                            <a href="#" data-toggle="search-category" data-type="@SearchType.ISSUE_COMMENT.getType()">
                                @Messages("search.menu.issue.comments")
                                <span class="num-badge pull-right">@searchResult.getIssueCommentsCount</span>
                            </a>
                        </li>
                        <li class="@isActiveMenu(SearchType.POST_COMMENT) @if(searchResult.getPostCommentsCount == 0) {empty}">
                            <a href="#" data-toggle="search-category" data-type="@SearchType.POST_COMMENT.getType()">
                                @Messages("search.menu.board.comments") 
                                <span class="num-badge pull-right">@searchResult.getPostCommentsCount</span>
                            </a>
                        </li>
                        <li class="@isActiveMenu(SearchType.REVIEW) @if(searchResult.getReviewsCount == 0) {empty}">
                            <a href="#" data-toggle="search-category" data-type="@SearchType.REVIEW.getType()">
                                @Messages("search.menu.reviews")
                                <span class="num-badge pull-right">@searchResult.getReviewsCount</span>
                            </a>
                        </li>
                    </ul>
                </div>
                <div class="span10">
                    <div class="search-box-wrap">
                        <form id="searchInnerForm" method="get" action="@makeSearchLink()" > 
                        <input type="hidden" name="searchType" value="@searchResult.getSearchType().getType()">    
                            <input type="text" id="searchKeyword" name="keyword" class="span11" value="@searchResult.getKeyword()">
                            <button type="submit" class="ybtn">@Messages("title.search")</button>
                        </form>
                        
                        <h3 class="search-result-title">
                            @Html(Messages("search.result.title", getCurrentlySearchCount(searchResult.getSearchType()),makeTilte(searchResult.getSearchType())))
                        </h3>
                    </div>
                    <div class="search-result-wrap">
                        @if(searchResult.getSearchType() == SearchType.ISSUE) {
                            @partial_issues(group, project, searchResult)
                        }
                        @if(searchResult.getSearchType() == SearchType.USER) {
                            @partial_users(group, project, searchResult)
                        }
                        @if(searchResult.getSearchType() == SearchType.PROJECT) {
                            @partial_projects(group, project, searchResult)
                        }
                        @if(searchResult.getSearchType() == SearchType.POST) {
                            @partial_posts(group, project, searchResult)
                        }
                        @if(searchResult.getSearchType() == SearchType.MILESTONE) {
                            @partial_milestones(group, project, searchResult)
                        }
                        @if(searchResult.getSearchType() == SearchType.ISSUE_COMMENT) {
                            @partial_issue_comments(group, project, searchResult)
                        }
                        @if(searchResult.getSearchType() == SearchType.POST_COMMENT) {
                            @partial_post_comments(group, project, searchResult)
                        }
                        @if(searchResult.getSearchType() == SearchType.REVIEW) {
                            @partial_reviews(group, project, searchResult)
                        }
                    </div>
                </div>
            </div>
        </div>        
    </div>
</div>
<script>
$(function(){
    $('.search-category-wrap').on('click', 'a[data-toggle="search-category"]', function(event) {
        event.preventDefault();
        $('#searchInnerForm').find('input[name="searchType"]').val($(this).data('type'));
        $('#searchInnerForm').submit();
    });
    $('.search-content-body, .title').each(function() {
        var content = $(this).html();
        var matchKeyword = $.trim($('#searchKeyword').val())
                            .replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
        var matchRegx = new RegExp(matchKeyword, "ig");
        content = content.replace(matchRegx, function(match) {
            return "<strong class=\"keyword\">"+ match +"</strong>";
        });
        $(this).html(content);
    })
});
</script>