<%@ taglib uri="core" prefix="c"%>
<%@ taglib uri="fmt" prefix="fmt"%>
<%--
  -	$RCSfile$
  -	$Revision$
  -	$Date$
--%>
<%@ page import="org.jivesoftware.util.*,
                 java.util.*,                  
                 org.jivesoftware.messenger.*,
                 org.jivesoftware.messenger.muc.HistoryStrategy,
                 org.jivesoftware.messenger.muc.MultiUserChatServer"%>
                 
<!-- Define Administration Bean -->
<jsp:useBean id="admin" class="org.jivesoftware.util.WebManager"/>
<%  admin.init(request, response, session, application, out ); %>
<!-- Define BreadCrumbs -->
<c:set var="title" value="Multi-User Chat History Settings"/>
<c:set var="breadcrumbs" value="${admin.breadCrumbs}"/>
<c:set target="${breadcrumbs}" property="Home" value="main.jsp"/>
<c:set target="${breadcrumbs}" property="${title}" value="muc-history-settings.jsp"/>
<%@ include file="top.jsp"%>
<%!  // Global vars and methods:

    // Strategy definitions:
    static final int ALL = 1;
    static final int NONE = 2;
    static final int NUMBER = 3;
%>
<%   // Get parameters:
    boolean update = request.getParameter("update") != null;
    int policy = ParamUtils.getIntParameter(request,"policy",-1);
    int numMessages = ParamUtils.getIntParameter(request,"numMessages",0);

	// Get muc history
    MultiUserChatServer mucServer = (MultiUserChatServer)admin.getServiceLookup().lookup(MultiUserChatServer.class);
    HistoryStrategy historyStrat = mucServer.getHistoryStrategy();

    Map errors = new HashMap();
    if (update) {
        if (policy != ALL && policy != NONE && policy != NUMBER) {
            errors.put("general", "Please choose a valid chat history policy.");
        }
        else {
            if (policy == NUMBER && numMessages <= 0) {
                errors.put("numMessages", "Please enter a valid number of messages.");
            }
        }
        if (errors.size() == 0) {
            if (policy == ALL) {
                // Update MUC history strategy
                historyStrat.setType(HistoryStrategy.Type.all);
            }
            else if (policy == NONE) {
                // Update MUC history strategy
                historyStrat.setType(HistoryStrategy.Type.none);
            }
            else if (policy == NUMBER) {
                // Update MUC history strategy
                historyStrat.setType(HistoryStrategy.Type.number);
                historyStrat.setMaxNumber(numMessages);
            }
            // All done, redirect
            %>
            <p class="jive-success-text">Settings updated.</p>
            <% 
        }
    }

    // Set page vars
    if (errors.size() == 0) {
        if (historyStrat.getType() == HistoryStrategy.Type.all) {
            policy = ALL;
        }
        else if (historyStrat.getType() == HistoryStrategy.Type.none) {
            policy = NONE;
        }
        else if (historyStrat.getType() == HistoryStrategy.Type.number) {
            policy = NUMBER;
        }
        numMessages = historyStrat.getMaxNumber();
    }
%>
<form action="muc-history-settings.jsp">
  <table cellpadding="3" cellspacing="1" border="0" width="600">
    <tr class="tableHeader">
      <td colspan="2" align="left">History Settings</td>
    </tr>
    <tr>
      <td class="text" colspan="2">Group Chat rooms can replay conversation histories to provide context to new members joining a room.
        <fmt:message key="short.title" bundle="${lang}"/> provides several options for controlling how much history to store for each room.
      </td>
    </tr>
    <tr valign="top" class="">
      <td width="1%" nowrap>
        <input type="radio" name="policy" value="<%= NONE %>" id="rb01"  <%= ((policy==NONE) ? "checked" : "") %> />
      </td>
      <td width="99%">
        <label for="rb01">
          <b>Don't Show History</b>
        </label>- Do not show the entire chat history.
      </td>
    </tr>
    <tr valign="top">
      <td width="1%" nowrap>
        <input type="radio" name="policy" value="<%= ALL %>" id="rb02"  <%= ((policy==ALL) ? "checked" : "") %>/>
      </td>
      <td width="99%">
        <label for="rb02">
          <b>Show Entire Chat History</b>
        </label>- Show the entire chat history to the user.
      </td>
    </tr>
    <tr valign="top">
      <td width="1%" nowrap>
        <input type="radio" name="policy" value="<%= NUMBER %>" id="rb03"  <%= ((policy==NUMBER) ? "checked" : "") %> />
      </td>
      <td width="99%">
        <label for="rb03">
          <b>Show a Specific Number of Messages</b>
        </label>- Show a specific number of the most recent messages in the chat. Use the box below to specify that number.
      </td>
    </tr>
    <tr valign="top" class="">
      <td width="1%" nowrap>&nbsp;</td>
      <td width="99%">
        <input type="text" name="numMessages" size="5" maxlength="10" onclick="this.form.policy[2].checked=true;" value="<%= ((numMessages > 0) ? ""+numMessages : "") %>"/> messages
      </td>
    </tr>
  </table>
  <br/>
  <input type="submit" name="update" value="Save Settings"/>
</form>
<%@ include file="bottom.jsp"%>

