filemanager and some update for file uploader . added file uploader to kernel
This commit is contained in:
		
							parent
							
								
									3328a41b55
								
							
						
					
					
						commit
						f920a4f6ba
					
				|  | @ -26,10 +26,11 @@ CKEDITOR.editorConfig = function( config ) { | |||
| 	// config.filebrowserImageBrowseUrl = '/browser/browse.php?type=Images'; | ||||
| 	// config.filebrowserUploadUrl = '/uploader/upload.php'; | ||||
| 
 | ||||
| 	config.filebrowserBrowseUrl = "<%= Rails.application.routes.url_helpers.file_upload_admin_assets_path %>" | ||||
|   	config.filebrowserUploadUrl = "<%= Rails.application.routes.url_helpers.file_upload_admin_assets_path %>" | ||||
| 	config.filebrowserBrowseUrl = "<%= Rails.application.routes.url_helpers.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. | ||||
| 	// config.stylesSet = [ | ||||
|  |  | |||
|  | @ -3,7 +3,17 @@ class Admin::AssetsController < OrbitBackendController | |||
|   before_filter :setup_vars | ||||
|    | ||||
|   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 | ||||
|    | ||||
|   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]) | ||||
|   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 | ||||
|     @asset = Asset.new | ||||
|     @asset_categories = AssetCategory.all | ||||
|     @tags = get_tags | ||||
|     render :layout => false | ||||
|     @files = params['files'] | ||||
|     a = Array.new | ||||
|     @files.each do |file| | ||||
|       @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 | ||||
| 
 | ||||
|   def file_select | ||||
|  |  | |||
|  | @ -7,5 +7,5 @@ module Admin::AssetsHelper | |||
|     end  | ||||
|     a.join(' - ') | ||||
|   end | ||||
| 
 | ||||
|    | ||||
| end | ||||
|  | @ -5,13 +5,16 @@ class Asset | |||
|   include OrbitTag::Taggable | ||||
| 
 | ||||
|   mount_uploader :data, FileAssetUploader | ||||
|   before_save :update_asset_attributes | ||||
| 
 | ||||
|   field :filename | ||||
|   field :description, localize: true | ||||
|   field :title, localize: true | ||||
|   field :content_type | ||||
|   field :file_size | ||||
|    | ||||
|   validates :title, :at_least_one => true | ||||
|   validates :description, :at_least_one => true | ||||
| 
 | ||||
|   validates_presence_of :data | ||||
| 
 | ||||
| 
 | ||||
|  | @ -21,6 +24,14 @@ class Asset | |||
|   before_save :clean_tags | ||||
| 
 | ||||
|   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 | ||||
|     self.tagged_ids.delete('') | ||||
|  |  | |||
|  | @ -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 | ||||
|  | @ -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 | ||||
|  | @ -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 | ||||
|  | @ -32,6 +32,7 @@ class User | |||
|   has_one :desktop, :autosave => true, :dependent => :destroy | ||||
|   has_one :facebook, :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 :papers, :autosave => true, :dependent => :destroy | ||||
|   has_and_belongs_to_many :sub_role_tags | ||||
|  |  | |||
|  | @ -1,16 +1,23 @@ | |||
| <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> | ||||
| 		<%= 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> | ||||
| 		<div class="quick-edit"> | ||||
| 			<ul class="nav nav-pills hide"> | ||||
| 				<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><%#= 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> | ||||
| 			</ul> | ||||
| 		</div> | ||||
| 	</td> | ||||
| 	<td><%= asset.data.file.content_type rescue nil %></td> | ||||
| 	</td> --> | ||||
| 	<!-- <td><%#= asset.data.file.content_type rescue nil %></td> --> | ||||
| 	<td><%= number_to_human_size(asset.data.file.file_length) rescue nil %></td> | ||||
| 	<td><%= asset.description rescue nil %></td> | ||||
| 	<td> | ||||
|  | @ -22,10 +29,7 @@ | |||
| 			</div> | ||||
| 		</div> | ||||
| 	</td> | ||||
| </tr> | ||||
| 
 | ||||
