<%--
    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.
--%>

<%@ page import="org.apache.wiki.api.core.*" %>
<%@ page import="org.apache.wiki.auth.*" %>
<%@ page errorPage="/Error.jsp" %>
<%@ taglib uri="http://jspwiki.apache.org/tags" prefix="wiki" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
<fmt:setLocale value="${prefs.Language}" />
<fmt:setBundle basename="templates.default"/>
<%
    Context ctx = Context.findContext( pageContext );
    AuthenticationManager mgr = ctx.getEngine().getManager( AuthenticationManager.class );
    String loginURL = "";

    if( mgr.isContainerAuthenticated() ) {
        loginURL = "j_security_check";
    } else {
        String redir = (String)ctx.getVariable("redirect");
        if( redir == null ) redir = ctx.getEngine().getFrontPage();
        loginURL = ctx.getURL( ContextEnum.WIKI_LOGIN.getRequestContext(), redir );
    }

%>
<c:set var="allowsCookieAuthentication" value="<%= mgr.allowsCookieAuthentication() %>" />
<div class="page-content">

<%-- Login functionality --%>
<wiki:UserCheck status="notauthenticated">
<%--<wiki:Include page='LoginTab.jsp'/>--%>

<div class="tabs" >

<h3 id="section-login"><fmt:message key="login.tab"/></h3>

<form action="<%= loginURL %>"
          id="login"
       class="login-form"
      method="post" accept-charset="<wiki:ContentEncoding />" >
    <wiki:CsrfProtection/>
    <p class="login-header">
      <fmt:message key="login.heading.login">
        <fmt:param><wiki:Variable var="applicationname" /></fmt:param>
      </fmt:message>
    </p>
    <%--<div class="help-block"><fmt:message key="login.help"></fmt:message></div>--%>

    <fmt:message key="login.errorprefix" var="msg"/>
    <wiki:Messages div="alert alert-danger" topic="login" prefix="${msg}" />

    <div class="form-group">
      <input class="form-control"
             value="<wiki:Variable var='uid' default='' />"
       placeholder="<fmt:message key='login.login'/>"
              type="text" size="24"  tabindex="1" autofocus="autofocus" name="j_username" id="j_username" />
    </div>

    <div class="form-group">
      <input class="form-control"
       placeholder="<fmt:message key='login.password'/>"
              type="password" size="24" tabindex="2" name="j_password" id="j_password" />
    </div>

    <div class="form-group clearfix"><%-- need clearfix ico no-cookies-auth allowed; ensure the right floated btn gets proper spacing -- ugh! --%>
    <c:if test="${allowsCookieAuthentication}">
      <label class="btn" for="j_remember">
        <input type="checkbox" tabindex="3" name="j_remember" id="j_remember" />
        <fmt:message key="login.remember"/>
      </label>
    </c:if>

      <a class="btn btn-link pull-right" href="#section-lostpw" tabindex="3"><fmt:message key="login.lostpw" /></a>
    </div>

    <div class="form-group">
      <input type="hidden" name="redirect" value="<wiki:Variable var='redirect' default='' />" />
      <input class="btn btn-success btn-block"
              type="submit" tabindex="4" name="submitlogin" value="<fmt:message key='login.submit.login'/>" />
    </div>

    <hr />

    <%--CHECKME only allow to register new uses when no container auth !? --%>
    <%--  <wiki:UserProfile property="canChangeLoginName">  --%>
    <p class="login-ref">
      <fmt:message key="login.nopassword"/>
      <a class="" href="#section-register" tabindex="5">
        <fmt:message key="login.registernow">
          <fmt:param><wiki:Variable var="applicationname" /></fmt:param>
        </fmt:message>
      </a>
    </p>
    <%-- </wiki:UserProfile> --%>

</form>


<%-- Lost pasword functionality --%>
<c:set var="lostpwTab" value="${param.tab == 'lostpassword' ? 'data-activePane': ''}"/>
<h3 ${lostpwTab} id="section-lostpw"><fmt:message key="login.lostpw.tab"/></h3>

