integrate dragonfly + clean code + fix a js bug when editing a custom field
This commit is contained in:
parent
ecdb79bb2d
commit
87e7ced3c1
2
Gemfile
2
Gemfile
|
@ -22,6 +22,8 @@ gem 'inherited_resources', '~> 1.1.2'
|
||||||
|
|
||||||
gem 'rmagick', '2.12.2'
|
gem 'rmagick', '2.12.2'
|
||||||
gem 'locomotive_carrierwave', '0.5.4.beta2'
|
gem 'locomotive_carrierwave', '0.5.4.beta2'
|
||||||
|
gem 'dragonfly', '~> 0.9.1'
|
||||||
|
gem 'rack-cache', :require => 'rack/cache'
|
||||||
|
|
||||||
gem 'custom_fields', '1.0.0.beta.17'
|
gem 'custom_fields', '1.0.0.beta.17'
|
||||||
gem 'fog', '0.8.2'
|
gem 'fog', '0.8.2'
|
||||||
|
|
|
@ -109,6 +109,8 @@ GEM
|
||||||
orm_adapter (~> 0.0.3)
|
orm_adapter (~> 0.0.3)
|
||||||
warden (~> 1.0.3)
|
warden (~> 1.0.3)
|
||||||
diff-lcs (1.1.2)
|
diff-lcs (1.1.2)
|
||||||
|
dragonfly (0.9.4)
|
||||||
|
rack
|
||||||
erubis (2.6.6)
|
erubis (2.6.6)
|
||||||
abstract (>= 1.0.0)
|
abstract (>= 1.0.0)
|
||||||
excon (0.6.3)
|
excon (0.6.3)
|
||||||
|
@ -191,6 +193,8 @@ GEM
|
||||||
polyglot (0.3.1)
|
polyglot (0.3.1)
|
||||||
proxies (0.2.1)
|
proxies (0.2.1)
|
||||||
rack (1.2.3)
|
rack (1.2.3)
|
||||||
|
rack-cache (1.0.2)
|
||||||
|
rack (>= 0.4)
|
||||||
rack-mount (0.6.14)
|
rack-mount (0.6.14)
|
||||||
rack (>= 1.0.0)
|
rack (>= 1.0.0)
|
||||||
rack-test (0.5.7)
|
rack-test (0.5.7)
|
||||||
|
@ -287,6 +291,7 @@ DEPENDENCIES
|
||||||
delayed_job (= 2.1.4)
|
delayed_job (= 2.1.4)
|
||||||
delayed_job_mongoid (= 1.0.2)
|
delayed_job_mongoid (= 1.0.2)
|
||||||
devise (= 1.3.4)
|
devise (= 1.3.4)
|
||||||
|
dragonfly (~> 0.9.1)
|
||||||
factory_girl_rails
|
factory_girl_rails
|
||||||
fog (= 0.8.2)
|
fog (= 0.8.2)
|
||||||
formtastic (~> 1.2.3)
|
formtastic (~> 1.2.3)
|
||||||
|
@ -305,6 +310,7 @@ DEPENDENCIES
|
||||||
mocha!
|
mocha!
|
||||||
mongoid (~> 2.0.2)
|
mongoid (~> 2.0.2)
|
||||||
pickle
|
pickle
|
||||||
|
rack-cache
|
||||||
rails (>= 3.0.8)
|
rails (>= 3.0.8)
|
||||||
rake (= 0.8.7)
|
rake (= 0.8.7)
|
||||||
rmagick (= 2.12.2)
|
rmagick (= 2.12.2)
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
module Admin
|
|
||||||
class AssetCollectionsController < BaseController
|
|
||||||
|
|
||||||
sections 'assets'
|
|
||||||
|
|
||||||
before_filter :set_collections
|
|
||||||
|
|
||||||
def index
|
|
||||||
if not @asset_collections.empty?
|
|
||||||
redirect_to(edit_admin_asset_collection_url(@asset_collections.first)) and return
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def show
|
|
||||||
@asset_collection = current_site.asset_collections.find(params[:id])
|
|
||||||
render :action => 'edit'
|
|
||||||
end
|
|
||||||
|
|
||||||
protected
|
|
||||||
|
|
||||||
def set_collections
|
|
||||||
@asset_collections = current_site.asset_collections.not_internal.order_by([[:name, :asc]])
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,30 +1,19 @@
|
||||||
module Admin
|
module Admin # TODO
|
||||||
class AssetsController < BaseController
|
class AssetsController < BaseController
|
||||||
|
|
||||||
sections 'assets'
|
sections 'assets'
|
||||||
|
|
||||||
before_filter :set_collections_and_current_collection
|
|
||||||
|
|
||||||
respond_to :json, :only => :update
|
respond_to :json, :only => :update
|
||||||
|
|
||||||
def create
|
def create
|
||||||
create! { edit_admin_asset_collection_url(@asset_collection) }
|
create! { admin_assets_url }
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
update! { edit_admin_asset_collection_url(@asset_collection) }
|
update! { admin_assets_url }
|
||||||
end
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def begin_of_association_chain
|
|
||||||
@asset_collection
|
|
||||||
end
|
|
||||||
|
|
||||||
def set_collections_and_current_collection
|
|
||||||
@asset_collections = current_site.asset_collections.not_internal.order_by([[:name, :asc]])
|
|
||||||
@asset_collection = current_site.asset_collections.find(params[:collection_id])
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -34,11 +34,7 @@ module Admin
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def collection
|
def collection
|
||||||
@assets ||= begin_of_association_chain.assets
|
@assets ||= begin_of_association_chain.assets.only_image
|
||||||
end
|
|
||||||
|
|
||||||
def begin_of_association_chain
|
|
||||||
@asset_collection ||= AssetCollection.find_or_create_internal(current_site)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def image_to_json(image)
|
def image_to_json(image)
|
||||||
|
|
|
@ -3,6 +3,10 @@ class Asset
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
|
||||||
|
## extensions ##
|
||||||
|
include Extensions::Asset::Types
|
||||||
|
include Extensions::Asset::Vignette
|
||||||
|
|
||||||
## fields ##
|
## fields ##
|
||||||
field :content_type, :type => String
|
field :content_type, :type => String
|
||||||
field :width, :type => Integer
|
field :width, :type => Integer
|
||||||
|
@ -21,12 +25,6 @@ class Asset
|
||||||
|
|
||||||
## methods ##
|
## methods ##
|
||||||
|
|
||||||
%w{image stylesheet javascript pdf media}.each do |type|
|
|
||||||
define_method("#{type}?") do
|
|
||||||
self.content_type.to_s == type
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def extname
|
def extname
|
||||||
return nil unless self.source?
|
return nil unless self.source?
|
||||||
File.extname(self.source_filename).gsub(/^\./, '')
|
File.extname(self.source_filename).gsub(/^\./, '')
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
module Extensions
|
||||||
|
module Asset
|
||||||
|
module Types
|
||||||
|
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
included do
|
||||||
|
%w{media image stylesheet javascript font pdf}.each do |type|
|
||||||
|
scope :"only_#{type}", where(:content_type => type)
|
||||||
|
|
||||||
|
define_method("#{type}?") do
|
||||||
|
self.content_type.to_s == type
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -7,7 +7,7 @@ module Extensions
|
||||||
if self.width < 80 && self.height < 80
|
if self.width < 80 && self.height < 80
|
||||||
self.source.url
|
self.source.url
|
||||||
else
|
else
|
||||||
self.source.url(:medium)
|
Locomotive::Dragonfly.resize_url(self.source, '80x80#')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -42,14 +42,6 @@ module Extensions
|
||||||
@item_parsing_errors.try(:each) { |msg| self.errors.add :item_template, msg }
|
@item_parsing_errors.try(:each) { |msg| self.errors.add :item_template, msg }
|
||||||
end
|
end
|
||||||
|
|
||||||
# def item_template
|
|
||||||
# self.read_attribute(:default_item_template) || self.default_item_template
|
|
||||||
# end
|
|
||||||
#
|
|
||||||
# def default_item_template
|
|
||||||
# '{{ content.highlighted_field_value }}'
|
|
||||||
# end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,6 +2,9 @@ class ThemeAsset
|
||||||
|
|
||||||
include Locomotive::Mongoid::Document
|
include Locomotive::Mongoid::Document
|
||||||
|
|
||||||
|
## extensions ##
|
||||||
|
include Extensions::Asset::Types
|
||||||
|
|
||||||
## fields ##
|
## fields ##
|
||||||
field :local_path
|
field :local_path
|
||||||
field :content_type
|
field :content_type
|
||||||
|
@ -39,12 +42,6 @@ class ThemeAsset
|
||||||
|
|
||||||
## methods ##
|
## methods ##
|
||||||
|
|
||||||
%w{media image stylesheet javascript font}.each do |type|
|
|
||||||
define_method("#{type}?") do
|
|
||||||
self.content_type.to_s == type
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def stylesheet_or_javascript?
|
def stylesheet_or_javascript?
|
||||||
self.stylesheet? || self.javascript?
|
self.stylesheet? || self.javascript?
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
%ul#menu
|
%ul#menu
|
||||||
= admin_menu_item('contents', admin_pages_url)
|
= admin_menu_item('contents', admin_pages_url)
|
||||||
= admin_menu_item('assets', admin_asset_collections_url)
|
|
||||||
= admin_menu_item('settings', edit_admin_current_site_url)
|
= admin_menu_item('settings', edit_admin_current_site_url)
|
||||||
%li.clear
|
%li.clear
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
- @asset_collections.each do |c|
|
|
||||||
%li
|
|
||||||
= link_to content_tag(:span, truncate(c.name, :length => 20)), edit_admin_asset_collection_url(c), :class => "#{'on' if @asset_collection.id == c.id}"
|
|
|
@ -4,7 +4,7 @@ Locomotive::Application.configure do
|
||||||
# In the development environment your application's code is reloaded on
|
# In the development environment your application's code is reloaded on
|
||||||
# every request. This slows down response time but is perfect for development
|
# every request. This slows down response time but is perfect for development
|
||||||
# since you don't have to restart the webserver when you make code changes.
|
# since you don't have to restart the webserver when you make code changes.
|
||||||
config.cache_classes = true
|
config.cache_classes = false
|
||||||
|
|
||||||
# Log error messages when you accidentally call methods on nil.
|
# Log error messages when you accidentally call methods on nil.
|
||||||
config.whiny_nils = true
|
config.whiny_nils = true
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
require 'locomotive'
|
||||||
|
|
||||||
|
unless Locomotive.engine?
|
||||||
|
|
||||||
|
require 'dragonfly'
|
||||||
|
require 'uri'
|
||||||
|
|
||||||
|
## initialize Dragonfly ##
|
||||||
|
|
||||||
|
app = Dragonfly[:images]
|
||||||
|
app.configure_with(:rails)
|
||||||
|
app.configure_with(:imagemagick)
|
||||||
|
|
||||||
|
## insert the middleware ##
|
||||||
|
Rails.application.middleware.insert 0, 'Dragonfly::Middleware', :images
|
||||||
|
|
||||||
|
## configure it ##
|
||||||
|
|
||||||
|
Dragonfly[:images].configure do |c|
|
||||||
|
# Convert absolute location needs to be specified
|
||||||
|
# to avoid issues with Phusion Passenger not using $PATH
|
||||||
|
convert = `which convert`.strip.presence || "/usr/local/bin/convert"
|
||||||
|
c.convert_command = convert
|
||||||
|
c.identify_command = convert
|
||||||
|
|
||||||
|
c.allow_fetch_url = true
|
||||||
|
c.allow_fetch_file = true
|
||||||
|
end
|
||||||
|
|
||||||
|
## disable rack-cache for heroku and enable it for the other platforms ##
|
||||||
|
|
||||||
|
unless Locomotive.heroku? # has already a reverse-proxy caching system with Varnish
|
||||||
|
begin
|
||||||
|
require 'rack/cache'
|
||||||
|
Rails.application.middleware.insert_before 'Dragonfly::Middleware', 'Rack::Cache', {
|
||||||
|
:verbose => true,
|
||||||
|
:metastore => URI.encode("file:#{Rails.root}/tmp/dragonfly/cache/meta"), # URI encoded in case of spaces
|
||||||
|
:entitystore => URI.encode("file:#{Rails.root}/tmp/dragonfly/cache/body")
|
||||||
|
}
|
||||||
|
rescue LoadError => e
|
||||||
|
app.log.warn("Warning: couldn't find rack-cache for caching dragonfly content")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -33,9 +33,7 @@ Rails.application.routes.draw do
|
||||||
get :all, :action => 'index', :on => :collection, :defaults => { :all => true }
|
get :all, :action => 'index', :on => :collection, :defaults => { :all => true }
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :asset_collections
|
resources :assets # TODO
|
||||||
|
|
||||||
resources :assets, :path => 'asset_collections/:collection_id/assets'
|
|
||||||
|
|
||||||
resources :images
|
resources :images
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,8 @@ module Locomotive
|
||||||
template 'locomotive.rb', 'config/initializers/locomotive.rb'
|
template 'locomotive.rb', 'config/initializers/locomotive.rb'
|
||||||
|
|
||||||
template 'carrierwave.rb', 'config/initializers/carrierwave.rb'
|
template 'carrierwave.rb', 'config/initializers/carrierwave.rb'
|
||||||
|
|
||||||
|
template 'dragonfly.rb', 'config/initializers/dragonfly.rb'
|
||||||
end
|
end
|
||||||
|
|
||||||
def remove_index_html
|
def remove_index_html
|
||||||
|
|
|
@ -6,6 +6,7 @@ The Locomotive Engine has been correctly installed in your Rails application.
|
||||||
|
|
||||||
- config/initializers/locomotive.rb
|
- config/initializers/locomotive.rb
|
||||||
- config/initializers/carrierwave.rb
|
- config/initializers/carrierwave.rb
|
||||||
|
- config/initializers/dragonfly.rb
|
||||||
- config/mongoid.yml
|
- config/mongoid.yml
|
||||||
|
|
||||||
2. Launch the server
|
2. Launch the server
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
require 'dragonfly'
|
||||||
|
require 'uri'
|
||||||
|
|
||||||
|
## initialize Dragonfly ##
|
||||||
|
|
||||||
|
app = Dragonfly[:images]
|
||||||
|
app.configure_with(:rails)
|
||||||
|
app.configure_with(:imagemagick)
|
||||||
|
|
||||||
|
## insert the middleware ##
|
||||||
|
Rails.application.middleware.insert 0, 'Dragonfly::Middleware', :images
|
||||||
|
|
||||||
|
## configure it ##
|
||||||
|
|
||||||
|
Dragonfly[:images].configure do |c|
|
||||||
|
# Convert absolute location needs to be specified
|
||||||
|
# to avoid issues with Phusion Passenger not using $PATH
|
||||||
|
convert = `which convert`.strip.presence || "/usr/local/bin/convert"
|
||||||
|
c.convert_command = convert
|
||||||
|
c.identify_command = convert
|
||||||
|
|
||||||
|
c.allow_fetch_url = true
|
||||||
|
c.allow_fetch_file = true
|
||||||
|
end
|
||||||
|
|
||||||
|
## disable rack-cache for heroku and enable it for the other platforms ##
|
||||||
|
require 'locomotive'
|
||||||
|
|
||||||
|
unless Locomotive.heroku? # has already a reverse-proxy caching system with Varnish
|
||||||
|
begin
|
||||||
|
require 'rack/cache'
|
||||||
|
Rails.application.middleware.insert_before 'Dragonfly::Middleware', 'Rack::Cache', {
|
||||||
|
:verbose => true,
|
||||||
|
:metastore => URI.encode("file:#{Rails.root}/tmp/dragonfly/cache/meta"), # URI encoded in case of spaces
|
||||||
|
:entitystore => URI.encode("file:#{Rails.root}/tmp/dragonfly/cache/body")
|
||||||
|
}
|
||||||
|
rescue LoadError => e
|
||||||
|
app.log.warn("Warning: couldn't find rack-cache for caching dragonfly content")
|
||||||
|
end
|
||||||
|
end
|
|
@ -5,6 +5,7 @@ require 'locomotive/version'
|
||||||
require 'locomotive/core_ext'
|
require 'locomotive/core_ext'
|
||||||
require 'locomotive/configuration'
|
require 'locomotive/configuration'
|
||||||
require 'locomotive/logger'
|
require 'locomotive/logger'
|
||||||
|
require 'locomotive/dragonfly'
|
||||||
require 'locomotive/liquid'
|
require 'locomotive/liquid'
|
||||||
require 'locomotive/mongoid'
|
require 'locomotive/mongoid'
|
||||||
require 'locomotive/carrierwave'
|
require 'locomotive/carrierwave'
|
||||||
|
@ -23,8 +24,9 @@ require 'locomotive/hosting'
|
||||||
|
|
||||||
module Locomotive
|
module Locomotive
|
||||||
|
|
||||||
include Locomotive::Hosting::Heroku
|
extend Locomotive::Hosting::Heroku
|
||||||
include Locomotive::Hosting::Bushido
|
extend Locomotive::Hosting::Bushido
|
||||||
|
extend Locomotive::Hosting::Default
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
attr_accessor :config
|
attr_accessor :config
|
||||||
|
@ -76,7 +78,6 @@ module Locomotive
|
||||||
# Load all the dynamic classes (custom fields)
|
# Load all the dynamic classes (custom fields)
|
||||||
begin
|
begin
|
||||||
ContentType.all.collect(&:fetch_content_klass)
|
ContentType.all.collect(&:fetch_content_klass)
|
||||||
# AssetCollection.all.collect(&:fetch_asset_klass)
|
|
||||||
rescue ::Mongoid::Errors::InvalidDatabase => e
|
rescue ::Mongoid::Errors::InvalidDatabase => e
|
||||||
# let assume it's because of the first install (meaning no config.yml file)
|
# let assume it's because of the first install (meaning no config.yml file)
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
module Locomotive
|
||||||
|
module Dragonfly
|
||||||
|
|
||||||
|
def self.resize_url(source, resize_string)
|
||||||
|
file = nil
|
||||||
|
|
||||||
|
if source.is_a?(String) # simple string
|
||||||
|
if source =~ /^http/
|
||||||
|
file = self.app.fetch_url(source)
|
||||||
|
else
|
||||||
|
file = self.app.fetch_file(File.join('public', source))
|
||||||
|
end
|
||||||
|
elsif source.respond_to?(:url) # carrierwave uploader
|
||||||
|
if source.file.respond_to?(:url)
|
||||||
|
file = self.app.fetch_url(source.url) # amazon s3, cloud files, ...etc
|
||||||
|
else
|
||||||
|
file = self.app.fetch_file(source.path)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Locomotive.logger.warning "Unable to resize on the fly: #{source.inspect}"
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
file.process(:thumb, resize_string).url
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.app
|
||||||
|
::Dragonfly[:images]
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,7 @@
|
||||||
|
module Locomotive
|
||||||
|
module Hosting
|
||||||
|
class Base
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,110 +1,20 @@
|
||||||
require 'bushido'
|
require 'locomotive/hosting/bushido/enabler'
|
||||||
require 'locomotive/hosting/bushido/custom_domain'
|
|
||||||
require 'locomotive/hosting/bushido/first_installation'
|
|
||||||
require 'locomotive/hosting/bushido/account_ext'
|
|
||||||
require 'locomotive/hosting/bushido/middleware'
|
|
||||||
require 'locomotive/hosting/bushido/devise'
|
|
||||||
|
|
||||||
module Locomotive
|
module Locomotive
|
||||||
module Hosting
|
module Hosting
|
||||||
module Bushido
|
module Bushido
|
||||||
|
|
||||||
extend ActiveSupport::Concern
|
def bushido?
|
||||||
|
self.config.hosting == :bushido ||
|
||||||
included do
|
(self.config.hosting == :auto && ENV['APP_TLD'] == 'bushi.do')
|
||||||
class << self
|
|
||||||
attr_accessor :bushido_domains
|
|
||||||
attr_accessor :bushido_subdomain
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
module ClassMethods
|
def enable_bushido
|
||||||
|
Locomotive.send(:include, Locomotive::Hosting::Bushido::Enabler)
|
||||||
def bushido?
|
|
||||||
self.config.hosting == :bushido ||
|
|
||||||
(self.config.hosting == :auto && ENV['APP_TLD'] == 'bushi.do')
|
|
||||||
end
|
|
||||||
|
|
||||||
def bushido_app_claimed?
|
|
||||||
ENV['BUSHIDO_CLAIMED'].present? && ENV['BUSHIDO_CLAIMED'].to_s.downcase == 'true'
|
|
||||||
end
|
|
||||||
|
|
||||||
def enable_bushido
|
|
||||||
self.config.domain = ENV['APP_TLD'] unless self.config.multi_sites?
|
|
||||||
|
|
||||||
self.enhance_models_with_bushido
|
|
||||||
|
|
||||||
self.disable_authentication_for_not_claimed_app
|
|
||||||
|
|
||||||
self.setup_smtp_settings
|
|
||||||
|
|
||||||
self.add_middleware
|
|
||||||
|
|
||||||
self.config.delayed_job = true # force to use delayed_job
|
|
||||||
|
|
||||||
self.bushido_domains = ::Bushido::App.domains
|
|
||||||
self.bushido_subdomain = ::Bushido::App.subdomain
|
|
||||||
end
|
|
||||||
|
|
||||||
def enhance_models_with_bushido
|
|
||||||
Site.send :include, Locomotive::Hosting::Bushido::CustomDomain
|
|
||||||
Site.send :include, Locomotive::Hosting::Bushido::FirstInstallation
|
|
||||||
Account.send :include, Locomotive::Hosting::Bushido::AccountExt
|
|
||||||
end
|
|
||||||
|
|
||||||
def disable_authentication_for_not_claimed_app
|
|
||||||
Admin::BaseController.send :include, Locomotive::Hosting::Bushido::Devise
|
|
||||||
end
|
|
||||||
|
|
||||||
def setup_smtp_settings
|
|
||||||
ActionMailer::Base.delivery_method = :smtp
|
|
||||||
ActionMailer::Base.smtp_settings = {
|
|
||||||
:authentication => ENV['SMTP_AUTHENTICATION'],
|
|
||||||
:address => ENV['SMTP_SERVER'],
|
|
||||||
:port => ENV['SMTP_PORT'],
|
|
||||||
:domain => ENV['SMTP_DOMAIN'],
|
|
||||||
:user_name => ENV['SMTP_USER'],
|
|
||||||
:password => ENV['SMTP_PASSWORD'],
|
|
||||||
:enable_starttls_auto => ENV['SMTP_TLS'].to_s == 'true'
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
def add_middleware
|
|
||||||
::Locomotive::Application.configure do |config|
|
|
||||||
config.middleware.use '::Locomotive::Hosting::Bushido::Middleware'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# manage domains
|
|
||||||
|
|
||||||
def add_bushido_domain(name)
|
|
||||||
Locomotive.logger "[add bushido domain] #{name}"
|
|
||||||
::Bushido::App.add_domain(name)
|
|
||||||
|
|
||||||
if ::Bushido::Command.last_command_successful?
|
|
||||||
self.bushido_domains << name
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def remove_bushido_domain(name)
|
|
||||||
Locomotive.logger "[remove bushido domain] #{name}"
|
|
||||||
::Bushido::App.remove_domain(name)
|
|
||||||
|
|
||||||
if ::Bushido::Command.last_command_successful?
|
|
||||||
self.bushido_domains.delete(name)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def set_bushido_subdomain(name)
|
|
||||||
Locomotive.logger "[set bushido subdomain] #{name}.bushi.do"
|
|
||||||
::Bushido::App.set_subdomain(name)
|
|
||||||
|
|
||||||
if ::Bushido::Command.last_command_successful?
|
|
||||||
self.bushido_subdomain = name
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
self.enable_bushido!
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
|
@ -0,0 +1,107 @@
|
||||||
|
require 'bushido'
|
||||||
|
require 'locomotive/hosting/bushido/custom_domain'
|
||||||
|
require 'locomotive/hosting/bushido/first_installation'
|
||||||
|
require 'locomotive/hosting/bushido/account_ext'
|
||||||
|
require 'locomotive/hosting/bushido/middleware'
|
||||||
|
require 'locomotive/hosting/bushido/devise'
|
||||||
|
|
||||||
|
module Locomotive
|
||||||
|
module Hosting
|
||||||
|
module Bushido
|
||||||
|
module Enabler
|
||||||
|
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
included do
|
||||||
|
class << self
|
||||||
|
attr_accessor :bushido_domains
|
||||||
|
attr_accessor :bushido_subdomain
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
module ClassMethods
|
||||||
|
|
||||||
|
def bushido_app_claimed?
|
||||||
|
ENV['BUSHIDO_CLAIMED'].present? && ENV['BUSHIDO_CLAIMED'].to_s.downcase == 'true'
|
||||||
|
end
|
||||||
|
|
||||||
|
def enable_bushido!
|
||||||
|
self.config.domain = ENV['APP_TLD'] unless self.config.multi_sites?
|
||||||
|
|
||||||
|
self.enhance_models
|
||||||
|
|
||||||
|
self.disable_authentication_for_not_claimed_app
|
||||||
|
|
||||||
|
self.setup_smtp_settings
|
||||||
|
|
||||||
|
self.add_middlewares
|
||||||
|
|
||||||
|
self.config.delayed_job = true # force to use delayed_job
|
||||||
|
|
||||||
|
self.bushido_domains = ::Bushido::App.domains
|
||||||
|
self.bushido_subdomain = ::Bushido::App.subdomain
|
||||||
|
end
|
||||||
|
|
||||||
|
def enhance_models
|
||||||
|
Site.send :include, Locomotive::Hosting::Bushido::CustomDomain
|
||||||
|
Site.send :include, Locomotive::Hosting::Bushido::FirstInstallation
|
||||||
|
Account.send :include, Locomotive::Hosting::Bushido::AccountExt
|
||||||
|
end
|
||||||
|
|
||||||
|
def disable_authentication_for_not_claimed_app
|
||||||
|
Admin::BaseController.send :include, Locomotive::Hosting::Bushido::Devise
|
||||||
|
end
|
||||||
|
|
||||||
|
def setup_smtp_settings
|
||||||
|
ActionMailer::Base.delivery_method = :smtp
|
||||||
|
ActionMailer::Base.smtp_settings = {
|
||||||
|
:authentication => ENV['SMTP_AUTHENTICATION'],
|
||||||
|
:address => ENV['SMTP_SERVER'],
|
||||||
|
:port => ENV['SMTP_PORT'],
|
||||||
|
:domain => ENV['SMTP_DOMAIN'],
|
||||||
|
:user_name => ENV['SMTP_USER'],
|
||||||
|
:password => ENV['SMTP_PASSWORD'],
|
||||||
|
:enable_starttls_auto => ENV['SMTP_TLS'].to_s == 'true'
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_middlewares
|
||||||
|
Rails.application.configure do |config|
|
||||||
|
config.middleware.use '::Locomotive::Hosting::Bushido::Middleware'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# manage domains
|
||||||
|
|
||||||
|
def add_bushido_domain(name)
|
||||||
|
Locomotive.logger "[add bushido domain] #{name}"
|
||||||
|
::Bushido::App.add_domain(name)
|
||||||
|
|
||||||
|
if ::Bushido::Command.last_command_successful?
|
||||||
|
self.bushido_domains << name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def remove_bushido_domain(name)
|
||||||
|
Locomotive.logger "[remove bushido domain] #{name}"
|
||||||
|
::Bushido::App.remove_domain(name)
|
||||||
|
|
||||||
|
if ::Bushido::Command.last_command_successful?
|
||||||
|
self.bushido_domains.delete(name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_bushido_subdomain(name)
|
||||||
|
Locomotive.logger "[set bushido subdomain] #{name}.bushi.do"
|
||||||
|
::Bushido::App.set_subdomain(name)
|
||||||
|
|
||||||
|
if ::Bushido::Command.last_command_successful?
|
||||||
|
self.bushido_subdomain = name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -18,30 +18,34 @@ module Locomotive
|
||||||
end
|
end
|
||||||
|
|
||||||
def call(env)
|
def call(env)
|
||||||
status, headers, response = @app.call(env)
|
if Locomotive.bushido?
|
||||||
|
status, headers, response = @app.call(env)
|
||||||
|
|
||||||
content = ""
|
content = ""
|
||||||
response.each { |part| content += part }
|
response.each { |part| content += part }
|
||||||
|
|
||||||
# "claiming" bar + stats ?
|
# "claiming" bar + stats ?
|
||||||
content.gsub!(/<\/body>/i, <<-STR
|
content.gsub!(/<\/body>/i, <<-STR
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var _bushido_app = '#{@bushido_app_name}';
|
var _bushido_app = '#{@bushido_app_name}';
|
||||||
var _bushido_claimed = #{@bushido_claimed.to_s};
|
var _bushido_claimed = #{@bushido_claimed.to_s};
|
||||||
var _bushido_metrics_token = '#{@bushido_metrics_token}';
|
var _bushido_metrics_token = '#{@bushido_metrics_token}';
|
||||||
(function() {
|
(function() {
|
||||||
var bushido = document.createElement('script'); bushido.type = 'text/javascript'; bushido.async = true;
|
var bushido = document.createElement('script'); bushido.type = 'text/javascript'; bushido.async = true;
|
||||||
bushido.src = '#{BUSHIDO_JS_URL}?#{::Bushido::VERSION.gsub('.', '')}';
|
bushido.src = '#{BUSHIDO_JS_URL}?#{::Bushido::VERSION.gsub('.', '')}';
|
||||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(bushido, s);
|
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(bushido, s);
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
STR
|
STR
|
||||||
)
|
)
|
||||||
|
|
||||||
headers['content-length'] = bytesize(content).to_s
|
headers['content-length'] = bytesize(content).to_s
|
||||||
|
|
||||||
[status, headers, [content]]
|
[status, headers, [content]]
|
||||||
|
else
|
||||||
|
@app.call(env)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
module Locomotive
|
||||||
|
module Hosting
|
||||||
|
module Default
|
||||||
|
|
||||||
|
def default_hosting?
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,80 +1,18 @@
|
||||||
require 'heroku'
|
require 'locomotive/hosting/heroku/enabler'
|
||||||
require 'heroku/client'
|
|
||||||
require 'locomotive/hosting/heroku/custom_domain'
|
|
||||||
require 'locomotive/hosting/heroku/first_installation'
|
|
||||||
|
|
||||||
module Locomotive
|
module Locomotive
|
||||||
module Hosting
|
module Hosting
|
||||||
module Heroku
|
module Heroku
|
||||||
|
|
||||||
extend ActiveSupport::Concern
|
def heroku?
|
||||||
|
self.config.hosting == :heroku ||
|
||||||
included do
|
(self.config.hosting == :auto && ENV['HEROKU_SLUG'].present?)
|
||||||
class << self
|
|
||||||
attr_accessor :heroku_connection
|
|
||||||
attr_accessor :heroku_domains
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
module ClassMethods
|
def enable_heroku
|
||||||
|
Locomotive.send(:include, Locomotive::Hosting::Heroku::Enabler)
|
||||||
def heroku?
|
|
||||||
self.config.hosting == :heroku ||
|
|
||||||
(self.config.hosting == :auto && ENV['HEROKU_SLUG'].present?)
|
|
||||||
end
|
|
||||||
|
|
||||||
def enable_heroku
|
|
||||||
self.config.domain = 'heroku.com' unless self.config.multi_sites?
|
|
||||||
|
|
||||||
self.config.heroku ||= {}
|
|
||||||
self.config.heroku[:name] = ENV['APP_NAME']
|
|
||||||
|
|
||||||
raise 'Heroku application name is mandatory' if self.config.heroku[:name].blank?
|
|
||||||
|
|
||||||
self.open_heroku_connection
|
|
||||||
|
|
||||||
self.enhance_site_model_with_heroku
|
|
||||||
|
|
||||||
self.apply_patches
|
|
||||||
|
|
||||||
# "cache" domains for better performance
|
|
||||||
self.heroku_domains = self.heroku_connection.list_domains(self.config.heroku[:name]).collect { |h| h[:domain] }
|
|
||||||
end
|
|
||||||
|
|
||||||
def open_heroku_connection
|
|
||||||
login = self.config.heroku[:login] || ENV['HEROKU_LOGIN']
|
|
||||||
password = self.config.heroku[:password] || ENV['HEROKU_PASSWORD']
|
|
||||||
|
|
||||||
self.heroku_connection = ::Heroku::Client.new(login, password)
|
|
||||||
end
|
|
||||||
|
|
||||||
def enhance_site_model_with_heroku
|
|
||||||
Site.send :include, Locomotive::Hosting::Heroku::CustomDomain
|
|
||||||
Site.send :include, Locomotive::Hosting::Heroku::FirstInstallation
|
|
||||||
end
|
|
||||||
|
|
||||||
def apply_patches
|
|
||||||
# for various reasons, Heroku can modify the behaviour of an application by changing the gem versions (json/pure for instance)
|
|
||||||
# so the purpose of this method is to correct those potential differences.
|
|
||||||
|
|
||||||
# http://blog.ethanvizitei.com/2010/11/json-pure-ruins-my-morning.html
|
|
||||||
Fixnum.class_eval { def to_json(options = nil); to_s; end }
|
|
||||||
end
|
|
||||||
|
|
||||||
# manage domains
|
|
||||||
|
|
||||||
def add_heroku_domain(name)
|
|
||||||
Locomotive.logger "[add heroku domain] #{name}"
|
|
||||||
self.heroku_connection.add_domain(self.config.heroku[:name], name)
|
|
||||||
self.heroku_domains << name
|
|
||||||
end
|
|
||||||
|
|
||||||
def remove_heroku_domain(name)
|
|
||||||
Locomotive.logger "[remove heroku domain] #{name}"
|
|
||||||
self.heroku_connection.remove_domain(self.config.heroku[:name], name)
|
|
||||||
self.heroku_domains.delete(name)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
self.enable_heroku!
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
require 'heroku'
|
||||||
|
require 'heroku/client'
|
||||||
|
require 'locomotive/hosting/heroku/custom_domain'
|
||||||
|
require 'locomotive/hosting/heroku/first_installation'
|
||||||
|
|
||||||
|
module Locomotive
|
||||||
|
module Hosting
|
||||||
|
module Heroku
|
||||||
|
module Enabler
|
||||||
|
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
included do
|
||||||
|
class << self
|
||||||
|
attr_accessor :heroku_connection
|
||||||
|
attr_accessor :heroku_domains
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
module ClassMethods
|
||||||
|
|
||||||
|
def enable_heroku!
|
||||||
|
self.config.domain = 'heroku.com' unless self.config.multi_sites?
|
||||||
|
|
||||||
|
self.config.heroku ||= {}
|
||||||
|
self.config.heroku[:name] = ENV['APP_NAME']
|
||||||
|
|
||||||
|
raise 'Heroku application name is mandatory' if self.config.heroku[:name].blank?
|
||||||
|
|
||||||
|
self.open_heroku_connection
|
||||||
|
|
||||||
|
self.enhance_site_model
|
||||||
|
|
||||||
|
self.apply_patches
|
||||||
|
|
||||||
|
# "cache" domains for better performance
|
||||||
|
self.heroku_domains = self.heroku_connection.list_domains(self.config.heroku[:name]).collect { |h| h[:domain] }
|
||||||
|
end
|
||||||
|
|
||||||
|
def open_heroku_connection
|
||||||
|
login = self.config.heroku[:login] || ENV['HEROKU_LOGIN']
|
||||||
|
password = self.config.heroku[:password] || ENV['HEROKU_PASSWORD']
|
||||||
|
|
||||||
|
self.heroku_connection = ::Heroku::Client.new(login, password)
|
||||||
|
end
|
||||||
|
|
||||||
|
def enhance_site_model
|
||||||
|
Site.send :include, Locomotive::Hosting::Heroku::CustomDomain
|
||||||
|
Site.send :include, Locomotive::Hosting::Heroku::FirstInstallation
|
||||||
|
end
|
||||||
|
|
||||||
|
def apply_patches
|
||||||
|
# for various reasons, Heroku can modify the behaviour of an application by changing the gem versions (json/pure for instance)
|
||||||
|
# so the purpose of this method is to correct those potential differences.
|
||||||
|
|
||||||
|
# http://blog.ethanvizitei.com/2010/11/json-pure-ruins-my-morning.html
|
||||||
|
Fixnum.class_eval { def to_json(options = nil); to_s; end }
|
||||||
|
end
|
||||||
|
|
||||||
|
# manage domains
|
||||||
|
|
||||||
|
def add_heroku_domain(name)
|
||||||
|
Locomotive.logger "[add heroku domain] #{name}"
|
||||||
|
self.heroku_connection.add_domain(self.config.heroku[:name], name)
|
||||||
|
self.heroku_domains << name
|
||||||
|
end
|
||||||
|
|
||||||
|
def remove_heroku_domain(name)
|
||||||
|
Locomotive.logger "[remove heroku domain] #{name}"
|
||||||
|
self.heroku_connection.remove_domain(self.config.heroku[:name], name)
|
||||||
|
self.heroku_domains.delete(name)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,16 @@
|
||||||
|
module Locomotive
|
||||||
|
module Liquid
|
||||||
|
module Filters
|
||||||
|
module Resize
|
||||||
|
|
||||||
|
def resize(input, resize_string)
|
||||||
|
Locomotive::Dragonfly.resize_url(input, resize_string)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
::Liquid::Template.register_filter(Resize)
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -107,7 +107,7 @@ module Locomotive
|
||||||
end
|
end
|
||||||
|
|
||||||
def page_status
|
def page_status
|
||||||
@page == not_found_page ? :not_found : :ok
|
@page.not_found? ? :not_found : :ok
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -17,34 +17,31 @@ namespace :locomotive do
|
||||||
task :remove_asset_collections => :environment do
|
task :remove_asset_collections => :environment do
|
||||||
puts "Processing #{AssetCollection.count} asset collection(s)..."
|
puts "Processing #{AssetCollection.count} asset collection(s)..."
|
||||||
|
|
||||||
|
Asset.destroy_all # TODO
|
||||||
|
|
||||||
AssetCollection.all.each do |collection|
|
AssetCollection.all.each do |collection|
|
||||||
site = Site.find(collection.attributes['site_id'])
|
site = Site.find(collection.attributes['site_id'])
|
||||||
|
|
||||||
if collection.internal?
|
if collection.internal?
|
||||||
# internal collection => create simple assets without associated to a collection
|
# internal collection => create simple assets without associated to a collection
|
||||||
|
|
||||||
# collection.assets.each do |tmp_asset|
|
collection.assets.each do |tmp_asset|
|
||||||
# puts "tmp asset = #{tmp_asset.inspect} / #{tmp_asset.source.url.inspect}"
|
# puts "tmp asset = #{tmp_asset.inspect} / #{tmp_asset.source.url.inspect}" TODO
|
||||||
#
|
|
||||||
# sanitized_attributes = tmp_asset.attributes.dup
|
sanitized_attributes = tmp_asset.attributes.dup
|
||||||
# # sanitized_attributes.delete_if { |k, v| [:name, :source_filename].include?(k) }
|
sanitized_attributes[:_id] = tmp_asset._id
|
||||||
# sanitized_attributes[:_id] = tmp_asset._id
|
|
||||||
#
|
asset = site.assets.build(sanitized_attributes)
|
||||||
# asset = site.assets.build(sanitized_attributes)
|
|
||||||
#
|
asset.save(:validate => false)
|
||||||
# # asset.source = tmp_asset.source.file
|
|
||||||
#
|
# puts "asset = #{asset.inspect} / #{asset.source.url.inspect}" TODO
|
||||||
# asset.save!
|
end
|
||||||
#
|
|
||||||
# puts "asset = #{asset.inspect} / #{asset.source.url.inspect}"
|
|
||||||
#
|
|
||||||
# # asset.destroy
|
|
||||||
# end
|
|
||||||
else
|
else
|
||||||
collection.fetch_asset_klass.class_eval { def self.model_name; 'Asset'; end }
|
collection.fetch_asset_klass.class_eval { def self.model_name; 'Asset'; end }
|
||||||
|
|
||||||
# create content_types reflection of an asset collection
|
# create content_types reflection of an asset collection
|
||||||
ContentType.where(:slug => collection.slug).all.collect(&:destroy)
|
ContentType.where(:slug => collection.slug).all.collect(&:destroy) # TODO
|
||||||
|
|
||||||
content_type = site.content_types.build({
|
content_type = site.content_types.build({
|
||||||
:name => collection.name,
|
:name => collection.name,
|
||||||
|
@ -72,9 +69,6 @@ namespace :locomotive do
|
||||||
content_type.highlighted_field_name = field._name
|
content_type.highlighted_field_name = field._name
|
||||||
content_type.save
|
content_type.save
|
||||||
|
|
||||||
# puts "new content_type = #{content_type.inspect} /\n\n #{content_type.content_custom_fields.inspect}\n\n"
|
|
||||||
# puts "collection asset name = #{collection.fetch_asset_klass.inspect}"
|
|
||||||
|
|
||||||
# insert data
|
# insert data
|
||||||
collection.ordered_assets.each do |asset|
|
collection.ordered_assets.each do |asset|
|
||||||
attributes = (if asset.custom_fields.blank?
|
attributes = (if asset.custom_fields.blank?
|
||||||
|
@ -93,8 +87,6 @@ namespace :locomotive do
|
||||||
|
|
||||||
attributes.merge!(:name => asset.name, :_position_in_list => asset.position)
|
attributes.merge!(:name => asset.name, :_position_in_list => asset.position)
|
||||||
|
|
||||||
# puts "attributes = #{attributes.inspect}"
|
|
||||||
|
|
||||||
content = content_type.contents.build(attributes)
|
content = content_type.contents.build(attributes)
|
||||||
|
|
||||||
content._id = asset._id
|
content._id = asset._id
|
||||||
|
@ -102,13 +94,10 @@ namespace :locomotive do
|
||||||
content.source = asset.source.file
|
content.source = asset.source.file
|
||||||
|
|
||||||
content.save(:validate => false)
|
content.save(:validate => false)
|
||||||
|
|
||||||
# puts "content = #{content.inspect} / #{content.source.url} / #{asset.source.url}"
|
|
||||||
# puts "source (large) #{content.custom_field_9?} / #{content.custom_field_9.url} / #{asset.source.url}"
|
|
||||||
# puts "custom_field_4 (thumb) #{content.custom_field_4?} / #{content.custom_field_4.url} / #{asset.custom_field_4.url}"
|
|
||||||
# puts "====="
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
puts "...the collection named '#{collection.slug}' for the '#{site.name}' site has been migrated with success !"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,8 @@ Gem::Specification.new do |s|
|
||||||
|
|
||||||
s.add_dependency "rmagick", "2.12.2"
|
s.add_dependency "rmagick", "2.12.2"
|
||||||
s.add_dependency "locomotive_carrierwave", "0.5.4.beta2"
|
s.add_dependency "locomotive_carrierwave", "0.5.4.beta2"
|
||||||
|
s.add_dependency "dragonfly", "~> 0.9.1"
|
||||||
|
s.add_dependency "rack-cache"
|
||||||
|
|
||||||
s.add_dependency "custom_fields", "1.0.0.beta.17"
|
s.add_dependency "custom_fields", "1.0.0.beta.17"
|
||||||
s.add_dependency "fog", "0.8.2"
|
s.add_dependency "fog", "0.8.2"
|
||||||
|
|
|
@ -59,8 +59,10 @@ $(document).ready(function() {
|
||||||
onComplete: function() {
|
onComplete: function() {
|
||||||
$('#fancybox-wrap .popup-actions button[type=submit]').click(function(e) {
|
$('#fancybox-wrap .popup-actions button[type=submit]').click(function(e) {
|
||||||
$.each(attributes, function(index, name) {
|
$.each(attributes, function(index, name) {
|
||||||
var val = domBoxAttrVal(name).trim();
|
try {
|
||||||
if (val != '') domFieldVal(domField, name, val);
|
var val = domBoxAttrVal(name).trim();
|
||||||
|
if (val != '') domFieldVal(domField, name, val);
|
||||||
|
} catch(e) {}
|
||||||
});
|
});
|
||||||
domBoxAttr('text_formatting').parent().hide();
|
domBoxAttr('text_formatting').parent().hide();
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
<h4><a href="#">NoName</a></h4>
|
<h4><a href="#">NoName</a></h4>
|
||||||
<div class="image">
|
<div class="image">
|
||||||
<div class="inside">
|
<div class="inside">
|
||||||
<img src="/images/admin/icons/filetype/medium/CSS.png">
|
<img />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
|
|
Loading…
Reference in New Issue