| <script type="text/javascript"> | ||||
|     $('.img-peview').popover({ | ||||
|             delay: { show: 100, hide: 300 } | ||||
|     }); | ||||
| </script> | ||||
| 	<td> | ||||
| 		<a href="#" class="editform">Edit</a> | ||||
| 	</td> | ||||
| </tr> | ||||
|  | @ -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} %>"); | ||||
|  | @ -1,30 +1,482 @@ | |||
| <%= render 'filter' %> | ||||
| <table id="asset_sort_list" class="table main-list"> | ||||
| 	<thead> | ||||
| 		<tr> | ||||
|       <th class="span1"></th> | ||||
|       <th class="span4"></th> | ||||
|       <th class="span1-2"></th> | ||||
|       <th class="span1-2"></th> | ||||
|       <th class="span1-2"></th> | ||||
|       <th class="span1-2"></th> | ||||
|       <th class="span1-2"></th> | ||||
| 		</tr> | ||||
| 	</thead> | ||||
| 	<tbody id="tbody_assets" class="sort-holder"> | ||||
| 		<%= render :partial => 'asset', :collection => @assets %> | ||||
| 	</tbody> | ||||
| </table> | ||||
| <style> | ||||
| /* File Upload */ | ||||
| #upload-panel { | ||||
| 	clear: both; | ||||
| } | ||||
| #upload-panel iframe { | ||||
| 	width: 100%; | ||||
| 	border: none; | ||||
| } | ||||
| #fileupload { | ||||
| 	position: relative; | ||||
| 	clear: both; | ||||
| 	overflow: hidden; | ||||
| 	margin: 40px 0 15px; | ||||
| 	height: 254px; | ||||
| 	border: 1px solid #d4d4d4; | ||||
| 	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"> | ||||
| 	<%= 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' %> | ||||
| 	<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 %> | ||||
| #fileupload .fileupload-progress .progress { | ||||
| 	position: absolute; | ||||
| 	right: 0; | ||||
| 	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 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=""></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">×</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> | ||||
| 
 | ||||
| <% content_for :page_specific_javascript do %> | ||||
| 	<%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %> | ||||
| 	<%= javascript_include_tag "inc/modal-preview" %> | ||||
|   <%= javascript_include_tag "file-upload/vendor/jquery.ui.widget.js" %> | ||||
|   <%= 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 %> | ||||
| <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> | ||||
|  | @ -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} %>"); | ||||
|  | @ -3,7 +3,6 @@ | |||
|     <input id="filter-input" class="search-query input-medium" type="text" placeholder="<%= t('search.tags') %>" value=""> | ||||
|   </div> | ||||
| <% end %> | ||||
| 
 | ||||
| <div id="tags_index"> | ||||
|   <%= render 'index' %> | ||||
| </div> | ||||
|  | @ -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> | ||||
|  | @ -27,8 +27,9 @@ Orbit::Application.routes.draw do | |||
|     mount Resque::Server.new, :at => "/resque" | ||||
|     resources :assets do    | ||||
|       collection do | ||||
|         get 'file_upload' | ||||
|         post 'file_upload' | ||||
|         get 'delete' | ||||
|         post 'delete_files' | ||||
|       end | ||||
|     end | ||||
|     resources :asset_categories | ||||
|  |  | |||
|  | @ -3,6 +3,7 @@ module Asset | |||
|     module_label 'module_name.asset' | ||||
|     base_url File.expand_path File.dirname(__FILE__)     | ||||
|      | ||||
|     taggable | ||||
|     # side_bar do | ||||
|     #   head_label_i18n  'module_name.asset',:icon_class=>"icons-landscape" | ||||
|     #   available_for [:admin,:guest,:manager,:sub_manager] | ||||
|  |  | |||
|  | @ -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") | ||||
|         } | ||||
|     }); | ||||
| }); | ||||
|  | @ -16,6 +16,18 @@ | |||
|     } | ||||
| }(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() { | ||||
| 	var $container = $('.gallery'), | ||||
|  |  | |||
|  | @ -165,7 +165,6 @@ | |||
| <% content_for :page_specific_javascript do %> | ||||
|   <%= javascript_include_tag "jquery.masonry.min.js" %> | ||||
|   <%= javascript_include_tag "jquery.lite.image.resize.js" %> | ||||
|   <%= javascript_include_tag "gallery" %> | ||||
|   <%= javascript_include_tag "lib/checkbox.card" %> | ||||
|   <%= javascript_include_tag "file-upload/vendor/jquery.ui.widget.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-fp.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 "gallery" %> | ||||
| <% end %> | ||||
|  <!-- The template to display files available for upload --> | ||||
| <script id="template-upload" type="text/x-tmpl"> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue