ask/app/views/admin/asks/_form.html.erb

311 lines
11 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<%
ask_setting = @ask_setting
set_input_name_for_ask('ask_question')
%>
<% content_for :page_specific_css do %>
<%= stylesheet_link_tag "lib/main-forms" %>
<%= stylesheet_link_tag "lib/main-list" %>
<%= stylesheet_link_tag "custom_field" %>
<% end %>
<%# javascript_include_tag "lib/bootstrap-datetimepicker.js" %>
<%# javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/jquery/1.11.0/jquery.min.js"%>
<%# javascript_include_tag "/assets/lib/jquery-ui-1.12.1/jquery-ui.min" %>
<%# javascript_include_tag "lib/module-area" %>
<%# javascript_include_tag "jquery.ui.datepicker.monthyearpicker" %>
<%# javascript_include_tag "lib/bootstrap-datetimepicker" %>
<style type="text/css">
.input-area tr td {
text-align: center;
}
.form-horizontal .control-label {
padding-top: 0;
}
</style>
<script type="text/javascript">
$(document).ready(function(){
$('input:file').change(function(e){
var fileName = e.target.files[0].name;
$(this).parents(".file-selector").eq(0).find('.filename').html(fileName);
})
$('input:file').each(function(i,v){
var filename = $(v).attr('value')
if (filename){
if ($(v).attr('data-image-src')){
$(v).parents(".file-selector").eq(0).find('.filename').html("<img src=\""+$(v).attr('data-image-src')+"\">"+filename);
}
else{
$(v).parents(".file-selector").eq(0).find('.filename').html("<a href=\""+$(v).attr('data-src')+"\">"+filename);
}
}
})
})
</script>
<div class="input-area">
<div class="row-fluid">
<div id="ask-asks" class="span8">
<div class="row-fluid">
<div class="span4"><%= AskQuestion.human_attribute_name(:name) %><%= @ask_question.name %></div>
<div class="span4"><%= AskQuestion.human_attribute_name(:mail) %><%= @ask_question.mail %></div>
<div class="span4"><%= AskQuestion.human_attribute_name(:phone) %><%= @ask_question.phone %></div>
</div>
<% ask_setting.custom_fields.each do |k,v| %>
<%
required_pattern = v['required']=='true' ? '*' : ''
%>
<div class="control-group">
<label class="control-label">
<%= required_pattern %>
<%= v['field'][I18n.locale] %>
</label>
<div class="controls">
<%= show_on_front(k,v,@ask_question,true) %>
</div>
</div>
<% end %>
<div>
<div class="control-group">
<label class="control-label muted"><%= t('ask.serial_number') %></label>
<div class="controls">
<%= @ask_question.get_serial_number %>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t('ask.ip') %></label>
<div class="controls">
<%= @ask_question.ip %>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t('title') %></label>
<div class="controls">
<%= @ask_question.title %>
</div>
</div>
<% if ask_setting.default_setting['appointment'] %>
<div class="control-group">
<label class="control-label muted">
<%= AskQuestion.human_attribute_name(:appointment) %>
</label>
<div class="controls">
<%= @ask_question.appointment.strftime("%Y-%m-%d %H:%M") if @ask_question.appointment %>
</div>
</div>
<% end %>
<% if !@ask_question.comment.blank? %>
<div class="control-group">
<%= f.label :comment, class: "control-label muted" %>
<div class="controls">
<%= @ask_question.comment %>
</div>
</div>
<% end %>
<div class="control-group">
<%= f.label :agree_show, class: "control-label muted" %>
<div class="controls">
<%= @ask_question.agree_show ? t('ask.yes') : t('ask.no') %>
</div>
</div>
<div>
<%= f.label t('situation'), class: "control-label muted" %>
<div class="controls">
<%= f.select :situation, AskTicketStatus.default_sorting.map{|a| [a.title, a.key] } %>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t(:tags) %></label>
<%= select_tags(f, @module_app) %>
</div>
<div class="control-group">
<%= f.label :send_email, class: "control-label muted" %>
<div class="controls">
<label class="radio inline">
<%= f.radio_button :send_email, 1 %>
<%= t('ask.system_Email') %>
</label>
<label class="radio inline">
<%= f.radio_button :send_email, 0 %>
<%= t('ask.no') %>
</label>
<label class="radio inline">
<%= f.radio_button :send_email, 2 %>
<%= t('ask.phone') %>
</label>
<label class="radio inline">
<%= f.radio_button :send_email, 3 %>
<%= t('ask.fax') %>
</label>
<label class="radio inline">
<%= f.radio_button :send_email, 4 %>
<%= t('ask.paper') %>
</label>
</div>
<div class="controls">
<label class="checkbox inline">
<%= f.check_box :generate_pdf %>
<%= t('ask.attach_pdf_to_email') %>
</label>
</div>
</div>
<div class="control-group">
<%= f.label :reply, class: "control-label muted" %>
<div class="controls">
<%= f.text_area :reply, rows: 10, style: 'max-width: 500px; width: 100%;' %>
</div>
</div>
<div class="control-group">
<%= f.label :bcc_emails, class: "control-label muted" %>
<div class="controls">
<%= f.text_area :bcc_emails, rows: 5, style: 'max-width: 500px; width: 100%;' %>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= f.label :comment %></label>
<div class="controls">
<%= f.text_area :release_comment, :id => "#{f.object_name}_comment" %>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= f.label :recommendation %></label>
<div class="controls">
<%= f.text_area :recommendation, rows: 5, style: 'max-width: 500px; width: 100%;'%>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t(:file_) %></label>
<div class="controls">
<%= f.file_field :release_file %>
</div>
</div>
</div>
</div>
<div class="span4">
<!-- 顯示歷史紀錄 -->
<div class="history-records">
<h3><%= t('history') %></h3>
<% if f.object.ask_status_histories.present? %>
<% status_mapping = AskTicketStatus.default_sorting.map{|a| [a.key, a.title]}.to_h %>
<table class="table">
<thead>
<tr>
<th><%= t('status') %></th>
<th><%= t('ask.modified_by') %></th>
<th><%= t('ask.remark') %></th>
<th><%= t('ask.attachment') %></th>
<th><%= t('ask.updated_at') %></th>
</tr>
</thead>
<tbody>
<% f.object.ask_status_histories.each do |ask_status_history| %>
<tr>
<td>
<%= status_mapping[ask_status_history.status] %>
</td>
<td>
<%= ask_status_history.modified_by_name %>
</td>
<td>
<%= ask_status_history.comment %>
</td>
<td>
<%= link_to(ask_status_history[:file], "/#{I18n.locale}/admin/asks/#{ask_status_history.id.to_s}/download") if ask_status_history.file.present? %>
</td>
<td>
<%= ask_status_history.created_at.strftime("%Y-%m-%d %H:%M:%S") %>
</td>
</tr>
<% end %>
</tbody>
</table>
<% else %>
<p><%= t('no_history_records') %></p>
<% end %>
</div>
</div>
</div>
</div>
<%
cancel_href = url_for(:back)
if cancel_href == 'javascript:history.back()'
now_ask_page = AskQuestion.order_by(:id).map(&:id).map.with_index.select{|v,i| v==@ask_question.id}[0][1] rescue nil
now_ask_page = now_ask_page.nil? ? 1 : ((now_ask_page+1).to_f/10).ceil
cancel_href = "/#{I18n.locale}/admin/asks?page=#{now_ask_page}"
end
%>
<div class="form-actions">
<%= f.submit t('submit'), class: 'btn btn-primary' %>
<%= link_to t('cancel'),cancel_href,title: t('cancel'),:class=> 'btn' %>
</div>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
const form = document.querySelector("form.main-forms");
if (!form) return;
const submitButton = form.querySelector('input[type="submit"], button[type="submit"]');
// 取得目前欄位值
function getFormValues(form) {
const values = {};
form.querySelectorAll("input, select, textarea").forEach(el => {
if (el.type === "radio") {
if (el.checked) values[el.name] = el.value;
} else if (el.type === "checkbox") {
values[el.name] = el.checked;
} else {
values[el.name] = el.value;
}
});
return values;
}
// 恢復欄位值
function setFormValues(form, values) {
form.querySelectorAll("input, select, textarea").forEach(el => {
if (el.type === "radio") {
el.checked = (values[el.name] === el.value);
} else if (el.type === "checkbox") {
el.checked = values[el.name] || false;
} else {
el.value = values[el.name] || "";
}
});
}
form.addEventListener("submit", function handler(e) {
const systemEmailRadio = form.querySelector('input[name="ask_question[send_email]"][value="1"]');
if (systemEmailRadio && systemEmailRadio.checked) {
e.preventDefault();
// 儲存目前表單值
const formValues = getFormValues(form);
if (confirm("將透過系統信箱發信 ; Email will be sent by the system")) {
// 點 Yes → 移除 handler送出表單
form.removeEventListener("submit", handler);
form.submit();
} else {
// 點 Cancel → 恢復欄位值 & 按鈕
setFormValues(form, formValues);
if (submitButton) {
submitButton.disabled = false;
submitButton.removeAttribute("disabled");
submitButton.removeAttribute("data-disable-with");
}
}
}
});
});
</script>