<form action="<wiki:Link jsp='LostPassword.jsp' format='url'><wiki:Param name='tab' value='lostpassword'/></wiki:Link>"
          id="lostpw"
       class="login-form"
      method="post" accept-charset="<wiki:ContentEncoding />" >

  <wiki:CsrfProtection/>
  <p class="login-header"><fmt:message key="login.lostpw.title" /></p>

  <c:choose>
  <c:when test="${passwordreset == 'done' }">
      <wiki:Messages div="information" topic="resetpw" prefix="" />
      <p>
        <fmt:message key="login.lostpw.reset.login">
          <fmt:param><a href="<wiki:Link jsp='Login.jsp' />"><fmt:message key="login.lostpw.reset.clickhere"/></a></fmt:param>
        </fmt:message>
      </p>
  </c:when>
  <c:otherwise>
    <c:if test="${param.tab eq 'lostpassword'}" >
      <div class="form-group help-block">
        <fmt:message key="login.errorprefix" var="msg"/>
        <wiki:Messages div="alert alert-danger" topic="resetpw" prefix="${msg}" />
        <wiki:Messages div="information" topic="resetpwok" />
      </div>
    </c:if>

    <div class="form-group">
      <p class="help-block"><fmt:message key="login.lostpw.help"></fmt:message></p>
      <%--<label class="control-label" for="name"><fmt:message key="login.lostpw.name"/></label>--%>
      <input class="form-control" type="text" size="24"
       placeholder="<fmt:message key='login.lostpw.name'/>"
              name="name" id="name" />
    </div>
    <div class="form-group">
      <input type="hidden" name="action" value="resetPassword"/>
      <input class="btn btn-success btn-block" type="submit" name="Submit" value="<fmt:message key='login.lostpw.submit'/>" />
    </div>

    <hr />

    <p class="login-ref">
      <fmt:message key="login.invite"/>
      <a href="#section-login"
         title="<fmt:message key='login.title'/>" >
        <fmt:message key="login.heading.login"><fmt:param><wiki:Variable var="applicationname" /></fmt:param></fmt:message>
      </a>
    </p>
    <p class="login-ref">
      <fmt:message key="login.nopassword"/>
      <a class="" href="#section-register">
          <fmt:message key="login.registernow">
            <fmt:param><wiki:Variable var="applicationname" /></fmt:param>
          </fmt:message>
        </a>
    </p>

  </c:otherwise>
  </c:choose>

</form>

</wiki:UserCheck>

<%-- Register new user profile --%>
<wiki:Permission permission='editProfile'>
<c:set var="registerTab" value="${param.tab == 'register' ? 'data-activePane': ''}"/>
<h3 ${registerTab} id="section-register"><fmt:message key="login.register.tab" /></h3>

<%-- <wiki:Include page='ProfileTab.jsp'/> --%>
<form action="<wiki:Link jsp='Login.jsp' format='url'><wiki:Param name='tab' value='register'/></wiki:Link>"
          id="editProfile"
       class="login-form"
      method="post" accept-charset="UTF-8">

  <wiki:CsrfProtection/>
  <input type="hidden" name="redirect" value="<wiki:Variable var='redirect' default='' />" />

  <p class="login-header"><fmt:message key="login.registernow.title" /></p>

  <fmt:message key="prefs.errorprefix.profile" var="msg"/>
  <wiki:Messages div="alert alert-danger" topic="profile" prefix="${msg}" />

  <%-- Login name --%>
  <%-- TODO:  can be simplified in case of registering a new user --%>
  <div class="form-group">
    <wiki:UserProfile property="canChangeLoginName">
      <input class="form-control" type="text" name="loginname" id="loginname" size="20"
       placeholder="<fmt:message key='prefs.loginname' />"
             value="<wiki:UserProfile property='loginname' />" />
    </wiki:UserProfile>

    <wiki:UserProfile property="!canChangeLoginName">
      <!-- If user can't change their login name, it's because the container manages the login -->
      <wiki:UserProfile property="new">
        <div class="warning"><fmt:message key="prefs.loginname.cannotset.new"/></div>
      </wiki:UserProfile>
      <wiki:UserProfile property="exists">
        <span class="form-control-static"><wiki:UserProfile property="loginname"/></span>
        <div class="warning"><fmt:message key="prefs.loginname.cannotset.exists"/></div>
      </wiki:UserProfile>
    </wiki:UserProfile>
  </div>

  <%-- Password field; not displayed if container auth used --%>
  <wiki:UserProfile property="canChangePassword">
    <div class="form-group">
       <input class="form-control" type="password" name="password" id="password" size="20"
        placeholder="<fmt:message key='prefs.password' />"
              value="" />
     </div>
     <div class="form-group">
       <input class="form-control" type="password" name="password2" id="password2" size="20"
        placeholder="<fmt:message key='prefs.password2' />"
              value="" />
       <%-- FFS: extra validation ? min size, allowed chars? password-strength js check --%>
     </div>
  </wiki:UserProfile>

  <%-- Full name --%>
  <div class="form-group">
    <input class="form-control" type="text" name="fullname" id="fullname" size="20"
     placeholder="<fmt:message key='prefs.fullname'/>"
           value="<wiki:UserProfile property='fullname' />" />
    <p class="help-block"><fmt:message key="prefs.fullname.description"/></p>
  </div>

  <%-- E-mail --%>
  <div class="form-group">
    <input class="form-control" type="text" name="email" id="email" size="20"
     placeholder="<fmt:message key='prefs.email'/>"
           value="<wiki:UserProfile property='email' />" />
    <p class="help-block"><fmt:message key="prefs.email.description"/></p>
  </div>

  <div class="form-group">
    <button class="btn btn-success btn-block" type="submit" name="action" value="saveProfile">
      <fmt:message key='prefs.newprofile' />
    </button>
  </div>

  <hr />

  <p class="login-ref">
    <fmt:message key="login.invite"/>
    <a href="#section-login"
      title="<fmt:message key='login.title'/>" >
      <fmt:message key="login.heading.login"><fmt:param><wiki:Variable var="applicationname" /></fmt:param></fmt:message>
    </a>
  </p>

</form>

</wiki:Permission>

</div>

</div>