filemanager and some update for file uploader . added file uploader to kernel

This commit is contained in:
Harry Bomrah 2013-09-09 23:10:04 +08:00 committed by saurabhbhatia
parent 3328a41b55
commit f920a4f6ba
28 changed files with 586 additions and 88 deletions

View File

@ -26,10 +26,11 @@ CKEDITOR.editorConfig = function( config ) {
// config.filebrowserImageBrowseUrl = '/browser/browse.php?type=Images'; // config.filebrowserImageBrowseUrl = '/browser/browse.php?type=Images';
// config.filebrowserUploadUrl = '/uploader/upload.php'; // config.filebrowserUploadUrl = '/uploader/upload.php';
config.filebrowserBrowseUrl = "<%= Rails.application.routes.url_helpers.file_upload_admin_assets_path %>" config.filebrowserBrowseUrl = "<%= Rails.application.routes.url_helpers.admin_assets_path %>";
config.filebrowserUploadUrl = "<%= Rails.application.routes.url_helpers.file_upload_admin_assets_path %>" config.filebrowserImageBrowseUrl = "<%= Rails.application.routes.url_helpers.admin_assets_path %>?type=images&module_app_id=<%= ModuleApp.first(conditions: {title: 'Asset'}).id.to_s %>";
// config.filebrowserUploadUrl = "<%= Rails.application.routes.url_helpers.file_upload_admin_assets_path %>";
config.contentsCss = '/orbit_4.0.1/assets/javascripts/lib/ckeditor/plugins/stylesheetparser/samples/assets/sample.css'; // config.contentsCss = '/orbit_4.0.1/assets/javascripts/lib/ckeditor/plugins/stylesheetparser/samples/assets/sample.css';
// Load from a list of definitions. // Load from a list of definitions.
// config.stylesSet = [ // config.stylesSet = [

View File

@ -3,7 +3,17 @@ class Admin::AssetsController < OrbitBackendController
before_filter :setup_vars before_filter :setup_vars
def index def index
@assets = (params[:sort] || @filter) ? get_sorted_and_filtered("asset") : Asset.all.page(params[:page]).per(10) @assets = (params[:sort] || @filter) ? get_sorted_and_filtered("asset") : Asset.all.desc(:created_at).page(params[:page]).per(10)
if params[:type] == "images"
@assets = @assets.where(:content_type => /^image/)
end
@tag = ModuleTag.new
@module_app = ModuleApp.find(params[:module_app_id]) rescue nil
raise ModuleAppError, 'Can not find ModuleApp' if @module_app.nil?
@module_app_id = @module_app.id rescue nil
render :layout => "assets"
end end
def show def show
@ -95,11 +105,31 @@ class Admin::AssetsController < OrbitBackendController
redirect_to assets_url(:filter => params[:filter], :direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]) redirect_to assets_url(:filter => params[:filter], :direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
end end
def delete_files
@files = params[:files]
@files.each do |file|
asset = Asset.find(file)
asset.destroy
end
@assets = (params[:sort] || @filter) ? get_sorted_and_filtered("asset") : Asset.all.desc(:created_at).page(params[:page]).per(10)
if params[:type] == "images"
@assets = @assets.where(:content_type => /^image/)
end
# render :json =>{"success"=>true}.to_json
end
def file_upload def file_upload
@asset = Asset.new @files = params['files']
@asset_categories = AssetCategory.all a = Array.new
@tags = get_tags @files.each do |file|
render :layout => false @asset = current_user.assets.new
@asset.data = file
@asset.title_translations = {:en => file.original_filename, :zh_tw => file.original_filename}
# @asset.title_translations[:zh_tw] = file.original_filename
@asset.save!
a << {"url"=>@asset.data.url}
end
render :json=>{"files"=>a}.to_json
end end
def file_select def file_select

View File

@ -7,5 +7,5 @@ module Admin::AssetsHelper
end end
a.join(' - ') a.join(' - ')
end end
end end

View File

@ -5,13 +5,16 @@ class Asset
include OrbitTag::Taggable include OrbitTag::Taggable
mount_uploader :data, FileAssetUploader mount_uploader :data, FileAssetUploader
before_save :update_asset_attributes
field :filename field :filename
field :description, localize: true field :description, localize: true
field :title, localize: true field :title, localize: true
field :content_type
field :file_size
validates :title, :at_least_one => true validates :title, :at_least_one => true
validates :description, :at_least_one => true
validates_presence_of :data validates_presence_of :data
@ -21,6 +24,14 @@ class Asset
before_save :clean_tags before_save :clean_tags
protected protected
def update_asset_attributes
if data.present? && data_changed?
self.content_type = data.file.content_type
self.file_size = data.file.size
end
end
def clean_tags def clean_tags
self.tagged_ids.delete('') self.tagged_ids.delete('')

View File

@ -1,7 +0,0 @@
class Ckeditor::Asset
include Ckeditor::Orm::Mongoid::AssetBase
delegate :url, :current_path, :size, :content_type, :filename, :to => :data
validates_presence_of :data
end

View File

@ -1,7 +0,0 @@
class Ckeditor::AttachmentFile < Ckeditor::Asset
mount_uploader :data, CkeditorAttachmentFileUploader, :mount_on => :data_file_name
def url_thumb
@url_thumb ||= Ckeditor::Utils.filethumb(filename)
end
end

View File

@ -1,7 +0,0 @@
class Ckeditor::Picture < Ckeditor::Asset
mount_uploader :data, CkeditorPictureUploader, :mount_on => :data_file_name
def url_content
url(:content)
end
end

View File

@ -32,6 +32,7 @@ class User
has_one :desktop, :autosave => true, :dependent => :destroy has_one :desktop, :autosave => true, :dependent => :destroy
has_one :facebook, :autosave => true, :dependent => :destroy has_one :facebook, :autosave => true, :dependent => :destroy
has_many :other_accounts, :autosave => true, :dependent => :destroy has_many :other_accounts, :autosave => true, :dependent => :destroy
has_many :assets, as: :assetable
# has_many :journals, :autosave => true, :dependent => :destroy # has_many :journals, :autosave => true, :dependent => :destroy
# has_many :papers, :autosave => true, :dependent => :destroy # has_many :papers, :autosave => true, :dependent => :destroy
has_and_belongs_to_many :sub_role_tags has_and_belongs_to_many :sub_role_tags

View File

@ -1,16 +1,23 @@
<tr id="asset_<%= asset.id %>" class="with_action"> <tr id="asset_<%= asset.id %>" class="with_action">
<td><%= check_box_tag 'to_delete[]', asset.id, false, :class => "checkbox_in_list" %></td>
<td><%= asset.title rescue nil %></td>
<td> <td>
<%= check_box_tag 'files[]', asset.id, false, :class => "checkbox_in_list" %>
<input type="hidden" value="<%= asset.data.url %>" id="url_<%= asset.id %>" />
<% @site_valid_locales.each_with_index do |locale, i| %>
<input type="hidden" value="<%= asset.description_translations[locale] rescue nil %>" id="<%= locale %>_desc_<%= asset.id %>" />
<input type="hidden" value="<%= asset.title_translations[locale] rescue nil %>" id="<%= locale %>_title_<%= asset.id %>" />
<% end %>
</td>
<td><%= asset.title_translations[I18n.locale.to_s] rescue nil %></td>
<!-- <td>
<i class="icons-pictures img-peview" rel="popover" data-content="<img src='<%= asset.data.url %>' />" data-original-title="<%= asset.data.filename %>"></i> <i class="icons-pictures img-peview" rel="popover" data-content="<img src='<%= asset.data.url %>' />" data-original-title="<%= asset.data.filename %>"></i>
<div class="quick-edit"> <div class="quick-edit">
<ul class="nav nav-pills hide"> <ul class="nav nav-pills hide">
<li><%= link_to t(:edit), edit_admin_asset_path(asset), :remote => true, :class => 'edit' %></li> <li><%#= link_to t(:edit), edit_admin_asset_path(asset), :remote => true, :class => 'edit' %></li>
<li class="dropdown"><%= link_to t(:delete_), admin_asset_path(asset), :confirm => t('sure?'), :method => :delete, :class => 'delete' %></li> <li class="dropdown"><%#= link_to t(:delete_), admin_asset_path(asset), :confirm => t('sure?'), :method => :delete, :class => 'delete' %></li>
</ul> </ul>
</div> </div>
</td> </td> -->
<td><%= asset.data.file.content_type rescue nil %></td> <!-- <td><%#= asset.data.file.content_type rescue nil %></td> -->
<td><%= number_to_human_size(asset.data.file.file_length) rescue nil %></td> <td><%= number_to_human_size(asset.data.file.file_length) rescue nil %></td>
<td><%= asset.description rescue nil %></td> <td><%= asset.description rescue nil %></td>
<td> <td>
@ -22,10 +29,7 @@
</div> </div>
</div> </div>
</td> </td>
</tr> <td>
<a href="#" class="editform">Edit</a>
<script type="text/javascript"> </td>
$('.img-peview').popover({ </tr>
delay: { show: 100, hide: 300 }
});
</script>

View File

@ -0,0 +1,3 @@
$("#tbody_assets").html("<%= j render :partial => 'asset', :collection => @assets %>");
$("#asset_pagination").html("<%= j paginate @assets, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");

View File

@ -1,30 +1,482 @@
<%= render 'filter' %> <style>
<table id="asset_sort_list" class="table main-list"> /* File Upload */
<thead> #upload-panel {
<tr> clear: both;
<th class="span1"></th> }
<th class="span4"></th> #upload-panel iframe {
<th class="span1-2"></th> width: 100%;
<th class="span1-2"></th> border: none;
<th class="span1-2"></th> }
<th class="span1-2"></th> #fileupload {
<th class="span1-2"></th> position: relative;
</tr> clear: both;
</thead> overflow: hidden;
<tbody id="tbody_assets" class="sort-holder"> margin: 40px 0 15px;
<%= render :partial => 'asset', :collection => @assets %> height: 254px;
</tbody> border: 1px solid #d4d4d4;
</table> border-radius: 4px;
background-color: #FDFDFD;
/*-webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, .15) inset;
box-shadow: 0px 0px 10px rgba(0, 0, 0, .15) inset;*/
}
#fileupload table {
margin: 0;
}
#fileupload .fileupload-buttonbar .navbar {
margin-bottom: 0;
}
#fileupload .fileupload-buttonbar .navbar .add-photo {
border: none;
border-right: 1px solid #d4d4d4;
background-color: transparent;
padding: 10px 15px 10px;
color: #777777;
text-decoration: none;
text-shadow: 0 1px 0 #ffffff;
}
#fileupload .fileupload-buttonbar .navbar .add-photo:hover {
color: #333333;
text-decoration: none;
background-color: #EDEDED;
}
#fileupload .fileupload-buttonbar .navbar .fileinput-button {
position: relative;
overflow: hidden;
}
#fileupload .fileupload-buttonbar .navbar .fileinput-button input {
position: absolute;
top: 0;
right: 0;
margin: 0;
font-size: 23px;
opacity: 0;
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
cursor: pointer;
-webkit-transform: translate(-300px, 0) scale(4);
-moz-transform: translate(-300px, 0) scale(4);
-ms-transform: translate(-300px, 0) scale(4);
-o-transform: translate(-300px, 0) scale(4);
transform: translate(-300px, 0) scale(4);
direction: ltr;
}
#fileupload .fileupload-buttonbar .navbar-inner {
border-width: 0 0 1px;
border-radius: 4px 4px 0 0;
padding: 0;
}
<div class="form-actions form-fixed pagination-right"> #fileupload .fileupload-progress .progress {
<%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t(:add), new_admin_asset_path, :remote => true, :class => 'btn btn-primary pull-right' %> position: absolute;
<div id="asset_pagination" class="paginationFixed"> right: 0;
<%= paginate @assets, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]}, :remote => true %> left: 0;
margin-bottom: 0;
height: 5px;
border-radius: 0;
background-color: transparent;
background-image: none;
}
#fileupload .fileupload-progress .progress-success.progress-striped .bar {
background-color: #0088CC;
}
#fileupload .fileupload-progress .progress-extended {
position: absolute;
top: 1px;
right: 0;
padding-right: 15px;
color: #0088CC;
text-align: right;
text-shadow: 0 1px 0 #ffffff;
letter-spacing: -0.1em;
font-size: 12px;
font-family: 'Varela Round', sans-serif;
line-height: 40px;
}
#fileupload .fileupload-buttonbar {
position: relative;
z-index: 3;
}
#fileupload #dropzone {
margin: 15px 10px 10px;
padding: 30px;
text-align: center;
font-size: 2em;
font-family: 'Raleway';
line-height: 1.2em;
color: #e4e4e4;
}
#fileupload #dropzone div[data-icons] {
font-size: 4em;
height: 70px;
padding-top: 30px;
text-shadow: 0px -1px 0px #ececec;
color: #f5f5f5;
}
#fileupload #dropzone.drop {
position: absolute;
top: 37px;
left: 0;
right: 0;
bottom: 0;
border: 2px dashed #0088CC;
border-radius: 10px;
color: #0088CC;
background-color: #FFFFFF;
z-index: 0;
}
#fileupload #dropzone.fade {
opacity: .3;
}
#fileupload #dropzone.in {
opacity: .7;
z-index: 2;
border-color: #faa732;
color: #faa732;
}
#fileupload #dropzone.drop div[data-icons] {
text-shadow: 0px -1px 0px #0c5f80;
color: #0088CC;
}
#fileupload #dropzone.in div[data-icons] {
text-shadow: 0px -1px 0px #a28a10;
color: #faa732;
}
#fileupload #file-list {
position: relative;
z-index: 1;
height: 209px;
margin: 2px 0;
}
#fileupload #file-list .pane {
margin-right: 2px;
}
#fileupload #file-list .files {
margin: 0;
padding: 10px 14px 10px 10px;
list-style: none;
}
#fileupload #file-list .files > li {
padding: 10px;
}
#fileupload #file-list .files > li:nth-child(even) {
background-color: #e9e9e9;
border-radius: 3px;
}
#fileupload #file-list .files ul {
position: relative;
margin: 0;
padding: 0;
list-style: none;
}
#fileupload #file-list .files ul li {
float: left;
}
#fileupload #file-list .files ul li.action-bnt {
float: right;
}
#fileupload #file-list .preview {
width: 80px;
min-height: 1px;
margin-right: 10px;
text-align: center;
}
#fileupload #file-list .name {
width: 150px;
max-width: 250px;
margin-left: 15px;
}
#fileupload #file-list .progress {
position: absolute;
left: -5px;
right: -5px;
bottom: -5px;
margin-bottom: 0;
height: 5px;
box-shadow: none;
background-color: transparent;
background-image: none;
}
#fileupload #file-list .size {
width: 80px;
}
#fileupload #file-list .action-bnt {
text-align: right;
}
</style>
<ul class="nav nav-tabs module-nav">
<li class="active">
<a href="#filemanager" data-toggle="tab">File Manager</a>
</li>
<li><a href="#upload" data-toggle="tab">Upload</a></li>
</ul>
<div class="tab-pane fade in active" id="filemanager">
<a href="<%= admin_module_tags_path(:module_app_id => @module_app_id.to_s) %>"> Tag Management </a>
<div id="panel_l" style="width:200px;float:left;margin:5px 5px 5px 5px;">
preview is here
</div> </div>
<div id="panel_r" class="tab-pane fade in active" style="width: 1200px;" >
<table id="asset_sort_list" class="table main-list">
<thead>
<tr>
<th class="span1"></th>
<th class="span4">Name</th>
<th class="span1-2">Size</th>
<th class="span1-2">Description</th>
<th class="span2">Tags</th>
<th class="span1">Action</th>
</tr>
</thead>
<tbody id="tbody_assets" class="sort-holder">
<%= render :partial => 'asset', :collection => @assets %>
</tbody>
</table>
</div>
<div class="form-actions form-fixed pagination-right">
<button class="btn btn-primary" id="insert_btn" style="display:none;">Insert</button>
<button class="btn btn-primary" id="delete_btn" style="display:none;">Delete</button>
<div id="asset_pagination" class="paginationFixed">
<%= paginate @assets, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]}, :remote => true %>
</div>
</div>
</div>
<div class="tab-pane fade" id="upload">
<form action="<%= file_upload_admin_assets_path %>", id='fileupload'>
<!-- Redirect browsers with JavaScript disabled to the origin page -->
<!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
<div class="fileupload-buttonbar">
<div class="navbar">
<div class="navbar-inner">
<ul class="nav">
<li>
<div class="fileinput-button add-photo">
<i class="icon-plus icon-white"></i>
<span>Add files...</span>
<input type="file" name="files[]" multiple>
</div>
</li>
<li>
<button type="submit" class="start add-photo">
<i class="icon-upload icon-white"></i>
<span>Start upload</span>
</button>
</li>
<li>
<button type="reset" class="cancel add-photo">
<i class="icon-ban-circle icon-white"></i>
<span>Cancel upload</span>
</button>
</li>
<!-- <li>
<button type="button" class="delete">
<i class="icons-trash icon-white"></i>
<span>Delete</span>
</button>
</li> -->
</ul>
</div>
</div>
<!-- The global progress information -->
<div class="fileupload-progress">
<!-- The global progress bar -->
<div class="progress progress-success progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100">
<div class="bar" style="width:0%;"></div>
</div>
<!-- The extended global progress information -->
<div class="progress-extended"></div>
</div>
</div>
<!-- Drop Zone -->
<div id="dropzone" class="drop">
<div data-icons="&#xe0a3;"></div>
Drop files here
</div>
<!-- The loading indicator is shown during file processing -->
<div class="fileupload-loading"></div>
<!-- The table listing the files available for upload/download -->
<div id="file-list" class="nano">
<div class="content">
<ul role="presentation" class="files clearfix">
</ul>
</div>
</div>
</form>
</div>
<div id="editform" class="modal hide fade">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h3>Modal header</h3>
</div>
<div class="modal-body">
<p>One fine body…</p>
</div>
<div class="modal-footer">
<a href="#" class="btn" data-dismiss="modal">Close</a>
<a href="#" class="btn btn-primary">Save changes</a>
</div>
</div> </div>
<% content_for :page_specific_javascript do %> <% content_for :page_specific_javascript do %>
<%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %> <%= javascript_include_tag "file-upload/vendor/jquery.ui.widget.js" %>
<%= javascript_include_tag "inc/modal-preview" %> <%= javascript_include_tag "file-upload/tmpl.min.js" %>
<%= javascript_include_tag "file-upload/load-image.min.js" %>
<%= javascript_include_tag "file-upload/canvas-to-blob.min.js" %>
<%= javascript_include_tag "file-upload/jquery.iframe-transport.js" %>
<%= javascript_include_tag "file-upload/jquery.fileupload.js" %>
<%= javascript_include_tag "file-upload/jquery.fileupload-fp.js" %>
<%= javascript_include_tag "file-upload/jquery.fileupload-ui.js" %>
<%= javascript_include_tag "file-upload/drop-zone.js" %>
<% end %> <% end %>
<script type="text/javascript">
!function ($) {
$.fn.checkListLength = function (param){
_defaultSettings = {
onlyOne: null,
};
_set = $.extend(_defaultSettings, param);
$this = this;
$li = this.children('li');
$dropzone = $('#dropzone');
if(($li.length - _set.onlyOne) == 0) {
$('#dropzone').fadeIn(300);
} else {
$('#dropzone').fadeOut(300);
};
$('#file-list').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
}
}(window.jQuery);
$(function () {
'use strict';
// Initialize the jQuery File Upload widget:
$('#fileupload').fileupload({
maxFileSize: 5000000,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png|pdf|doc|docx|ppt|pptx|xls|xlsx)$/i,
dropZone: $('#dropzone'),
headers:{
'X-CSRF-Token': $('meta[name="csrf-token"]').attr("content")
}
}).bind('fileuploadstop', function (e, data) {
window.location.reload();
});
});
$(document).ready(function(){
var insertBtn = $("#insert_btn"),
deleteBtn = $("#delete_btn"),
url = null;
$("#asset_sort_list").on(clickEvent,"input[type=checkbox]",function(){
if($("input[type=checkbox]:checked").length == 1){
url = window.location.protocol + "//" + window.location.host + $("#url_" + $("input[type=checkbox]:checked").val()).val();
insertBtn.show();
}else{
insertBtn.hide();
url = null;
}
if($("input[type=checkbox]:checked").length)
deleteBtn.show();
else
deleteBtn.hide();
})
insertBtn.bind(clickEvent,function(){
var alt_text = $("#"+language+"_desc_"+$("input[type=checkbox]:checked").val()).val();
alt_text = (alt_text ? alt_text : "This is alt text");
if(url){
window.opener.CKEDITOR.tools.callFunction( funcNum, url, function() {
var element,
dialog = this.getDialog();
if ( dialog.getName() == 'image' ) {
element = dialog.getContentElement( 'info', 'txtAlt' );
if ( element )
element.setValue( alt_text );
}
});
window.close();
}
})
deleteBtn.bind( clickEvent,function(){
var items_to_delete = [],
type = getUrlParam("type");
$("input[type=checkbox]:checked").each(function(){
items_to_delete.push($(this).val());
})
$.post("<%= delete_files_admin_assets_path %>",{"files":items_to_delete,"type":type},function(){
deleteBtn.hide();
})
})
$("#asset_sort_list").on(clickEvent,".editform",function(){
$("#editform").modal("show");
})
function getUrlParam( paramName ) {
var reParam = new RegExp( '(?:[\?&]|&)' + paramName + '=([^&]+)', 'i' ) ;
var match = window.location.search.match(reParam) ;
return ( match && match.length > 1 ) ? match[ 1 ] : null ;
}
var funcNum = getUrlParam( 'CKEditorFuncNum' ),
t = getUrlParam('CKEditor').split("_"),
language = t[t.length-1];
language = (language == "tw" ? "zh_tw" : language);
})
</script>
<script id="template-upload" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<li class="template-upload fade">
<ul class="clearfix">
<li class="action-bnt">
{% if (o.files.valid && !i) { %}
<div class="progress progress-success progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0">
<div class="bar" style="width:0%;"></div>
</div>
{% if (!o.options.autoUpload) { %}
<button class="btn btn-primary start">
<i class="icon-upload icon-white"></i>
</button>
{% } %}
{% } %}
{% if (!i) { %}
<button class="btn btn-warning cancel">
<i class="icon-ban-circle icon-white"></i>
</button>
{% } %}
</li>
<li class="preview pull-left"><span class="fade"></span></li>
<li class="name-size">
<p>{%=file.name%}</p>
{% if (file.error) { %}
<p class="error"><span class="label label-important">Error</span> {%=file.error%}</p>
{% } else if (o.files.valid && !i) { %}
<p class="label label-info">{%=o.formatFileSize(file.size)%}</p>
{% } %}
</li>
</ul>
</li>
{% } %}
</script>
<!-- The template to display files available for download -->
<script id="template-download" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<li class="template-download fade">
<ul class="clearfix">
{% if (file.error) { %}
<li class="name-size">
<p>{%=file.name%}</p>
<p class="error"><span class="label label-important">Error</span> {%=file.error%}</p>
</li>
{% } else { %}
<li class="preview">
{% if (file.thumbnail_url) { %}
<a href="{%=file.url%}" title="{%=file.name%}" data-gallery="gallery" download="{%=file.name%}"><img src="{%=file.thumbnail_url%}"></a>
{% } %}
</li>
<li class="name-size">
<p><a href="{%=file.url%}" title="{%=file.name%}" data-gallery="{%=file.thumbnail_url&&'gallery'%}" download="{%=file.name%}">{%=file.name%}</a></p>
<p ><span class="label label-success">Success</span> File uploaded successfully!</p>
<p class="label label-info">{%=o.formatFileSize(file.size)%}</p>
</li>
{% } %}
</ul>
</li>
{% } %}
</script>

