Compare commits
No commits in common. "16bf353b2cfaf4b08b3d5918b953b78b32a30832" and "2d00288a4ca35826470cdd33b41aa31e70eb7d07" have entirely different histories.
16bf353b2c
...
2d00288a4c
|
@ -82,7 +82,22 @@ class UniversalTablesController < ApplicationController
|
||||||
tablecolumns.each do |column|
|
tablecolumns.each do |column|
|
||||||
ce = te.column_entries.where(:table_column_id => column.id).first rescue nil
|
ce = te.column_entries.where(:table_column_id => column.id).first rescue nil
|
||||||
if !ce.nil?
|
if !ce.nil?
|
||||||
text = ce.get_frontend_text(column)
|
text = ""
|
||||||
|
case ce.type
|
||||||
|
when "text"
|
||||||
|
text = ce.text
|
||||||
|
when "integer"
|
||||||
|
text = ce.number
|
||||||
|
when "editor"
|
||||||
|
text = ce.content
|
||||||
|
when "date"
|
||||||
|
text = format_date(ce.date, column.date_format)
|
||||||
|
when "period"
|
||||||
|
text = format_date(ce.period_from, column.date_format) + " ~ " + format_date(ce.period_to, column.date_format)
|
||||||
|
text = "" if text.starts_with?(" ~")
|
||||||
|
when "image"
|
||||||
|
text = "<img src='#{ce.image.thumb.url}' class='image-preview' />"
|
||||||
|
end
|
||||||
if column.is_link_to_show
|
if column.is_link_to_show
|
||||||
text = "<a href='#{OrbitHelper.url_to_show("-" + te.uid)}'>#{text}</a>"
|
text = "<a href='#{OrbitHelper.url_to_show("-" + te.uid)}'>#{text}</a>"
|
||||||
end
|
end
|
||||||
|
@ -129,10 +144,6 @@ class UniversalTablesController < ApplicationController
|
||||||
table = UTable.where(:category_id => params[:cat]).first rescue nil
|
table = UTable.where(:category_id => params[:cat]).first rescue nil
|
||||||
page = Page.where(:page_id => params[:page_id]).first
|
page = Page.where(:page_id => params[:page_id]).first
|
||||||
if !table.nil?
|
if !table.nil?
|
||||||
host_url = Site.first.root_url
|
|
||||||
if host_url == "http://"
|
|
||||||
host_url = request.protocol + request.host_with_port
|
|
||||||
end
|
|
||||||
@rows = []
|
@rows = []
|
||||||
@tablecolumns = table.table_columns.where(:display_in_index => true).asc(:order)
|
@tablecolumns = table.table_columns.where(:display_in_index => true).asc(:order)
|
||||||
entries = get_entries(params, table, page, false)
|
entries = get_entries(params, table, page, false)
|
||||||
|
@ -156,15 +167,7 @@ class UniversalTablesController < ApplicationController
|
||||||
text = format_date(ce.period_from, column.date_format) + " ~ " + format_date(ce.period_to, column.date_format)
|
text = format_date(ce.period_from, column.date_format) + " ~ " + format_date(ce.period_to, column.date_format)
|
||||||
text = "" if text.starts_with?(" ~")
|
text = "" if text.starts_with?(" ~")
|
||||||
when "image"
|
when "image"
|
||||||
text = host_url + ce.image.thumb.url
|
text = "http://#{request.host_with_port}" + ce.image.thumb.url
|
||||||
when "file"
|
|
||||||
file_links = []
|
|
||||||
locale = I18n.locale.to_s
|
|
||||||
ce.column_entry_files.desc(:sort_number).each do |entry_file|
|
|
||||||
next unless entry_file.choose_lang_display(locale)
|
|
||||||
file_links << (host_url + entry_file.get_link)
|
|
||||||
end
|
|
||||||
text = file_links.join("\r\n")
|
|
||||||
end
|
end
|
||||||
cols << {"text" => text}
|
cols << {"text" => text}
|
||||||
else
|
else
|
||||||
|
@ -226,7 +229,23 @@ class UniversalTablesController < ApplicationController
|
||||||
|
|
||||||
entry.column_entries.each do |ce|
|
entry.column_entries.each do |ce|
|
||||||
ct = ce.table_column
|
ct = ce.table_column
|
||||||
text = ce.get_frontend_text(ct)
|
text = ""
|
||||||
|
case ce.type
|
||||||
|
when "text"
|
||||||
|
text = ce.text
|
||||||
|
when "integer"
|
||||||
|
text = ce.number
|
||||||
|
when "editor"
|
||||||
|
text = ce.content
|
||||||
|
when "date"
|
||||||
|
text = format_date(ce.date, ce.table_column.date_format)
|
||||||
|
when "period"
|
||||||
|
text = format_date(ce.period_from, ce.table_column.date_format) + " ~ " + format_date(ce.period_from, ce.table_column.date_format)
|
||||||
|
text = "" if text.starts_with?(" ~")
|
||||||
|
when "image"
|
||||||
|
text = "<img src='#{ce.image.thumb.url}' class='image-preview' />"
|
||||||
|
end
|
||||||
|
|
||||||
rows << {
|
rows << {
|
||||||
"title" => ct.title,
|
"title" => ct.title,
|
||||||
"text" => text,
|
"text" => text,
|
||||||
|
@ -234,42 +253,8 @@ class UniversalTablesController < ApplicationController
|
||||||
} if text != ""
|
} if text != ""
|
||||||
end
|
end
|
||||||
sorted = rows.sort{ |k,v| k["order"] <=> v["order"] }
|
sorted = rows.sort{ |k,v| k["order"] <=> v["order"] }
|
||||||
entry.inc(view_count: 1)
|
|
||||||
{
|
{
|
||||||
"entry" => sorted,
|
"entry" => sorted
|
||||||
"extras" => {
|
|
||||||
"view_count_head": I18n.t("view_count"),
|
|
||||||
"view_count" => entry.view_count
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
def download_file
|
|
||||||
file_id = params[:file]
|
|
||||||
file = ColumnEntryFile.find(file_id) rescue nil
|
|
||||||
if !file.nil? && file.file.present?
|
|
||||||
file.inc(download_count: 1)
|
|
||||||
@url = file.file.url
|
|
||||||
begin
|
|
||||||
@path = file.file.file.file rescue ""
|
|
||||||
@filename = File.basename(@path)
|
|
||||||
@ext = @filename.split(".").last
|
|
||||||
if @ext == "png" || @ext == "jpg" || @ext == "bmp" || @ext == "pdf"
|
|
||||||
render "download_file",:layout=>false
|
|
||||||
else
|
|
||||||
if (current_site.accessibility_mode rescue false)
|
|
||||||
render "redirect_to_file",:layout=>false
|
|
||||||
else
|
|
||||||
user_agent = request.user_agent.downcase
|
|
||||||
@escaped_file_name = user_agent.match(/(msie|trident)/) ? CGI::escape(@filename) : @filename
|
|
||||||
send_file(@path, :type=>"application/octet-stream", :filename => @escaped_file_name, :x_sendfile=> true)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
rescue
|
|
||||||
redirect_to @url
|
|
||||||
end
|
|
||||||
else
|
|
||||||
render :file => "#{Rails.root}/app/views/errors/404.html", :layout => false, :status => :not_found
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,9 +2,6 @@ class ColumnEntry
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
include Admin::UniversalTablesHelper
|
|
||||||
include ActionView::Helpers::NumberHelper
|
|
||||||
|
|
||||||
field :text, :localize => true
|
field :text, :localize => true
|
||||||
field :content, :localize => true
|
field :content, :localize => true
|
||||||
field :date, type: DateTime
|
field :date, type: DateTime
|
||||||
|
@ -14,10 +11,6 @@ class ColumnEntry
|
||||||
|
|
||||||
mount_uploader :image, ImageUploader
|
mount_uploader :image, ImageUploader
|
||||||
|
|
||||||
has_many :column_entry_files, :autosave => true, :dependent => :destroy
|
|
||||||
accepts_nested_attributes_for :column_entry_files, :allow_destroy => true
|
|
||||||
after_save :save_column_entry_files
|
|
||||||
|
|
||||||
belongs_to :table_entry, index: true
|
belongs_to :table_entry, index: true
|
||||||
belongs_to :table_column, index: true
|
belongs_to :table_column, index: true
|
||||||
|
|
||||||
|
@ -30,42 +23,4 @@ class ColumnEntry
|
||||||
def type
|
def type
|
||||||
self.table_column.type
|
self.table_column.type
|
||||||
end
|
end
|
||||||
|
|
||||||
def save_column_entry_files
|
|
||||||
return if @skip_callback
|
|
||||||
self.column_entry_files.each do |t|
|
|
||||||
if t.should_destroy
|
|
||||||
t.destroy
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_frontend_text(column)
|
|
||||||
text = ""
|
|
||||||
case self.type
|
|
||||||
when "text"
|
|
||||||
text = self.text
|
|
||||||
when "integer"
|
|
||||||
text = self.number
|
|
||||||
when "editor"
|
|
||||||
text = self.content
|
|
||||||
when "date"
|
|
||||||
text = format_date(self.date, column.date_format)
|
|
||||||
when "period"
|
|
||||||
text = format_date(self.period_from, column.date_format) + " ~ " + format_date(self.period_to, column.date_format)
|
|
||||||
text = "" if text.starts_with?(" ~")
|
|
||||||
when "image"
|
|
||||||
text = "<img src='#{self.image.thumb.url}' class='image-preview' />"
|
|
||||||
when "file"
|
|
||||||
locale = I18n.locale.to_s
|
|
||||||
text = "<ul class=\"column_entry_files\">"
|
|
||||||
self.column_entry_files.desc(:sort_number).each do |entry_file|
|
|
||||||
next unless entry_file.choose_lang_display(locale)
|
|
||||||
file_title = entry_file.get_file_title
|
|
||||||
text += "<li class=\"column_entry_file\"><a class=\"column_entry_file_link\" href=\"#{entry_file.get_link}\" title=\"#{file_title}\" target=\"_blank\">#{file_title}</a><span class=\"file_size\">(#{number_to_human_size(entry_file.file.size)})</span><span class=\"view_count\"><i class=\"fa fa-eye\" title=\"#{I18n.t("universal_table.downloaded_times")}\"></i><span class=\"view-count\">#{entry_file.download_count}</span></span></li>"
|
|
||||||
end
|
|
||||||
text += "</ul>"
|
|
||||||
end
|
|
||||||
text
|
|
||||||
end
|
|
||||||
end
|
end
|
|
@ -1,36 +0,0 @@
|
||||||
class ColumnEntryFile
|
|
||||||
|
|
||||||
include Mongoid::Document
|
|
||||||
include Mongoid::Timestamps
|
|
||||||
|
|
||||||
mount_uploader :file, AssetUploader
|
|
||||||
|
|
||||||
field :file_title, localize: true
|
|
||||||
# field :description
|
|
||||||
field :download_count, type: Integer, default: 0
|
|
||||||
field :choose_lang, :type => Array, :default => I18n.available_locales.map{|l| l.to_s}
|
|
||||||
|
|
||||||
field :should_destroy, :type => Boolean
|
|
||||||
field :sort_number, :type => Integer
|
|
||||||
|
|
||||||
# default_scope asc(:sort_number)
|
|
||||||
|
|
||||||
def choose_lang_display(lang)
|
|
||||||
self.file.present? && self.choose_lang.include?(lang)
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_file_title
|
|
||||||
_file_title = self.file_title
|
|
||||||
if _file_title.blank? && self.file.present?
|
|
||||||
_file_title = self[:file]
|
|
||||||
end
|
|
||||||
_file_title
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_link
|
|
||||||
"/xhr/universal_table/download?file=#{self.id}"
|
|
||||||
end
|
|
||||||
|
|
||||||
belongs_to :column_entry, index: true
|
|
||||||
|
|
||||||
end
|
|
|
@ -5,7 +5,6 @@ class TableEntry
|
||||||
|
|
||||||
attr_accessor :sort_value
|
attr_accessor :sort_value
|
||||||
field :sort_number, type: Integer
|
field :sort_number, type: Integer
|
||||||
field :view_count, type: Integer, default: 0
|
|
||||||
|
|
||||||
has_many :column_entries, :dependent => :destroy
|
has_many :column_entries, :dependent => :destroy
|
||||||
belongs_to :u_table, index: true
|
belongs_to :u_table, index: true
|
||||||
|
|
|
@ -17,7 +17,7 @@ class UTable
|
||||||
|
|
||||||
accepts_nested_attributes_for :table_columns, :allow_destroy => true
|
accepts_nested_attributes_for :table_columns, :allow_destroy => true
|
||||||
|
|
||||||
FIELD_TYPES = ["text", "integer", "editor", "image", "date", "period", "file"]
|
FIELD_TYPES = ["text", "integer", "editor", "image", "date", "period"]
|
||||||
DATE_FORMATS = ["yyyy/MM/dd hh:mm", "yyyy/MM/dd","yyyy/MM", "yyyy"]
|
DATE_FORMATS = ["yyyy/MM/dd hh:mm", "yyyy/MM/dd","yyyy/MM", "yyyy"]
|
||||||
def default_ordered
|
def default_ordered
|
||||||
if self.ordered_with_created_at
|
if self.ordered_with_created_at
|
||||||
|
|
|
@ -1,289 +0,0 @@
|
||||||
<% # encoding: utf-8 %>
|
|
||||||
<% content_for :page_specific_css do %>
|
|
||||||
<style type="text/css">
|
|
||||||
.sort-order-icon{
|
|
||||||
font-size: 25px;
|
|
||||||
cursor: move;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<% end %>
|
|
||||||
<% content_for :page_specific_javascript do %>
|
|
||||||
<%= javascript_include_tag "lib/file-type" %>
|
|
||||||
<%= javascript_include_tag "lib/module-area" %>
|
|
||||||
<%= javascript_include_tag "lib/jquery-ui-sortable.min" %>
|
|
||||||
<% end %>
|
|
||||||
<style>
|
|
||||||
#fileupload {
|
|
||||||
position: relative;
|
|
||||||
clear: both;
|
|
||||||
overflow: hidden;
|
|
||||||
height: 254px;
|
|
||||||
}
|
|
||||||
#fileupload #dropzone.drop {
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
border: 2px dashed #0088CC;
|
|
||||||
border-radius: 10px;
|
|
||||||
color: #0088CC;
|
|
||||||
background-color: #FFFFFF;
|
|
||||||
z-index: 0;
|
|
||||||
}
|
|
||||||
#fileupload #dropzone {
|
|
||||||
padding: 30px;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 3em;
|
|
||||||
font-family: 'Raleway';
|
|
||||||
line-height: 1.2em;
|
|
||||||
color: #e4e4e4;
|
|
||||||
}
|
|
||||||
#fileupload #dropzone.in {
|
|
||||||
opacity: .7;
|
|
||||||
z-index: 2;
|
|
||||||
border-color: #faa732;
|
|
||||||
color: #faa732;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<div class="control-group">
|
|
||||||
<%= f.label :text, column.title, :class => "control-label" %>
|
|
||||||
<div class="controls">
|
|
||||||
<p class="add-btn">
|
|
||||||
<%= hidden_field_tag 'column_entry_file_field_count', file_field.column_entry_files.count %>
|
|
||||||
<a id="add_file" class="trigger btn btn-small btn-primary"><i class="icons-plus"></i> <%= t(:add) %></a>
|
|
||||||
</p>
|
|
||||||
<hr>
|
|
||||||
<!-- Add -->
|
|
||||||
<div class="add-target" id="add-target"></div>
|
|
||||||
<!-- Exist -->
|
|
||||||
<% if file_field && !file_field.column_entry_files.blank? %>
|
|
||||||
<div class="exist plugin-sortable">
|
|
||||||
<% file_field.column_entry_files.desc(:sort_number).each_with_index do |column_entry_file, i| %>
|
|
||||||
<%= f.fields_for :column_entry_files, column_entry_file do |f| %>
|
|
||||||
<%= render :partial => 'form_file', :locals => {:f => f, :i => i,:form_file => column_entry_file} %>
|
|
||||||
<% end %>
|
|
||||||
<% end %>
|
|
||||||
<hr>
|
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
<div id="fileupload" ondrop="dropHandler(event);" ondragover="dragOverHandler(event);" ondragleave="(function(){$('#dropzone').removeClass('in');})()">
|
|
||||||
<div id="dropzone" class="drop">
|
|
||||||
<div data-icons=""></div>
|
|
||||||
<%=t("universal_table.drag_file_to_here")%>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<% if !file_field.new_record? %>
|
|
||||||
<%= f.hidden_field :id %>
|
|
||||||
<% else %>
|
|
||||||
<%= f.hidden_field :table_column_id, :value => column.id %>
|
|
||||||
<% end %>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<% content_for :page_specific_javascript do %>
|
|
||||||
<script>
|
|
||||||
if (!FileReader.prototype.readAsBinaryString) {
|
|
||||||
console.log('readAsBinaryString definition not found');
|
|
||||||
|
|
||||||
FileReader.prototype.readAsBinaryString = function (fileData) {
|
|
||||||
var binary = '';
|
|
||||||
var pk = this;
|
|
||||||
var reader = new FileReader();
|
|
||||||
|
|
||||||
reader.onload = function (e) {
|
|
||||||
var bytes = new Uint8Array(reader.result);
|
|
||||||
var length = bytes.byteLength;
|
|
||||||
|
|
||||||
for (var i = 0; i < length; i++) {
|
|
||||||
var a = bytes[i];
|
|
||||||
|
|
||||||
var b = String.fromCharCode(a)
|
|
||||||
binary += b;
|
|
||||||
}
|
|
||||||
|
|
||||||
pk.content = binary;
|
|
||||||
$(pk).trigger('onload');
|
|
||||||
}
|
|
||||||
|
|
||||||
reader.readAsArrayBuffer(fileData);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function FileListItems (files) {
|
|
||||||
var b;
|
|
||||||
try{
|
|
||||||
b = new DataTransfer();
|
|
||||||
}catch(e){
|
|
||||||
if(window.dataTransfer){
|
|
||||||
b = window.dataTransfer;
|
|
||||||
}else{
|
|
||||||
if(typeof(ClipboardEvent) == "undefined"){ //IE
|
|
||||||
b = new DataTransfer();
|
|
||||||
}else{
|
|
||||||
b = new ClipboardEvent("").clipboardData;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(b.items){
|
|
||||||
b.items.clear();
|
|
||||||
}else{
|
|
||||||
if(b.files.length != 0 ){
|
|
||||||
var files_length = b.files.length;
|
|
||||||
for(var i = files_length - 1;i >= 0;i = i - 1){
|
|
||||||
delete b.files[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(b.files.length != 0){
|
|
||||||
return files
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (var i = 0, len = files.length; i<len; i++){
|
|
||||||
if(b.items){
|
|
||||||
b.items.add(files[i])
|
|
||||||
}else{
|
|
||||||
b.files[i] = files[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return b.files
|
|
||||||
}
|
|
||||||
function change_files_to_file_field(file_field,files){
|
|
||||||
var fileupload = $(file_field).parents(".fileupload");
|
|
||||||
if(fileupload.length > 0){
|
|
||||||
fileupload.find(".fileupload-preview").text(files[0].name);
|
|
||||||
}
|
|
||||||
var files_list = new FileListItems(files)
|
|
||||||
try{
|
|
||||||
$(file_field)[0].files = files_list;
|
|
||||||
}catch(e){console.log(e)}
|
|
||||||
if($(file_field)[0].files.length == 0){ //Change failed
|
|
||||||
var file_field_values = [];
|
|
||||||
var file_reader = new FileReader();
|
|
||||||
$("[name=\""+$(file_field)[0].name+"\"][type=\"hidden\"]").remove();
|
|
||||||
var hidden_input = $("<input type=\"hidden\" name=\""+$(file_field)[0].name+"\">");
|
|
||||||
var hidden_input_values = [];
|
|
||||||
$(file_field).after(hidden_input);
|
|
||||||
var files_list_length = files_list.length;
|
|
||||||
for(var i = 0; i < files_list_length; i++){
|
|
||||||
var file = files_list[i];
|
|
||||||
$(file_field)[0].files[i] = file;
|
|
||||||
file_reader.readAsBinaryString(files_list[i]);
|
|
||||||
file_reader.onload = (function(hidden_input,file,i,files_list_length) {
|
|
||||||
return function(e) {
|
|
||||||
var file_info = {};
|
|
||||||
file_info["name"] = file.name;
|
|
||||||
file_info["type"] = file.type;
|
|
||||||
if (file_reader.result)
|
|
||||||
file_reader.content = file_reader.result;
|
|
||||||
file_info["content"] = e ? e.target.result : file_reader.content;
|
|
||||||
if(Array.isArray(hidden_input_values)){
|
|
||||||
hidden_input_values.push(file_info);
|
|
||||||
}
|
|
||||||
if(i == files_list_length - 1){
|
|
||||||
if(hidden_input_values.length == 1){
|
|
||||||
hidden_input_values = hidden_input_values[0];
|
|
||||||
}
|
|
||||||
hidden_input.val(JSON.stringify(hidden_input_values));
|
|
||||||
}
|
|
||||||
};})(hidden_input,file,i,files_list_length);
|
|
||||||
file_field_values.push("C:\\fakepath\\" + files_list[i].name);
|
|
||||||
}
|
|
||||||
Object.defineProperty($(file_field)[0].files, "length", {
|
|
||||||
// only returns odd die sides
|
|
||||||
get: function () {
|
|
||||||
var length = 0;
|
|
||||||
while(this[length]){
|
|
||||||
length++;
|
|
||||||
}
|
|
||||||
return length;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Object.defineProperty($(file_field)[0], "value", {
|
|
||||||
// only returns odd die sides
|
|
||||||
get: function () {
|
|
||||||
return (this.getAttribute('value') ? this.getAttribute('value') : "");
|
|
||||||
},
|
|
||||||
set: function(value) {
|
|
||||||
this.setAttribute('value',value);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$(file_field)[0].value = file_field_values.join(", ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function dragOverHandler(ev) {
|
|
||||||
document.activeElement.blur();
|
|
||||||
$(ev.target).addClass("in");
|
|
||||||
// Prevent default behavior (Prevent file from being opened)
|
|
||||||
ev.preventDefault();
|
|
||||||
}
|
|
||||||
function dropHandler(ev) {
|
|
||||||
window.ev = ev;
|
|
||||||
window.dataTransfer = ev.dataTransfer;
|
|
||||||
// Prevent default behavior (Prevent file from being opened)
|
|
||||||
ev.preventDefault();
|
|
||||||
var files = [];
|
|
||||||
if (ev.dataTransfer.items) {
|
|
||||||
// Use DataTransferItemList interface to access the file(s)
|
|
||||||
for (var i = 0; i < ev.dataTransfer.items.length; i++) {
|
|
||||||
// If dropped items aren't files, reject them
|
|
||||||
if (ev.dataTransfer.items[i].kind === 'file') {
|
|
||||||
var file = ev.dataTransfer.items[i].getAsFile();
|
|
||||||
files.push(file)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Use DataTransfer interface to access the file(s)
|
|
||||||
for (var i = 0; i < ev.dataTransfer.files.length; i++) {
|
|
||||||
var file = ev.dataTransfer.files[i];
|
|
||||||
files.push(file)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
files.forEach(function(file){
|
|
||||||
var single_file = [file];
|
|
||||||
var file_field = add_file_field();
|
|
||||||
change_files_to_file_field(file_field,single_file);
|
|
||||||
})
|
|
||||||
window.files = files;
|
|
||||||
var target = ev.target ? ev.target : ev.srcElement;
|
|
||||||
$(target).removeClass("in");
|
|
||||||
}
|
|
||||||
function add_file_field(){
|
|
||||||
var self = $('#add_file');
|
|
||||||
var new_id = $(self).prev().attr('value');
|
|
||||||
var old_id = new RegExp("new_column_entry_files", "g");
|
|
||||||
var on = $('.language-nav li.active').index();
|
|
||||||
var le = $('#add-target').children('.start-line').length;
|
|
||||||
$(self).prev().attr('value', parseInt(new_id) + 1);
|
|
||||||
$('#add-target').prepend(("<%= escape_javascript(add_attribute 'form_file', f, :column_entry_files) %>").replace(old_id, new_id).replace("new_column_entry_file_sort_order_XXX", parseInt(new_id) + 1));
|
|
||||||
var file_field = $('#add-target').find("*").eq(0).find("[type=\"file\"]");
|
|
||||||
$('#add-target').children('.start-line').eq(le).children('.input-append').find('.tab-content').each(function() {
|
|
||||||
$(self).children('.tab-pane').eq(on).addClass('in active').siblings().removeClass('in active');
|
|
||||||
});
|
|
||||||
formTip();
|
|
||||||
return file_field;
|
|
||||||
}
|
|
||||||
$(document).ready(function() {
|
|
||||||
$(".plugin-sortable").sortable({
|
|
||||||
update : function(event, ui){
|
|
||||||
var existingfiles = $(".exist.plugin-sortable div.fileupload")
|
|
||||||
existingfiles.each(function(i, file){
|
|
||||||
$(file).find("input.file-sort-number-field").val(existingfiles.length - i);
|
|
||||||
})
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$('.main-forms .add-on').tooltip();
|
|
||||||
$(document).on('click', '#add_file', add_file_field);
|
|
||||||
$(document).on('click', '.delete_file', function(){
|
|
||||||
$(this).parents('.input-prepend').remove();
|
|
||||||
});
|
|
||||||
$(document).on('click',"[type='file']",function(){
|
|
||||||
$("[name=\""+$(this).attr("name")+"\"][type=\"hiiden\"]").remove();
|
|
||||||
});
|
|
||||||
$(document).on('click', '.remove_existing_record', function(){
|
|
||||||
if(confirm("<%= I18n.t(:sure?)%>")){
|
|
||||||
$(this).children('.should_destroy').attr('value', 1);
|
|
||||||
$(this).parents('.start-line').hide();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<% end %>
|
|
|
@ -1,65 +0,0 @@
|
||||||
<% if form_file.new_record? %>
|
|
||||||
<div class="fileupload fileupload-new start-line" data-provides="fileupload">
|
|
||||||
<% else %>
|
|
||||||
<div class="fileupload fileupload-exists start-line" data-provides="fileupload">
|
|
||||||
<i class="icons-list-2 sort-order-icon"></i>
|
|
||||||
<% if form_file.file.blank? %>
|
|
||||||
<%= t(:no_file) %>
|
|
||||||
<% else %>
|
|
||||||
<%= link_to content_tag(:i) + form_file.file_identifier, form_file.file.url, {:class => 'file-link file-type', :target => '_blank', :title => form_file.file_identifier} %>
|
|
||||||
<% end %>
|
|
||||||
<% end %>
|
|
||||||
<div class="input-prepend input-append">
|
|
||||||
<label>
|
|
||||||
<span class="add-on btn btn-file" title="<%= t(:file_) %>">
|
|
||||||
<i class="icons-paperclip"></i>
|
|
||||||
<%= f.file_field :file %>
|
|
||||||
</span>
|
|
||||||
<div class="uneditable-input input-medium">
|
|
||||||
<i class="icon-file fileupload-exists"></i>
|
|
||||||
<span class="fileupload-preview"><%= (form_file.new_record? || form_file.file.blank?) ? t(:select_file) : t(:change_file) %></span>
|
|
||||||
</div>
|
|
||||||
</label>
|
|
||||||
<span class="add-on icons-pencil" title="<%= t('file.name') %>"></span>
|
|
||||||
<span class="tab-content">
|
|
||||||
<% @site_in_use_locales.each_with_index do |locale, i| %>
|
|
||||||
<span class="tab-pane fade <%= ( i == 0 ) ? "in active" : '' %> <%= locale %>">
|
|
||||||
<%= f.fields_for :file_title_translations do |f| %>
|
|
||||||
<%= f.text_field locale, :class => "input-medium", placeholder: t('file.name'), :value => (form_file.file_title_translations[locale] rescue nil) %>
|
|
||||||
<% end %>
|
|
||||||
</span>
|
|
||||||
<% end %>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span class="add-on btn-group btn" title="<%= t('universal_table.show_lang') %>">
|
|
||||||
<i class="icons-earth"></i> <span class="caret"></span>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<% @site_in_use_locales.each do |locale| %>
|
|
||||||
<li>
|
|
||||||
<label class="checkbox">
|
|
||||||
<%= check_box_tag "#{f.object_name}[choose_lang][]", locale, form_file.choose_lang.include?(locale.to_s) %>
|
|
||||||
<%= t(locale.to_s) %>
|
|
||||||
</label>
|
|
||||||
</li>
|
|
||||||
<% end %>
|
|
||||||
</ul>
|
|
||||||
<%= hidden_field_tag "#{f.object_name}[choose_lang][]", '' %>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<% if form_file.new_record? %>
|
|
||||||
<span class="delete_file add-on btn" title="<%= t(:delete_) %>">
|
|
||||||
<a class="icon-trash"></a>
|
|
||||||
<%= f.hidden_field :sort_number, :value => "new_column_entry_file_sort_order_XXX", :class => "input-mini" %>
|
|
||||||
</span>
|
|
||||||
<% else %>
|
|
||||||
<span class="remove_existing_record add-on btn" title="<%= t(:remove) %>">
|
|
||||||
<%= f.hidden_field :id %>
|
|
||||||
<%= f.hidden_field :sort_number , :class => "file-sort-number-field" %>
|
|
||||||
<a class=" icon-remove"></a>
|
|
||||||
<%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %>
|
|
||||||
</span>
|
|
||||||
<span class="downloaded_times">Downloaded <b><%= form_file.download_count %></b> time<%= form_file.download_count > 1 ? "s" : "" %>.</span>
|
|
||||||
<% end %>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
|
@ -43,10 +43,6 @@ wb.add_worksheet(name: "Structure") do |sheet|
|
||||||
row << column.title + "-To"
|
row << column.title + "-To"
|
||||||
row1 << column.key
|
row1 << column.key
|
||||||
row2 << column.type + " : " + column.date_format.upcase + "-period_to"
|
row2 << column.type + " : " + column.date_format.upcase + "-period_to"
|
||||||
when "file"
|
|
||||||
row << column.title
|
|
||||||
row1 << column.key
|
|
||||||
row2 << "Please leave this column blank. Upload the files manually."
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -27,13 +27,13 @@
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<% can_edit = can_edit_or_delete?(@table) %>
|
<% can_edit = can_edit_or_delete?(@entries.first.u_table) if !(@entries.first.nil?) %>
|
||||||
<% @entries.each do |entry| %>
|
<% @entries.each do |entry| %>
|
||||||
<tr>
|
<tr>
|
||||||
<% @columns.each_with_index do |column, index| %>
|
<% @columns.each_with_index do |column, index| %>
|
||||||
<% ce = entry.column_entries.where(:table_column_id => column.id).first rescue nil %>
|
<% ce = entry.column_entries.where(:table_column_id => column.id).first rescue nil %>
|
||||||
<td>
|
|
||||||
<% if !ce.nil? %>
|
<% if !ce.nil? %>
|
||||||
|
<td>
|
||||||
<% case ce.type %>
|
<% case ce.type %>
|
||||||
<% when "text" %>
|
<% when "text" %>
|
||||||
<%= ce.text %>
|
<%= ce.text %>
|
||||||
|
@ -53,17 +53,6 @@
|
||||||
<% if !ce.period_from.nil? %>
|
<% if !ce.period_from.nil? %>
|
||||||
<%= format_date(ce.period_from, column.date_format) %> ~ <%= format_date(ce.period_to, column.date_format) %>
|
<%= format_date(ce.period_from, column.date_format) %> ~ <%= format_date(ce.period_to, column.date_format) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% when "file" %>
|
|
||||||
<% locale = I18n.locale.to_s %>
|
|
||||||
<ol>
|
|
||||||
<% ce.column_entry_files.desc(:sort_number).each do |entry_file| %>
|
|
||||||
<% next unless entry_file.choose_lang_display(locale) %>
|
|
||||||
<li><%= link_to entry_file.get_file_title, entry_file.file.url %></li>
|
|
||||||
<% end %>
|
|
||||||
</ol>
|
|
||||||
<% end %>
|
|
||||||
<% else %>
|
|
||||||
|
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if index == 0 && can_edit %>
|
<% if index == 0 && can_edit %>
|
||||||
<div class="quick-edit">
|
<div class="quick-edit">
|
||||||
|
@ -74,6 +63,11 @@
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
</td>
|
</td>
|
||||||
|
<% else %>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -1,147 +0,0 @@
|
||||||
<% if @ext == 'pdf' %>
|
|
||||||
<%= render partial: 'archives/viewer' %>
|
|
||||||
<% else %>
|
|
||||||
<html lang="<%= I18n.locale.to_s%>" style="margin: 0em; padding: 0em; width: 100%; height: 100%; overflow: hidden; background-color: rgb(230, 230, 230);">
|
|
||||||
<head>
|
|
||||||
<meta name="viewport" content="width=device-width, minimum-scale=0.1">
|
|
||||||
<title><%=@filename%></title>
|
|
||||||
<%= stylesheet_link_tag "archive/download_file.css" %>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1 style="display: none;"><%=@filename%></h1>
|
|
||||||
<% if @ext != "png" && @ext != "jpg" && @ext != "bmp" %>
|
|
||||||
<object data="<%=@url%>" height="100%" type="application/<%=@ext%>" width="100%">
|
|
||||||
<iframe height="100%" src="<%=@url%>" title="<%=@filename%>" width="100%"></iframe>
|
|
||||||
<img alt="<%=@filename%>" src="<%=@url%>">
|
|
||||||
</object>
|
|
||||||
<% else %>
|
|
||||||
<img alt="<%=@filename%>" src="<%=@url%>">
|
|
||||||
<script type="text/javascript">
|
|
||||||
var img = document.getElementsByTagName('img')[0];
|
|
||||||
var width = img.width;
|
|
||||||
var height = img.height;
|
|
||||||
window.innerWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
|
|
||||||
window.innerHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
|
|
||||||
var window_width = window.innerWidth;
|
|
||||||
var window_height = window.innerHeight;
|
|
||||||
var zoom_in_cursor,zoom_out_cursor;
|
|
||||||
var IE_ver = 11;
|
|
||||||
if(navigator.userAgent.search("MSIE") != -1){
|
|
||||||
IE_ver = Number(navigator.userAgent.split("MSIE")[1].split(";")[0]);
|
|
||||||
}
|
|
||||||
if(IE_ver <= 8){
|
|
||||||
img.style.marginTop = "-"+img.height/2+"px";
|
|
||||||
img.style.marginLeft = "-"+img.width/2+"px";
|
|
||||||
}else{
|
|
||||||
img.style.transform= "translate(-50%, -50%)";
|
|
||||||
img.style["-ms-transform"]= "translate(-50%, -50%)";
|
|
||||||
img.style["-moz-transform"]= "translate(-50%, -50%)";
|
|
||||||
}
|
|
||||||
if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
|
|
||||||
zoom_in_cursor = 'url("/assets/archive/zoomin.cur"), auto';
|
|
||||||
zoom_out_cursor = 'url("/assets/archive/zoomout.cur"), auto';
|
|
||||||
}else{
|
|
||||||
zoom_in_cursor = 'zoom-in';
|
|
||||||
zoom_out_cursor = 'zoom-out';
|
|
||||||
}
|
|
||||||
if(height > window_height && (height / width) > (window_height / window_width) ){
|
|
||||||
img.height = window_height;
|
|
||||||
img.width = window_height / height * width;
|
|
||||||
img.style.cursor = zoom_in_cursor;
|
|
||||||
if(IE_ver <= 8){
|
|
||||||
img.style.marginTop = "-"+img.height/2+"px";
|
|
||||||
img.style.marginLeft = "-"+img.width/2+"px";
|
|
||||||
}
|
|
||||||
img.onclick=function(e){
|
|
||||||
var event = e || window.event;
|
|
||||||
if(img.style.cursor == zoom_in_cursor){
|
|
||||||
var cursor_x = event.clientX;
|
|
||||||
var cursor_y = event.clientY;
|
|
||||||
img.height = height;
|
|
||||||
img.width = width;
|
|
||||||
img.style.cursor = zoom_out_cursor;
|
|
||||||
document.getElementsByTagName('html')[0].style.overflow = "";
|
|
||||||
img.style.transform= "none";
|
|
||||||
img.style["-ms-transform"]= "none";
|
|
||||||
img.style["-moz-transform"]= "none";
|
|
||||||
img.style.top= "0";
|
|
||||||
img.style.left= "0";
|
|
||||||
if(IE_ver <= 8){
|
|
||||||
img.style.marginTop = "0";
|
|
||||||
img.style.marginLeft = "0";
|
|
||||||
}
|
|
||||||
window.scroll(
|
|
||||||
(((cursor_x - (window_width - window_height / height * width)/2) * height / window_height) - window_width / 2),
|
|
||||||
((cursor_y * height / window_height) - window_height / 2)
|
|
||||||
);
|
|
||||||
}else{
|
|
||||||
img.height = window_height;
|
|
||||||
img.width = window_height / height * width;
|
|
||||||
img.style.cursor = zoom_in_cursor;
|
|
||||||
document.getElementsByTagName('html')[0].style.overflow = "hidden";
|
|
||||||
if(IE_ver <= 8){
|
|
||||||
img.style.marginTop = "-"+img.height/2+"px";
|
|
||||||
img.style.marginLeft = "-"+img.width/2+"px";
|
|
||||||
}else{
|
|
||||||
img.style.transform= "translate(-50%, -50%)";
|
|
||||||
img.style["-ms-transform"]= "translate(-50%, -50%)";
|
|
||||||
img.style["-moz-transform"]= "translate(-50%, -50%)";
|
|
||||||
}
|
|
||||||
img.style.top= "50%";
|
|
||||||
img.style.left= "50%";
|
|
||||||
window.scroll(0, 0);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}else if(width > window_width){
|
|
||||||
img.width = window_width;
|
|
||||||
img.height = window_width / width * height;
|
|
||||||
img.style.cursor = zoom_in_cursor;
|
|
||||||
if(IE_ver <= 8){
|
|
||||||
img.style.marginTop = "-"+img.height/2+"px";
|
|
||||||
img.style.marginLeft = "-"+img.width/2+"px";
|
|
||||||
}
|
|
||||||
img.onclick=function(e){
|
|
||||||
var event = e || window.event;
|
|
||||||
if(img.style.cursor == zoom_in_cursor){
|
|
||||||
var cursor_x = event.clientX;
|
|
||||||
var cursor_y = event.clientY;
|
|
||||||
img.height = height;
|
|
||||||
img.width = width;
|
|
||||||
img.style.cursor = zoom_out_cursor;
|
|
||||||
document.getElementsByTagName('html')[0].style.overflow = "";
|
|
||||||
img.style.transform= "none";
|
|
||||||
img.style["-ms-transform"]= "none";
|
|
||||||
img.style["-moz-transform"]= "none";
|
|
||||||
img.style.top= "0";
|
|
||||||
img.style.left= "0";
|
|
||||||
if(IE_ver <= 8){
|
|
||||||
img.style.marginTop = "0";
|
|
||||||
img.style.marginLeft = "0";
|
|
||||||
}
|
|
||||||
window.scroll( ((cursor_x * height / window_height) - window_width / 2),
|
|
||||||
(((cursor_y - (window_height - window_width / width * height)/2) * height / window_height) - window_height / 2)
|
|
||||||
);
|
|
||||||
}else{
|
|
||||||
img.width = window_width;
|
|
||||||
img.height = window_width / width * height;
|
|
||||||
img.style.cursor = zoom_in_cursor;
|
|
||||||
document.getElementsByTagName('html')[0].style.overflow = "hidden";
|
|
||||||
if(IE_ver <= 8){
|
|
||||||
img.style.marginTop = "-"+img.height/2+"px";
|
|
||||||
img.style.marginLeft = "-"+img.width/2+"px";
|
|
||||||
}else{
|
|
||||||
img.style.transform= "translate(-50%, -50%)";
|
|
||||||
img.style["-ms-transform"]= "translate(-50%, -50%)";
|
|
||||||
img.style["-moz-transform"]= "translate(-50%, -50%)";
|
|
||||||
}
|
|
||||||
img.style.top= "50%";
|
|
||||||
img.style.left= "50%";
|
|
||||||
window.scroll(0, 0);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<% end %>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
<% end %>
|
|
|
@ -8,13 +8,11 @@ wb.add_worksheet(name: "Table") do |sheet|
|
||||||
headings = @tablecolumns.collect{|tc| tc.title}
|
headings = @tablecolumns.collect{|tc| tc.title}
|
||||||
sheet.add_row headings, :style => heading
|
sheet.add_row headings, :style => heading
|
||||||
|
|
||||||
wrap = sheet.styles.add_style alignment: {wrap_text: true}
|
|
||||||
|
|
||||||
@rows.each do |r|
|
@rows.each do |r|
|
||||||
row = []
|
row = []
|
||||||
r["columns"].each do |col|
|
r["columns"].each do |col|
|
||||||
row << col["text"]
|
row << col["text"]
|
||||||
end
|
end
|
||||||
sheet.add_row row, style: wrap
|
sheet.add_row row
|
||||||
end
|
end
|
||||||
end
|
end
|
|
@ -1,17 +0,0 @@
|
||||||
<html lang="<%= I18n.locale.to_s%>">
|
|
||||||
<head>
|
|
||||||
<title><%=@filename%></title>
|
|
||||||
<link href="/assets/archive/download_file.css" rel="stylesheet" media="all">
|
|
||||||
</head>
|
|
||||||
<body style="background: #fff;">
|
|
||||||
<div class="wrap_block">
|
|
||||||
<h1 style="display: none;"><%=@filename%></h1>
|
|
||||||
<% download_text = t('download') + " " + @filename %>
|
|
||||||
<h2 align="center"><a href="<%=@url%>" target="blank" download="<%=@filename%>" title="<%=download_text%>"><%=download_text%></a></h2>
|
|
||||||
<p align="center">
|
|
||||||
<a href="javascript:window.close();" title="<%=t('close')%>"><%=t('close')%></a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<script>window.location.href="<%=@url%>";</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -5,7 +5,6 @@ wb = xlsx_package.workbook
|
||||||
wb.add_worksheet(name: "Structure") do |sheet|
|
wb.add_worksheet(name: "Structure") do |sheet|
|
||||||
heading = sheet.styles.add_style(:b => true, :locked => true)
|
heading = sheet.styles.add_style(:b => true, :locked => true)
|
||||||
type = sheet.styles.add_style(:i => true)
|
type = sheet.styles.add_style(:i => true)
|
||||||
wrap = sheet.styles.add_style alignment: {wrap_text: true}
|
|
||||||
|
|
||||||
row = []
|
row = []
|
||||||
row1 = []
|
row1 = []
|
||||||
|
@ -41,10 +40,6 @@ wb.add_worksheet(name: "Structure") do |sheet|
|
||||||
row << column.title + "-From ~ To"
|
row << column.title + "-From ~ To"
|
||||||
row1 << column.key
|
row1 << column.key
|
||||||
row2 << column.type + " : " + column.date_format.upcase + "-period_from ~ period_to"
|
row2 << column.type + " : " + column.date_format.upcase + "-period_from ~ period_to"
|
||||||
when "file"
|
|
||||||
row << column.title
|
|
||||||
row1 << column.key
|
|
||||||
row2 << "Please leave this column blank. Upload the files manually."
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -95,17 +90,9 @@ wb.add_worksheet(name: "Structure") do |sheet|
|
||||||
when "yyyy"
|
when "yyyy"
|
||||||
row << (column.period_from.strftime("%Y")rescue "") + " ~ " + (column.period_to.strftime("%Y") rescue "")
|
row << (column.period_from.strftime("%Y")rescue "") + " ~ " + (column.period_to.strftime("%Y") rescue "")
|
||||||
end
|
end
|
||||||
when "file"
|
|
||||||
file_links = []
|
|
||||||
locale = I18n.locale.to_s
|
|
||||||
column.column_entry_files.desc(:sort_number).each do |entry_file|
|
|
||||||
next unless entry_file.choose_lang_display(locale)
|
|
||||||
file_links << (url + entry_file.get_link)
|
|
||||||
end
|
|
||||||
row << file_links.join("\r\n")
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
sheet.add_row row, style: wrap
|
sheet.add_row row
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
|
@ -18,6 +18,3 @@ en:
|
||||||
created_at: Created Time
|
created_at: Created Time
|
||||||
edit_sort: Edit Sorting
|
edit_sort: Edit Sorting
|
||||||
manual_update_sort: Manually Update Sorting
|
manual_update_sort: Manually Update Sorting
|
||||||
drag_file_to_here: Drag file to here
|
|
||||||
show_lang: Language
|
|
||||||
downloaded_times: Downloaded Times
|
|
|
@ -18,6 +18,3 @@ zh_tw:
|
||||||
created_at: 創建時間
|
created_at: 創建時間
|
||||||
edit_sort: 編輯排序
|
edit_sort: 編輯排序
|
||||||
manual_update_sort: 手動更新排序
|
manual_update_sort: 手動更新排序
|
||||||
drag_file_to_here: 拖移檔案到此
|
|
||||||
show_lang: 呈現語系
|
|
||||||
downloaded_times: 下載次數
|
|
|
@ -21,7 +21,6 @@ Rails.application.routes.draw do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
get "/xhr/universal_table/export", to: 'universal_tables#export_filtered'
|
get "/xhr/universal_table/export", to: 'universal_tables#export_filtered'
|
||||||
get "/xhr/universal_table/download", to: "universal_tables#download_file"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,11 +8,8 @@ namespace :universal_table_tasks do
|
||||||
I18n.locale = :zh_tw
|
I18n.locale = :zh_tw
|
||||||
table = UTable.find(id)
|
table = UTable.find(id)
|
||||||
ac = ActionController::Base.new()
|
ac = ActionController::Base.new()
|
||||||
host_url = Site.first.root_url
|
url = "http://#{args.url}"
|
||||||
if host_url == "http://"
|
xlsx = ac.render_to_string handlers: [:axlsx], formats: [:xlsx], template: "utable_export/export", locals: {table: table, site_in_use_locales: Site.first.in_use_locales, url: url}
|
||||||
host_url = "http://#{args.url}"
|
|
||||||
end
|
|
||||||
xlsx = ac.render_to_string handlers: [:axlsx], formats: [:xlsx], template: "utable_export/export", locals: {table: table, site_in_use_locales: Site.first.in_use_locales, url: host_url}
|
|
||||||
dirname = "public/uploads/utable_export/#{id}"
|
dirname = "public/uploads/utable_export/#{id}"
|
||||||
FileUtils.mkdir_p(dirname) unless File.exist?(dirname)
|
FileUtils.mkdir_p(dirname) unless File.exist?(dirname)
|
||||||
f = "#{dirname}/#{table.title.gsub(/[ "'*@#$%^&()+=;:.,?>|\\\/<~_!:,、。!?;「」〈〉【】/]/,'')}.xlsx"
|
f = "#{dirname}/#{table.title.gsub(/[ "'*@#$%^&()+=;:.,?>|\\\/<~_!:,、。!?;「」〈〉【】/]/,'')}.xlsx"
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
"en" : "1. Pure index table"
|
"en" : "1. Pure index table"
|
||||||
},
|
},
|
||||||
"thumbnail" : "thumb.png"
|
"thumbnail" : "thumb.png"
|
||||||
},
|
}
|
||||||
{
|
{
|
||||||
"filename" : "index2",
|
"filename" : "index2",
|
||||||
"name" : {
|
"name" : {
|
||||||
|
|
|
@ -19,7 +19,3 @@
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div class="view_count pull-right">
|
|
||||||
<i class="fa fa-eye">{{view_count_head}}:</i>
|
|
||||||
<span class="view-count">{{view_count}}</span>
|
|
||||||
</div>
|
|
Loading…
Reference in New Issue