%# # user not logged in
% if (!stash('documentation') && !$embedded && !user_auth && stash('auth_support')) {
%   content_for 'sidebar', begin
%     if (flash('handle_or_email') && !param('handle_or_email')) {
%       param(handle_or_email => flash('handle_or_email'));
%     };
    <fieldset>
    %= form_for 'login', class => 'login', begin
      <legend><span><%= loc 'login' %></span></legend>
      %= csrf_field
      %= text_field 'handle_or_email', placeholder => loc('userormail')
      %= hidden_field fwd => $c->url_with
      <div>
        %= password_field 'pwd', placeholder => loc('pwd')
        <button type="submit"><span><%= loc 'go' %></span></button>
      </div>
    % end

    %= content_block 'loginInfo'

    %#  <ul>
    %#    <li><%= link_to loc('register') => 'register' %></li>
    %#    <li><%= link_to loc('pwdforgotten') => 'pwd_forgotten' %></li>
    %#  </ul>
    </fieldset>
%   end
% }

% my $aside = content_for('sidebar');
<aside tabindex="0" class="<% unless (length($aside) > 0) { %>off<% } elsif (stash('sidebar_active')) { %>active<% } %>">
  <div>
    %= $aside
  </div>
</aside>