View File

@ -1,4 +0,0 @@
$("#delete_all").attr("action", "<%= delete_admin_assets_path(:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]) %>");
$("#sort_headers").html("<%= j render 'sort_headers' %>");
$("#tbody_assets").html("<%= j render :partial => 'asset', :collection => @assets %>");
$("#asset_pagination").html("<%= j paginate @assets, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");

View File

@ -3,7 +3,6 @@
<input id="filter-input" class="search-query input-medium" type="text" placeholder="<%= t('search.tags') %>" value=""> <input id="filter-input" class="search-query input-medium" type="text" placeholder="<%= t('search.tags') %>" value="">
</div> </div>
<% end %> <% end %>
<div id="tags_index"> <div id="tags_index">
<%= render 'index' %> <%= render 'index' %>
</div> </div>

View File

@ -0,0 +1,22 @@
<!DOCTYPE HTML>
<html>
<head>
<title><%= @title || APP_CONFIG['orbit'] %></title>
<%#= render 'layouts/meta' %>
<%#= render 'layouts/google_font' %>
<%= stylesheet_link_tag "back_end" %>
<%= yield :page_specific_css %>
<%= render 'layouts/ie_html5_fix' %>
<%= javascript_include_tag "back_end" %>
<%= yield :page_specific_javascript %>
<%= csrf_meta_tag %>
</head>
<body id="dashboards">
<section>
<div >
<!-- <div id="filter" class="topnav clearfix">
</div> -->
<%= yield %>
</section>
</body>
</html>

