127 lines
5.6 KiB
Plaintext
127 lines
5.6 KiB
Plaintext
|
<% content_for :page_specific_javascript do %>
|
||
|
<script type="text/javascript" src="/assets/validator.js"></script>
|
||
|
<% end %>
|
||
|
<% if @thread %>
|
||
|
<div id="threadModal" class="modal hide fade in" tabindex="-1" role="dialog" aria-labelledby="threadModal" aria-hidden="false">
|
||
|
<div class="modal-dialog" role="document">
|
||
|
<div class="modal-content">
|
||
|
<div class="modal-header">
|
||
|
<h3 id="threadModal"><%=t("e_paper.#{@thread.key}")%></h3>
|
||
|
</div>
|
||
|
<div class="modal-body">
|
||
|
<div class="thread-status"><%= @thread.status[:status] %></div>
|
||
|
<div class="thread-count-zone <%= 'hide' unless @thread.status[:current_count]%>">
|
||
|
<span class="thread-current-count"><%= @thread.status[:current_count].to_i %></span>/<span class="thread-all-count"><%= @thread.status[:all_count].to_i %></span>
|
||
|
</div>
|
||
|
<span class="thread-finish_percent"><%= @thread.status[:finish_percent].to_i %></span> % finished
|
||
|
<br>
|
||
|
<span class="thread-info"><%= @thread.status[:info].to_s.html_safe %></span>
|
||
|
<br>
|
||
|
<span class="thread-file">
|
||
|
<% if @thread.status[:filename] %>
|
||
|
<a href="<%=admin_news_download_file_from_thread_path(:id=>@thread.id.to_s) %>" title="<%= @thread.status[:filename] %>"><%= @thread.status[:filename] %></a>
|
||
|
<% end %>
|
||
|
</span>
|
||
|
</div>
|
||
|
<div class="modal-footer">
|
||
|
<button class="btn" id="modal-close-btn" style="width: 4em;" data-dismiss="modal" aria-hidden="true"><%=t('close')%></button>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<% end %>
|
||
|
<form action="<%= admin_news_importnews_path %>" method="post" class="form-horizontal main-forms" id="import-news-xls" enctype="multipart/form-data">
|
||
|
<h3 style="padding-left: 30px;"><%= t("news.export_to_excel") %></h3>
|
||
|
<div class="control-group">
|
||
|
<div class="controls">
|
||
|
<a href="<%= admin_news_export_excel_path %>"><%= t("news.export_all_news") %></a>
|
||
|
</div>
|
||
|
</div>
|
||
|
<h3 style="padding-left: 30px;"><%= t("news.import_from_excel") %></h3>
|
||
|
<%= hidden_field_tag :authenticity_token, form_authenticity_token %>
|
||
|
<div class="input-area">
|
||
|
<div class="control-group">
|
||
|
<div class="controls">
|
||
|
<a href="<%= admin_news_excel_format_path(:format => "xlsx") %>"><%= t("news.download_example_sheet_here") %></a>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="control-group">
|
||
|
<label for="import-news" class="control-label muted"><%= t("upload") %></label>
|
||
|
<div class="controls">
|
||
|
<input type="file" id="import-news" name="import_file" data-fv-validation="required;mustbexls;" data-fv-messages="Cannot be empty; Must be an excel file.;" />
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="form-actions">
|
||
|
<input type="submit" value="<%= t("restful_actions.import") %>" class="btn btn-primary">
|
||
|
</div>
|
||
|
</form>
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
var form = new FormValidator($("#import-news-xls"));
|
||
|
form.validate_functions.mustbexls = function(val){
|
||
|
var t = val.split("."),
|
||
|
ext = t[t.length - 1];
|
||
|
return (ext == "xls" || ext == "xlsx")
|
||
|
}
|
||
|
var form = new FormValidator($("#import-news-wp-xml"));
|
||
|
form.validate_functions.mustbexml = function(val){
|
||
|
var t = val.split("."),
|
||
|
ext = t[t.length - 1];
|
||
|
return (ext == "xml")
|
||
|
}
|
||
|
$(document).ready(function(){
|
||
|
function update_thread(){
|
||
|
$.post("<%=admin_threads_get_status_path%>",{"id": "<%=params[:thread_id]%>"}).done(function(data){
|
||
|
var finish_percent = data["finish_percent"];
|
||
|
var current_count = data["current_count"];
|
||
|
var all_count = data["all_count"];
|
||
|
var is_finish = ((data["status"] == "finish" && data["filename"]) || data["status"] == "error");
|
||
|
var info = data["info"]
|
||
|
if(finish_percent){
|
||
|
$("#threadModal .modal-body .thread-status").text(data["status"]);
|
||
|
if(data["current_count"]){
|
||
|
$("#threadModal .modal-body .thread-count-zone").removeClass('hide');
|
||
|
$("#threadModal .modal-body .thread-current-count").text(current_count);
|
||
|
$("#threadModal .modal-body .thread-all-count").text(all_count);
|
||
|
}else{
|
||
|
$("#threadModal .modal-body .thread-count-zone").addClass('hide');
|
||
|
}
|
||
|
$("#threadModal .modal-body .thread-finish_percent").text(finish_percent);
|
||
|
if(info){
|
||
|
$("#threadModal .modal-body .thread-info").text(info);
|
||
|
}
|
||
|
}
|
||
|
if(!is_finish){
|
||
|
window.time_out_id = window.setTimeout(update_thread, 1000);
|
||
|
}else{
|
||
|
var id = "<%=@thread.id if @thread%>";
|
||
|
var filename = data["filename"];
|
||
|
if(filename){
|
||
|
$("#threadModal .modal-body .thread-file").html(`<a href="<%=admin_news_download_file_from_thread_path%>?id=${id}" title="${filename}">${filename}</a>`);
|
||
|
}
|
||
|
if(window.time_out_id)
|
||
|
window.clearTimeout(window.time_out_id);
|
||
|
// window.setTimeout(function(){
|
||
|
// $("#threadModal").modal("hide");
|
||
|
// alert(data["status"]);
|
||
|
// }, 3000);
|
||
|
return;
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
if($("#threadModal").length != 0){
|
||
|
$("#threadModal").on('hidden.bs.modal',function(){
|
||
|
window.clearTimeout(window.time_out_id);
|
||
|
window.history.replaceState(null,$('title').text(),window.location.pathname);
|
||
|
})
|
||
|
$("#threadModal").on('shown.bs.modal',function(){
|
||
|
window.time_out_id = window.setTimeout(update_thread, 1000);
|
||
|
})
|
||
|
$("#threadModal").modal("show");
|
||
|
$(".show_progress").click(function(){
|
||
|
$("#threadModal").modal("show");
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
</script>
|