Compare commits
442 Commits
1.0-stable
...
master
Author | SHA1 | Date |
---|---|---|
Didier Lafforgue | fbcda9cdd6 | |
Didier Lafforgue | 6350652e4b | |
Paul Sponagl | a6ba124a9e | |
Paul Sponagl | 702283322d | |
Didier Lafforgue | ef66f88f5a | |
Didier Lafforgue | bae2fe4432 | |
Didier Lafforgue | 50204b6556 | |
did | 11c4f98efc | |
did | 55b7d4dbf2 | |
Didier Lafforgue | 2bd9e254c8 | |
did | 3f1380408e | |
Didier Lafforgue | 5f9c46b42c | |
Didier Lafforgue | b4dd590f9a | |
Didier Lafforgue | 34ba62c15c | |
did | acd46f1c10 | |
Manfred Klaffenboeck | 30557ef8b0 | |
Alex Sanford | 6f5eec18c6 | |
Didier Lafforgue | bc63cd8acf | |
Manfred Klaffenboeck | b993b4f0ca | |
Manfred Klaffenboeck | 590c4bb048 | |
did | 2bec96e9f1 | |
did | 2568510f01 | |
did | f8725ede67 | |
did | f4ee99b72b | |
did | 763fe5215f | |
did | 261575eb94 | |
Didier Lafforgue | b706d50bdf | |
did | 3a4654e8f7 | |
Bjørn Trondsen | a662366637 | |
Bjørn Trondsen | 6ac3d72aed | |
Bjørn Trondsen | 8b56ee5889 | |
Didier Lafforgue | b751e3d990 | |
Didier Lafforgue | ae16661286 | |
Didier Lafforgue | da2d689bdc | |
Didier Lafforgue | 2ac74c9a50 | |
Didier Lafforgue | 24ae75c6f5 | |
Didier Lafforgue | c58075b7c3 | |
Didier Lafforgue | 662e359acb | |
Mario Visic | 8be23f1cc2 | |
Mario Visic | fbef06f103 | |
Mario Visic | 38098e93da | |
Mario Visic | 3a27845fe5 | |
Mario Visic | 4c5d6c92d0 | |
Mario Visic | 817ee8b0e5 | |
Mario Visic | 13b4d8c606 | |
did | 6342b94ede | |
did | d3e219018b | |
Mario Visic | 415817e20b | |
did | 04d9fe17f8 | |
did | d90123e321 | |
waynegerard | 2fa81112fc | |
waynegerard | be26ae3059 | |
Mario Visic | 7e0fcb62ee | |
Will Cosgrove | c0627bf8a7 | |
Didier Lafforgue | e225ad2278 | |
did | a939629cbf | |
Didier Lafforgue | f42fb1afe1 | |
did | 03d13d92d0 | |
Alex Sanford | 24e5eb855a | |
Alex Sanford | 9c15f1cbab | |
Alex Sanford | 06e493477c | |
Alex Sanford | 96007174cb | |
Alex Sanford | a921c44ce9 | |
Alex Sanford | 37f87e694c | |
Didier Lafforgue | a8646e7ef3 | |
Didier Lafforgue | f9a6155c19 | |
Didier Lafforgue | 23600edb1f | |
Didier Lafforgue | 9613058b97 | |
Alex Sanford | 4e6c106772 | |
Alex Sanford | d2da4b659e | |
Alex Sanford | 44aadb8926 | |
Alex Sanford | 75e694a6f0 | |
Alex Sanford | 7dcc1ba3f6 | |
Alex Sanford | 1344463222 | |
Alex Sanford | bf65fa47f3 | |
Alex Sanford | f53ab18f90 | |
Didier Lafforgue | 0502cf3305 | |
Didier Lafforgue | 69c51fbe07 | |
Didier Lafforgue | b3902bb3d5 | |
Didier Lafforgue | ce5576da09 | |
Mario Visic | 283a0d9be4 | |
Didier Lafforgue | 57b7cc1ef2 | |
Didier Lafforgue | 08cf381bc3 | |
Annalisa | 632e16b18e | |
Annalisa | 043b78a061 | |
Annalisa | fc380e3e4d | |
Annalisa | b87c76bc67 | |
Didier Lafforgue | d6059c2a9b | |
Didier Lafforgue | fa6e62dd84 | |
Didier Lafforgue | 246eadb3fd | |
Didier Lafforgue | 682763445c | |
Didier Lafforgue | f0e8848ffd | |
Didier Lafforgue | 486c6a12a2 | |
Didier Lafforgue | 9b4fc56e82 | |
PitOn | b0a552dfcf | |
Didier Lafforgue | 9267725c9f | |
PitOn | d78f99703e | |
PitOn | 06c1317acb | |
PitOn | 23f162f0b3 | |
PitOn | 0719a8bb76 | |
Didier Lafforgue | 9f2cab94cb | |
Didier Lafforgue | 792ebd142b | |
Didier Lafforgue | b053ba5a26 | |
Didier Lafforgue | 47015d3473 | |
Alex Sanford | 494e3c9b51 | |
Didier Lafforgue | 1d19d606b8 | |
Alex Sanford | edd236b202 | |
Didier Lafforgue | 67c36191d2 | |
Didier Lafforgue | 39bb85d163 | |
Didier Lafforgue | bc919ed544 | |
Didier Lafforgue | 60df273e4b | |
Didier Lafforgue | 3fca9fa2d3 | |
Dmitriy | a74a0045a3 | |
Didier Lafforgue | 26662acae9 | |
Alex Sanford | 97edb0e4b7 | |
Alex Sanford | 4f12c2cd10 | |
Didier Lafforgue | 3eb521ba75 | |
Didier Lafforgue | 256a0e4bc0 | |
Didier Lafforgue | b25332b262 | |
Didier Lafforgue | 655fe18d72 | |
Didier Lafforgue | f973ccef1b | |
Didier Lafforgue | 1ae9557515 | |
Didier Lafforgue | 21469ce367 | |
Didier Lafforgue | 06fa564f37 | |
Didier Lafforgue | a507d756b7 | |
Mario Visic | f7388d14e7 | |
Mario Visic | ebd3081205 | |
Mario Visic | edca6323fb | |
Didier Lafforgue | 9dc3f778a4 | |
Didier Lafforgue | d0698b1ffc | |
Alex Sanford | 56a0affbcb | |
Didier Lafforgue | e2b73d786a | |
Didier Lafforgue | 7a595208aa | |
Will Cosgrove | 560afc6b0a | |
Will Cosgrove | cd703970b4 | |
Didier Lafforgue | 106cc6fc50 | |
Mario Visic | 4bf16b00f9 | |
Mario Visic | 95eb58bb36 | |
Mario Visic | f74306503b | |
Mario Visic | 22d55cf0e0 | |
Sergey Kuleshov | 2798e15481 | |
Sergey Kuleshov | ad9bd5f5f3 | |
Dan Sapala | 087f9c6c55 | |
Mario Visic | 63c17313fb | |
Mario Visic | 7260f36be7 | |
Mario Visic | e413373858 | |
Mario Visic | 98f48c00c5 | |
Mario Visic | 760687d3fe | |
Mario Visic | 7be37cf8d2 | |
Mario Visic | 6677689902 | |
Mario Visic | 22f34a5a60 | |
Didier Lafforgue | 6bd1154886 | |
Mario Visic | ea62835b2e | |
Mario Visic | 29e40b39ea | |
Mario Visic | 4c1e9fa9c4 | |
Mario Visic | f134601306 | |
Mario Visic | 114218b8c4 | |
Mario Visic | 60d253bd93 | |
Didier Lafforgue | b06b7b50aa | |
Mario Visic | 370ec26d65 | |
Didier Lafforgue | f0e41205fd | |
Didier Lafforgue | 21c5e8a627 | |
Didier Lafforgue | 7877f11669 | |
Didier Lafforgue | 3f6e7acda6 | |
Didier Lafforgue | 35e29d0e4b | |
Didier Lafforgue | 11d92ab80e | |
Didier Lafforgue | 2329f26e4d | |
Didier Lafforgue | 90e1c4f438 | |
Didier Lafforgue | ed15c0d6b5 | |
Pierre Merlin | 9cb48a3ad9 | |
Pierre Merlin | 65c570c4aa | |
Pierre Merlin | 8b80a3e840 | |
Didier Lafforgue | a8d57794de | |
Didier Lafforgue | e9bf29f297 | |
Didier Lafforgue | 58c5e9e238 | |
Didier Lafforgue | b7424b1fd4 | |
Didier Lafforgue | a9aeffba9b | |
Didier Lafforgue | 6b8e3db8c3 | |
Didier Lafforgue | b3b0a5ac16 | |
Didier Lafforgue | ab5a4755b8 | |
did | e2f60f2e15 | |
Didier Lafforgue | cfbe68564d | |
Gil Vandendriessche | caa0e69760 | |
Didier Lafforgue | 1ef1e3fbf4 | |
Didier Lafforgue | 834042fda3 | |
Didier Lafforgue | ada199cf3c | |
Didier Lafforgue | fbd945cf6d | |
Didier Lafforgue | 79f958c505 | |
Didier Lafforgue | fad363a92a | |
Mario Visic | 52247242fc | |
Didier Lafforgue | 37374207e8 | |
Didier Lafforgue | fbb92010e9 | |
Didier Lafforgue | 9a9f270d99 | |
Didier Lafforgue | 5e31865f3b | |
Paul Sponagl | fa9cbe2276 | |
Paul Sponagl | ca4640addb | |
Didier Lafforgue | 1c902a5448 | |
Didier Lafforgue | 7ab8110e41 | |
Didier Lafforgue | 4cccff065a | |
Didier Lafforgue | b3b7519c7c | |
did | 1f49eca09f | |
Didier Lafforgue | effce313bf | |
Didier Lafforgue | 038d19d3af | |
Didier Lafforgue | 0c65516807 | |
Paul Sponagl | b13c5d1d40 | |
Didier Lafforgue | 37042eaa03 | |
Didier Lafforgue | ac823aac66 | |
did | f77bdd9826 | |
did | 1da5617b80 | |
Didier Lafforgue | fcf32f9d53 | |
did | a1cbdf9ed8 | |
Didier Lafforgue | 989f608755 | |
Didier Lafforgue | 05baecad0b | |
Didier Lafforgue | 3e3691ad4a | |
Didier Lafforgue | 74038467aa | |
Didier Lafforgue | 50a3addf45 | |
Didier Lafforgue | b994b87194 | |
Didier Lafforgue | c5577240de | |
did | a1bc3db8a6 | |
Didier Lafforgue | a2308787f1 | |
did | 520b68104b | |
Didier Lafforgue | c6e1276974 | |
Didier Lafforgue | fa2cd996ce | |
Didier Lafforgue | 61281db943 | |
Didier Lafforgue | c5ddabd585 | |
Didier Lafforgue | dd9b382637 | |
Didier Lafforgue | dae0b665ac | |
Didier Lafforgue | 8f1ac5968f | |
Didier Lafforgue | ffee024a96 | |
Didier Lafforgue | d0cc2984b8 | |
Didier Lafforgue | ecf6998a68 | |
Didier Lafforgue | 4269a00985 | |
Didier Lafforgue | 085a54d7c1 | |
Didier Lafforgue | 02e48f5c36 | |
Didier Lafforgue | 73b559260e | |
Didier Lafforgue | 2fd0410b66 | |
Didier Lafforgue | 6619d4e5dc | |
Didier Lafforgue | 64a050dff9 | |
Didier Lafforgue | 87c8f3bfd7 | |
Didier Lafforgue | 3b5d04238f | |
Didier Lafforgue | ca380de115 | |
Didier Lafforgue | da8309c4b1 | |
Didier Lafforgue | 1332185d85 | |
Didier Lafforgue | 62eaeb10f5 | |
Didier Lafforgue | 39d9c354da | |
Didier Lafforgue | a5e9e52996 | |
Didier Lafforgue | 51a0862d89 | |
Didier Lafforgue | b4afec5fd3 | |
Didier Lafforgue | 219f6e1339 | |
Didier Lafforgue | f1662770e7 | |
Didier Lafforgue | f2467bbf42 | |
did | 112d61ac3b | |
did | 5fd244e66c | |
did | fa36b95a9d | |
did | 25e08596ef | |
did | 2a911d912c | |
did | 9e9fe49ccf | |
did | 1703c05693 | |
did | 42a2bba538 | |
did | dfd437a762 | |
did | e2bd55fe35 | |
did | b132c3bba9 | |
did | c9f07c823f | |
Mario Visic | 442e254202 | |
Maik Kempe | 0d747b14fe | |
did | a85db53520 | |
did | b93c7f8f51 | |
did | 9f7ac8630e | |
did | b33d081c28 | |
Gregory horion | 0d5d2af27f | |
did | c5692aeb2a | |
did | b5fa2c761a | |
did | 192518d258 | |
did | 50917a919e | |
did | c0b8587eb2 | |
did | 11383f9c05 | |
did | 4600f94922 | |
Mario Visic | e849318cc4 | |
Mario Visic | 44b3579e02 | |
Mario Visic | 5c191e59cd | |
Mario Visic | 840609cbce | |
did | 7ace1d9a48 | |
did | e523cb952c | |
did | ab507dc165 | |
did | 0534c5504f | |
did | 739d2db0a9 | |
did | 4d0f8610c5 | |
did | 7af9ea34a6 | |
did | 0f3c672777 | |
did | fc20fe70c9 | |
did | b8b8cef089 | |
did | 09d6060633 | |
did | 801f7bfca5 | |
did | e210953d01 | |
did | 7169abb8c2 | |
did | 89020e7cf5 | |
did | ebe149110b | |
Mario Visic | 15f9111ea8 | |
Mario Visic | 9a06042c4b | |
Mario Visic | ddfd8c6a07 | |
Mario Visic | ae244c2703 | |
Mario Visic | 4622c4359f | |
Mario Visic | 216b77ab41 | |
did | 4060b1859f | |
Mario Visic | a50715091d | |
Mario Visic | 8ac8289394 | |
did | 531017ab62 | |
did | 50a2453995 | |
Mario Visic | 8f5a363d74 | |
Mario Visic | 75b0137230 | |
did | d191d2d783 | |
did | 0489bbe4c2 | |
did | 42db5ba656 | |
did | 01c5de36a5 | |
did | 4c204ef6a6 | |
did | 435d4067c0 | |
did | 5dfbb2bdb7 | |
Mario Visic | 0926286318 | |
did | 0f1b4f59d3 | |
did | 81fc524fdc | |
did | 912251d49b | |
Mario Visic | a65a871e19 | |
did | e9ef4d48c3 | |
did | 9130544516 | |
did | 2068fe060d | |
did | 81a6569fe7 | |
did | d1bb45d7c8 | |
did | 00283993c0 | |
did | 217000042a | |
Mario Visic | eb5f0557ff | |
did | 592a110fe5 | |
Mario Visic | 9a1a0f016f | |
did | e500a1985b | |
did | 8271782284 | |
did | bbf0b0e083 | |
did | a25009824c | |
Mario Visic | 1c139af4e0 | |
did | b60b1378f8 | |
did | d21f32d849 | |
did | 4da434deb1 | |
did | eacdb2873e | |
did | 368f643cf0 | |
Mario Visic | 264ba8ebf2 | |
Mario Visic | a76020108f | |
Mario Visic | e6d72cfc71 | |
did | af955ef927 | |
did | dd15e3a758 | |
did | 5d750bee44 | |
did | ad8fad3ce5 | |
Mario Visic | aa68d59979 | |
Mario Visic | 4e6fc04889 | |
did | 1b8c1c7157 | |
did | 8af3445045 | |
did | 04d9e90492 | |
did | 07b302beaa | |
Mario Visic | 0eac23c3e3 | |
did | 37684654ac | |
did | 24575d5cff | |
did | 3fffe7bd91 | |
did | c171e49093 | |
did | 8c82ccb716 | |
did | 87a04aafe9 | |
did | fb0e87c64d | |
did | 99d756f550 | |
did | 837b974fec | |
did | 5d271239b7 | |
did | 35012ca2b2 | |
did | aebb4f74ec | |
did | 6505b7ab25 | |
did | 4a2ae180a9 | |
did | a8d616ba6b | |
Mario Visic | 532cda88c8 | |
did | cad1f5e68f | |
did | 71d48fe726 | |
Mario Visic | 39ac60fffe | |
Mario Visic | cecdfa4762 | |
Mario Visic | 9f56eecd56 | |
Mario Visic | ad6273e2fd | |
Mario Visic | 9f1ce08136 | |
Mario Visic | fa138b28d0 | |
Mario Visic | 9a603eb57f | |
Mario Visic | cfd0be5755 | |
Mario Visic | 1d1137fa36 | |
did | cffe64f6be | |
Mario Visic | 2a5861e8a7 | |
Mario Visic | 915a28dc0a | |
Mario Visic | 1c5d19ad71 | |
did | cb735a0539 | |
did | fcd2146c11 | |
did | 5bb29d9702 | |
did | cda038e320 | |
did | 80c9d5091f | |
did | 76ef0cb28d | |
did | 47625dfa17 | |
Mario Visic | 06f4fc98e3 | |
did | a50df5ad8e | |
Mario Visic | 40ef3e4fff | |
did | b2a5e1de85 | |
did | 0b7cc6ebd2 | |
did | 1a1a92e12f | |
Mario Visic | e21a40c157 | |
Mario Visic | 75041ba21c | |
Mario Visic | a99ba18200 | |
Mario Visic | 47db53e0e5 | |
Mario Visic | a7b66f0e25 | |
Mario Visic | a97978468f | |
Mario Visic | 51c0397531 | |
Mario Visic | 769cf7548c | |
Mario Visic | e6c1d6e94e | |
Mario Visic | 5f893d51c0 | |
did | c267f8ccbc | |
did | a6211d594e | |
did | cd411de4ce | |
did | 63e2a63d1a | |
did | 72c2cb2059 | |
did | 5ea81930b4 | |
did | 2620748b81 | |
did | 67615a7fe3 | |
did | a9dace0d0f | |
did | a48b602ea9 | |
did | 2c18f401bb | |
did | 80a9a11c7b | |
did | 596eb78a55 | |
did | bef9dd8e67 | |
did | 6122983835 | |
did | aa1abd2e92 | |
did | 599b1d6395 | |
did | 248d3803c2 | |
did | 1b015efd48 | |
did | fee5a5e98e | |
did | dd75f69b74 | |
did | 9169cb386e | |
did | b383086242 | |
did | 87d2440f14 | |
did | 8979957d43 | |
did | 851a255301 | |
did | cdab48f0a9 | |
did | 99e442673c | |
did | 9f8d2e4146 | |
did | 44007ac664 | |
did | 34cd6f464e | |
did | ed6020be3e |
|
@ -1,6 +1,6 @@
|
|||
.bundle
|
||||
db/*.sqlite3
|
||||
log/*.log
|
||||
log
|
||||
tmp/**/*
|
||||
.DS_Store
|
||||
rerun.txt
|
||||
|
@ -30,9 +30,16 @@ Capfile
|
|||
config/deploy.rb
|
||||
perf/*.rb
|
||||
gem_graph.png
|
||||
sites/
|
||||
permanent
|
||||
doc/bushido
|
||||
*.swp
|
||||
|
||||
.sass-cache/
|
||||
spec/dummy/public/sites
|
||||
/spec/dummy/tmp/
|
||||
/spec/dummy/spec/tmp
|
||||
/spec/dummy/log/*.log
|
||||
/spec/dummy/tmp/**/*
|
||||
app/assets/javascripts/old/
|
||||
app/assets/stylesheets/old/
|
||||
.rbenv-gemsets
|
||||
|
||||
|
|
|
@ -11,3 +11,4 @@ notifications:
|
|||
branches:
|
||||
only:
|
||||
- master
|
||||
- 1.0-stable
|
||||
|
|
|
@ -1,86 +1,55 @@
|
|||
#!/usr/bin/env bundle
|
||||
# encoding: utf-8
|
||||
|
||||
source :rubygems
|
||||
|
||||
# add in all the runtime dependencies
|
||||
gemspec # Include gemspec dependencies
|
||||
|
||||
gem 'rake', '0.9.2'
|
||||
|
||||
gem 'rails', '3.0.10'
|
||||
|
||||
gem 'warden'
|
||||
gem 'devise', '~>1.5.0'
|
||||
gem 'devise_bushido_authenticatable', '1.0.0.alpha10', :require => 'devise_cas_authenticatable'
|
||||
|
||||
gem 'mongo', '~> 1.3.1'
|
||||
gem 'bson', '~> 1.3.1'
|
||||
gem 'bson_ext', '~> 1.3.1'
|
||||
gem 'mongoid', '~> 2.0.2'
|
||||
gem 'locomotive_mongoid_acts_as_tree', '0.1.5.7', :require => 'mongoid_acts_as_tree'
|
||||
gem 'kaminari'
|
||||
|
||||
gem 'haml', '3.1.2'
|
||||
gem 'sass', '3.1.2'
|
||||
gem 'locomotive_liquid', '2.2.2', :require => 'liquid'
|
||||
gem 'formtastic', '~> 1.2.3'
|
||||
gem 'inherited_resources', '~> 1.1.2'
|
||||
|
||||
gem 'rmagick', '2.12.2', :require => 'RMagick'
|
||||
gem 'carrierwave', '0.5.6'
|
||||
gem 'dragonfly', '~> 0.9.1'
|
||||
gem 'rack-cache', :require => 'rack/cache'
|
||||
|
||||
gem 'custom_fields', '1.0.0.beta.25'
|
||||
gem 'cancan'
|
||||
gem 'fog', '0.8.2'
|
||||
gem 'mimetype-fu'
|
||||
gem 'actionmailer-with-request', :require => 'actionmailer_with_request'
|
||||
gem 'heroku', '1.19.1'
|
||||
gem 'httparty', '0.7.8'
|
||||
gem 'RedCloth', '4.2.9'
|
||||
gem 'delayed_job_mongoid', '1.0.8'
|
||||
gem 'rubyzip'
|
||||
gem 'locomotive_jammit-s3', :require => 'jammit-s3'
|
||||
gem 'SystemTimer', :platforms => :ruby_18
|
||||
gem 'cells'
|
||||
gem 'sanitize'
|
||||
gem 'highline'
|
||||
|
||||
# The rest of the dependencies are for use when in the locomotive dev environment
|
||||
# The rest of the dependencies are for use when in the locomotive development environment
|
||||
|
||||
group :development do
|
||||
gem 'unicorn' # Using unicorn_rails instead of webrick (default server)
|
||||
# gem 'custom_fields', :path => '../gems/custom_fields' # for Developers
|
||||
# gem 'custom_fields', :git => 'git://github.com/locomotivecms/custom_fields.git', :branch => '2.0.0.rc' # Branch on Github
|
||||
|
||||
gem 'rspec-rails', '2.6.1' # in order to have rspec tasks and generators
|
||||
# gem 'locomotive-aloha-rails', :path => '../gems/aloha-rails' # for Developers
|
||||
|
||||
gem 'rspec-rails', '~> 2.8.0' # In order to have rspec tasks and generators
|
||||
gem 'rspec-cells'
|
||||
|
||||
gem 'unicorn' # Using unicorn_rails instead of webrick (default server)
|
||||
end
|
||||
|
||||
group :test, :development do
|
||||
gem 'linecache', '0.43', :platforms => :mri_18
|
||||
gem 'ruby-debug', :platforms => :mri_18
|
||||
gem 'ruby-debug19', :platforms => :mri_19
|
||||
|
||||
gem 'bushido_stub', '0.0.3'
|
||||
group :assets do
|
||||
gem 'sass-rails', '~> 3.2.4'
|
||||
gem 'coffee-rails', '~> 3.2.2'
|
||||
gem 'uglifier', '~> 1.2.4'
|
||||
gem 'compass-rails'
|
||||
end
|
||||
|
||||
group :test do
|
||||
gem 'cucumber-rails', '1.2.0', :require => false
|
||||
gem 'autotest', :platforms => :mri
|
||||
gem 'ZenTest', :platforms => :mri
|
||||
gem 'growl-glue'
|
||||
gem 'rspec-rails', '2.6.1'
|
||||
gem 'factory_girl_rails', '~> 1.3.0'
|
||||
gem 'pickle'
|
||||
gem 'xpath', '~> 0.1.4'
|
||||
gem 'capybara'
|
||||
gem 'database_cleaner'
|
||||
gem 'launchy'
|
||||
|
||||
# gem 'autotest', :platforms => :mri
|
||||
# gem 'ZenTest', :platforms => :mri
|
||||
|
||||
# gem 'growl-glue'
|
||||
|
||||
gem 'cucumber-rails', :require => false
|
||||
gem 'poltergeist'
|
||||
gem 'rspec-rails', '~> 2.8.0'
|
||||
gem 'shoulda-matchers'
|
||||
|
||||
gem 'spork', '~> 0.9.0.rc'
|
||||
gem 'launchy'
|
||||
gem 'factory_girl_rails', '~> 1.6.0'
|
||||
gem 'pickle'
|
||||
gem 'mocha', '0.9.12' # :git => 'git://github.com/floehopper/mocha.git'
|
||||
end
|
||||
|
||||
group :production do
|
||||
gem 'bushido', '0.0.35'
|
||||
end
|
||||
gem 'capybara'
|
||||
|
||||
gem 'xpath', '~> 0.1.4'
|
||||
|
||||
gem 'json_spec'
|
||||
|
||||
gem 'database_cleaner'
|
||||
|
||||
# gem 'debugger', :git => 'git://github.com/cldwalker/debugger.git'
|
||||
end
|
||||
|
|
519
Gemfile.lock
|
@ -1,57 +1,83 @@
|
|||
PATH
|
||||
remote: .
|
||||
specs:
|
||||
locomotive_cms (2.0.0.rc8)
|
||||
RedCloth (~> 4.2.8)
|
||||
actionmailer-with-request (~> 0.3.0)
|
||||
bson_ext (~> 1.5.2)
|
||||
cancan (~> 1.6.7)
|
||||
carrierwave-mongoid (~> 0.2.1)
|
||||
cells (~> 3.8.0)
|
||||
codemirror-rails (~> 2.21)
|
||||
custom_fields (~> 2.0.0.rc12)
|
||||
devise (~> 2.1.0)
|
||||
devise-encryptable (~> 0.1.1)
|
||||
dragonfly (~> 0.9.8)
|
||||
flash_cookie_session (~> 1.1.1)
|
||||
fog (~> 1.3.1)
|
||||
formtastic (~> 2.0.2)
|
||||
haml (~> 3.1.6)
|
||||
highline (~> 1.6.2)
|
||||
httparty (~> 0.8.1)
|
||||
jquery-rails (~> 1.0.19)
|
||||
kaminari (~> 0.13.0)
|
||||
locomotive-aloha-rails (~> 0.20.1.4)
|
||||
locomotive-mongoid-tree (~> 0.6.2)
|
||||
locomotive-tinymce-rails (~> 3.4.7.2)
|
||||
locomotive_liquid (= 2.2.2)
|
||||
mimetype-fu (~> 0.1.2)
|
||||
mongo (~> 1.5.2)
|
||||
mongoid (~> 2.4.9)
|
||||
multi_json (~> 1.3.4)
|
||||
rack-cache (~> 1.1)
|
||||
rails (~> 3.2.5)
|
||||
rails-backbone (~> 0.6.1)
|
||||
rake (~> 0.9.2)
|
||||
responders (~> 0.6.4)
|
||||
rmagick (~> 2.12.2)
|
||||
sanitize (~> 2.0.3)
|
||||
unidecoder (~> 1.1.1)
|
||||
|
||||
GEM
|
||||
remote: http://rubygems.org/
|
||||
specs:
|
||||
POpen4 (0.1.4)
|
||||
Platform (>= 0.4.0)
|
||||
open4
|
||||
Platform (0.4.0)
|
||||
RedCloth (4.2.9)
|
||||
SystemTimer (1.2.3)
|
||||
ZenTest (4.6.2)
|
||||
abstract (1.0.0)
|
||||
actionmailer (3.0.10)
|
||||
actionpack (= 3.0.10)
|
||||
mail (~> 2.2.19)
|
||||
actionmailer (3.2.5)
|
||||
actionpack (= 3.2.5)
|
||||
mail (~> 2.4.4)
|
||||
actionmailer-with-request (0.3.0)
|
||||
rails (>= 3)
|
||||
actionpack (3.0.10)
|
||||
activemodel (= 3.0.10)
|
||||
activesupport (= 3.0.10)
|
||||
builder (~> 2.1.2)
|
||||
erubis (~> 2.6.6)
|
||||
i18n (~> 0.5.0)
|
||||
rack (~> 1.2.1)
|
||||
rack-mount (~> 0.6.14)
|
||||
rack-test (~> 0.5.7)
|
||||
tzinfo (~> 0.3.23)
|
||||
activemodel (3.0.10)
|
||||
activesupport (= 3.0.10)
|
||||
builder (~> 2.1.2)
|
||||
i18n (~> 0.5.0)
|
||||
activerecord (3.0.10)
|
||||
activemodel (= 3.0.10)
|
||||
activesupport (= 3.0.10)
|
||||
arel (~> 2.0.10)
|
||||
tzinfo (~> 0.3.23)
|
||||
activeresource (3.0.10)
|
||||
activemodel (= 3.0.10)
|
||||
activesupport (= 3.0.10)
|
||||
activesupport (3.0.10)
|
||||
archive-tar-minitar (0.5.2)
|
||||
arel (2.0.10)
|
||||
autotest (4.4.6)
|
||||
ZenTest (>= 4.4.1)
|
||||
actionpack (3.2.5)
|
||||
activemodel (= 3.2.5)
|
||||
activesupport (= 3.2.5)
|
||||
builder (~> 3.0.0)
|
||||
erubis (~> 2.7.0)
|
||||
journey (~> 1.0.1)
|
||||
rack (~> 1.4.0)
|
||||
rack-cache (~> 1.2)
|
||||
rack-test (~> 0.6.1)
|
||||
sprockets (~> 2.1.3)
|
||||
activemodel (3.2.5)
|
||||
activesupport (= 3.2.5)
|
||||
builder (~> 3.0.0)
|
||||
activerecord (3.2.5)
|
||||
activemodel (= 3.2.5)
|
||||
activesupport (= 3.2.5)
|
||||
arel (~> 3.0.2)
|
||||
tzinfo (~> 0.3.29)
|
||||
activeresource (3.2.5)
|
||||
activemodel (= 3.2.5)
|
||||
activesupport (= 3.2.5)
|
||||
activesupport (3.2.5)
|
||||
i18n (~> 0.6)
|
||||
multi_json (~> 1.0)
|
||||
addressable (2.2.8)
|
||||
arel (3.0.2)
|
||||
bcrypt-ruby (3.0.1)
|
||||
bson (1.3.1)
|
||||
bson_ext (1.3.1)
|
||||
builder (2.1.2)
|
||||
bushido (0.0.35)
|
||||
highline (>= 1.6.1)
|
||||
json (>= 1.4.6)
|
||||
orm_adapter (~> 0.0.3)
|
||||
rest-client (>= 1.6.1)
|
||||
bushido_stub (0.0.3)
|
||||
activesupport (>= 3.0.7)
|
||||
bson (1.5.2)
|
||||
bson_ext (1.5.2)
|
||||
bson (= 1.5.2)
|
||||
builder (3.0.0)
|
||||
cancan (1.6.7)
|
||||
capybara (1.1.2)
|
||||
mime-types (>= 1.16)
|
||||
|
@ -60,281 +86,260 @@ GEM
|
|||
rack-test (>= 0.5.4)
|
||||
selenium-webdriver (~> 2.0)
|
||||
xpath (~> 0.1.4)
|
||||
carrierwave (0.5.6)
|
||||
activesupport (~> 3.0)
|
||||
cells (3.8.0)
|
||||
carrierwave (0.6.2)
|
||||
activemodel (>= 3.2.0)
|
||||
activesupport (>= 3.2.0)
|
||||
carrierwave-mongoid (0.2.1)
|
||||
carrierwave (~> 0.6.1)
|
||||
mongoid (~> 2.1)
|
||||
cells (3.8.5)
|
||||
actionpack (~> 3.0)
|
||||
railties (~> 3.0)
|
||||
childprocess (0.2.5)
|
||||
childprocess (0.3.2)
|
||||
ffi (~> 1.0.6)
|
||||
columnize (0.3.6)
|
||||
configuration (1.3.1)
|
||||
crack (0.1.8)
|
||||
cucumber (1.1.4)
|
||||
chunky_png (1.2.5)
|
||||
codemirror-rails (2.24)
|
||||
railties (~> 3.0)
|
||||
coffee-rails (3.2.2)
|
||||
coffee-script (>= 2.2.0)
|
||||
railties (~> 3.2.0)
|
||||
coffee-script (2.2.0)
|
||||
coffee-script-source
|
||||
execjs
|
||||
coffee-script-source (1.3.3)
|
||||
compass (0.12.1)
|
||||
chunky_png (~> 1.2)
|
||||
fssm (>= 0.2.7)
|
||||
sass (~> 3.1)
|
||||
compass-rails (1.0.2)
|
||||
compass (>= 0.12.0, < 0.14)
|
||||
cucumber (1.2.1)
|
||||
builder (>= 2.1.2)
|
||||
diff-lcs (>= 1.1.2)
|
||||
gherkin (~> 2.7.1)
|
||||
diff-lcs (>= 1.1.3)
|
||||
gherkin (~> 2.11.0)
|
||||
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.3.0)
|
||||
capybara (>= 1.1.2)
|
||||
cucumber (>= 1.1.8)
|
||||
nokogiri (>= 1.5.0)
|
||||
custom_fields (1.0.0.beta.25)
|
||||
activesupport (~> 3.0.9)
|
||||
mongoid (= 2.0.2)
|
||||
database_cleaner (0.7.0)
|
||||
delayed_job (3.0.0)
|
||||
activesupport (~> 3.0)
|
||||
delayed_job_mongoid (1.0.8)
|
||||
delayed_job (~> 3.0.0)
|
||||
mongoid (>= 2.0)
|
||||
devise (1.5.3)
|
||||
custom_fields (2.0.0.rc12)
|
||||
activesupport (~> 3.2.1)
|
||||
carrierwave-mongoid (~> 0.2.1)
|
||||
mongoid (~> 2.4.9)
|
||||
database_cleaner (0.8.0)
|
||||
devise (2.1.0)
|
||||
bcrypt-ruby (~> 3.0)
|
||||
orm_adapter (~> 0.0.3)
|
||||
warden (~> 1.1)
|
||||
devise_bushido_authenticatable (1.0.0.alpha10)
|
||||
devise
|
||||
devise (>= 1.0.6)
|
||||
rubycas-client (>= 2.2.1)
|
||||
orm_adapter (~> 0.0.7)
|
||||
railties (~> 3.1)
|
||||
warden (~> 1.1.1)
|
||||
devise-encryptable (0.1.1)
|
||||
devise (>= 2.1.0.rc)
|
||||
diff-lcs (1.1.3)
|
||||
dragonfly (0.9.9)
|
||||
dragonfly (0.9.12)
|
||||
rack
|
||||
erubis (2.6.6)
|
||||
abstract (>= 1.0.0)
|
||||
excon (0.6.6)
|
||||
factory_girl (2.2.0)
|
||||
activesupport
|
||||
factory_girl_rails (1.3.0)
|
||||
factory_girl (~> 2.2.0)
|
||||
ejs (1.0.0)
|
||||
erubis (2.7.0)
|
||||
eventmachine (0.12.10)
|
||||
excon (0.13.4)
|
||||
execjs (1.4.0)
|
||||
multi_json (~> 1.0)
|
||||
factory_girl (2.5.2)
|
||||
activesupport (>= 2.3.9)
|
||||
factory_girl_rails (1.6.0)
|
||||
factory_girl (~> 2.5.0)
|
||||
railties (>= 3.0.0)
|
||||
faye-websocket (0.4.5)
|
||||
eventmachine (>= 0.12.0)
|
||||
ffi (1.0.11)
|
||||
fog (0.8.2)
|
||||
flash_cookie_session (1.1.3)
|
||||
rails (~> 3.0)
|
||||
fog (1.3.1)
|
||||
builder
|
||||
excon (~> 0.6.1)
|
||||
formatador (>= 0.1.3)
|
||||
json
|
||||
excon (~> 0.13.0)
|
||||
formatador (~> 0.2.0)
|
||||
mime-types
|
||||
multi_json (~> 1.0)
|
||||
net-scp (~> 1.0.4)
|
||||
net-ssh (>= 2.1.3)
|
||||
nokogiri (>= 1.4.4)
|
||||
nokogiri (~> 1.5.0)
|
||||
ruby-hmac
|
||||
formatador (0.2.1)
|
||||
formtastic (1.2.4)
|
||||
actionpack (>= 2.3.7)
|
||||
activesupport (>= 2.3.7)
|
||||
i18n (~> 0.4)
|
||||
gherkin (2.7.2)
|
||||
formatador (0.2.3)
|
||||
formtastic (2.0.2)
|
||||
rails (~> 3.0)
|
||||
fssm (0.2.9)
|
||||
gherkin (2.11.0)
|
||||
json (>= 1.4.6)
|
||||
growl-glue (1.0.7)
|
||||
haml (3.1.2)
|
||||
has_scope (0.5.1)
|
||||
heroku (1.19.1)
|
||||
activesupport (>= 2.1.0)
|
||||
launchy (~> 0.3.2)
|
||||
rest-client (>= 1.4.0, < 1.7.0)
|
||||
highline (1.6.9)
|
||||
httparty (0.7.8)
|
||||
crack (= 0.1.8)
|
||||
i18n (0.5.0)
|
||||
inherited_resources (1.1.2)
|
||||
has_scope (~> 0.5.0)
|
||||
responders (~> 0.6.0)
|
||||
jammit (0.6.5)
|
||||
yui-compressor (>= 0.9.3)
|
||||
json (1.6.5)
|
||||
haml (3.1.6)
|
||||
highline (1.6.12)
|
||||
hike (1.2.1)
|
||||
http_parser.rb (0.5.3)
|
||||
httparty (0.8.3)
|
||||
multi_json (~> 1.0)
|
||||
multi_xml
|
||||
i18n (0.6.0)
|
||||
journey (1.0.3)
|
||||
jquery-rails (1.0.19)
|
||||
railties (~> 3.0)
|
||||
thor (~> 0.14)
|
||||
json (1.7.3)
|
||||
json_spec (1.0.3)
|
||||
multi_json (~> 1.0)
|
||||
rspec (~> 2.0)
|
||||
kaminari (0.13.0)
|
||||
actionpack (>= 3.0.0)
|
||||
activesupport (>= 3.0.0)
|
||||
railties (>= 3.0.0)
|
||||
kgio (2.7.0)
|
||||
launchy (0.3.7)
|
||||
configuration (>= 0.0.5)
|
||||
rake (>= 0.8.1)
|
||||
linecache (0.43)
|
||||
linecache19 (0.5.12)
|
||||
ruby_core_source (>= 0.1.4)
|
||||
locomotive_jammit-s3 (0.5.4.4)
|
||||
jammit (>= 0.5.4)
|
||||
mimemagic (>= 0.1.7)
|
||||
s3 (>= 0.3.7)
|
||||
kgio (2.7.4)
|
||||
launchy (2.1.0)
|
||||
addressable (~> 2.2.6)
|
||||
libwebsocket (0.1.3)
|
||||
addressable
|
||||
locomotive-aloha-rails (0.20.1.4)
|
||||
actionpack (~> 3.2.1)
|
||||
locomotive-mongoid-tree (0.6.2)
|
||||
mongoid (~> 2.0)
|
||||
locomotive-tinymce-rails (3.4.7.2)
|
||||
actionpack (~> 3.0)
|
||||
locomotive_liquid (2.2.2)
|
||||
locomotive_mongoid_acts_as_tree (0.1.5.7)
|
||||
mongoid (= 2.0.2)
|
||||
mail (2.2.19)
|
||||
activesupport (>= 2.3.6)
|
||||
mail (2.4.4)
|
||||
i18n (>= 0.4.0)
|
||||
mime-types (~> 1.16)
|
||||
treetop (~> 1.4.8)
|
||||
mime-types (1.17.2)
|
||||
mimemagic (0.1.8)
|
||||
mime-types (1.18)
|
||||
mimetype-fu (0.1.2)
|
||||
mocha (0.9.12)
|
||||
mongo (1.3.1)
|
||||
bson (>= 1.3.1)
|
||||
mongoid (2.0.2)
|
||||
activemodel (~> 3.0)
|
||||
mongo (~> 1.3)
|
||||
mongo (1.5.2)
|
||||
bson (= 1.5.2)
|
||||
mongoid (2.4.11)
|
||||
activemodel (~> 3.1)
|
||||
mongo (<= 1.6.2)
|
||||
tzinfo (~> 0.3.22)
|
||||
multi_json (1.0.4)
|
||||
net-ssh (2.2.2)
|
||||
nokogiri (1.5.0)
|
||||
open4 (1.3.0)
|
||||
orm_adapter (0.0.6)
|
||||
multi_json (1.3.6)
|
||||
multi_xml (0.5.1)
|
||||
net-scp (1.0.4)
|
||||
net-ssh (>= 1.99.1)
|
||||
net-ssh (2.5.2)
|
||||
nokogiri (1.5.3)
|
||||
orm_adapter (0.0.7)
|
||||
pickle (0.4.10)
|
||||
cucumber (>= 0.8)
|
||||
rake
|
||||
poltergeist (0.6.0)
|
||||
capybara (~> 1.0)
|
||||
childprocess (~> 0.3)
|
||||
faye-websocket (~> 0.4, >= 0.4.4)
|
||||
http_parser.rb (~> 0.5.3)
|
||||
multi_json (~> 1.0)
|
||||
polyglot (0.3.3)
|
||||
proxies (0.2.1)
|
||||
rack (1.2.5)
|
||||
rack-cache (1.1)
|
||||
rack (1.4.1)
|
||||
rack-cache (1.2)
|
||||
rack (>= 0.4)
|
||||
rack-mount (0.6.14)
|
||||
rack (>= 1.0.0)
|
||||
rack-test (0.5.7)
|
||||
rack-ssl (1.3.2)
|
||||
rack
|
||||
rack-test (0.6.1)
|
||||
rack (>= 1.0)
|
||||
rails (3.0.10)
|
||||
actionmailer (= 3.0.10)
|
||||
actionpack (= 3.0.10)
|
||||
activerecord (= 3.0.10)
|
||||
activeresource (= 3.0.10)
|
||||
activesupport (= 3.0.10)
|
||||
rails (3.2.5)
|
||||
actionmailer (= 3.2.5)
|
||||
actionpack (= 3.2.5)
|
||||
activerecord (= 3.2.5)
|
||||
activeresource (= 3.2.5)
|
||||
activesupport (= 3.2.5)
|
||||
bundler (~> 1.0)
|
||||
railties (= 3.0.10)
|
||||
railties (3.0.10)
|
||||
actionpack (= 3.0.10)
|
||||
activesupport (= 3.0.10)
|
||||
railties (= 3.2.5)
|
||||
rails-backbone (0.6.1)
|
||||
coffee-script (~> 2.2.0)
|
||||
ejs (~> 1.0.0)
|
||||
railties (>= 3.1.0)
|
||||
railties (3.2.5)
|
||||
actionpack (= 3.2.5)
|
||||
activesupport (= 3.2.5)
|
||||
rack-ssl (~> 1.3.2)
|
||||
rake (>= 0.8.7)
|
||||
rdoc (~> 3.4)
|
||||
thor (~> 0.14.4)
|
||||
raindrops (0.8.0)
|
||||
rake (0.9.2)
|
||||
thor (>= 0.14.6, < 2.0)
|
||||
raindrops (0.9.0)
|
||||
rake (0.9.2.2)
|
||||
rdoc (3.12)
|
||||
json (~> 1.4)
|
||||
responders (0.6.4)
|
||||
rest-client (1.6.7)
|
||||
mime-types (>= 1.16)
|
||||
responders (0.6.5)
|
||||
rmagick (2.12.2)
|
||||
rspec (2.6.0)
|
||||
rspec-core (~> 2.6.0)
|
||||
rspec-expectations (~> 2.6.0)
|
||||
rspec-mocks (~> 2.6.0)
|
||||
rspec-cells (0.1.1)
|
||||
rspec (2.8.0)
|
||||
rspec-core (~> 2.8.0)
|
||||
rspec-expectations (~> 2.8.0)
|
||||
rspec-mocks (~> 2.8.0)
|
||||
rspec-cells (0.1.2)
|
||||
cells (~> 3.4)
|
||||
rails (~> 3.0)
|
||||
rspec-rails (~> 2.2)
|
||||
rspec-core (2.6.4)
|
||||
rspec-expectations (2.6.0)
|
||||
rspec-core (2.8.0)
|
||||
rspec-expectations (2.8.0)
|
||||
diff-lcs (~> 1.1.2)
|
||||
rspec-mocks (2.6.0)
|
||||
rspec-rails (2.6.1)
|
||||
actionpack (~> 3.0)
|
||||
activesupport (~> 3.0)
|
||||
railties (~> 3.0)
|
||||
rspec (~> 2.6.0)
|
||||
ruby-debug (0.10.4)
|
||||
columnize (>= 0.1)
|
||||
ruby-debug-base (~> 0.10.4.0)
|
||||
ruby-debug-base (0.10.4)
|
||||
linecache (>= 0.3)
|
||||
ruby-debug-base19 (0.11.25)
|
||||
columnize (>= 0.3.1)
|
||||
linecache19 (>= 0.5.11)
|
||||
ruby_core_source (>= 0.1.4)
|
||||
ruby-debug19 (0.11.6)
|
||||
columnize (>= 0.3.1)
|
||||
linecache19 (>= 0.5.11)
|
||||
ruby-debug-base19 (>= 0.11.19)
|
||||
rspec-mocks (2.8.0)
|
||||
rspec-rails (2.8.1)
|
||||
actionpack (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
railties (>= 3.0)
|
||||
rspec (~> 2.8.0)
|
||||
ruby-hmac (0.4.0)
|
||||
ruby_core_source (0.1.5)
|
||||
archive-tar-minitar (>= 0.5.2)
|
||||
rubycas-client (2.3.8)
|
||||
activesupport
|
||||
rubyzip (0.9.5)
|
||||
s3 (0.3.11)
|
||||
proxies (~> 0.2.0)
|
||||
rubyzip (0.9.8)
|
||||
sanitize (2.0.3)
|
||||
nokogiri (>= 1.4.4, < 1.6)
|
||||
sass (3.1.2)
|
||||
selenium-webdriver (2.16.0)
|
||||
sass (3.1.19)
|
||||
sass-rails (3.2.5)
|
||||
railties (~> 3.2.0)
|
||||
sass (>= 3.1.10)
|
||||
tilt (~> 1.3)
|
||||
selenium-webdriver (2.22.2)
|
||||
childprocess (>= 0.2.5)
|
||||
ffi (~> 1.0.9)
|
||||
multi_json (~> 1.0.4)
|
||||
ffi (~> 1.0)
|
||||
libwebsocket (~> 0.1.3)
|
||||
multi_json (~> 1.0)
|
||||
rubyzip
|
||||
shoulda-matchers (1.0.0)
|
||||
spork (0.9.0.rc9)
|
||||
term-ansicolor (1.0.7)
|
||||
thor (0.14.6)
|
||||
shoulda-matchers (1.1.0)
|
||||
activesupport (>= 3.0.0)
|
||||
sprockets (2.1.3)
|
||||
hike (~> 1.2)
|
||||
rack (~> 1.0)
|
||||
tilt (~> 1.1, != 1.3.0)
|
||||
thor (0.15.2)
|
||||
tilt (1.3.3)
|
||||
treetop (1.4.10)
|
||||
polyglot
|
||||
polyglot (>= 0.3.1)
|
||||
tzinfo (0.3.31)
|
||||
unicorn (4.1.1)
|
||||
kgio (~> 2.4)
|
||||
tzinfo (0.3.33)
|
||||
uglifier (1.2.4)
|
||||
execjs (>= 0.3.0)
|
||||
multi_json (>= 1.0.2)
|
||||
unicorn (4.3.1)
|
||||
kgio (~> 2.6)
|
||||
rack
|
||||
raindrops (~> 0.6)
|
||||
warden (1.1.0)
|
||||
raindrops (~> 0.7)
|
||||
unidecoder (1.1.1)
|
||||
warden (1.1.1)
|
||||
rack (>= 1.0)
|
||||
xpath (0.1.4)
|
||||
nokogiri (~> 1.3)
|
||||
yui-compressor (0.9.6)
|
||||
POpen4 (>= 0.1.4)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
RedCloth (= 4.2.9)
|
||||
SystemTimer
|
||||
ZenTest
|
||||
actionmailer-with-request
|
||||
autotest
|
||||
bson (~> 1.3.1)
|
||||
bson_ext (~> 1.3.1)
|
||||
bushido (= 0.0.35)
|
||||
bushido_stub (= 0.0.3)
|
||||
cancan
|
||||
capybara
|
||||
carrierwave (= 0.5.6)
|
||||
cells
|
||||
cucumber-rails (= 1.2.0)
|
||||
custom_fields (= 1.0.0.beta.25)
|
||||
coffee-rails (~> 3.2.2)
|
||||
compass-rails
|
||||
cucumber-rails
|
||||
database_cleaner
|
||||
delayed_job_mongoid (= 1.0.8)
|
||||
devise (~> 1.5.0)
|
||||
devise_bushido_authenticatable (= 1.0.0.alpha10)
|
||||
dragonfly (~> 0.9.1)
|
||||
factory_girl_rails (~> 1.3.0)
|
||||
fog (= 0.8.2)
|
||||
formtastic (~> 1.2.3)
|
||||
growl-glue
|
||||
haml (= 3.1.2)
|
||||
heroku (= 1.19.1)
|
||||
highline
|
||||
httparty (= 0.7.8)
|
||||
inherited_resources (~> 1.1.2)
|
||||
kaminari
|
||||
factory_girl_rails (~> 1.6.0)
|
||||
json_spec
|
||||
launchy
|
||||
linecache (= 0.43)
|
||||
locomotive_jammit-s3
|
||||
locomotive_liquid (= 2.2.2)
|
||||
locomotive_mongoid_acts_as_tree (= 0.1.5.7)
|
||||
mimetype-fu
|
||||
locomotive_cms!
|
||||
mocha (= 0.9.12)
|
||||
mongo (~> 1.3.1)
|
||||
mongoid (~> 2.0.2)
|
||||
pickle
|
||||
rack-cache
|
||||
rails (= 3.0.10)
|
||||
rake (= 0.9.2)
|
||||
rmagick (= 2.12.2)
|
||||
poltergeist
|
||||
rspec-cells
|
||||
rspec-rails (= 2.6.1)
|
||||
ruby-debug
|
||||
ruby-debug19
|
||||
rubyzip
|
||||
sanitize
|
||||
sass (= 3.1.2)
|
||||
rspec-rails (~> 2.8.0)
|
||||
sass-rails (~> 3.2.4)
|
||||
shoulda-matchers
|
||||
spork (~> 0.9.0.rc)
|
||||
uglifier (~> 1.2.4)
|
||||
unicorn
|
||||
warden
|
||||
xpath (~> 0.1.4)
|
||||
|
|
2
LICENSE
|
@ -1,6 +1,6 @@
|
|||
== MIT License
|
||||
|
||||
Copyright (c) 2010, Didier Lafforgue.
|
||||
Copyright (c) 2010-2012, Didier Lafforgue.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
|
|
@ -5,13 +5,15 @@ h1. Locomotive CMS
|
|||
|
||||
Locomotive is a simple but powerful CMS based on liquid templates and mongodb database. At my company ("NoCoffee":http://www.nocoffee.fr), we use it for our clients when they request a simple website.
|
||||
|
||||
If we have to give only 5 main features to describe our application, there will be:
|
||||
If we have to give a couple of features to describe our application, there will be:
|
||||
|
||||
* managing as many websites as you want with one application instance
|
||||
* nice looking UI (see http://www.locomotivecms.com for some screenshots)
|
||||
* flexible content types
|
||||
* playing smoothly with Heroku and MongoHQ
|
||||
* inline editing (beta)
|
||||
* content localization out of the box
|
||||
* playing smoothly with Heroku, Bushido and MongoHQ
|
||||
* inline editing (wip)
|
||||
* API
|
||||
|
||||
h2. Strategy / Development status
|
||||
|
||||
|
@ -20,16 +22,17 @@ Now, our goal is to port our prototype to Rails 3 and migrate from mongomapper t
|
|||
|
||||
h2. Gems
|
||||
|
||||
Here is a short list of main gems used in the application.
|
||||
Here is a short list of main gems / technologies used in the application.
|
||||
|
||||
* Rails 3.0.10
|
||||
* Mongoid 2.0.2 (with MongoDB 1.8)
|
||||
* Rails 3.2.5
|
||||
* Mongoid 2.4.9 (with MongoDB 2.0)
|
||||
* Liquid
|
||||
* Devise
|
||||
* Carrierwave
|
||||
* Haml
|
||||
* Delayed job
|
||||
* Jammit-s3
|
||||
* Formtastic
|
||||
* Cells
|
||||
* Coffeescript / Backbone / SASS
|
||||
|
||||
h2. Installation
|
||||
|
||||
|
@ -37,13 +40,13 @@ See the "official website":http://www.locomotivecms.com
|
|||
|
||||
h2. Upgrading
|
||||
|
||||
If you wish to upgrade your locomotive install from an older version to the current 1.0.0rc1 then "please refer to the upgrade guide":http://www.locomotivecms.com/support/howto/upgrade
|
||||
We work on the procedure to upgrade from a previous version of the engine (below the 2.0.0)
|
||||
|
||||
h2. Community
|
||||
|
||||
* Get help or discuss locomotive CMS at the "LocomotiveCMS Discussion Forums":http://locomotive.vanillaforums.com/
|
||||
* Get help or discuss locomotive CMS at the "LocomotiveCMS Google group":https://groups.google.com/forum/?fromgroups#!forum/locomotivecms or the "LocomotiveCMS Discussion Forums":http://locomotive.vanillaforums.com/ (deprecated)
|
||||
* Join us on IRC "#locomotivecms at irc.freenode.net!":http://webchat.freenode.net/
|
||||
* "Follow us on twitter":http://twitter.com/locomotiveapp
|
||||
* "Follow us on twitter":http://twitter.com/locomotivecms
|
||||
|
||||
h2. Contributing to Locomotive
|
||||
|
||||
|
@ -52,17 +55,18 @@ Locomotive CMS is an open source project, we encourage contributions. If you hav
|
|||
* Install ruby and mongoDB
|
||||
* Clone the project <code>git clone git@github.com:locomotivecms/engine.git</code>
|
||||
* Setup a virtual host entry for <code>test.example.com</code> to point to localhost
|
||||
* Install PhantomJS (Required for the cucumber suite See: https://github.com/jonleighton/poltergeist)
|
||||
* Run the tests <code>rake</code>
|
||||
* Write your failing tests
|
||||
* Make the tests pass
|
||||
* "Create a GitHub pull request":http://help.github.com/send-pull-requests
|
||||
|
||||
For new features (especially large ones) it is best to create a topic on the "discussion forums":http://locomotive.vanillaforums.com/ first to make sure it fits into the goals of the project.
|
||||
For new features (especially large ones) it is best to create a topic on the "Google group":https://groups.google.com/forum/?fromgroups#!forum/locomotivecms first to make sure it fits into the goals of the project.
|
||||
|
||||
h2. Team
|
||||
|
||||
* Developers: "Didier Lafforgue":http://www.nocoffee.fr, "Jacques Crocker":http://www.railsjedi.com, "Mario Visic":http://www.mariovisic.com
|
||||
* Contributors: "Dirk Kelly":http://www.dirkkelly.com, "Raphael Costa":http://raphaelcosta.net (Brazilian Portuguese translation), "Bernd Hauser":http://www.designhunger.de (German translation), "Andrea Frigido":http://www.frisoft.it (Italian translation), "Enrique García":https://github.com/kikito (Spanish translation), "Lars Smit":https://github.com/larssmit (Dutch translation), "PitOn":https://github.com/GarPit (Russian translation)
|
||||
* Developers: "Didier Lafforgue":http://www.nocoffee.fr, "Mario Visic":http://www.mariovisic.com, "Jacques Crocker":http://www.railsjedi.com
|
||||
* Contributors: "Dirk Kelly":http://www.dirkkelly.com, "Raphael Costa":http://raphaelcosta.net (Brazilian Portuguese translation), "Bernd Hauser":http://www.designhunger.de (German translation), "Andrea Frigido":http://www.frisoft.it (Italian translation), "Enrique García":https://github.com/kikito (Spanish translation), "Lars Smit":https://github.com/larssmit (Dutch translation), "PitOn":https://github.com/GarPit (Russian translation), "paulsponagl":https://github.com/paulsponagl
|
||||
* UI Designer: "Sacha Greif":http://www.sachagreif.com
|
||||
* IE maintainer: "Alex Sanford":https://github.com/alexsanford
|
||||
|
||||
|
@ -80,5 +84,5 @@ h2. Contact
|
|||
|
||||
Feel free to contact me at didier at nocoffee dot fr.
|
||||
|
||||
Copyright (c) 2011 NoCoffee, released under the MIT license
|
||||
Copyright (c) 2012 NoCoffee, released under the MIT license
|
||||
...
|
||||
|
|
88
Rakefile
|
@ -1,75 +1,19 @@
|
|||
require File.expand_path('../config/application', __FILE__)
|
||||
|
||||
require 'rubygems'
|
||||
|
||||
require 'rake/dsl_definition'
|
||||
require 'rake'
|
||||
require 'rdoc/task'
|
||||
require 'rubygems/package_task'
|
||||
|
||||
Locomotive::Application.load_tasks
|
||||
|
||||
gemspec = eval(File.read('locomotive_cms.gemspec'))
|
||||
Gem::PackageTask.new(gemspec) do |pkg|
|
||||
pkg.gem_spec = gemspec
|
||||
#!/usr/bin/env rake
|
||||
begin
|
||||
require 'bundler/setup'
|
||||
rescue LoadError
|
||||
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
||||
end
|
||||
|
||||
desc 'build the gem and release it to rubygems.org'
|
||||
task :release => :gem do
|
||||
sh "gem push pkg/custom_fields-#{gemspec.version}.gem"
|
||||
end
|
||||
APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
|
||||
|
||||
task :default => [:spec, :cucumber]
|
||||
# === Locomotive tasks ===
|
||||
load 'lib/tasks/locomotive.rake'
|
||||
|
||||
# only for running the tests suite in the order observed in *nix systems
|
||||
task :spec_nix do
|
||||
files = %w(
|
||||
lib/core_ext_spec.rb
|
||||
lib/locomotive/routing/site_dispatcher_spec.rb
|
||||
lib/locomotive/bushido_spec.rb
|
||||
lib/locomotive/render_spec.rb
|
||||
lib/locomotive/httparty/patches_spec.rb
|
||||
lib/locomotive/httparty/webservice_spec.rb
|
||||
lib/locomotive/configuration_spec.rb
|
||||
lib/locomotive/liquid/tags/consume_spec.rb
|
||||
lib/locomotive/liquid/tags/with_scope_spec.rb
|
||||
lib/locomotive/liquid/tags/nav_spec.rb
|
||||
lib/locomotive/liquid/tags/editable/content_spec.rb
|
||||
lib/locomotive/liquid/tags/editable/short_text_spec.rb
|
||||
lib/locomotive/liquid/tags/seo_spec.rb
|
||||
lib/locomotive/liquid/tags/paginate_spec.rb
|
||||
lib/locomotive/liquid/drops/content_spec.rb
|
||||
lib/locomotive/liquid/drops/contents_spec.rb
|
||||
lib/locomotive/liquid/drops/page_spec.rb
|
||||
lib/locomotive/liquid/drops/site_spec.rb
|
||||
lib/locomotive/liquid/filters/resize_spec.rb
|
||||
lib/locomotive/liquid/filters/html_spec.rb
|
||||
lib/locomotive/liquid/filters/date_spec.rb
|
||||
lib/locomotive/liquid/filters/text_spec.rb
|
||||
lib/locomotive/liquid/filters/misc_spec.rb
|
||||
lib/locomotive/heroku_spec.rb
|
||||
lib/locomotive/import_spec.rb
|
||||
lib/locomotive/export_spec.rb
|
||||
models/content_instance_spec.rb
|
||||
models/editable_element_spec.rb
|
||||
models/account_spec.rb
|
||||
models/content_type_spec.rb
|
||||
models/snippet_spec.rb
|
||||
models/ability_spec.rb
|
||||
models/membership_spec.rb
|
||||
models/page_spec.rb
|
||||
models/asset_spec.rb
|
||||
models/theme_asset_spec.rb
|
||||
models/site_spec.rb
|
||||
cells/admin/main_menu_cell_spec.rb
|
||||
cells/admin/global_actions_spec.rb
|
||||
cells/admin/settings_menu_cell_spec.rb
|
||||
requests/seo_trailing_slash_spec.rb
|
||||
).collect { |f| File.join('spec', f) }.join(' ')
|
||||
|
||||
sh "bundle exec rspec #{files}"
|
||||
end
|
||||
# === Gems install tasks ===
|
||||
Bundler::GemHelper.install_tasks
|
||||
|
||||
# === Travis
|
||||
task :travis do
|
||||
["rspec spec", "cucumber -b"].each do |cmd|
|
||||
puts "Starting to run #{cmd}..."
|
||||
|
@ -77,3 +21,13 @@ task :travis do
|
|||
raise "#{cmd} failed!" unless $?.exitstatus == 0
|
||||
end
|
||||
end
|
||||
|
||||
# === RSpec ===
|
||||
require 'rspec/core/rake_task'
|
||||
RSpec::Core::RakeTask.new(:spec)
|
||||
|
||||
# === Cucumber ===
|
||||
load 'lib/tasks/cucumber.rake'
|
||||
|
||||
# === Default task ===
|
||||
task :default => [:spec, :cucumber]
|
||||
|
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 314 B |
After Width: | Height: | Size: 248 B |
After Width: | Height: | Size: 247 B |
Before Width: | Height: | Size: 269 B After Width: | Height: | Size: 269 B |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 221 B After Width: | Height: | Size: 221 B |
Before Width: | Height: | Size: 444 B After Width: | Height: | Size: 444 B |
Before Width: | Height: | Size: 847 B After Width: | Height: | Size: 847 B |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 121 B After Width: | Height: | Size: 121 B |
Before Width: | Height: | Size: 345 B After Width: | Height: | Size: 345 B |
Before Width: | Height: | Size: 847 B After Width: | Height: | Size: 847 B |
Before Width: | Height: | Size: 704 B After Width: | Height: | Size: 704 B |
Before Width: | Height: | Size: 639 B After Width: | Height: | Size: 639 B |
Before Width: | Height: | Size: 553 B After Width: | Height: | Size: 553 B |
Before Width: | Height: | Size: 215 B After Width: | Height: | Size: 215 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 666 B After Width: | Height: | Size: 666 B |
Before Width: | Height: | Size: 909 B After Width: | Height: | Size: 909 B |
Before Width: | Height: | Size: 536 B After Width: | Height: | Size: 536 B |
Before Width: | Height: | Size: 611 B After Width: | Height: | Size: 611 B |
Before Width: | Height: | Size: 427 B After Width: | Height: | Size: 427 B |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 403 B After Width: | Height: | Size: 403 B |
Before Width: | Height: | Size: 302 B After Width: | Height: | Size: 302 B |
Before Width: | Height: | Size: 219 B After Width: | Height: | Size: 219 B |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 780 B |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 356 B |
After Width: | Height: | Size: 359 B |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 219 B After Width: | Height: | Size: 219 B |
After Width: | Height: | Size: 352 B |
After Width: | Height: | Size: 350 B |
After Width: | Height: | Size: 347 B |
After Width: | Height: | Size: 351 B |
Before Width: | Height: | Size: 720 B After Width: | Height: | Size: 720 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 862 B After Width: | Height: | Size: 862 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 437 B |
After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 314 B After Width: | Height: | Size: 314 B |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 496 B After Width: | Height: | Size: 496 B |
Before Width: | Height: | Size: 467 B After Width: | Height: | Size: 467 B |
Before Width: | Height: | Size: 109 B After Width: | Height: | Size: 109 B |
Before Width: | Height: | Size: 112 B After Width: | Height: | Size: 112 B |
Before Width: | Height: | Size: 553 B After Width: | Height: | Size: 553 B |
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 146 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
@ -0,0 +1,3 @@
|
|||
button.aloha-locomotive-media-insert {
|
||||
background: url(../img/image.gif) !important;
|
||||
}
|
After Width: | Height: | Size: 621 B |
|
@ -0,0 +1,96 @@
|
|||
define(
|
||||
['aloha/jquery', 'aloha/plugin', 'aloha/floatingmenu', 'i18n!aloha/nls/i18n', 'i18n!locomotive_media/nls/i18n', 'css!locomotive_media/css/image.css'],
|
||||
function(aQuery, Plugin, FloatingMenu, i18nCore, i18n) {
|
||||
var jQuery = aQuery;
|
||||
var $ = aQuery;
|
||||
var GENTICS = window.GENTICS, Aloha = window.Aloha;
|
||||
|
||||
return Plugin.create('locomotive_media', {
|
||||
init: function() {
|
||||
FloatingMenu.createScope(this.name, 'Aloha.continuoustext');
|
||||
|
||||
this._addUIInsertButton(i18nCore.t('floatingmenu.tab.insert'));
|
||||
},
|
||||
|
||||
openDialog: function() {
|
||||
var that = this;
|
||||
var picker = window.parent.application_view.content_assets_picker_view;
|
||||
|
||||
picker.options.on_select = function(asset) {
|
||||
if (asset.get('image') == true)
|
||||
that.insertImg(asset);
|
||||
else
|
||||
that.insertLink(asset);
|
||||
|
||||
picker.close();
|
||||
}
|
||||
|
||||
picker.fetch_assets();
|
||||
},
|
||||
|
||||
/**
|
||||
* This method will insert a new image dom element into the dom tree
|
||||
*/
|
||||
insertImg: function(asset) {
|
||||
var range = Aloha.Selection.getRangeObject(),
|
||||
imageUrl = asset.get('url'),
|
||||
imagestyle, imagetag, newImg;
|
||||
|
||||
if (range.isCollapsed()) {
|
||||
imagestyle = "max-width: " + asset.get('width') + "; max-height: " + asset.get('height');
|
||||
imagetag = '<img style="'+ imagestyle + '" src="' + imageUrl + '" title="" />';
|
||||
newImg = jQuery(imagetag);
|
||||
GENTICS.Utils.Dom.insertIntoDOM(newImg, range, jQuery(Aloha.activeEditable.obj));
|
||||
} else {
|
||||
Aloha.Log.error('media cannot markup a selection');
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* This method will insert a new link dom element into the dom tree
|
||||
*/
|
||||
insertLink: function(asset) {
|
||||
var range = Aloha.Selection.getRangeObject(),
|
||||
linkText = asset.get('filename'),
|
||||
linkUrl = asset.get('url'),
|
||||
linktag, newLink;
|
||||
|
||||
if (range.isCollapsed()) {
|
||||
linktag = '<a href="' + linkUrl + '">' + linkText + '</a>';
|
||||
newLink = jQuery(linktag);
|
||||
GENTICS.Utils.Dom.insertIntoDOM(newLink, range, jQuery(Aloha.activeEditable.obj));
|
||||
range.startContainer = range.endContainer = newLink.contents().get(0);
|
||||
range.startOffset = 0;
|
||||
range.endOffset = linkText.length;
|
||||
} else {
|
||||
linktag = '<a href="' + linkUrl + '"></a>';
|
||||
newLink = jQuery(linktag);
|
||||
GENTICS.Utils.Dom.addMarkup(range, newLink, false);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Adds the insert button to the floating menu
|
||||
*/
|
||||
_addUIInsertButton: function(tabId) {
|
||||
var that = this;
|
||||
this.insertMediaButton = new Aloha.ui.Button({
|
||||
'name' : 'insertlocomotivemedia',
|
||||
'iconClass': 'aloha-button aloha-locomotive-media-insert',
|
||||
'size' : 'small',
|
||||
'onclick' : function () { that.openDialog(); },
|
||||
'tooltip' : i18n.t('button.addimg.tooltip'),
|
||||
'toggle' : false
|
||||
});
|
||||
|
||||
FloatingMenu.addButton(
|
||||
'Aloha.continuoustext',
|
||||
this.insertMediaButton,
|
||||
tabId,
|
||||
1
|
||||
);
|
||||
},
|
||||
|
||||
});
|
||||
}
|
||||
);
|
|
@ -0,0 +1 @@
|
|||
define({ 'button.addimg.tooltip': 'insérer média' });
|
|
@ -0,0 +1,4 @@
|
|||
define({
|
||||
root: { "button.addimg.tooltip": "insert media" },
|
||||
fr: true
|
||||
});
|
|
@ -0,0 +1 @@
|
|||
{}
|
|
@ -0,0 +1,25 @@
|
|||
// This is a manifest file that'll be compiled into including all the files listed below.
|
||||
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
|
||||
// be included in the compiled file accessible from http://example.com/assets/application.js
|
||||
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
||||
// the compiled file.
|
||||
//
|
||||
//= require jquery
|
||||
//= require jquery-ui
|
||||
//= require jquery_ujs
|
||||
//= require underscore
|
||||
//= require backbone
|
||||
//= require codemirror
|
||||
//= require tinymce-jquery
|
||||
//= require codemirror/utils/overlay
|
||||
//= require codemirror/modes/css
|
||||
//= require codemirror/modes/javascript
|
||||
//= require codemirror/modes/xml
|
||||
//= require codemirror/modes/htmlmixed
|
||||
//= require locomotive/vendor
|
||||
//= require ./locomotive/application
|
||||
|
||||
$(document).ready(function() {
|
||||
$.datepicker.setDefaults($.datepicker.regional[window.locale]);
|
||||
});
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
#= require ./utils/aloha_settings
|
||||
#= require aloha
|
|
@ -0,0 +1,12 @@
|
|||
#= require_self
|
||||
#= require_tree ./utils
|
||||
#= require_tree ./models
|
||||
#= require_tree ./views
|
||||
|
||||
window.Locomotive =
|
||||
mounted_on: window.Locomotive.mounted_on
|
||||
Models: {}
|
||||
Collections: {}
|
||||
Views: {}
|
||||
|
||||
window.Locomotive.Views.Memberships = {}
|
|
@ -0,0 +1,22 @@
|
|||
#= require jquery
|
||||
#= require jquery-ui
|
||||
#= require jquery_ujs
|
||||
#= require underscore
|
||||
#= require backbone
|
||||
#= require locomotive/backbone.sync
|
||||
#= require locomotive/growl
|
||||
#= require locomotive/handlebars
|
||||
#= require locomotive/ICanHandlebarz
|
||||
#= require locomotive/resize
|
||||
#= require locomotive/toggle
|
||||
#= require_self
|
||||
#= require_tree ./utils
|
||||
#= require_tree ./models
|
||||
#= require_tree ./views/content_assets
|
||||
#= require_tree ./views/inline_editor
|
||||
|
||||
window.Locomotive =
|
||||
mounted_on: '/locomotive' # default path
|
||||
Models: {}
|
||||
Collections: {}
|
||||
Views: {}
|
|
@ -0,0 +1,11 @@
|
|||
class Locomotive.Models.Account extends Backbone.Model
|
||||
|
||||
paramRoot: 'account'
|
||||
|
||||
urlRoot: "#{Locomotive.mounted_on}/accounts"
|
||||
|
||||
class Locomotive.Models.CurrentAccount extends Locomotive.Models.Account
|
||||
|
||||
url: "#{Locomotive.mounted_on}/my_account"
|
||||
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
class Locomotive.Models.ContentAsset extends Backbone.Model
|
||||
|
||||
paramRoot: 'content_asset'
|
||||
|
||||
urlRoot: "#{Locomotive.mounted_on}/content_assets"
|
||||
|
||||
initialize: ->
|
||||
@prepare()
|
||||
|
||||
prepare: ->
|
||||
@set
|
||||
image: @get('content_type') == 'image'
|
||||
|
||||
return @
|
||||
|
||||
class Locomotive.Models.ContentAssetsCollection extends Backbone.Collection
|
||||
|
||||
model: Locomotive.Models.ContentAsset
|
||||
|
||||
url: "#{Locomotive.mounted_on}/content_assets"
|
|
@ -0,0 +1,61 @@
|
|||
class Locomotive.Models.ContentEntry extends Backbone.Model
|
||||
|
||||
paramRoot: 'content_entry'
|
||||
|
||||
urlRoot: "#{Locomotive.mounted_on}/content_types/:slug/entries"
|
||||
|
||||
initialize: ->
|
||||
@urlRoot = @urlRoot.replace(':slug', @get('content_type_slug'))
|
||||
|
||||
_.each @get('has_many_custom_fields'), (field) =>
|
||||
name = field[0]
|
||||
collection = new Locomotive.Models.ContentEntriesCollection(@get(name))
|
||||
@set_attribute name, collection
|
||||
|
||||
_.each @get('many_to_many_custom_fields'), (field) =>
|
||||
name = field[0]
|
||||
collection = new Locomotive.Models.ContentEntriesCollection(@get(name))
|
||||
collection.comparator = (entry) -> entry.get('__position') || 0
|
||||
@set_attribute name, collection
|
||||
|
||||
set_attribute: (attribute, value) ->
|
||||
data = {}
|
||||
data[attribute] = value
|
||||
@set data
|
||||
|
||||
update_attributes: (attributes) ->
|
||||
_.each attributes.file_custom_fields, (field) => # special treatment for files
|
||||
attribute = "#{field}_url"
|
||||
@set_attribute attribute, attributes[attribute]
|
||||
@set_attribute "remove_#{field}", false
|
||||
|
||||
toMinJSON: ->
|
||||
_.tap {}, (hash) =>
|
||||
_.each @attributes, (val, key) =>
|
||||
if key == 'id' || key == '_destroy' || key.indexOf('position_in_') == 0
|
||||
hash[key] = val
|
||||
|
||||
toJSON: ->
|
||||
_.tap super, (hash) =>
|
||||
hash['_slug'] = '' if hash['_slug'] == null # avoid empty hash
|
||||
_.each _.keys(hash), (key) =>
|
||||
unless _.include(@get('safe_attributes'), key)
|
||||
delete hash[key]
|
||||
|
||||
_.each @get('has_many_custom_fields'), (field) => # include the has_many relationships
|
||||
name = field[0]
|
||||
if @get(name).length > 0
|
||||
hash["#{name}_attributes"] = @get(name).toMinJSON()
|
||||
|
||||
_.each @get('many_to_many_custom_fields'), (field) => # include the many_to_many relationships
|
||||
name = field[0]; setter_name = field[1]
|
||||
hash[setter_name] = @get(name).sort().map (entry) => entry.id
|
||||
|
||||
class Locomotive.Models.ContentEntriesCollection extends Backbone.Collection
|
||||
|
||||
model: Locomotive.Models.ContentEntry
|
||||
|
||||
url: "#{Locomotive.mounted_on}/content_types/:slug/entries"
|
||||
|
||||
toMinJSON: ->
|
||||
@map (entry) => entry.toMinJSON()
|
|
@ -0,0 +1,23 @@
|
|||
class Locomotive.Models.ContentType extends Backbone.Model
|
||||
|
||||
paramRoot: 'content_type'
|
||||
|
||||
urlRoot: "#{Locomotive.mounted_on}/content_types"
|
||||
|
||||
initialize: ->
|
||||
@_normalize()
|
||||
|
||||
_normalize: ->
|
||||
@set
|
||||
entries_custom_fields: new Locomotive.Models.CustomFieldsCollection(@get('entries_custom_fields'))
|
||||
|
||||
toJSON: ->
|
||||
_.tap super, (hash) =>
|
||||
delete hash.entries_custom_fields
|
||||
hash.entries_custom_fields_attributes = @get('entries_custom_fields').toJSONForSave() if @get('entries_custom_fields')? && @get('entries_custom_fields').length > 0
|
||||
|
||||
class Locomotive.Models.ContentTypesCollection extends Backbone.Collection
|
||||
|
||||
model: Locomotive.Models.ContentType
|
||||
|
||||
url: "#{Locomotive.mounted_on}/content_types"
|
|
@ -0,0 +1,38 @@
|
|||
class Locomotive.Models.CustomField extends Backbone.Model
|
||||
|
||||
initialize: ->
|
||||
@_normalize()
|
||||
|
||||
unless @get('name')?
|
||||
@set name: @get('label').slugify()
|
||||
|
||||
_normalize: ->
|
||||
@set
|
||||
select_options: new Locomotive.Models.CustomFieldSelectOptionsCollection(@get('select_options'))
|
||||
|
||||
_undesired_fields:
|
||||
['select_options', 'type_text', 'text_formatting_text', 'inverse_of_text', 'class_name_text', 'undefined_text', 'undefined', 'created_at', 'updated_at']
|
||||
|
||||
_relationship_fields:
|
||||
['class_name', 'inverse_of', 'ui_enabled']
|
||||
|
||||
is_relationship_type: ->
|
||||
_.include(['belongs_to', 'has_many', 'many_to_many'], @get('type'))
|
||||
|
||||
toJSONForSave: ->
|
||||
_.tap {}, (hash) =>
|
||||
for key, value of @.toJSON()
|
||||
unless _.include(@_undesired_fields, key)
|
||||
if _.include(@_relationship_fields, key)
|
||||
hash[key] = value if @is_relationship_type()
|
||||
else
|
||||
hash[key] = value
|
||||
|
||||
hash.select_options_attributes = @get('select_options').toJSONForSave() if @get('select_options')? && @get('select_options').length > 0
|
||||
|
||||
class Locomotive.Models.CustomFieldsCollection extends Backbone.Collection
|
||||
|
||||
model: Locomotive.Models.CustomField
|
||||
|
||||
toJSONForSave: ->
|
||||
@map (model) => model.toJSONForSave()
|
|
@ -0,0 +1,13 @@
|
|||
class Locomotive.Models.CustomFieldSelectOption extends Backbone.Model
|
||||
|
||||
toJSONForSave: ->
|
||||
_.tap {}, (hash) =>
|
||||
for key, value of @.toJSON()
|
||||
hash[key] = value unless _.include(['created_at', 'updated_at'], key)
|
||||
|
||||
class Locomotive.Models.CustomFieldSelectOptionsCollection extends Backbone.Collection
|
||||
|
||||
model: Locomotive.Models.CustomFieldSelectOption
|
||||
|
||||
toJSONForSave: ->
|
||||
@map (model) => model.toJSONForSave()
|
|
@ -0,0 +1,3 @@
|
|||
class Locomotive.Models.Domain extends Backbone.Model
|
||||
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
class Locomotive.Models.EditableElement extends Backbone.Model
|
||||
|
||||
toJSONForSave: ->
|
||||
_.tap {}, (hash) =>
|
||||
for key, value of @.toJSON()
|
||||
hash[key] = value if _.include(['id', 'source', 'content', 'remove_source'], key)
|
||||
|
||||
if @get('type') == 'EditableFile'
|
||||
delete hash['content']
|
||||
else
|
||||
delete hash['source']
|
||||
|
||||
class Locomotive.Models.EditableElementsCollection extends Backbone.Collection
|
||||
|
||||
model: Locomotive.Models.EditableElement
|
||||
|
||||
blocks: ->
|
||||
names = _.uniq(@map (editable, index) -> editable.get('block_name'))
|
||||
_.tap [], (list) =>
|
||||
_.each names, (name, index) ->
|
||||
list.push name: name, index: index
|
||||
|
||||
by_block: (name) ->
|
||||
@filter (editable) -> editable.get('block_name') == name
|
||||
|
||||
toJSONForSave: ->
|
||||
@map (model) => model.toJSONForSave()
|
|
@ -0,0 +1,13 @@
|
|||
class Locomotive.Models.Membership extends Backbone.Model
|
||||
|
||||
toJSONForSave: ->
|
||||
_.tap {}, (hash) =>
|
||||
for key, value of @.toJSON()
|
||||
hash[key] = value if _.include(['id', '_id', 'role', '_destroy'], key)
|
||||
|
||||
class Locomotive.Models.MembershipsCollection extends Backbone.Collection
|
||||
|
||||
model: Locomotive.Models.Membership
|
||||
|
||||
toJSONForSave: ->
|
||||
@map (model) => model.toJSONForSave()
|
|
@ -0,0 +1,27 @@
|
|||
class Locomotive.Models.Page extends Backbone.Model
|
||||
|
||||
paramRoot: 'page'
|
||||
|
||||
urlRoot: "#{Locomotive.mounted_on}/pages"
|
||||
|
||||
initialize: ->
|
||||
@_normalize()
|
||||
|
||||
@set
|
||||
edit_url: "#{Locomotive.mounted_on}/pages/#{@id}/edit"
|
||||
|
||||
_normalize: ->
|
||||
@set
|
||||
editable_elements: new Locomotive.Models.EditableElementsCollection(@get('editable_elements') || [])
|
||||
|
||||
toJSON: ->
|
||||
_.tap super, (hash) =>
|
||||
_.each ['fullpath', 'localized_fullpaths', 'templatized_from_parent', 'target_klass_name_text', 'content_type_id_text', 'edit_url', 'parent_id_text', 'response_type_text'], (key) => delete hash[key]
|
||||
|
||||
delete hash['editable_elements']
|
||||
hash.editable_elements = @get('editable_elements').toJSONForSave() if @get('editable_elements')? && @get('editable_elements').length > 0
|
||||
|
||||
delete hash['target_klass_name']
|
||||
hash.target_klass_name = @get('target_klass_name') if @get('templatized') == true
|
||||
|
||||
class Locomotive.Models.PagesCollection extends Backbone.Collection
|
|
@ -0,0 +1,33 @@
|
|||
class Locomotive.Models.Site extends Backbone.Model
|
||||
|
||||
paramRoot: 'site'
|
||||
|
||||
urlRoot: "#{Locomotive.mounted_on}/sites"
|
||||
|
||||
initialize: ->
|
||||
# Be careful, domains_without_subdomain becomes domains
|
||||
domains = _.map @get('domains_without_subdomain'), (name) =>
|
||||
new Locomotive.Models.Domain(name: name)
|
||||
|
||||
memberships = new Locomotive.Models.MembershipsCollection(@get('memberships'))
|
||||
|
||||
@set domains: domains, memberships: memberships
|
||||
|
||||
includes_domain: (name) ->
|
||||
name == @domain_with_domain() || _.any(@get('domains'), (domain) -> domain.get('name') == name)
|
||||
|
||||
domain_with_domain: ->
|
||||
"#{@get('subdomain')}.#{@get('domain_name')}"
|
||||
|
||||
toJSON: ->
|
||||
_.tap super, (hash) =>
|
||||
delete hash.memberships
|
||||
hash.memberships_attributes = @get('memberships').toJSONForSave() if @get('memberships')? && @get('memberships').length > 0
|
||||
delete hash.domains
|
||||
hash.domains = _.map(@get('domains'), (domain) -> domain.get('name'))
|
||||
|
||||
class Locomotive.Models.CurrentSite extends Locomotive.Models.Site
|
||||
|
||||
url: "#{Locomotive.mounted_on}/current_site"
|
||||
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
class Locomotive.Models.Snippet extends Backbone.Model
|
||||
|
||||
paramRoot: 'snippet'
|
||||
|
||||
urlRoot: "#{Locomotive.mounted_on}/snippets"
|
||||
|
||||
class Locomotive.Models.SnippetsCollection extends Backbone.Collection
|
||||
|
||||
model: Locomotive.Models.Snippet
|
||||
|
||||
url: "#{Locomotive.mounted_on}/snippets"
|
|
@ -0,0 +1,11 @@
|
|||
class Locomotive.Models.ThemeAsset extends Backbone.Model
|
||||
|
||||
paramRoot: 'theme_asset'
|
||||
|
||||
urlRoot: "#{Locomotive.mounted_on}/theme_assets"
|
||||
|
||||
class Locomotive.Models.ThemeAssetsCollection extends Backbone.Collection
|
||||
|
||||
model: Locomotive.Models.ThemeAsset
|
||||
|
||||
url: "#{Locomotive.mounted_on}/theme_assets"
|
|
@ -0,0 +1 @@
|
|||
#= require jquery
|
|
@ -0,0 +1,37 @@
|
|||
window.Aloha = window.Aloha ?= {}
|
||||
|
||||
window.Aloha.settings =
|
||||
|
||||
logLevels: { 'error': true, 'warn': true, 'info': false, 'debug': false }
|
||||
|
||||
errorhandling: true
|
||||
|
||||
plugins:
|
||||
|
||||
format:
|
||||
config: [ 'b', 'i', 'u','del','sub','sup', 'p', 'title', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'pre', 'removeFormat']
|
||||
editables:
|
||||
'.editable-short-text' : [ 'b', 'i', 'u' ]
|
||||
|
||||
link:
|
||||
config: [ 'a' ]
|
||||
editables:
|
||||
'.editable-short-text': [ ]
|
||||
|
||||
list:
|
||||
config: [ 'ul' ]
|
||||
editables:
|
||||
'.editable-short-text': [ ]
|
||||
|
||||
image:
|
||||
ui:
|
||||
insert: false
|
||||
crop: false
|
||||
|
||||
i18n:
|
||||
available: ['en', 'fr', 'pt-BR', 'es', 'de', 'no', 'ru', 'nl']
|
||||
|
||||
sidebar:
|
||||
disabled: true
|
||||
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
(function() {
|
||||
String.prototype.trim = function() {
|
||||
return this.replace(/^\s+/g, '').replace(/\s+$/g, '');
|
||||
}
|
||||
|
||||
String.prototype.repeat = function(num) {
|
||||
for (var i = 0, buf = ""; i < num; i++) buf += this;
|
||||
return buf;
|
||||
}
|
||||
|
||||
String.prototype.truncate = function(length) {
|
||||
if (this.length > length) {
|
||||
return this.slice(0, length - 3) + "...";
|
||||
} else {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
String.prototype.slugify = function(sep) {
|
||||
if (typeof sep == 'undefined') sep = '_';
|
||||
var alphaNumRegexp = new RegExp('[^\\w\\' + sep + ']', 'g');
|
||||
var avoidDuplicateRegexp = new RegExp('[\\' + sep + ']{2,}', 'g');
|
||||
return this.replace(/\s/g, sep).replace(alphaNumRegexp, '').replace(avoidDuplicateRegexp, sep).toLowerCase();
|
||||
}
|
||||
|
||||
window.addParameterToURL = function(key, value, context) { // code from http://stackoverflow.com/questions/486896/adding-a-parameter-to-the-url-with-javascript
|
||||
if (typeof context == 'undefined') context = document;
|
||||
|
||||
key = encodeURIComponent(key); value = encodeURIComponent(value);
|
||||
|
||||
var kvp = context.location.search.substr(1).split('&');
|
||||
|
||||
var i = kvp.length; var x; while(i--) {
|
||||
x = kvp[i].split('=');
|
||||
|
||||
if (x[0] == key) {
|
||||
x[1] = value;
|
||||
kvp[i] = x.join('=');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i < 0) { kvp[kvp.length] = [key,value].join('='); }
|
||||
|
||||
//this will reload the page, it's likely better to store this until finished
|
||||
context.location.search = kvp.join('&');
|
||||
}
|
||||
|
||||
window.addJavascript = function(doc, src, options) {
|
||||
var script = doc.createElement('script');
|
||||
script.type = 'text/javascript';
|
||||
script.src = src;
|
||||
if (options && options.onload) {
|
||||
script.onload = options.onload;
|
||||
delete(options.onload);
|
||||
}
|
||||
for (var key in options) {
|
||||
script.setAttribute(key, options[key]);
|
||||
}
|
||||
doc.body.appendChild(script);
|
||||
}
|
||||
|
||||
window.addStylesheet = function(doc, src, options) {
|
||||
var stylesheet = doc.createElement('link');
|
||||
stylesheet.style = 'text/css';
|
||||
stylesheet.href = src;
|
||||
stylesheet.media = 'screen';
|
||||
stylesheet.rel = 'stylesheet';
|
||||
doc.head.appendChild(stylesheet);
|
||||
}
|
||||
|
||||
$.ui.dialog.prototype.overlayEl = function() { return this.overlay.$el; }
|
||||
|
||||
})();
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
$.growl.settings.noticeTemplate = '' +
|
||||
'<div class="notice %title%">' +
|
||||
' <p>%message%</p>' +
|
||||
'</div>';
|
||||
|
||||
$.growl.settings.dockCss = {
|
||||
position: 'fixed',
|
||||
bottom: '20px',
|
||||
left: '0px',
|
||||
width: '100%',
|
||||
zIndex: 50000
|
||||
};
|
||||
|
||||
// $.growl.settings.displayTimeout = 500;
|
|
@ -0,0 +1,9 @@
|
|||
Handlebars.registerHelper 'each_with_index', (context, block) ->
|
||||
ret = ""
|
||||
|
||||
for num in context
|
||||
data = context[num]
|
||||
data._index = num
|
||||
ret = ret + block(data)
|
||||
|
||||
ret
|