View File

@ -27,8 +27,9 @@ Orbit::Application.routes.draw do
mount Resque::Server.new, :at => "/resque" mount Resque::Server.new, :at => "/resque"
resources :assets do resources :assets do
collection do collection do
get 'file_upload' post 'file_upload'
get 'delete' get 'delete'
post 'delete_files'
end end
end end
resources :asset_categories resources :asset_categories

View File

@ -3,6 +3,7 @@ module Asset
module_label 'module_name.asset' module_label 'module_name.asset'
base_url File.expand_path File.dirname(__FILE__) base_url File.expand_path File.dirname(__FILE__)
taggable
# side_bar do # side_bar do
# head_label_i18n 'module_name.asset',:icon_class=>"icons-landscape" # head_label_i18n 'module_name.asset',:icon_class=>"icons-landscape"
# available_for [:admin,:guest,:manager,:sub_manager] # available_for [:admin,:guest,:manager,:sub_manager]

View File

@ -1,13 +0,0 @@
//https://github.com/blueimp/jQuery-File-Upload
$(function () {
'use strict';
// Initialize the jQuery File Upload widget:
$('#fileupload').fileupload({
maxFileSize: 5000000,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
dropZone: $('#dropzone'),
headers:{
'X-CSRF-Token': $('meta[name="csrf-token"]').attr("content")
}
});
});

