Skip to main content
Skip table of contents

User Search Recipe

This recipe explains how to implement search forms for searching users.

This recipe is based on the Search Template Recipe. There is not that much difference to this recipe other than the form parameters – look at that page to learn how to build the user search.

Creating a Search Form

Add the following HTML code to a template for single input field search form:

CODE
#set($search = "/search")
#if ($stringUtils.equals(${viewport.link}, "/") == false)
	#set($search = "${viewport.link}/search")
#end
<form action="$search" method="GET">
    <input id="searchQuery" name="q" type="text" placeholder="Enter Search" value="$!searchRequest.queryString">
    <input type="hidden" name="t" value="user" >
	<input type="submit" value="Submit">
</form>

A list of available content types, as shown with <input type="hidden" name="t" value="user"> can be found in the Search Template Recipe.

Displaying User Details in the Search Results

Create a template file search-user.vm in the top level of the theme directory:

search-user.vm

CODE
#foreach($searchResult in $searchResults.results)
    <li>
        <h3>$searchResult.displayTitle</h3>
        <p>Position: $searchResult.getProperty("confluence.user.profile.position")</p>
        <p>Location: $searchResult.getProperty("confluence.user.profile.location")</p>
        <p>Phone: $searchResult.getProperty("confluence.user.profile.phone")</p>
        <p>Department: $searchResult.getProperty("confluence.user.profile.department")</p>
    </li>
#end

Scroll Viewport will only use the search-user.vm template if the search is limited to users only (&t=user). If other content types are searched, Scroll Viewport will use the search.vm template.

Extended User Search with the User Profile Plugin

Define Search Fields

With User Profile Plugin, you can also search profile data such as location, department, phone number etc. (The built-in Confluence search only searches name, email, and full name.)

To add additional search fields, add the following HTML code to a template to define the search form:

CODE
#set($search = "/search")
#if ($stringUtils.equals(${viewport.link}, "/") == false)
	#set($search = "${viewport.link}/search")
#end
<form action="$search" method="GET" class="form-inline text-center" role="form" style="margin-bottom: 2em;">
    <input class="form-control input-lg" id="searchQuery" name="q" type="text" placeholder="Enter Search" value="$!searchRequest.queryString" />
    <input type="hidden" name="t" value="user" />
    <input type="hidden" name="fields" value="Department,Location" />
</form>

Note the fields parameter – this specifies which Scroll Viewport should look for.

Next steps

Check out how to Display Extended User Details from the User Profile Plugin.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.