upgrade to the last version of delayed_job_mongoid gem + remove reference to the previous handlebars-rails gem (just add the js file instead) + refactor the way to display the list of content types in the back-office menu
This commit is contained in:
parent
0926286318
commit
5dfbb2bdb7
5
Gemfile
5
Gemfile
@ -24,7 +24,7 @@ gem 'coffee-script', '~> 2.2.0'
|
||||
gem 'uglifier', '~> 1.0.4'
|
||||
gem 'jquery-rails', '~> 1.0.16'
|
||||
gem 'rails-backbone', '0.5.4'
|
||||
gem 'handlebars-rails', :git => 'git://github.com/yabawock/handlebars-rails.git'
|
||||
# gem 'handlebars-rails', :git => 'git://github.com/yabawock/handlebars-rails.git'
|
||||
gem 'codemirror-rails'
|
||||
gem 'tinymce-rails'
|
||||
gem 'flash_cookie_session', '~> 1.1.1'
|
||||
@ -47,8 +47,7 @@ gem 'rubyzip'
|
||||
|
||||
gem 'actionmailer-with-request', '~> 0.3.0', :require => 'actionmailer_with_request'
|
||||
gem 'httparty', '~> 0.8.1'
|
||||
gem 'delayed_job', '~> 3.0.0.pre4'
|
||||
gem 'delayed_job_mongoid', '~> 1.0.7'
|
||||
gem 'delayed_job_mongoid', '~> 1.0.8'
|
||||
gem 'SystemTimer', :platforms => :ruby_18
|
||||
|
||||
# The rest of the dependencies are for use when in the locomotive dev environment
|
||||
|
101
Gemfile.lock
101
Gemfile.lock
@ -1,27 +1,22 @@
|
||||
GIT
|
||||
remote: git://github.com/chriseppstein/compass.git
|
||||
revision: 79d94647f9a00b06c4a83db02e86f5d404569baf
|
||||
revision: bffba483754cb9381fa51efd8e2a1f0482a21ac6
|
||||
specs:
|
||||
compass (0.12.alpha.1.79d9464)
|
||||
compass (0.12.alpha.4.bffba48)
|
||||
chunky_png (~> 1.2)
|
||||
fssm (>= 0.2.7)
|
||||
sass (~> 3.1)
|
||||
|
||||
GIT
|
||||
remote: git://github.com/plataformatec/devise.git
|
||||
revision: ede004169c6af7416f8c4e3fc29a653bee133f60
|
||||
revision: a949f9eca24f9d43f516363fbf2f5d004623355e
|
||||
specs:
|
||||
devise (1.5.1)
|
||||
devise (2.0.0.rc)
|
||||
bcrypt-ruby (~> 3.0)
|
||||
orm_adapter (~> 0.0.3)
|
||||
railties (~> 3.1)
|
||||
warden (~> 1.1)
|
||||
|
||||
GIT
|
||||
remote: git://github.com/yabawock/handlebars-rails.git
|
||||
revision: a09077aa91f10e08403af84586b2f2f0b38d9e2f
|
||||
specs:
|
||||
handlebars-rails (0.9.1)
|
||||
|
||||
GIT
|
||||
remote: git@github.com:locomotivecms/mongoid_acts_as_tree.git
|
||||
revision: ca494d22c3d7946385aba1153c017d9c30e9f9d3
|
||||
@ -39,7 +34,7 @@ PATH
|
||||
GEM
|
||||
remote: http://rubygems.org/
|
||||
specs:
|
||||
RedCloth (4.2.8)
|
||||
RedCloth (4.2.9)
|
||||
SystemTimer (1.2.3)
|
||||
ZenTest (4.6.2)
|
||||
actionmailer (3.1.3)
|
||||
@ -77,7 +72,7 @@ GEM
|
||||
autotest (4.4.6)
|
||||
ZenTest (>= 4.4.1)
|
||||
bcrypt-ruby (3.0.1)
|
||||
bson (1.4.0)
|
||||
bson (1.5.2)
|
||||
bson_ext (1.4.0)
|
||||
builder (3.0.0)
|
||||
bushido (0.0.35)
|
||||
@ -98,44 +93,43 @@ GEM
|
||||
carrierwave-mongoid (0.1.3)
|
||||
carrierwave (>= 0.5.6)
|
||||
mongoid (~> 2.1)
|
||||
cells (3.7.0)
|
||||
cells (3.7.1)
|
||||
actionpack (~> 3.0)
|
||||
railties (~> 3.0)
|
||||
childprocess (0.2.2)
|
||||
childprocess (0.2.6)
|
||||
ffi (~> 1.0.6)
|
||||
chunky_png (1.2.5)
|
||||
codemirror-rails (0.3.1)
|
||||
codemirror-rails (0.3.2)
|
||||
railties (~> 3.0)
|
||||
coffee-script (2.2.0)
|
||||
coffee-script-source
|
||||
execjs
|
||||
coffee-script-source (1.1.3)
|
||||
cucumber (1.1.3)
|
||||
coffee-script-source (1.2.0)
|
||||
cucumber (1.1.4)
|
||||
builder (>= 2.1.2)
|
||||
diff-lcs (>= 1.1.2)
|
||||
gherkin (~> 2.6.7)
|
||||
gherkin (~> 2.7.1)
|
||||
json (>= 1.4.6)
|
||||
term-ansicolor (>= 1.0.6)
|
||||
cucumber-rails (1.2.0)
|
||||
capybara (>= 1.1.1)
|
||||
cucumber (>= 1.1.1)
|
||||
cucumber-rails (1.2.1)
|
||||
capybara (>= 1.1.2)
|
||||
cucumber (>= 1.1.3)
|
||||
nokogiri (>= 1.5.0)
|
||||
daemons (1.0.10)
|
||||
database_cleaner (0.7.0)
|
||||
delayed_job (3.0.0.pre4)
|
||||
delayed_job (3.0.0)
|
||||
activesupport (~> 3.0)
|
||||
daemons (= 1.0.10)
|
||||
delayed_job_mongoid (1.0.7)
|
||||
delayed_job (~> 3.0.0.pre)
|
||||
delayed_job_mongoid (1.0.8)
|
||||
delayed_job (~> 3.0.0)
|
||||
mongoid (>= 2.0)
|
||||
diff-lcs (1.1.3)
|
||||
dragonfly (0.9.8)
|
||||
dragonfly (0.9.9)
|
||||
rack
|
||||
ejs (1.0.0)
|
||||
erubis (2.7.0)
|
||||
excon (0.7.8)
|
||||
execjs (1.2.9)
|
||||
excon (0.7.12)
|
||||
execjs (1.2.13)
|
||||
multi_json (~> 1.0)
|
||||
factory_girl (2.3.1)
|
||||
factory_girl (2.3.2)
|
||||
activesupport
|
||||
factory_girl_rails (1.4.0)
|
||||
factory_girl (~> 2.3.0)
|
||||
@ -156,25 +150,26 @@ GEM
|
||||
formatador (0.2.1)
|
||||
formtastic (2.0.2)
|
||||
rails (~> 3.0)
|
||||
fssm (0.2.7)
|
||||
gherkin (2.6.8)
|
||||
fssm (0.2.8.1)
|
||||
gherkin (2.7.2)
|
||||
json (>= 1.4.6)
|
||||
growl-glue (1.0.7)
|
||||
haml (3.1.3)
|
||||
highline (1.6.8)
|
||||
haml (3.1.4)
|
||||
highline (1.6.9)
|
||||
hike (1.2.1)
|
||||
httparty (0.8.1)
|
||||
multi_json
|
||||
multi_xml
|
||||
i18n (0.6.0)
|
||||
jquery-rails (1.0.18)
|
||||
jquery-rails (1.0.19)
|
||||
railties (~> 3.0)
|
||||
thor (~> 0.14)
|
||||
json (1.6.1)
|
||||
json_pure (1.6.1)
|
||||
kaminari (0.12.4)
|
||||
rails (>= 3.0.0)
|
||||
kgio (2.6.0)
|
||||
json (1.6.4)
|
||||
kaminari (0.13.0)
|
||||
actionpack (>= 3.0.0)
|
||||
activesupport (>= 3.0.0)
|
||||
railties (>= 3.0.0)
|
||||
kgio (2.7.2)
|
||||
launchy (2.0.5)
|
||||
addressable (~> 2.2.6)
|
||||
locomotive_liquid (2.2.2)
|
||||
@ -185,13 +180,13 @@ GEM
|
||||
mime-types (1.17.2)
|
||||
mimetype-fu (0.1.2)
|
||||
mocha (0.9.12)
|
||||
mongo (1.4.0)
|
||||
bson (= 1.4.0)
|
||||
mongo (1.5.2)
|
||||
bson (= 1.5.2)
|
||||
mongoid (2.3.4)
|
||||
activemodel (~> 3.1)
|
||||
mongo (~> 1.3)
|
||||
tzinfo (~> 0.3.22)
|
||||
multi_json (1.0.3)
|
||||
multi_json (1.0.4)
|
||||
multi_xml (0.4.1)
|
||||
net-scp (1.0.4)
|
||||
net-ssh (>= 1.99.1)
|
||||
@ -202,7 +197,7 @@ GEM
|
||||
cucumber (>= 0.8)
|
||||
rake
|
||||
polyglot (0.3.3)
|
||||
rack (1.3.5)
|
||||
rack (1.3.6)
|
||||
rack-cache (1.1)
|
||||
rack (>= 0.4)
|
||||
rack-mount (0.8.3)
|
||||
@ -232,7 +227,7 @@ GEM
|
||||
thor (~> 0.14.6)
|
||||
raindrops (0.8.0)
|
||||
rake (0.9.2)
|
||||
rdoc (3.11)
|
||||
rdoc (3.12)
|
||||
json (~> 1.4)
|
||||
responders (0.6.4)
|
||||
rest-client (1.6.7)
|
||||
@ -242,7 +237,7 @@ GEM
|
||||
rspec-core (~> 2.6.0)
|
||||
rspec-expectations (~> 2.6.0)
|
||||
rspec-mocks (~> 2.6.0)
|
||||
rspec-cells (0.1.0)
|
||||
rspec-cells (0.1.1)
|
||||
rails (~> 3.0)
|
||||
rspec-rails (~> 2.2)
|
||||
rspec-core (2.6.4)
|
||||
@ -255,19 +250,19 @@ GEM
|
||||
railties (~> 3.0)
|
||||
rspec (~> 2.6.0)
|
||||
ruby-hmac (0.4.0)
|
||||
rubyzip (0.9.4)
|
||||
rubyzip (0.9.5)
|
||||
sanitize (2.0.3)
|
||||
nokogiri (>= 1.4.4, < 1.6)
|
||||
sass (3.1.10)
|
||||
sass (3.1.12)
|
||||
sass-rails (3.1.5)
|
||||
actionpack (~> 3.1.0)
|
||||
railties (~> 3.1.0)
|
||||
sass (~> 3.1.10)
|
||||
tilt (~> 1.3.2)
|
||||
selenium-webdriver (2.13.0)
|
||||
childprocess (>= 0.2.1)
|
||||
selenium-webdriver (2.16.0)
|
||||
childprocess (>= 0.2.5)
|
||||
ffi (~> 1.0.9)
|
||||
json_pure
|
||||
multi_json (~> 1.0.4)
|
||||
rubyzip
|
||||
sprockets (2.0.3)
|
||||
hike (~> 1.2)
|
||||
@ -315,8 +310,7 @@ DEPENDENCIES
|
||||
cucumber-rails
|
||||
custom_fields!
|
||||
database_cleaner
|
||||
delayed_job (~> 3.0.0.pre4)
|
||||
delayed_job_mongoid (~> 1.0.7)
|
||||
delayed_job_mongoid (~> 1.0.8)
|
||||
devise!
|
||||
dragonfly (~> 0.9.8)
|
||||
factory_girl_rails (~> 1.1)
|
||||
@ -325,7 +319,6 @@ DEPENDENCIES
|
||||
formtastic (~> 2.0.2)
|
||||
growl-glue
|
||||
haml (~> 3.1.3)
|
||||
handlebars-rails!
|
||||
highline (~> 1.6.2)
|
||||
httparty (~> 0.8.1)
|
||||
jquery-rails (~> 1.0.16)
|
||||
|
@ -8,7 +8,6 @@
|
||||
//= require jquery-ui
|
||||
//= require jquery_ujs
|
||||
//= require underscore
|
||||
//= require handlebars
|
||||
//= require backbone
|
||||
//= require codemirror
|
||||
//= require tinymce-jquery
|
||||
|
@ -36,14 +36,6 @@ module Locomotive::BaseHelper
|
||||
end
|
||||
end
|
||||
|
||||
# def collection_to_js(collection, options = {}) # FIXME: DEPRECATED
|
||||
# js = collection.collect { |object| object.to_json }
|
||||
#
|
||||
# options_to_js = ActiveSupport::JSON.encode(options).gsub(/^\{/, '').gsub(/\}$/, '')
|
||||
#
|
||||
# "new Object({ \"collection\": [#{js.join(', ')}], #{options_to_js} })"
|
||||
# end
|
||||
|
||||
def flash_message
|
||||
if not flash.empty?
|
||||
first_key = flash.keys.first
|
||||
|
@ -1,23 +1,50 @@
|
||||
module Locomotive::ContentTypesHelper
|
||||
|
||||
def each_content_type_menu_item(&block)
|
||||
current_site.content_types.ordered.only(:site_id, :name, :slug, :label_field_name).each do |content_type|
|
||||
next unless content_type.persisted?
|
||||
# Iterates over the content types with the following rules
|
||||
# - content types are ordered by the updated_at date (DESC)
|
||||
# - each content type has its own submenu if saved recently
|
||||
# - if there are more than ui.max_content_types content types, the extra ones go under "..."
|
||||
# - if a content type is selected and it is part of the extra content types, then
|
||||
# it will be moved to the first position in the displayed list (with its own submenu)
|
||||
#
|
||||
# @param [ Block ] block The statements responsible to display the menu item from a content type or a list of content types
|
||||
#
|
||||
def each_content_type(&block)
|
||||
visible, others = [], []
|
||||
|
||||
item_on = (content_type.slug == @content_type.slug) rescue nil
|
||||
current_site.content_types.ordered.only(:site_id, :name, :slug, :label_field_name).each_with_index do |content_type, index|
|
||||
next if !content_type.persisted?
|
||||
|
||||
label = truncate(content_type.name, :length => 15)
|
||||
url = content_entries_url(content_type.slug)
|
||||
css = @content_type && content_type.slug == @content_type.slug ? 'on' : ''
|
||||
|
||||
html = submenu_entry(label, url, :i18n => false, :css => css) do
|
||||
yield(content_type)
|
||||
if index >= Locomotive.config.ui.max_content_types
|
||||
if self.is_content_type_selected(content_type)
|
||||
others << visible.delete_at(Locomotive.config.ui.max_content_types - 1) # swap content types
|
||||
visible.insert(0, content_type)
|
||||
else
|
||||
others << content_type # fills the "..." menu
|
||||
end
|
||||
next
|
||||
end
|
||||
|
||||
haml_concat(html)
|
||||
end
|
||||
visible << content_type
|
||||
end
|
||||
|
||||
visible.map { |c| yield(c) }
|
||||
yield(others)
|
||||
end
|
||||
|
||||
def is_content_type_selected(content_type)
|
||||
@content_type && content_type.slug == @content_type.slug
|
||||
end
|
||||
|
||||
# Renders the label of a content type entry. If no raw_item_template filled in the content type,
|
||||
# it just calls the _label method of the entry (based on the label_field_id). Otherwise, it
|
||||
# parses and renders the liquid template.
|
||||
#
|
||||
# @param [ ContentType ] content_type The content type for better performance
|
||||
# @param [ ContentEntry] entry The entry we want to display the label
|
||||
#
|
||||
# @return [ String ] The label of the content type entry
|
||||
#
|
||||
def entry_label(content_type, entry)
|
||||
if content_type.raw_item_template.blank?
|
||||
entry._label # default one
|
||||
@ -34,90 +61,4 @@ module Locomotive::ContentTypesHelper
|
||||
end
|
||||
end
|
||||
|
||||
# MAX_DISPLAYED_CONTENTS = 4
|
||||
#
|
||||
# def fetch_content_types
|
||||
# return @content_types if @content_types
|
||||
#
|
||||
# @content_types = current_site.content_types.ordered.
|
||||
# limit(:contents => Locomotive.config.lastest_items_nb).
|
||||
# only(:site_id, :name, :slug, :highlighted_field_name, :contents_custom_fields_version, :order_by, :serialized_item_template, :raw_item_template).to_a
|
||||
#
|
||||
# if @content_type && @content_type.persisted? && @content_types.index(@content_type) >= MAX_DISPLAYED_CONTENTS
|
||||
# @content_types.delete(@content_type)
|
||||
# @content_types.insert(0, @content_type)
|
||||
# end
|
||||
#
|
||||
# # be sure, we've got the custom klass up-to-date, otherwise it will fail miserably
|
||||
# @content_types.each do |content_type|
|
||||
# if content_type.content_klass_out_of_date?
|
||||
# content_type.reload
|
||||
# content_type.invalidate_content_klass
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# @content_types
|
||||
# end
|
||||
#
|
||||
# def each_content_type_menu_item(which = :first, &block)
|
||||
# types = fetch_content_types
|
||||
# sliced = []
|
||||
#
|
||||
# if which == :first
|
||||
# sliced = types[0..MAX_DISPLAYED_CONTENTS - 1]
|
||||
# elsif types.size > MAX_DISPLAYED_CONTENTS
|
||||
# sliced = types[MAX_DISPLAYED_CONTENTS, types.size - MAX_DISPLAYED_CONTENTS]
|
||||
# end
|
||||
#
|
||||
# return [] if sliced.empty?
|
||||
#
|
||||
# sliced.each do |content_type|
|
||||
# next if content_type.new_record?
|
||||
# item_on = (content_type.slug == @content_type.slug) rescue nil
|
||||
#
|
||||
# label = truncate(content_type.name, :length => 15)
|
||||
# url = contents_url(content_type.slug)
|
||||
# css = @content_type && content_type.slug == @content_type.slug ? 'on' : ''
|
||||
#
|
||||
# html = submenu_entry(label, url, :i18n => false, :css => css) do
|
||||
# yield(content_type)
|
||||
# end
|
||||
#
|
||||
# haml_concat(html)
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# def other_content_types(&block)
|
||||
# types = fetch_content_types
|
||||
#
|
||||
# if types.size > MAX_DISPLAYED_CONTENTS
|
||||
# sliced = types[MAX_DISPLAYED_CONTENTS, types.size - MAX_DISPLAYED_CONTENTS]
|
||||
#
|
||||
# html = submenu_entry('...', '#', :i18n => false) do
|
||||
# yield(sliced)
|
||||
# end
|
||||
#
|
||||
# haml_concat(html)
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# def content_label_for(content)
|
||||
# if content._parent.raw_item_template.blank?
|
||||
# content._label # default one
|
||||
# else
|
||||
# assigns = {
|
||||
# 'site' => current_site,
|
||||
# 'content' => content.to_liquid
|
||||
# }
|
||||
#
|
||||
# registers = {
|
||||
# :controller => self,
|
||||
# :site => current_site,
|
||||
# :current_locomotive_account => current_locomotive_account
|
||||
# }
|
||||
#
|
||||
# preserve(content._parent.item_template.render(::Liquid::Context.new({}, assigns, registers)))
|
||||
# end
|
||||
# end
|
||||
|
||||
end
|
||||
|
@ -27,7 +27,7 @@ module Locomotive
|
||||
|
||||
## named scopes ##
|
||||
scope :visible, :where => { :_visible => true }
|
||||
scope :latest_updated, :order_by => :updated_at.desc, :limit => Locomotive.config.lastest_entries_nb
|
||||
scope :latest_updated, :order_by => :updated_at.desc, :limit => Locomotive.config.ui.lastest_entries_nb
|
||||
|
||||
## methods ##
|
||||
|
||||
|
@ -41,7 +41,7 @@ module Locomotive
|
||||
validates_exclusion_of :slug, :in => Locomotive.config.reserved_slugs, :if => Proc.new { |p| p.depth == 0 }
|
||||
|
||||
## named scopes ##
|
||||
scope :latest_updated, :order_by => [[:updated_at, :desc]], :limit => Locomotive.config.lastest_entries_nb
|
||||
scope :latest_updated, :order_by => [[:updated_at, :desc]], :limit => Locomotive.config.ui.lastest_entries_nb
|
||||
scope :root, :where => { :slug => 'index', :depth => 0 }
|
||||
scope :not_found, :where => { :slug => '404', :depth => 0 }
|
||||
scope :published, :where => { :published => true }
|
||||
|
@ -11,13 +11,25 @@
|
||||
= link_to truncate(page.title, :length => 25), edit_page_url(page)
|
||||
%span= time_ago_in_words(page.updated_at)
|
||||
|
||||
- each_content_type_menu_item do |content_type|
|
||||
- each_content_type do |menu_item|
|
||||
-if menu_item.is_a?(Array)
|
||||
- content_types = menu_item
|
||||
= submenu_entry '...', '#', :i18n => false do
|
||||
.wrapper
|
||||
.inner
|
||||
%ul.big-links
|
||||
- content_types.each do |content_type|
|
||||
%li
|
||||
= link_to truncate(content_type.name, :length => 20), content_entries_url(content_type.slug)
|
||||
- else
|
||||
- content_type = menu_item
|
||||
= submenu_entry truncate(content_type.name, :length => 15), content_entries_url(content_type.slug), :i18n => false, :css => "#{'on' if is_content_type_selected(content_type)}" do
|
||||
.wrapper
|
||||
.header
|
||||
%p= link_to t('locomotive.content_entries.index.new'), new_content_entry_url(content_type.slug)
|
||||
|
||||
- if can? :manage, content_type
|
||||
%p.edit= link_to t('locomotive.content_entries.index.edit'), edit_content_type_url(content_type)
|
||||
%p.edit= link_to t('locomotive.content_types.index.edit'), edit_content_type_url(content_type)
|
||||
|
||||
.inner
|
||||
%h2!= t('locomotive.content_entries.index.lastest_entries')
|
||||
@ -26,10 +38,3 @@
|
||||
%li
|
||||
= link_to truncate(entry._label(content_type), :length => 20), edit_content_entry_url(content_type.slug, entry)
|
||||
%span= time_ago_in_words(entry.updated_at)
|
||||
|
||||
/ - other_content_types do |content_types|
|
||||
/ .inner
|
||||
/ %ul.big-links
|
||||
/ - content_types.each do |content_type|
|
||||
/ %li
|
||||
/ = link_to truncate(content_type.name, :length => 20), contents_url(content_type.slug)
|
2
doc/TODO
2
doc/TODO
@ -49,7 +49,7 @@ x edit my site
|
||||
x show / hide options of a field based on its type
|
||||
x select: add/edit/remove options
|
||||
x text: formatting
|
||||
- change in main menu
|
||||
x change in main menu
|
||||
x manage contents
|
||||
x list (highlighted field)
|
||||
x slugify
|
||||
|
@ -44,7 +44,10 @@ Locomotive.configure do |config|
|
||||
config.delayed_job = false
|
||||
|
||||
# configure how many items we display in sub menu in the "Contents" section.
|
||||
# config.lastest_entries_nb = 5
|
||||
# config.ui = {
|
||||
# :lastest_entries_nb => 5,
|
||||
# :max_content_types => 1
|
||||
# }
|
||||
|
||||
# default locale (for now, only en, de, fr, pt-BR and it are supported)
|
||||
config.default_locale = :en
|
||||
|
@ -16,7 +16,10 @@ module Locomotive
|
||||
:mailer_sender => 'support@example.com',
|
||||
:manage_subdomain => false,
|
||||
:manage_manage_domains => false,
|
||||
:ui => {
|
||||
:lastest_entries_nb => 5,
|
||||
:max_content_types => 1 # TODO 4
|
||||
},
|
||||
:rack_cache => {
|
||||
:verbose => true,
|
||||
:metastore => URI.encode("file:#{Rails.root}/tmp/dragonfly/cache/meta"), # URI encoded in case of spaces
|
||||
|
@ -45,7 +45,10 @@ Locomotive.configure do |config|
|
||||
config.delayed_job = true # false
|
||||
|
||||
# configure how many items we display in sub menu in the "Contents" section.
|
||||
# config.lastest_entries_nb = 5
|
||||
# config.ui = {
|
||||
# :lastest_entries_nb => 5,
|
||||
# :max_content_types => 1
|
||||
# }
|
||||
|
||||
# default locale (for now, only en, de, fr, pt-BR and it are supported)
|
||||
config.default_locale = :en
|
||||
|
1493
vendor/assets/javascripts/handlebars.js
vendored
Normal file
1493
vendor/assets/javascripts/handlebars.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user