View File

@ -16,6 +16,18 @@
} }
}(window.jQuery); }(window.jQuery);
$(function () {
'use strict';
// Initialize the jQuery File Upload widget:
$('#fileupload').fileupload({
maxFileSize: 5000000,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
dropZone: $('#dropzone'),
headers:{
'X-CSRF-Token': $('meta[name="csrf-token"]').attr("content")
}
});
});
$(function() { $(function() {
var $container = $('.gallery'), var $container = $('.gallery'),

View File

@ -165,7 +165,6 @@
<% content_for :page_specific_javascript do %> <% content_for :page_specific_javascript do %>
<%= javascript_include_tag "jquery.masonry.min.js" %> <%= javascript_include_tag "jquery.masonry.min.js" %>
<%= javascript_include_tag "jquery.lite.image.resize.js" %> <%= javascript_include_tag "jquery.lite.image.resize.js" %>
<%= javascript_include_tag "gallery" %>
<%= javascript_include_tag "lib/checkbox.card" %> <%= javascript_include_tag "lib/checkbox.card" %>
<%= javascript_include_tag "file-upload/vendor/jquery.ui.widget.js" %> <%= javascript_include_tag "file-upload/vendor/jquery.ui.widget.js" %>
<%= javascript_include_tag "file-upload/tmpl.min.js" %> <%= javascript_include_tag "file-upload/tmpl.min.js" %>
@ -175,8 +174,8 @@
<%= javascript_include_tag "file-upload/jquery.fileupload.js" %> <%= javascript_include_tag "file-upload/jquery.fileupload.js" %>
<%= javascript_include_tag "file-upload/jquery.fileupload-fp.js" %> <%= javascript_include_tag "file-upload/jquery.fileupload-fp.js" %>
<%= javascript_include_tag "file-upload/jquery.fileupload-ui.js" %> <%= javascript_include_tag "file-upload/jquery.fileupload-ui.js" %>
<%= javascript_include_tag "file-upload/main.js" %>
<%= javascript_include_tag "file-upload/drop-zone.js" %> <%= javascript_include_tag "file-upload/drop-zone.js" %>
<%= javascript_include_tag "gallery" %>
<% end %> <% end %>
<!-- The template to display files available for upload --> <!-- The template to display files available for upload -->
<script id="template-upload" type="text/x-tmpl"> <script id="template-upload" type="text/x-tmpl">