{#-
       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.
-#}
<div {{attrs|default({}, true)|xmlattr}} class="discussion_subscription_form">
  <div class="clear"></div>
  <div class="pagination_size">{{widget.fields['page_list'].display(limit=limit, page=page, count=count)}}</div>
  <form method="{{method}}" action="{{action}}" {% if enctype %}enctype="{{enctype}}"{% endif %} class="follow_form">
    {{widget.fields['threads'].display(value=threads)}}
    <p>
    {% if threads %}
    <input type="submit" value="Update email subscriptions"/>
    {% endif %}
    </p>
  </form>
  {{widget.fields['page_list'].display(limit=limit, page=page, count=count)}}
  {{widget.fields['page_size'].display(limit=limit, page=page, count=count)}}
</div>
