<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
  
-->
<html xmlns:wicket="http://wicket.apache.org">
	<wicket:panel>
		<div wicket:id="feedback"></div>
		<form wicket:id="backupUpload" class="adminForm adminBackupForm">
			<fieldset class="ui-widget-content">
				<legend class="ui-widget-header"><wicket:message key="1066" /></legend>
				<div class="formelement">
				    <div class="info-text"><wicket:message key="1065" /></div>
	            </div>
	            <div class="formelement">
                   <label><wicket:message key="1537" /></label> <input type="checkbox" wicket:id="includeFilesInBackup" />
	            </div>
	            <div class="formelement">
	               <span wicket:id="progress"></span>
	               <div wicket:id="dprogress"></div>
	            </div>
	            <div class="formelement">
		            <!-- Perform Download -->
					<div wicket:id="download" class="btn"><wicket:message key="1066"/></div>
					<!-- Perform Upload -->
					<div class="fileupload fileupload-new" data-provides="fileupload" style="margin: 0; display: inline-block;">
						<span class="btn btn-file ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"><span 
							class="ui-button-text"><wicket:message key="1536"/></span><input class="uploadFileField" wicket:id="fileInput" type="file"/></span>
					</div>
	            </div>
	            <div class="formelement">
		            <!-- Max upload size -->
		            <wicket:message key="1491" /> <span wicket:id="MaxUploadSize" /><span>MB</span>
	            </div>
	            <div class="formelement">
		            <!-- Backup CLI import information -->
	               <div class="info-text" wicket:id="cmdLineDesc"></div>
	            </div>
	        </fieldset>
		</form>
	</wicket:panel>
</html>
