Compare commits
22 Commits
fc3c2f268a
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 4013070e4f | |||
| da5db36b4c | |||
| f3369b8fa9 | |||
| 74cbca706b | |||
| 28be1d86d9 | |||
| 00be67de45 | |||
| f54bfb63db | |||
| 4ae6e557b6 | |||
| 1785e9ca0b | |||
| 24415b64c0 | |||
| 548a227617 | |||
| 37cbb428c6 | |||
| 6f2193a5e5 | |||
| ced8976cc9 | |||
| 4efe7b5d5f | |||
| 80d136e595 | |||
| 30952dd9d6 | |||
| e04f379041 | |||
| 1a1edf675b | |||
| 69a0291ab7 | |||
| 647cc38bad | |||
| 557763877c |
@@ -21,12 +21,11 @@ group :assets do
|
||||
gem 'momentjs-rails'
|
||||
end
|
||||
|
||||
gem 'simply_stored' , github: 'bterkuile/simply_stored'
|
||||
gem 'simply_couch' , github: 'bterkuile/simply_couch', branch: 'master'
|
||||
#gem 'orm_adapter', github: 'bterkuile/orm_adapter'
|
||||
gem 'devise'
|
||||
gem 'devise_simply_stored', github: 'bterkuile/devise_simply_stored'
|
||||
gem 'devise_simply_couch', github: 'bterkuile/devise_simply_couch', branch: 'master'
|
||||
gem 'slim-rails'
|
||||
gem 'paperclip', ['>= 3.4', '!= 4.3.0']
|
||||
gem 'email_validator'
|
||||
# Declare any dependencies that are still in development here instead of in
|
||||
# your gemspec. These might include edge Rails or gems from your path or
|
||||
|
||||
+343
-200
@@ -1,13 +1,15 @@
|
||||
GIT
|
||||
remote: git://github.com/bterkuile/devise_simply_stored.git
|
||||
revision: 86f93782c607958e7f99a6fdbae5566e17047273
|
||||
remote: https://github.com/bterkuile/devise_simply_stored.git
|
||||
revision: d40020669b22bbb14fa40dc4521b2f072eb96e84
|
||||
branch: master
|
||||
specs:
|
||||
devise_simply_stored (0.3.0)
|
||||
devise
|
||||
|
||||
GIT
|
||||
remote: git://github.com/bterkuile/simply_stored.git
|
||||
revision: 7633d88a62972cee6aea49d7d2a175bf07906236
|
||||
remote: https://github.com/bterkuile/simply_stored.git
|
||||
revision: 284607e973802ef46d7b47409bcf4beed7c0984c
|
||||
branch: master
|
||||
specs:
|
||||
simply_stored (1.0.0)
|
||||
activesupport
|
||||
@@ -16,256 +18,397 @@ GIT
|
||||
PATH
|
||||
remote: .
|
||||
specs:
|
||||
cmtool (2.0.0)
|
||||
cmtool (3.0.0)
|
||||
ace-rails-ap
|
||||
bourbon
|
||||
email_validator
|
||||
font-awesome-rails
|
||||
foundation-rails
|
||||
jquery-rails
|
||||
momentjs-rails
|
||||
paperclip
|
||||
pickadate-rails
|
||||
slim-rails
|
||||
tinymce-rails
|
||||
|
||||
GEM
|
||||
remote: http://rubygems.org/
|
||||
specs:
|
||||
ace-rails-ap (4.1.2)
|
||||
actionmailer (4.2.7.1)
|
||||
actionpack (= 4.2.7.1)
|
||||
actionview (= 4.2.7.1)
|
||||
activejob (= 4.2.7.1)
|
||||
mail (~> 2.5, >= 2.5.4)
|
||||
rails-dom-testing (~> 1.0, >= 1.0.5)
|
||||
actionpack (4.2.7.1)
|
||||
actionview (= 4.2.7.1)
|
||||
activesupport (= 4.2.7.1)
|
||||
rack (~> 1.6)
|
||||
rack-test (~> 0.6.2)
|
||||
rails-dom-testing (~> 1.0, >= 1.0.5)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
||||
actionview (4.2.7.1)
|
||||
activesupport (= 4.2.7.1)
|
||||
ace-rails-ap (4.5)
|
||||
actioncable (8.0.2.1)
|
||||
actionpack (= 8.0.2.1)
|
||||
activesupport (= 8.0.2.1)
|
||||
nio4r (~> 2.0)
|
||||
websocket-driver (>= 0.6.1)
|
||||
zeitwerk (~> 2.6)
|
||||
actionmailbox (8.0.2.1)
|
||||
actionpack (= 8.0.2.1)
|
||||
activejob (= 8.0.2.1)
|
||||
activerecord (= 8.0.2.1)
|
||||
activestorage (= 8.0.2.1)
|
||||
activesupport (= 8.0.2.1)
|
||||
mail (>= 2.8.0)
|
||||
actionmailer (8.0.2.1)
|
||||
actionpack (= 8.0.2.1)
|
||||
actionview (= 8.0.2.1)
|
||||
activejob (= 8.0.2.1)
|
||||
activesupport (= 8.0.2.1)
|
||||
mail (>= 2.8.0)
|
||||
rails-dom-testing (~> 2.2)
|
||||
actionpack (8.0.2.1)
|
||||
actionview (= 8.0.2.1)
|
||||
activesupport (= 8.0.2.1)
|
||||
nokogiri (>= 1.8.5)
|
||||
rack (>= 2.2.4)
|
||||
rack-session (>= 1.0.1)
|
||||
rack-test (>= 0.6.3)
|
||||
rails-dom-testing (~> 2.2)
|
||||
rails-html-sanitizer (~> 1.6)
|
||||
useragent (~> 0.16)
|
||||
actiontext (8.0.2.1)
|
||||
actionpack (= 8.0.2.1)
|
||||
activerecord (= 8.0.2.1)
|
||||
activestorage (= 8.0.2.1)
|
||||
activesupport (= 8.0.2.1)
|
||||
globalid (>= 0.6.0)
|
||||
nokogiri (>= 1.8.5)
|
||||
actionview (8.0.2.1)
|
||||
activesupport (= 8.0.2.1)
|
||||
builder (~> 3.1)
|
||||
erubis (~> 2.7.0)
|
||||
rails-dom-testing (~> 1.0, >= 1.0.5)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
||||
activejob (4.2.7.1)
|
||||
activesupport (= 4.2.7.1)
|
||||
globalid (>= 0.3.0)
|
||||
activemodel (4.2.7.1)
|
||||
activesupport (= 4.2.7.1)
|
||||
builder (~> 3.1)
|
||||
activerecord (4.2.7.1)
|
||||
activemodel (= 4.2.7.1)
|
||||
activesupport (= 4.2.7.1)
|
||||
arel (~> 6.0)
|
||||
activesupport (4.2.7.1)
|
||||
i18n (~> 0.7)
|
||||
json (~> 1.7, >= 1.7.7)
|
||||
minitest (~> 5.1)
|
||||
thread_safe (~> 0.3, >= 0.3.4)
|
||||
tzinfo (~> 1.1)
|
||||
addressable (2.5.0)
|
||||
public_suffix (~> 2.0, >= 2.0.2)
|
||||
arel (6.0.4)
|
||||
bcrypt (3.1.11)
|
||||
bourbon (4.3.2)
|
||||
sass (~> 3.4)
|
||||
thor (~> 0.19)
|
||||
builder (3.2.3)
|
||||
capybara (2.12.0)
|
||||
erubi (~> 1.11)
|
||||
rails-dom-testing (~> 2.2)
|
||||
rails-html-sanitizer (~> 1.6)
|
||||
activejob (8.0.2.1)
|
||||
activesupport (= 8.0.2.1)
|
||||
globalid (>= 0.3.6)
|
||||
activemodel (8.0.2.1)
|
||||
activesupport (= 8.0.2.1)
|
||||
activerecord (8.0.2.1)
|
||||
activemodel (= 8.0.2.1)
|
||||
activesupport (= 8.0.2.1)
|
||||
timeout (>= 0.4.0)
|
||||
activestorage (8.0.2.1)
|
||||
actionpack (= 8.0.2.1)
|
||||
activejob (= 8.0.2.1)
|
||||
activerecord (= 8.0.2.1)
|
||||
activesupport (= 8.0.2.1)
|
||||
marcel (~> 1.0)
|
||||
activesupport (8.0.2.1)
|
||||
base64
|
||||
benchmark (>= 0.3)
|
||||
bigdecimal
|
||||
concurrent-ruby (~> 1.0, >= 1.3.1)
|
||||
connection_pool (>= 2.2.5)
|
||||
drb
|
||||
i18n (>= 1.6, < 2)
|
||||
logger (>= 1.4.2)
|
||||
minitest (>= 5.1)
|
||||
securerandom (>= 0.3)
|
||||
tzinfo (~> 2.0, >= 2.0.5)
|
||||
uri (>= 0.13.1)
|
||||
addressable (2.8.7)
|
||||
public_suffix (>= 2.0.2, < 7.0)
|
||||
base64 (0.3.0)
|
||||
bcrypt (3.1.22)
|
||||
benchmark (0.5.0)
|
||||
bigdecimal (4.0.1)
|
||||
builder (3.3.0)
|
||||
capybara (3.40.0)
|
||||
addressable
|
||||
mime-types (>= 1.16)
|
||||
nokogiri (>= 1.3.3)
|
||||
rack (>= 1.0.0)
|
||||
rack-test (>= 0.5.4)
|
||||
xpath (~> 2.0)
|
||||
climate_control (0.1.0)
|
||||
matrix
|
||||
mini_mime (>= 0.1.3)
|
||||
nokogiri (~> 1.11)
|
||||
rack (>= 1.6.0)
|
||||
rack-test (>= 0.6.3)
|
||||
regexp_parser (>= 1.5, < 3.0)
|
||||
xpath (~> 3.2)
|
||||
childprocess (5.1.0)
|
||||
logger (~> 1.5)
|
||||
climate_control (0.2.0)
|
||||
cliver (0.3.2)
|
||||
cocaine (0.5.8)
|
||||
climate_control (>= 0.0.3, < 1.0)
|
||||
coderay (1.1.1)
|
||||
coderay (1.1.3)
|
||||
coffee-script (2.4.1)
|
||||
coffee-script-source
|
||||
execjs
|
||||
coffee-script-source (1.12.2)
|
||||
concurrent-ruby (1.0.4)
|
||||
couch_potato (1.7.0)
|
||||
activemodel (~> 4.0)
|
||||
couchrest (~> 2.0.0.rc3)
|
||||
json (~> 1.6)
|
||||
concurrent-ruby (1.3.6)
|
||||
connection_pool (3.0.2)
|
||||
couch_potato (1.19.2)
|
||||
activemodel (>= 7.2, < 8.1)
|
||||
couchrest (~> 2.0.0)
|
||||
json (~> 2.3)
|
||||
couchrest (2.0.1)
|
||||
httpclient (~> 2.8)
|
||||
mime-types (>= 1.15)
|
||||
multi_json (~> 1.7)
|
||||
daemons (1.2.4)
|
||||
devise (4.2.0)
|
||||
crass (1.0.6)
|
||||
daemons (1.4.1)
|
||||
date (3.5.1)
|
||||
devise (5.0.3)
|
||||
bcrypt (~> 3.0)
|
||||
orm_adapter (~> 0.1)
|
||||
railties (>= 4.1.0, < 5.1)
|
||||
railties (>= 7.0)
|
||||
responders
|
||||
warden (~> 1.2.3)
|
||||
diff-lcs (1.3)
|
||||
email_validator (1.6.0)
|
||||
diff-lcs (1.6.2)
|
||||
drb (2.2.3)
|
||||
email_validator (2.2.4)
|
||||
activemodel
|
||||
erubis (2.7.0)
|
||||
eventmachine (1.2.2)
|
||||
execjs (2.7.0)
|
||||
factory_girl (4.8.0)
|
||||
erb (6.0.2)
|
||||
erubi (1.13.1)
|
||||
eventmachine (1.2.7)
|
||||
execjs (2.10.0)
|
||||
factory_girl (4.9.0)
|
||||
activesupport (>= 3.0.0)
|
||||
factory_girl_rails (4.8.0)
|
||||
factory_girl (~> 4.8.0)
|
||||
factory_girl_rails (4.9.0)
|
||||
factory_girl (~> 4.9.0)
|
||||
railties (>= 3.0.0)
|
||||
font-awesome-rails (4.7.0.1)
|
||||
railties (>= 3.2, < 5.1)
|
||||
ffi (1.17.2-aarch64-linux-gnu)
|
||||
ffi (1.17.2-aarch64-linux-musl)
|
||||
ffi (1.17.2-arm-linux-gnu)
|
||||
ffi (1.17.2-arm-linux-musl)
|
||||
ffi (1.17.2-arm64-darwin)
|
||||
ffi (1.17.2-x86_64-darwin)
|
||||
ffi (1.17.2-x86_64-linux-gnu)
|
||||
ffi (1.17.2-x86_64-linux-musl)
|
||||
font-awesome-rails (4.7.0.9)
|
||||
railties (>= 3.2, < 9.0)
|
||||
foundation-rails (5.5.3.2)
|
||||
railties (>= 3.1.0)
|
||||
sass (>= 3.3.0, < 3.5)
|
||||
globalid (0.3.7)
|
||||
activesupport (>= 4.1.0)
|
||||
httpclient (2.8.3)
|
||||
i18n (0.8.0)
|
||||
jquery-rails (4.2.2)
|
||||
globalid (1.2.1)
|
||||
activesupport (>= 6.1)
|
||||
httpclient (2.9.0)
|
||||
mutex_m
|
||||
i18n (1.14.8)
|
||||
concurrent-ruby (~> 1.0)
|
||||
io-console (0.8.2)
|
||||
irb (1.17.0)
|
||||
pp (>= 0.6.0)
|
||||
prism (>= 1.3.0)
|
||||
rdoc (>= 4.0.0)
|
||||
reline (>= 0.4.2)
|
||||
jquery-rails (4.6.0)
|
||||
rails-dom-testing (>= 1, < 3)
|
||||
railties (>= 4.2.0)
|
||||
thor (>= 0.14, < 2.0)
|
||||
json (1.8.6)
|
||||
launchy (2.4.3)
|
||||
addressable (~> 2.3)
|
||||
loofah (2.0.3)
|
||||
nokogiri (>= 1.5.9)
|
||||
mail (2.6.4)
|
||||
mime-types (>= 1.16, < 4)
|
||||
method_source (0.8.2)
|
||||
mime-types (3.1)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2016.0521)
|
||||
mimemagic (0.3.2)
|
||||
mini_portile2 (2.1.0)
|
||||
minitest (5.10.1)
|
||||
multi_json (1.12.1)
|
||||
nokogiri (1.7.0.1)
|
||||
mini_portile2 (~> 2.1.0)
|
||||
json (2.13.2)
|
||||
launchy (3.1.1)
|
||||
addressable (~> 2.8)
|
||||
childprocess (~> 5.0)
|
||||
logger (~> 1.6)
|
||||
logger (1.7.0)
|
||||
loofah (2.25.1)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.12.0)
|
||||
mail (2.8.1)
|
||||
mini_mime (>= 0.1.1)
|
||||
net-imap
|
||||
net-pop
|
||||
net-smtp
|
||||
marcel (1.0.4)
|
||||
matrix (0.4.3)
|
||||
method_source (1.1.0)
|
||||
mime-types (3.7.0)
|
||||
logger
|
||||
mime-types-data (~> 3.2025, >= 3.2025.0507)
|
||||
mime-types-data (3.2025.0826)
|
||||
mimemagic (0.3.10)
|
||||
nokogiri (~> 1)
|
||||
rake
|
||||
mini_mime (1.1.5)
|
||||
minitest (6.0.2)
|
||||
drb (~> 2.0)
|
||||
prism (~> 1.5)
|
||||
momentjs-rails (2.29.4.1)
|
||||
railties (>= 3.1)
|
||||
multi_json (1.17.0)
|
||||
mutex_m (0.3.0)
|
||||
net-imap (0.5.10)
|
||||
date
|
||||
net-protocol
|
||||
net-pop (0.1.2)
|
||||
net-protocol
|
||||
net-protocol (0.2.2)
|
||||
timeout
|
||||
net-smtp (0.5.1)
|
||||
net-protocol
|
||||
nio4r (2.7.4)
|
||||
nokogiri (1.19.2-aarch64-linux-gnu)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.19.2-aarch64-linux-musl)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.19.2-arm-linux-gnu)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.19.2-arm-linux-musl)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.19.2-arm64-darwin)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.19.2-x86_64-darwin)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.19.2-x86_64-linux-gnu)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.19.2-x86_64-linux-musl)
|
||||
racc (~> 1.4)
|
||||
orm_adapter (0.5.0)
|
||||
paperclip (5.1.0)
|
||||
paperclip (6.1.0)
|
||||
activemodel (>= 4.2.0)
|
||||
activesupport (>= 4.2.0)
|
||||
cocaine (~> 0.5.5)
|
||||
mime-types
|
||||
mimemagic (~> 0.3.0)
|
||||
pickadate-rails (3.5.6.0)
|
||||
terrapin (~> 0.6.0)
|
||||
pickadate-rails (3.5.6.1)
|
||||
railties (>= 3.1.0)
|
||||
poltergeist (1.13.0)
|
||||
capybara (~> 2.1)
|
||||
poltergeist (1.18.1)
|
||||
capybara (>= 2.1, < 4)
|
||||
cliver (~> 0.3.1)
|
||||
websocket-driver (>= 0.2.0)
|
||||
pry (0.10.4)
|
||||
coderay (~> 1.1.0)
|
||||
method_source (~> 0.8.1)
|
||||
slop (~> 3.4)
|
||||
pry-rails (0.3.5)
|
||||
pry (>= 0.9.10)
|
||||
public_suffix (2.0.5)
|
||||
rack (1.6.5)
|
||||
rack-test (0.6.3)
|
||||
rack (>= 1.0)
|
||||
rails (4.2.7.1)
|
||||
actionmailer (= 4.2.7.1)
|
||||
actionpack (= 4.2.7.1)
|
||||
actionview (= 4.2.7.1)
|
||||
activejob (= 4.2.7.1)
|
||||
activemodel (= 4.2.7.1)
|
||||
activerecord (= 4.2.7.1)
|
||||
activesupport (= 4.2.7.1)
|
||||
bundler (>= 1.3.0, < 2.0)
|
||||
railties (= 4.2.7.1)
|
||||
pp (0.6.3)
|
||||
prettyprint
|
||||
prettyprint (0.2.0)
|
||||
prism (1.9.0)
|
||||
pry (0.15.2)
|
||||
coderay (~> 1.1)
|
||||
method_source (~> 1.0)
|
||||
pry-rails (0.3.11)
|
||||
pry (>= 0.13.0)
|
||||
psych (5.3.1)
|
||||
date
|
||||
stringio
|
||||
public_suffix (6.0.2)
|
||||
racc (1.8.1)
|
||||
rack (3.2.6)
|
||||
rack-session (2.1.1)
|
||||
base64 (>= 0.1.0)
|
||||
rack (>= 3.0.0)
|
||||
rack-test (2.2.0)
|
||||
rack (>= 1.3)
|
||||
rackup (2.3.1)
|
||||
rack (>= 3)
|
||||
rails (8.0.2.1)
|
||||
actioncable (= 8.0.2.1)
|
||||
actionmailbox (= 8.0.2.1)
|
||||
actionmailer (= 8.0.2.1)
|
||||
actionpack (= 8.0.2.1)
|
||||
actiontext (= 8.0.2.1)
|
||||
actionview (= 8.0.2.1)
|
||||
activejob (= 8.0.2.1)
|
||||
activemodel (= 8.0.2.1)
|
||||
activerecord (= 8.0.2.1)
|
||||
activestorage (= 8.0.2.1)
|
||||
activesupport (= 8.0.2.1)
|
||||
bundler (>= 1.15.0)
|
||||
railties (= 8.0.2.1)
|
||||
rails-dom-testing (2.3.0)
|
||||
activesupport (>= 5.0.0)
|
||||
minitest
|
||||
nokogiri (>= 1.6)
|
||||
rails-html-sanitizer (1.7.0)
|
||||
loofah (~> 2.25)
|
||||
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
|
||||
railties (8.0.2.1)
|
||||
actionpack (= 8.0.2.1)
|
||||
activesupport (= 8.0.2.1)
|
||||
irb (~> 1.13)
|
||||
rackup (>= 1.0.0)
|
||||
rake (>= 12.2)
|
||||
thor (~> 1.0, >= 1.2.2)
|
||||
zeitwerk (~> 2.6)
|
||||
rake (13.3.1)
|
||||
rdoc (7.2.0)
|
||||
erb
|
||||
psych (>= 4.0.0)
|
||||
tsort
|
||||
regexp_parser (2.11.2)
|
||||
reline (0.6.3)
|
||||
io-console (~> 0.5)
|
||||
responders (3.2.0)
|
||||
actionpack (>= 7.0)
|
||||
railties (>= 7.0)
|
||||
rspec-core (3.13.5)
|
||||
rspec-support (~> 3.13.0)
|
||||
rspec-expectations (3.13.5)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.13.0)
|
||||
rspec-its (2.0.0)
|
||||
rspec-core (>= 3.13.0)
|
||||
rspec-expectations (>= 3.13.0)
|
||||
rspec-mocks (3.13.5)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.13.0)
|
||||
rspec-rails (8.0.2)
|
||||
actionpack (>= 7.2)
|
||||
activesupport (>= 7.2)
|
||||
railties (>= 7.2)
|
||||
rspec-core (~> 3.13)
|
||||
rspec-expectations (~> 3.13)
|
||||
rspec-mocks (~> 3.13)
|
||||
rspec-support (~> 3.13)
|
||||
rspec-support (3.13.5)
|
||||
sass (3.4.25)
|
||||
sass-rails (6.0.0)
|
||||
sassc-rails (~> 2.1, >= 2.1.1)
|
||||
sassc (2.4.0)
|
||||
ffi (~> 1.9)
|
||||
sassc-rails (2.1.2)
|
||||
railties (>= 4.0.0)
|
||||
sassc (>= 2.0)
|
||||
sprockets (> 3.0)
|
||||
sprockets-rails
|
||||
rails-deprecated_sanitizer (1.0.3)
|
||||
activesupport (>= 4.2.0.alpha)
|
||||
rails-dom-testing (1.0.8)
|
||||
activesupport (>= 4.2.0.beta, < 5.0)
|
||||
nokogiri (~> 1.6)
|
||||
rails-deprecated_sanitizer (>= 1.0.1)
|
||||
rails-html-sanitizer (1.0.3)
|
||||
loofah (~> 2.0)
|
||||
railties (4.2.7.1)
|
||||
actionpack (= 4.2.7.1)
|
||||
activesupport (= 4.2.7.1)
|
||||
rake (>= 0.8.7)
|
||||
thor (>= 0.18.1, < 2.0)
|
||||
rake (12.0.0)
|
||||
responders (2.3.0)
|
||||
railties (>= 4.2.0, < 5.1)
|
||||
rspec-core (3.5.4)
|
||||
rspec-support (~> 3.5.0)
|
||||
rspec-expectations (3.5.0)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.5.0)
|
||||
rspec-its (1.2.0)
|
||||
rspec-core (>= 3.0.0)
|
||||
rspec-expectations (>= 3.0.0)
|
||||
rspec-mocks (3.5.0)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.5.0)
|
||||
rspec-rails (3.5.2)
|
||||
actionpack (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
railties (>= 3.0)
|
||||
rspec-core (~> 3.5.0)
|
||||
rspec-expectations (~> 3.5.0)
|
||||
rspec-mocks (~> 3.5.0)
|
||||
rspec-support (~> 3.5.0)
|
||||
rspec-support (3.5.0)
|
||||
sass (3.4.23)
|
||||
sass-rails (5.0.6)
|
||||
railties (>= 4.0.0, < 6)
|
||||
sass (~> 3.1)
|
||||
sprockets (>= 2.8, < 4.0)
|
||||
sprockets-rails (>= 2.0, < 4.0)
|
||||
tilt (>= 1.1, < 3)
|
||||
slim (3.0.7)
|
||||
temple (~> 0.7.6)
|
||||
tilt (>= 1.3.3, < 2.1)
|
||||
slim-rails (3.1.1)
|
||||
tilt
|
||||
securerandom (0.4.1)
|
||||
slim (5.2.1)
|
||||
temple (~> 0.10.0)
|
||||
tilt (>= 2.1.0)
|
||||
slim-rails (3.7.0)
|
||||
actionpack (>= 3.1)
|
||||
railties (>= 3.1)
|
||||
slim (~> 3.0)
|
||||
slop (3.6.0)
|
||||
sprockets (3.7.1)
|
||||
slim (>= 3.0, < 6.0, != 5.0.0)
|
||||
sprockets (4.2.2)
|
||||
concurrent-ruby (~> 1.0)
|
||||
rack (> 1, < 3)
|
||||
sprockets-rails (3.2.0)
|
||||
actionpack (>= 4.0)
|
||||
activesupport (>= 4.0)
|
||||
logger
|
||||
rack (>= 2.2.4, < 4)
|
||||
sprockets-rails (3.5.2)
|
||||
actionpack (>= 6.1)
|
||||
activesupport (>= 6.1)
|
||||
sprockets (>= 3.0.0)
|
||||
temple (0.7.7)
|
||||
thin (1.7.0)
|
||||
stringio (3.2.0)
|
||||
temple (0.10.4)
|
||||
terrapin (0.6.0)
|
||||
climate_control (>= 0.0.3, < 1.0)
|
||||
thin (2.0.1)
|
||||
daemons (~> 1.0, >= 1.0.9)
|
||||
eventmachine (~> 1.0, >= 1.0.4)
|
||||
rack (>= 1, < 3)
|
||||
thor (0.19.4)
|
||||
thread_safe (0.3.5)
|
||||
tilt (2.0.6)
|
||||
tinymce-rails (4.5.3)
|
||||
railties (>= 3.1.1)
|
||||
tzinfo (1.2.2)
|
||||
thread_safe (~> 0.1)
|
||||
warden (1.2.7)
|
||||
rack (>= 1.0)
|
||||
websocket-driver (0.6.5)
|
||||
logger
|
||||
rack (>= 1, < 4)
|
||||
thor (1.5.0)
|
||||
tilt (2.6.1)
|
||||
timeout (0.4.3)
|
||||
tsort (0.2.0)
|
||||
tzinfo (2.0.6)
|
||||
concurrent-ruby (~> 1.0)
|
||||
uri (1.1.1)
|
||||
useragent (0.16.11)
|
||||
warden (1.2.9)
|
||||
rack (>= 2.0.9)
|
||||
websocket-driver (0.8.0)
|
||||
base64
|
||||
websocket-extensions (>= 0.1.0)
|
||||
websocket-extensions (0.1.2)
|
||||
xpath (2.0.0)
|
||||
nokogiri (~> 1.3)
|
||||
websocket-extensions (0.1.5)
|
||||
xpath (3.2.0)
|
||||
nokogiri (~> 1.8)
|
||||
zeitwerk (2.7.5)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
aarch64-linux-gnu
|
||||
aarch64-linux-musl
|
||||
arm-linux-gnu
|
||||
arm-linux-musl
|
||||
arm64-darwin
|
||||
x86_64-darwin
|
||||
x86_64-linux-gnu
|
||||
x86_64-linux-musl
|
||||
|
||||
DEPENDENCIES
|
||||
ace-rails-ap
|
||||
bourbon
|
||||
capybara
|
||||
cmtool!
|
||||
coffee-script
|
||||
@@ -277,18 +420,18 @@ DEPENDENCIES
|
||||
foundation-rails (~> 5.5)
|
||||
jquery-rails
|
||||
launchy
|
||||
momentjs-rails
|
||||
paperclip (>= 3.4, != 4.3.0)
|
||||
pickadate-rails
|
||||
poltergeist
|
||||
pry-rails
|
||||
rails (~> 4.2.3)
|
||||
rails (~> 8.0.1)
|
||||
rspec-its
|
||||
rspec-rails
|
||||
sass-rails
|
||||
simply_stored!
|
||||
slim-rails
|
||||
thin
|
||||
tinymce-rails
|
||||
|
||||
BUNDLED WITH
|
||||
1.13.6
|
||||
2.7.1
|
||||
|
||||
@@ -22,7 +22,7 @@ To start using Cmtool as website CMS add it to your Gemfile. Since it depends
|
||||
on github gems and gem dependencies do not support those you have to
|
||||
explicitly add two dependencies to your Gemfile:
|
||||
gem 'couch_potato' , github: 'bterkuile/couch_potato'
|
||||
gem 'simply_stored' , github: 'bterkuile/simply_stored'
|
||||
gem 'simply_couch' , github: 'bterkuile/simply_couch'
|
||||
gem 'cmtool'
|
||||
|
||||
Make sure that the locales you want to work with are specified in
|
||||
@@ -94,7 +94,7 @@ end
|
||||
```
|
||||
|
||||
This is enough to start using Cmtool. But probably you want to add some
|
||||
goodies of your own. Remember that this is a SimplyStored model with almost
|
||||
goodies of your own. Remember that this is a SimplyCouch model with almost
|
||||
all the ActiveModel features.
|
||||
|
||||
### Page model
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
#= require jquery
|
||||
#= require jquery_ujs
|
||||
#= require foundation
|
||||
#= require semantic-ui
|
||||
#= require ace/ace
|
||||
#= require moment
|
||||
#= require ace/theme-monokai
|
||||
#= require ace/mode-coffee
|
||||
#= require ace/mode-handlebars
|
||||
#= require ace/mode-json
|
||||
#= require ace/mode-yaml
|
||||
#= require ace/mode-haml
|
||||
#= require ace/mode-slim
|
||||
@@ -18,7 +19,9 @@
|
||||
#= require_self
|
||||
|
||||
$ ->
|
||||
$(document).foundation()
|
||||
$('.ui.dropdown').dropdown()
|
||||
$('.ui.checkbox').checkbox()
|
||||
$('.message .close.icon').on 'click', -> $(@).closest('.message').transition('fade')
|
||||
collapsible.setup()
|
||||
html_edit.setup()
|
||||
yml_edit.setup()
|
||||
@@ -37,7 +40,7 @@ $ ->
|
||||
layout: $('#page_layout').val()
|
||||
$.post url, page: params, (response)->
|
||||
iframe.attr 'src', url
|
||||
$('#preview-modal').foundation('reveal', 'open')
|
||||
$('#preview-modal').modal('show')
|
||||
false
|
||||
|
||||
$("[data-time]").each ->
|
||||
|
||||
@@ -17,6 +17,10 @@ class HtmlEdit
|
||||
editor.setValue template_field.val(), -1
|
||||
editor.getSession().setMode 'ace/mode/slim'
|
||||
console.log "Editing Emblem using Slim mode for ACE editor"
|
||||
else if data_mode = text_field.data('mode')
|
||||
editor.setValue text_field.val(), -1
|
||||
editor.getSession().setMode "ace/mode/#{data_mode}"
|
||||
console.log "Editing #{data_mode} using ACE editor"
|
||||
else
|
||||
editor.setValue text_field.val(), -1
|
||||
editor.getSession().setMode 'ace/mode/handlebars'
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
//= require pickadate/default
|
||||
//= require pickadate/default.date
|
||||
//= require pickadate/default.time
|
||||
@import font-awesome
|
||||
@import ./foundation_and_overrides
|
||||
@import semantic-ui
|
||||
@import ./structure
|
||||
@import ./components/*
|
||||
@import ./locale
|
||||
|
||||
@@ -1,12 +1,25 @@
|
||||
// Legacy button hooks kept for cmtool scaffold views not yet converted to
|
||||
// Fomantic `ui button` classes. Colors match Fomantic's default palette.
|
||||
=legacy-button($bg: #1b1c1d)
|
||||
display: inline-block
|
||||
padding: 0.78571429em 1.5em
|
||||
background: $bg
|
||||
color: white
|
||||
border: none
|
||||
border-radius: 0.28571429rem
|
||||
cursor: pointer
|
||||
&:hover
|
||||
opacity: 0.85
|
||||
|
||||
.to-index-button
|
||||
+button($bg: $secondary-color)
|
||||
+legacy-button($bg: #767676)
|
||||
.record-show-button
|
||||
+button($bg: $info-color)
|
||||
+legacy-button($bg: #31ccec)
|
||||
.record-new-button
|
||||
+button
|
||||
+legacy-button
|
||||
.record-edit-button
|
||||
+button($bg: $warning-color)
|
||||
+legacy-button($bg: #fbbd08)
|
||||
.record-destroy-button
|
||||
+button($bg: $alert-color)
|
||||
+legacy-button($bg: #db2828)
|
||||
.form-submit-button
|
||||
+button
|
||||
+legacy-button
|
||||
|
||||
@@ -4,10 +4,13 @@
|
||||
font-weight: bold
|
||||
cursor: pointer
|
||||
span
|
||||
@extend .fa, .fa-arrow-down
|
||||
&:before
|
||||
content: "\25BC"
|
||||
margin-right: 0.5em
|
||||
&.collapsed
|
||||
.collapsible-title
|
||||
span
|
||||
@extend .fa, .fa-arrow-right
|
||||
&:before
|
||||
content: "\25B6"
|
||||
.collapsible-content
|
||||
display: none
|
||||
|
||||
@@ -1,30 +1,20 @@
|
||||
.form-row
|
||||
+grid-row
|
||||
display: flex
|
||||
flex-wrap: wrap
|
||||
align-items: flex-start
|
||||
gap: 1em
|
||||
margin-bottom: 0.5em
|
||||
.form-label
|
||||
@media #{$small-only}
|
||||
+grid-column($columns:10, $center:true)
|
||||
@media #{$medium-only}
|
||||
+grid-column($columns:4, $offset:1)
|
||||
@media #{$large-up}
|
||||
+grid-column(3)
|
||||
&.half
|
||||
+grid-column(6)
|
||||
flex: 0 0 200px
|
||||
max-width: 100%
|
||||
padding-top: 0.5em
|
||||
.form-field
|
||||
@media #{$small-only}
|
||||
+grid-column($columns:10, $center:true, $last-column:true)
|
||||
@media #{$medium-only}
|
||||
+grid-column($columns:4, $last-column:true)
|
||||
@media #{$large-up}
|
||||
+grid-column($columns: 3, $last-column:true)
|
||||
flex: 1 1 300px
|
||||
max-width: 100%
|
||||
&.full
|
||||
@media #{$small-only}
|
||||
+grid-column($columns:10, $center:true, $last-column:true)
|
||||
@media #{$medium-only}
|
||||
+grid-column($columns:6, $last-column:true)
|
||||
@media #{$large-up}
|
||||
+grid-column($columns: 9, $last-column:true)
|
||||
flex-basis: 100%
|
||||
&.half
|
||||
+grid-column(6)
|
||||
flex-basis: 45%
|
||||
&.form-actions
|
||||
padding-top: 12px
|
||||
body
|
||||
@@ -37,9 +27,17 @@ body
|
||||
width: 60px
|
||||
display: inline-block
|
||||
.apply-filter
|
||||
+button($bg: $primary-color, $padding: $button-tny)
|
||||
display: inline-block
|
||||
padding: 0.5em 1em
|
||||
background: #2185d0
|
||||
color: white
|
||||
border: none
|
||||
border-radius: 0.28571429rem
|
||||
cursor: pointer
|
||||
&:hover
|
||||
opacity: 0.85
|
||||
.error
|
||||
input, textarea
|
||||
border-color: $alert-color
|
||||
border-color: #db2828
|
||||
input[type="number"]
|
||||
text-align: right
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,10 +1,25 @@
|
||||
.clear
|
||||
clear: both
|
||||
|
||||
// Generic scaffold show pages: `.show_field > strong + value`
|
||||
.show_field
|
||||
padding: 0.5em 0
|
||||
border-bottom: 1px solid rgba(34, 36, 38, 0.1)
|
||||
strong
|
||||
display: inline-block
|
||||
min-width: 160px
|
||||
margin-right: 1em
|
||||
|
||||
#sub-navigation-container
|
||||
margin-top: 20px
|
||||
+panel()
|
||||
+clearfix()
|
||||
padding: 1em
|
||||
background: #f8f8f8
|
||||
border: 1px solid rgba(34, 36, 38, 0.15)
|
||||
border-radius: 0.28571429rem
|
||||
&:after
|
||||
content: ""
|
||||
display: table
|
||||
clear: both
|
||||
ul
|
||||
list-style: none
|
||||
margin: 0
|
||||
|
||||
@@ -15,9 +15,9 @@ module Cmtool
|
||||
end
|
||||
|
||||
# overwrite i18n l, to handle nil values
|
||||
def l(*args)
|
||||
def l(*args, **options)
|
||||
return '' unless args.first
|
||||
super(*args)
|
||||
super(*args, **options)
|
||||
end
|
||||
|
||||
def site_title
|
||||
@@ -61,7 +61,7 @@ module Cmtool
|
||||
end
|
||||
|
||||
def boolean_text(yes)
|
||||
yes.present? ? t('cmtool.general.yes') : t('cmtool.general.no')
|
||||
ActiveModel::Type::Boolean.new.cast(yes) ? t('cmtool.general.yes') : t('cmtool.general.no')
|
||||
end
|
||||
def empty_result(model)
|
||||
t('cmtool.general.empty_result', models: model.model_name.human_plural.downcase )
|
||||
@@ -132,15 +132,39 @@ module Cmtool
|
||||
controller.respond_to?(:cmtool_user) ? controller.send(:cmtool_user) :nil
|
||||
end
|
||||
|
||||
# Path prefixes matching how the consuming app's translations.js.coffee.erb
|
||||
# builds $translations: each top-level JS key is sourced from a different
|
||||
# Rails i18n scope. Keep in sync with that file.
|
||||
TSPAN_NAMESPACE_PREFIXES = {
|
||||
'models' => 'activemodel.models',
|
||||
'attributes' => 'activemodel.attributes',
|
||||
'helpers' => 'helpers',
|
||||
'pagination' => 'views.pagination',
|
||||
'errors' => 'errors',
|
||||
}.freeze
|
||||
|
||||
# Client-resolved translation span, mirroring the JS `tspan` helper in
|
||||
# translations.js.coffee.erb. Renders the raw (possibly ${...}-templated)
|
||||
# server-side translation as initial content, tagged with data-t so the
|
||||
# page's on-load JS can resolve nested ${...} references client-side.
|
||||
# tspan 'attributes.supplier.name' # => <span data-t="attributes.supplier.name" class="translation">${models.supplier} name</span>
|
||||
def tspan(path, vars = {})
|
||||
namespace, rest = path.split('.', 2)
|
||||
prefix = TSPAN_NAMESPACE_PREFIXES.fetch(namespace, namespace)
|
||||
full_key = rest ? "#{prefix}.#{rest}" : prefix
|
||||
text = I18n.t(full_key, **vars)
|
||||
content_tag(:span, text, class: 'translation', data: { t: path, t_attributes: vars.to_json })
|
||||
end
|
||||
|
||||
def edit_td(obj, options = {})
|
||||
path = options[:path] || case obj
|
||||
when Array then edit_polymorphic_path(obj)
|
||||
when SimplyStored::Couch then edit_polymorphic_path([options[:scope] || cmtool, obj])
|
||||
when SimplyCouch::Model then edit_polymorphic_path([options[:scope] || cmtool, obj])
|
||||
else obj
|
||||
end
|
||||
content_tag(
|
||||
:td,
|
||||
link_to((content_tag(:span, '', class: [:edit, 'fa fa-lg fa-pencil'])), path, class: 'tiny warning button'),
|
||||
link_to(content_tag(:i, nil, class: 'write icon'), path, class: 'edit ui mini basic yellow icon button'),
|
||||
class: [:action, :edit]
|
||||
)
|
||||
end
|
||||
@@ -148,13 +172,13 @@ module Cmtool
|
||||
def destroy_td(obj, options = {})
|
||||
path = options[:path] || case obj
|
||||
when Array then polymorphic_path(obj)
|
||||
when SimplyStored::Couch then polymorphic_path([options[:scope] || cmtool, obj])
|
||||
when SimplyCouch::Model then polymorphic_path([options[:scope] || cmtool, obj])
|
||||
else obj
|
||||
end
|
||||
|
||||
content_tag(
|
||||
:td,
|
||||
link_to(content_tag(:span, '', class: [:destroy, 'fa fa-lg fa-trash']), path, method: :delete, class: 'tiny alert button', data: {confirm: are_you_sure(obj) }),
|
||||
link_to(content_tag(:i, nil, class: 'trash icon'), path, method: :delete, class: 'destroy ui mini negative icon button', data: {confirm: are_you_sure(obj) }),
|
||||
class: [:action, :destroy]
|
||||
)
|
||||
end
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module Cmtool
|
||||
class ContactForm
|
||||
include SimplyStored::Couch
|
||||
include SimplyCouch::Model
|
||||
property :gender
|
||||
property :name
|
||||
property :email
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module Cmtool
|
||||
class Directory
|
||||
include SimplyStored::Couch
|
||||
include SimplyCouch::Model
|
||||
|
||||
property :name
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module Cmtool
|
||||
class Faq
|
||||
include SimplyStored::Couch
|
||||
include SimplyCouch::Model
|
||||
|
||||
property :question
|
||||
property :answer
|
||||
|
||||
@@ -1,16 +1,11 @@
|
||||
module Cmtool
|
||||
class Image
|
||||
include SimplyStored::Couch
|
||||
include Paperclip::Glue
|
||||
|
||||
property :file_file_name
|
||||
property :file_content_type
|
||||
property :file_file_size, type: Integer
|
||||
property :file_updated_at, type: Time
|
||||
has_attached_file :file, styles: { page: '728x10000>', medium: "354x1000>", thumb: "160x1250>" },
|
||||
path: ":rails_root/public/system/:attachment/:id/:style.:extension",
|
||||
url: "/system/:attachment/:id/:style.:extension"
|
||||
validates_attachment :file, presence: true, content_type: { content_type: ["image/jpeg", "image/gif", "image/png"] }
|
||||
include SimplyCouch::Model
|
||||
# Paperclip → has_local_attached migration
|
||||
has_local_attached :file,
|
||||
styles: { page: '728x10000>', medium: '354x1000>', thumb: '160x1250>' },
|
||||
content_type: %w[image/jpeg image/gif image/png]
|
||||
validates :file_file_name, presence: true
|
||||
|
||||
belongs_to :directory
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module Cmtool
|
||||
class Keyword
|
||||
include SimplyStored::Couch
|
||||
include SimplyCouch::Model
|
||||
|
||||
property :name
|
||||
|
||||
|
||||
@@ -1,19 +1,14 @@
|
||||
module Cmtool
|
||||
class News
|
||||
include SimplyStored::Couch
|
||||
include Paperclip::Glue
|
||||
|
||||
include SimplyCouch::Model
|
||||
property :title
|
||||
property :active, type: :boolean, default: true
|
||||
property :date, type: Date
|
||||
property :body
|
||||
|
||||
property :image_file_name
|
||||
property :image_content_type
|
||||
property :image_file_size, type: Integer
|
||||
property :image_updated_at, type: Time
|
||||
|
||||
has_attached_file :image, styles: { :medium => "500x500>", :thumb => "250x250>" }
|
||||
# Paperclip → has_local_attached migration
|
||||
has_local_attached :image,
|
||||
styles: { medium: '500x500>', thumb: '250x250>' }
|
||||
has_and_belongs_to_many :keywords, storing_keys: true
|
||||
validates :title, presence: true
|
||||
validates :date, presence: true
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module Cmtool
|
||||
class NewsletterSubscription
|
||||
include SimplyStored::Couch
|
||||
include SimplyCouch::Model
|
||||
|
||||
# PROPERTIES
|
||||
property :email
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
module Cmtool
|
||||
class Quote
|
||||
include SimplyStored::Couch
|
||||
include Paperclip::Glue
|
||||
|
||||
include SimplyCouch::Model
|
||||
property :owner
|
||||
property :function
|
||||
property :state
|
||||
@@ -10,12 +8,9 @@ module Cmtool
|
||||
property :active, type: :boolean, default: true
|
||||
property :locale
|
||||
|
||||
property :image_file_name
|
||||
property :image_content_type
|
||||
property :image_file_size, type: Integer
|
||||
property :image_updated_at, type: Time
|
||||
|
||||
has_attached_file :image, styles: {medium: "300x1000>", thumb: "137x1250>" }
|
||||
# Paperclip → has_local_attached migration
|
||||
has_local_attached :image,
|
||||
styles: { medium: '300x1000>', thumb: '137x1250>' }
|
||||
|
||||
view :for_sidebar_view, key: [:state, :created_at], conditions: %{doc['active']}
|
||||
STATES = %w[page sidebar]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module Cmtool
|
||||
class YmlFile
|
||||
include SimplyStored::Couch
|
||||
include SimplyCouch::Model
|
||||
|
||||
property :name
|
||||
property :body
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
- if flash[:alert].present?
|
||||
.row: .small-12.columns.alert-box.alert data-alert=true
|
||||
.ui.negative.message
|
||||
i.close.icon
|
||||
= flash[:alert]
|
||||
a.close href="" ×
|
||||
- if flash[:notice].present?
|
||||
.row: .small-12.columns.alert-box.info data-alert=true
|
||||
.ui.positive.message
|
||||
i.close.icon
|
||||
= flash[:notice]
|
||||
a.close href="" ×
|
||||
- if warnings.any?
|
||||
.row: .small-12.columns.alert-box.warning data-alert=true
|
||||
ul
|
||||
.ui.warning.message
|
||||
i.close.icon
|
||||
ul.list
|
||||
- for warning in warnings
|
||||
- if warning.is_a?(Hash)
|
||||
li.warning= t("cmtool.warnings.#{warning.delete(:message)}", warning)
|
||||
li= t("cmtool.warnings.#{warning.delete(:message)}", warning)
|
||||
- else
|
||||
li.warning= t("cmtool.warnings.#{warning}")
|
||||
li= t("cmtool.warnings.#{warning}")
|
||||
|
||||
@@ -1,32 +1,25 @@
|
||||
- user = defined?(cmtool_user) ? cmtool_user : (defined?(current_user) ? current_user : nil)
|
||||
.fixed
|
||||
nav.top-bar data-topbar="" role="navigation"
|
||||
ul.title-area
|
||||
li.name
|
||||
h1
|
||||
a href=cmtool.root_path = application_title
|
||||
li.toggle-topbar.menu-icon
|
||||
a href="#"
|
||||
span Menu
|
||||
section.top-bar-section
|
||||
- if user.present?
|
||||
ul.right
|
||||
li.has-dropdown
|
||||
a href="#" = user.email
|
||||
ul.dropdown
|
||||
li.log-out= link_to t('helpers.links.logout'), main_app.root_path
|
||||
ul.left
|
||||
- Cmtool::Menu.items.each do |menu_item|
|
||||
- if menu_item.group?
|
||||
li.has-dropdown class=(menu_item.controller_names.include?(controller_name) ? 'active' : '')
|
||||
a href="#" = menu_item.title
|
||||
ul.dropdown
|
||||
- menu_item.items.compact.each do |child_item|
|
||||
- if child_item.divider?
|
||||
li.divider
|
||||
- else
|
||||
li class=(controller_name == child_item.controller_name ? 'active' : '') = link_to child_item.title, child_item.path
|
||||
- elsif menu_item.resource_link?
|
||||
li class=(menu_item.controller_name == controller_name ? 'active' : '') = link_to menu_item.title, menu_item.path
|
||||
- elsif menu_item.engine_link?
|
||||
li= link_to menu_item.title, menu_item.path
|
||||
.ui.inverted.menu
|
||||
= link_to application_title, cmtool.root_path, class: 'header item'
|
||||
- Cmtool::Menu.items.each do |menu_item|
|
||||
- if menu_item.group?
|
||||
.ui.dropdown.item class=(menu_item.controller_names.include?(controller_name) ? 'active' : nil)
|
||||
= menu_item.title
|
||||
i.dropdown.icon
|
||||
.menu
|
||||
- menu_item.items.compact.each do |child_item|
|
||||
- if child_item.divider?
|
||||
.divider
|
||||
- else
|
||||
= link_to child_item.title, child_item.path, class: ['item', (controller_name == child_item.controller_name ? 'active' : nil)]
|
||||
- elsif menu_item.resource_link?
|
||||
= link_to menu_item.title, menu_item.path, class: ['item', (menu_item.controller_name == controller_name ? 'active' : nil)]
|
||||
- elsif menu_item.engine_link?
|
||||
= link_to menu_item.title, menu_item.path, class: 'item'
|
||||
.right.menu
|
||||
- if user.present?
|
||||
.ui.dropdown.item
|
||||
span= user.email
|
||||
i.dropdown.icon
|
||||
.menu
|
||||
= link_to t('helpers.links.logout'), main_app.root_path, class: 'item'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
= form_for [cmtool, @contact_form] do |f|
|
||||
= form_for [cmtool, @contact_form], html: {class: 'ui form'} do |f|
|
||||
= render 'error_messages', :target => @contact_form
|
||||
|
||||
.field
|
||||
@@ -17,4 +17,4 @@
|
||||
= f.label :body
|
||||
= f.text_area :body, class: :editor_full
|
||||
.actions
|
||||
= f.submit @submit || update_button_text(@contact_form)
|
||||
= f.submit @submit || update_button_text(@contact_form), class: 'ui primary button'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
- title :index, Cmtool::ContactForm
|
||||
- if @contact_forms.any?
|
||||
table.index-table.table.table-striped.table-hover
|
||||
table.ui.celled.table
|
||||
thead
|
||||
tr
|
||||
th= Cmtool::ContactForm.human_attribute_name(:gender)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
= form_for [cmtool, @directory], :html => {:multipart => true} do |f|
|
||||
= form_for [cmtool, @directory], :html => {:multipart => true, :class => 'ui form'} do |f|
|
||||
= render 'error_messages', :target => @directory
|
||||
.field
|
||||
= f.label :name
|
||||
@@ -7,4 +7,4 @@
|
||||
= f.label :parent_id, Cmtool::Directory.model_name.human
|
||||
= f.select :parent_id, tree_options_for_select(Cmtool::Directory.full_tree, exclude: @directory.id, selected: @directory.parent_id), include_blank: ''
|
||||
.actions
|
||||
= f.submit @submit || update_button_text(@directory)
|
||||
= f.submit @submit || update_button_text(@directory), class: 'ui primary button'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
- title :index, Cmtool::Directory
|
||||
- if @directories.any?
|
||||
table.index-table.table.table-striped.table-hover
|
||||
table.ui.celled.table
|
||||
thead
|
||||
tr
|
||||
th= Cmtool::Directory.human_attribute_name(:name)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
= form_for [cmtool, @faq] do |f|
|
||||
= form_for [cmtool, @faq], html: {class: 'ui form'} do |f|
|
||||
= render 'error_messages', :target => @faq
|
||||
|
||||
.field
|
||||
@@ -8,4 +8,4 @@
|
||||
= f.label :answer
|
||||
= f.text_area :answer, :rows => 6, :class => 'editor_basic'
|
||||
.actions
|
||||
= f.submit @submit || update_button_text(@faq)
|
||||
= f.submit @submit || update_button_text(@faq), class: 'ui primary button'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
- title :index, Cmtool::Faq
|
||||
- if @faqs.any?
|
||||
table.index-table.table.table-striped.table-hover
|
||||
table.ui.celled.table
|
||||
thead
|
||||
tr
|
||||
th= Cmtool::Faq.human_attribute_name(:question)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
= form_for [cmtool, @image], html: {multipart: true} do |f|
|
||||
= form_for [cmtool, @image], html: {multipart: true, class: 'ui form'} do |f|
|
||||
= render 'error_messages', target: @image
|
||||
|
||||
.field
|
||||
@@ -9,4 +9,4 @@
|
||||
= f.select :directory_id, Cmtool::Directory.all.map{|d| ["-"*d.tree_depth + ' ' + d.name.to_s, d.id]}
|
||||
|
||||
.actions
|
||||
= f.submit @submit || update_button_text(@image)
|
||||
= f.submit @submit || update_button_text(@image), class: 'ui primary button'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
- title :index, Cmtool::Image
|
||||
- if @images.any?
|
||||
table.index-table.table.table-striped.table-hover
|
||||
table.ui.celled.table
|
||||
thead
|
||||
tr
|
||||
th= Cmtool::Image.model_name.human
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
= form_for [cmtool, @keyword] do |f|
|
||||
= form_for [cmtool, @keyword], html: {class: 'ui form'} do |f|
|
||||
= render 'error_messages', :target => @keyword
|
||||
.form-row
|
||||
.form-label= f.label :name
|
||||
.form-field= f.text_field :name
|
||||
.form-row: .form-actions
|
||||
= f.submit @submit || update_button_text(@keyword), class: 'form-submit-button'
|
||||
= f.submit @submit || update_button_text(@keyword), class: 'ui primary button'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
- title :index, Cmtool::Keyword
|
||||
- if @keywords.any?
|
||||
table.index-table.table.table-striped.table-hover
|
||||
table.ui.celled.table
|
||||
thead
|
||||
tr
|
||||
th= Cmtool::Keyword.human_attribute_name(:name)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
= form_for [cmtool, @news], html: {multipart: true} do |f|
|
||||
= form_for [cmtool, @news], html: {multipart: true, class: 'ui form'} do |f|
|
||||
= render 'error_messages', target: @news
|
||||
.field
|
||||
= f.label :title
|
||||
@@ -19,4 +19,4 @@
|
||||
.field
|
||||
= render "cmtool/keywords/habtm", subject: @news
|
||||
.actions
|
||||
= f.submit @submit || update_button_text(@news)
|
||||
= f.submit @submit || update_button_text(@news), class: 'ui primary button'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
- title :index, Cmtool::News
|
||||
- if @news.any?
|
||||
table.index-table.table.table-striped.table-hover
|
||||
table.ui.celled.table
|
||||
thead
|
||||
tr
|
||||
th= Cmtool::News.human_attribute_name(:title)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
= form_for [cmtool, @newsletter_subscription] do |f|
|
||||
= form_for [cmtool, @newsletter_subscription], html: {class: 'ui form'} do |f|
|
||||
= render 'error_messages', :target => @newsletter_subscription
|
||||
|
||||
.field
|
||||
@@ -8,4 +8,4 @@
|
||||
= f.label :active
|
||||
= f.check_box :active
|
||||
.actions
|
||||
= f.submit @submit || update_button_text(@newsletter_subscription)
|
||||
= f.submit @submit || update_button_text(@newsletter_subscription), class: 'ui primary button'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
- title :index, Cmtool::NewsletterSubscription
|
||||
- if @newsletter_subscriptions.any?
|
||||
table.index-table.table.table-striped.table-hover
|
||||
table.ui.celled.table
|
||||
thead
|
||||
tr
|
||||
th= Cmtool::NewsletterSubscription.human_attribute_name(:email)
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
javascript:
|
||||
page_vars = #{Cmtool::YmlFile.all_as_object.to_json.html_safe};
|
||||
#preview-modal.reveal-modal.large data-reveal=""
|
||||
iframe allowfullscreen="" frameborder="0" height="100%" src="about:blank" width="100%"
|
||||
a.close-reveal-modal ×
|
||||
= form_for [cmtool, @page] do |f|
|
||||
#preview-modal.ui.large.modal
|
||||
i.close.icon
|
||||
.content
|
||||
iframe allowfullscreen="" frameborder="0" height="100%" src="about:blank" width="100%"
|
||||
= form_for [cmtool, @page], html: {class: 'ui form'} do |f|
|
||||
= render 'error_messages', target: @page
|
||||
.form-row
|
||||
.form-label= f.label :name
|
||||
@@ -37,6 +38,12 @@ javascript:
|
||||
.field
|
||||
= f.label :footer
|
||||
= f.text_area :footer, rows: 15, cols: 80, class: 'html-content'
|
||||
= collapsible_content 'Page Settings (JSON)' do
|
||||
.field
|
||||
= f.label :page_settings
|
||||
p.help-text JSON configuration for this page. Use Ace editor in JSON mode.
|
||||
= f.text_area :page_settings, rows: 12, cols: 80, class: 'html-content', data: { mode: 'json' },
|
||||
value: (f.object.page_settings.presence || {}).to_json
|
||||
.form-row
|
||||
.form-label= f.label :parent_id
|
||||
.form-field= f.select :parent_id, tree_options_for_select(Page.full_tree(@page.locale || Page.locales.first), exclude: @page.id, selected: @page.parent_id), include_blank: ' -- '
|
||||
@@ -52,5 +59,5 @@ javascript:
|
||||
.field
|
||||
= render "cmtool/keywords/habtm", subject: @page
|
||||
.form-row: .form-actions
|
||||
= f.submit @submit || update_button_text(f.object), class: 'button'
|
||||
= f.submit @submit || update_button_text(f.object), class: 'ui primary button'
|
||||
-#= button_tag 'Preview (unsupported)', onclick: %{$('form').attr('action', '/' + $('#page_name').val()).submit();}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
- title :index, Page
|
||||
table.index-table.table.table-striped.table-hover
|
||||
table.ui.celled.table
|
||||
thead
|
||||
tr
|
||||
th= Page.human_attribute_name(:name)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
= form_for [cmtool, @quote], html: {multipart: true} do |f|
|
||||
= form_for [cmtool, @quote], html: {multipart: true, class: 'ui form'} do |f|
|
||||
= render 'error_messages', target: @quote
|
||||
.field
|
||||
= f.label :owner
|
||||
@@ -19,4 +19,4 @@
|
||||
= f.label :active
|
||||
= f.check_box :active
|
||||
.actions
|
||||
= f.submit @submit || update_button_text(@quote)
|
||||
= f.submit @submit || update_button_text(@quote), class: 'ui primary button'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
- title :index, Cmtool::Quote
|
||||
- if @quotes.any?
|
||||
table.index-table.table.table-striped.table-hover
|
||||
table.ui.celled.table
|
||||
thead
|
||||
tr
|
||||
th= Cmtool::Quote.human_attribute_name(:owner)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
= form_for [cmtool, @user] do |f|
|
||||
= form_for [cmtool, @user], html: {class: 'ui form'} do |f|
|
||||
= render 'error_messages', :target => @user
|
||||
|
||||
.field
|
||||
@@ -24,4 +24,4 @@
|
||||
= f.label :admin
|
||||
= f.check_box :admin
|
||||
.actions
|
||||
= f.submit @submit || update_button_text(@user)
|
||||
= f.submit @submit || update_button_text(@user), class: 'ui primary button'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
- title :index, User
|
||||
- if @users.any?
|
||||
table.index-table
|
||||
table.ui.celled.table
|
||||
thead
|
||||
tr
|
||||
th= User.human_attribute_name(:email)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
= form_for [cmtool, @yml_file] do |f|
|
||||
= form_for [cmtool, @yml_file], html: {class: 'ui form'} do |f|
|
||||
= render 'error_messages', :target => @yml_file
|
||||
.form-row
|
||||
.form-label= f.label :name
|
||||
@@ -6,4 +6,4 @@
|
||||
.form-row
|
||||
= f.text_area :body, class: 'yml-content'
|
||||
.form-row: .form-actions
|
||||
= f.submit @submit || update_button_text(@yml_file), class: 'form-submit-button'
|
||||
= f.submit @submit || update_button_text(@yml_file), class: 'ui primary button'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
- title :index, Cmtool::YmlFile
|
||||
- if @yml_files.any?
|
||||
table.index-table.table.table-striped.table-hover
|
||||
table.ui.celled.table
|
||||
thead
|
||||
tr
|
||||
th= Cmtool::YmlFile.human_attribute_name(:name)
|
||||
|
||||
@@ -24,23 +24,24 @@ html lang="en"
|
||||
|
||||
body
|
||||
= render 'cmtool/application/menu'
|
||||
= render 'cmtool/application/alerts'
|
||||
.row
|
||||
.small-12.large-9.columns
|
||||
h3= content_for?(:page_title) ? yield(:page_title) : application_title
|
||||
= content_for?(:content) ? yield(:content) : yield
|
||||
- if content_for?(:page_links)
|
||||
#sub-navigation-container= yield(:page_links)
|
||||
.show-for-large-up.large-3.columns
|
||||
.panel
|
||||
h4 Links
|
||||
ul.side-nav
|
||||
li= link_to "Home", cmtool.root_path
|
||||
li= link_to 'Wiki', 'https://github.com/bterkuile/cmtool/wiki', target: :_blank
|
||||
= yield :sidebar
|
||||
footer
|
||||
p
|
||||
span © Cmtool
|
||||
span= Date.today.year
|
||||
= yield :footer
|
||||
.ui.container
|
||||
= render 'cmtool/application/alerts'
|
||||
.ui.grid
|
||||
.twelve.wide.column
|
||||
h3.ui.header= content_for?(:page_title) ? yield(:page_title) : application_title
|
||||
= content_for?(:content) ? yield(:content) : yield
|
||||
- if content_for?(:page_links)
|
||||
#sub-navigation-container= yield(:page_links)
|
||||
.four.wide.column
|
||||
.ui.segment
|
||||
h4.ui.header Links
|
||||
.ui.link.list
|
||||
a.item href=cmtool.root_path Home
|
||||
a.item href="https://github.com/bterkuile/cmtool/wiki" target="_blank" Wiki
|
||||
= yield :sidebar
|
||||
footer.ui.footer
|
||||
p
|
||||
span © Cmtool
|
||||
span= Date.today.year
|
||||
= yield :footer
|
||||
#hidden-html.hide= yield :hidden_html
|
||||
|
||||
+1
-2
@@ -23,8 +23,7 @@ Gem::Specification.new do |s|
|
||||
s.add_runtime_dependency "slim-rails", ">= 0"
|
||||
# s.add_runtime_dependency "tinymce-rails", ">= 0"
|
||||
s.add_runtime_dependency "jquery-rails", ">= 0"
|
||||
s.add_runtime_dependency "paperclip", ">= 0"
|
||||
s.add_runtime_dependency "foundation-rails", ">= 0"
|
||||
s.add_runtime_dependency "fomantic-ui-sass", ">= 0"
|
||||
s.add_runtime_dependency "ace-rails-ap", ">= 0"
|
||||
s.add_runtime_dependency "font-awesome-rails", ">= 0"
|
||||
s.add_runtime_dependency "pickadate-rails", ">= 0"
|
||||
|
||||
@@ -5,6 +5,13 @@ require 'cmtool/includes/user'
|
||||
require 'cmtool/includes/page'
|
||||
require 'cmtool/includes/pages_controller'
|
||||
require 'cmtool/menu'
|
||||
require 'email_validator'
|
||||
|
||||
# Paperclip replacement — stores file metadata as CouchDB properties,
|
||||
# handles thumbnail generation via MiniMagick.
|
||||
# Replace `include Paperclip::Glue` + `has_attached_file` with
|
||||
# `include SimplyCouch::HasAttachment` + `has_attachment`
|
||||
# has_attachment now in simply_couch gem
|
||||
|
||||
module Cmtool
|
||||
end
|
||||
|
||||
+24
-25
@@ -1,9 +1,8 @@
|
||||
=begin
|
||||
require 'couch_potato'
|
||||
require 'simply_stored'
|
||||
require 'simply_couch'
|
||||
require 'email_validator'
|
||||
require 'devise'
|
||||
require 'devise_simply_stored'
|
||||
require 'devise_simply_couch'
|
||||
require 'sass-rails'
|
||||
require 'paperclip'
|
||||
require 'jquery-rails'
|
||||
@@ -13,28 +12,28 @@ require 'bourbon'
|
||||
module Cmtool
|
||||
class Engine < ::Rails::Engine
|
||||
isolate_namespace Cmtool
|
||||
initializer 'cmtool.build_menu', after: 'load_config_initializers' do |app|
|
||||
require 'email_validator'
|
||||
#require 'bourbon'
|
||||
require 'slim-rails'
|
||||
require 'paperclip'
|
||||
require 'devise'
|
||||
require 'devise_simply_stored'
|
||||
require 'jquery-rails'
|
||||
# require 'tinymce-rails'
|
||||
|
||||
require 'page' # app/models/page.rb
|
||||
require 'user' # app/models/user.rb
|
||||
require 'cmtool/yml_file'
|
||||
require 'cmtool/keyword'
|
||||
require 'cmtool/news'
|
||||
require 'cmtool/faq'
|
||||
require 'cmtool/quote'
|
||||
require 'cmtool/contact_form'
|
||||
require 'cmtool/newsletter_subscription'
|
||||
require 'cmtool/image'
|
||||
require 'cmtool/directory'
|
||||
end
|
||||
# initializer 'cmtool.build_menu', after: 'load_config_initializers' do |app|
|
||||
# require 'email_validator'
|
||||
# #require 'bourbon'
|
||||
# require 'slim-rails'
|
||||
# require 'paperclip'
|
||||
# require 'devise'
|
||||
# require 'devise_simply_couch'
|
||||
# require 'jquery-rails'
|
||||
# # require 'tinymce-rails'
|
||||
#
|
||||
# require 'page' # app/models/page.rb
|
||||
# require 'user' # app/models/user.rb
|
||||
# require 'cmtool/yml_file'
|
||||
# require 'cmtool/keyword'
|
||||
# require 'cmtool/news'
|
||||
# require 'cmtool/faq'
|
||||
# require 'cmtool/quote'
|
||||
# require 'cmtool/contact_form'
|
||||
# require 'cmtool/newsletter_subscription'
|
||||
# require 'cmtool/image'
|
||||
# require 'cmtool/directory'
|
||||
# end
|
||||
|
||||
config.after_initialize do
|
||||
Cmtool::Menu.register do
|
||||
|
||||
@@ -2,7 +2,7 @@ module Cmtool
|
||||
module Includes
|
||||
module Page
|
||||
def self.included(klass)
|
||||
klass.send :include, SimplyStored::Couch
|
||||
klass.send :include, SimplyCouch::Model
|
||||
klass.send :include, InstanceMethods
|
||||
klass.send :extend, ClassMethods
|
||||
|
||||
@@ -21,6 +21,13 @@ module Cmtool
|
||||
klass.property :active, type: :boolean, default: true
|
||||
klass.property :layout
|
||||
klass.property :in_menu, type: :boolean, default: true
|
||||
klass.property :page_settings, type: Hash, default: {}
|
||||
|
||||
# JSON string parsing (safety net until couch_potato type: Hash handles this)
|
||||
klass.send(:define_method, :page_settings=) do |val|
|
||||
val = JSON.parse(val) if val.is_a?(String)
|
||||
super(val)
|
||||
end
|
||||
|
||||
klass.has_ancestry by_property: :locale
|
||||
|
||||
@@ -66,7 +73,7 @@ module Cmtool
|
||||
end
|
||||
|
||||
def locales
|
||||
Rails.configuration.i18n.available_locales.presence || []
|
||||
Rails.configuration.i18n.available_locales.presence || [:en]
|
||||
end
|
||||
|
||||
def default_locale
|
||||
|
||||
@@ -13,7 +13,7 @@ module Cmtool
|
||||
# General catcher for pages
|
||||
def show
|
||||
@page = ::Page.find_by_name_and_locale(params[:name], I18n.locale.to_s)
|
||||
not_found and return unless @page
|
||||
return not_found unless @page
|
||||
|
||||
@sub_pages = [@page] + @page.children.select{|child| child.in_menu.present? }
|
||||
template = "pages/#{@page.name}"
|
||||
|
||||
@@ -2,8 +2,8 @@ module Cmtool
|
||||
module Includes
|
||||
module User
|
||||
def self.included(klass)
|
||||
klass.send :include, SimplyStored::Couch
|
||||
#klass.send :include, Devise::Orm::SimplyStored
|
||||
klass.send :include, SimplyCouch::Model
|
||||
#klass.send :include, Devise::Orm::SimplyCouch
|
||||
klass.send :include, InstanceMethods
|
||||
klass.send :extend, ClassMethods
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
module Cmtool
|
||||
VERSION = "3.0.0"
|
||||
VERSION = "4.0.0"
|
||||
end
|
||||
|
||||
@@ -19,8 +19,8 @@ Devise.setup do |config|
|
||||
# Load and configure the ORM. Supports :active_record (default) and
|
||||
# :mongoid (bson_ext recommended) by default. Other ORMs may be
|
||||
# available as additional gems.
|
||||
#require 'devise/orm/simply_stored'
|
||||
require 'orm_adapter/adapters/simply_stored'
|
||||
#require 'devise/orm/simply_couch'
|
||||
require 'orm_adapter/adapters/simply_couch'
|
||||
|
||||
# ==> Configuration for any authentication mechanism
|
||||
# Configure which keys are used when authenticating a user. The default is
|
||||
|
||||
Reference in New Issue
Block a user