115 lines
6.1 KiB
HTML
115 lines
6.1 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}{{ ('pc_form.edit'|t(user.language)) if postcard else ('pc_form.new'|t(user.language)) }} - {{ 'brand'|t(user.language) }}{% endblock %}
|
|
{% block content %}
|
|
<div class="section-header">
|
|
<h1>{{ ('pc_form.edit'|t(user.language)) if postcard else ('pc_form.new'|t(user.language)) }}</h1>
|
|
</div>
|
|
<form method="post" action="{{ '/postcards/%d/edit' % postcard.id if postcard else '/profiles/%d/postcards' % profile.id }}" class="form-card">
|
|
<label>{{ 'pc_form.number'|t(user.language) }} *</label>
|
|
<input type="text" name="card_number" value="{{ postcard.card_number if postcard else '' }}" required>
|
|
|
|
<label>{{ 'pc_form.status'|t(user.language) }} *</label>
|
|
<select name="status" id="status-select" onchange="toggleFields()" required>
|
|
<option value="sent" {% if postcard and postcard.status=='sent' %}selected{% endif %}>{{ 'status.sent'|t(user.language) }}</option>
|
|
<option value="delivered" {% if postcard and postcard.status=='delivered' %}selected{% endif %}>{{ 'status.delivered'|t(user.language) }}</option>
|
|
<option value="received" {% if postcard and postcard.status=='received' %}selected{% endif %}>{{ 'status.received'|t(user.language) }}</option>
|
|
</select>
|
|
|
|
<div id="fields-sent-delivered">
|
|
<label>{{ 'pc_form.recipient'|t(user.language) }} *</label>
|
|
<input type="text" name="recipient_name" id="input-recipient" value="{{ postcard.recipient_name if postcard else '' }}">
|
|
<label>{{ 'pc_form.send_time'|t(user.language) }} *</label>
|
|
<input type="date" name="send_time" id="input-send-time" value="{{ postcard.send_time.strftime('%Y-%m-%d') if postcard and postcard.send_time else '' }}">
|
|
<label id="label-arrival">{{ 'pc_form.arrival_time'|t(user.language) }}</label>
|
|
<input type="date" name="arrival_time" id="input-arrival" value="{{ postcard.arrival_time.strftime('%Y-%m-%d') if postcard and postcard.arrival_time else '' }}">
|
|
</div>
|
|
|
|
<div id="fields-received" style="display:none">
|
|
<label>{{ 'pc_form.sender'|t(user.language) }} *</label>
|
|
<input type="text" name="sender_name" id="input-sender" value="{{ postcard.sender_name if postcard else '' }}">
|
|
<label>{{ 'pc_form.receive_time'|t(user.language) }} *</label>
|
|
<input type="date" name="receive_time" id="input-receive" value="{{ postcard.receive_time.strftime('%Y-%m-%d') if postcard and postcard.receive_time else '' }}">
|
|
</div>
|
|
|
|
<label>{{ 'pc_form.country_from'|t(user.language) }}</label>
|
|
<input type="text" name="country_from" id="input-country-from" value="{{ postcard.country_from if postcard and postcard.country_from else (profile.country if profile else '') }}" maxlength="2" style="width:80px;text-transform:uppercase" oninput="this.value=this.value.toUpperCase()">
|
|
|
|
<label>{{ 'pc_form.country'|t(user.language) }} *</label>
|
|
<input type="text" name="country" id="input-country" value="{{ postcard.country if postcard else '' }}" maxlength="2" placeholder="JP" style="width:80px;text-transform:uppercase" oninput="this.value=this.value.toUpperCase()">
|
|
|
|
<label>{{ 'pc_form.notes'|t(user.language) }}</label>
|
|
<textarea name="notes" rows="3" placeholder="{{ 'pc_form.notes_ph'|t(user.language) }}">{{ postcard.notes if postcard else '' }}</textarea>
|
|
|
|
<div class="form-actions">
|
|
<button type="submit" class="btn btn-primary">{{ 'pc_form.save'|t(user.language) }}</button>
|
|
<a href="/profiles/{{ profile.id }}/postcards" class="btn">{{ 'pc_form.cancel'|t(user.language) }}</a>
|
|
</div>
|
|
</form>
|
|
<script>
|
|
function toggleFields() {
|
|
var s = document.getElementById('status-select').value;
|
|
var sd = document.getElementById('fields-sent-delivered');
|
|
var rc = document.getElementById('fields-received');
|
|
var recipient = document.getElementById('input-recipient');
|
|
var country = document.getElementById('input-country');
|
|
var sendTime = document.getElementById('input-send-time');
|
|
var arrival = document.getElementById('input-arrival');
|
|
var labelArrival = document.getElementById('label-arrival');
|
|
var sender = document.getElementById('input-sender');
|
|
var receive = document.getElementById('input-receive');
|
|
if (s === 'received') {
|
|
sd.style.display = 'none';
|
|
rc.style.display = '';
|
|
recipient.required = false;
|
|
country.required = false;
|
|
sendTime.required = false;
|
|
arrival.required = false;
|
|
arrival.disabled = false;
|
|
sender.required = true;
|
|
receive.required = true;
|
|
} else if (s === 'sent') {
|
|
sd.style.display = '';
|
|
rc.style.display = 'none';
|
|
recipient.required = true;
|
|
country.required = true;
|
|
sendTime.required = true;
|
|
arrival.required = false;
|
|
arrival.disabled = true;
|
|
arrival.value = '';
|
|
labelArrival.textContent = '到达时间';
|
|
sender.required = false;
|
|
receive.required = false;
|
|
} else {
|
|
sd.style.display = '';
|
|
rc.style.display = 'none';
|
|
recipient.required = true;
|
|
country.required = true;
|
|
sendTime.required = true;
|
|
arrival.disabled = false;
|
|
arrival.required = true;
|
|
labelArrival.textContent = '到达时间 *';
|
|
sender.required = false;
|
|
receive.required = false;
|
|
}
|
|
}
|
|
toggleFields();
|
|
{% if not postcard %}
|
|
// Auto-fill date fields with today on new postcards
|
|
(function() {
|
|
var today = new Date().toISOString().slice(0, 10);
|
|
var sendTime = document.getElementById('input-send-time');
|
|
var receiveTime = document.getElementById('input-receive');
|
|
var statusSel = document.getElementById('status-select');
|
|
// Fill on page load
|
|
if (statusSel.value === 'sent' && !sendTime.value) sendTime.value = today;
|
|
if (statusSel.value === 'received' && !receiveTime.value) receiveTime.value = today;
|
|
// Fill on status change
|
|
statusSel.addEventListener('change', function() {
|
|
if (this.value === 'sent' && !sendTime.value) sendTime.value = today;
|
|
if (this.value === 'received' && !receiveTime.value) receiveTime.value = today;
|
|
});
|
|
})();
|
|
{% endif %}
|
|
</script>
|
|
{% endblock %}
|