<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You 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.
-->
{% extends "page.html" %}

{% block side_block %}

{% if user.userprofile.experiment.has_achievements %}
<div class="panel panel-default">
  <div class="panel-heading">
    <b class="panel-title">Achievements</b>
  </div>
  <div class="panel-body">
    <div class="media">
      <div class="media-body">
        <h4 class="media-heading">Achievement 1</h4>
      </div>
      <div class="media-right">
        <a href="#">
          <img class="media-object" src="/static/images/Colonel_Grade_3.png" alt="...">
        </a>
      </div>
    </div>
  </div>
</div>
{% endif %}

{% endblock %}