<?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>
	        <span wicket:id="feedback"/>
	     </div>
		<!-- wicket:id="form"  -->
		<form wicket:id="backupUpload" class="adminForm adminBackupForm">
			<fieldset class="ui-widget-content">
				<legend class="ui-widget-header"><wicket:ommessage key="1066" /></legend>
				<div class="formelement">
				    <div class="info-text"><wicket:ommessage key="1065" /></div>
	            </div>
	            <div class="formelement">
                   <label><wicket:ommessage 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="ui-button ui-widget ui-state-default ui-corner-all">
						<span class="btn btn-file"><wicket:ommessage key="1066"/></span>
					</div>
					<!-- Perform Upload -->
					<div class="ui-button ui-widget ui-state-default ui-corner-all fileupload fileupload-new" data-provides="fileupload" style="margin: 0;">
						<span class="btn btn-file"><wicket:ommessage key="1536"/><input class="uploadFileField" wicket:id="fileInput" type="file"/></span>
					</div>
	            </div>
	            <div class="formelement">
		            <!-- Max upload size -->
		            <wicket:ommessage 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>
