Compare commits
897 Commits
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 | |
Corey Woodcox | 7aadd9d129 | |
Corey Woodcox | 1a5050a0c1 | |
Corey Woodcox | 81db1da423 | |
did | 7ace1d9a48 | |
did | e523cb952c | |
did | ab507dc165 | |
did | 0534c5504f | |
did | 739d2db0a9 | |
Gil Vandendriessche | d665a85591 | |
Mario Visic | 07ff99e135 | |
Mario Visic | 40c2902e80 | |
Mario Visic | 0a2bd13058 | |
Mario Visic | 34f9755d9a | |
Corey Woodcox | 868c2d2e0e | |
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 | |
Mario Visic | c2779dde51 | |
benni | 00035287c3 | |
benni | edc1907cfa | |
did | 531017ab62 | |
did | 50a2453995 | |
Mario Visic | 23f3705223 | |
Mario Visic | 14fc4bf12d | |
Mario Visic | a0d02b2fce | |
Mario Visic | 81b89ba389 | |
Mario Visic | 76b611b848 | |
Mario Visic | 9aa6bf89be | |
Mario Visic | 7eccb97b44 | |
Anton Katunin | 3fad905314 | |
Mario Visic | 0476771ee4 | |
Mario Visic | e6a527f0f5 | |
Mario Visic | 8f5a363d74 | |
Mario Visic | 75b0137230 | |
Mario Visic | 04b1a7aa90 | |
did | d191d2d783 | |
did | 0489bbe4c2 | |
Mac Shifford | 3e7babc9dd | |
Pietro Giorgianni | 99d889f6e2 | |
Mac Shifford | 131331633f | |
Pietro Giorgianni | 6d08daaba3 | |
did | 42db5ba656 | |
did | 01c5de36a5 | |
did | 4c204ef6a6 | |
Paul Sponagl | 27dd3b2001 | |
did | 435d4067c0 | |
did | 5dfbb2bdb7 | |
did | a650acd535 | |
did | 9a21cd818a | |
did | a1e692a34d | |
did | dc24c1b184 | |
Mario Visic | c881750d78 | |
Mario Visic | 5719381ba5 | |
Mario Visic | b9755947ff | |
Mario Visic | 8a493088ca | |
Paul Sponagl | 2fd7b47b61 | |
Paul Sponagl | df10701746 | |
Paul Sponagl | dc324893ce | |
Mario Visic | 0926286318 | |
did | 0f1b4f59d3 | |
did | 81fc524fdc | |
did | 912251d49b | |
Paul Sponagl | 9a28ecbd1e | |
Mario Visic | a65a871e19 | |
did | e9ef4d48c3 | |
did | 9130544516 | |
did | 2068fe060d | |
did | 81a6569fe7 | |
did | d1bb45d7c8 | |
did | 00283993c0 | |
did | 217000042a | |
Mario Visic | eb5f0557ff | |
Mario Visic | 4efa43e342 | |
did | 592a110fe5 | |
Mario Visic | 9a1a0f016f | |
Mario Visic | 4ae6fe7977 | |
Mario Visic | 79bf38c419 | |
Robsteranium | 82a61b1d2d | |
Robsteranium | 282e2486b6 | |
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 | |
Mario Visic | 63192a76f3 | |
did | cad1f5e68f | |
did | 71d48fe726 | |
Mario Visic | 39ac60fffe | |
Mario Visic | 867878a4f4 | |
Mario Visic | cecdfa4762 | |
Mario Visic | 791c5f9d43 | |
Mario Visic | 9f56eecd56 | |
Mario Visic | 1a350e7d0c | |
Mario Visic | 05d9990e69 | |
Mario Visic | 9b049aa055 | |
Mario Visic | 83da41a2b1 | |
Mario Visic | 0f09c577d0 | |
Mario Visic | 5c6794d69c | |
Mario Visic | 7f7ed896cf | |
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 | |
Sean Grove | 0e5e16c8b4 | |
Sean Grove | ef5caad897 | |
Sean Grove | d1306aec53 | |
Sean Grove | ed96ab1cf5 | |
Sean Grove | 43dee9391d | |
Sean Grove | 5a4a9f5475 | |
Sean Grove | b2bfec1bc4 | |
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 | a3f66e19b5 | |
Mario Visic | e309b62386 | |
Mario Visic | 4d9c77d41a | |
Mario Visic | ad0adc7153 | |
Mario Visic | c3c5d8e754 | |
Mario Visic | 45d4b7cb60 | |
Mario Visic | 06ab49ecec | |
did | 87d2440f14 | |
did | 8979957d43 | |
did | 851a255301 | |
did | cdab48f0a9 | |
did | 99e442673c | |
did | 732f8f76f3 | |
did | 9f8d2e4146 | |
did | 44007ac664 | |
did | 34cd6f464e | |
did | ed6020be3e | |
Mario Visic | fda3382300 | |
Mario Visic | 9f8906d840 | |
Mario Visic | 4939017f8d | |
Mario Visic | 786d2d9693 | |
Mario Visic | e6abd6bbe0 | |
Mario Visic | 2bb9f5ed05 | |
Mario Visic | 25441ff60a | |
Mario Visic | 2c5407d588 | |
Mario Visic | a2303f40f0 | |
Mario Visic | d574939e2c | |
did | 99386f8866 | |
did | ca44edd58f | |
did | 8298b2a4bf | |
Mario Visic | fcac15c6b1 | |
Mario Visic | dc7b83d6b7 | |
Mario Visic | 4088500795 | |
did | 32f7552a50 | |
Didier Lafforgue | 05e3e73210 | |
Didier Lafforgue | b655431ea6 | |
did | e0707a8f0a | |
did | 443606f0f3 | |
Mario Visic | 4d19117351 | |
Mario Visic | 70dacfcef2 | |
Mario Visic | 6b9ccf3854 | |
Mario Visic | 930a67429d | |
Mario Visic | dd118a7147 | |
Sharagoz | 35e2fd2d57 | |
Sharagoz | f864980685 | |
Rytis Lukoševičius | 6b9d2317da | |
Mario Visic | 85cabafe67 | |
did | 016d773b2d | |
did | 544e9e5c3c | |
Andrea Frigido | d5534a4a2b | |
did | 718b3c67bb | |
M. Scott Ford | c18dfa035e | |
did | ce24270948 | |
Sharagoz | a843f16be0 | |
Sharagoz | 2b474626b6 | |
Sharagoz | ffc7057669 | |
Sharagoz | cb43a878c8 | |
Sharagoz | c6ab499664 | |
Mario Visic | aa21cea13b | |
Mario Visic | 03b6649742 | |
Mario Visic | 4c55401728 | |
PitOn | 6945bed820 | |
Mario Visic | ca2ad98cd0 | |
Karl Brightman | 93667018c1 | |
Karl Brightman | 769b0569db | |
Karl Brightman | 75f4835d3e | |
did | 13b82e66fe | |
did | 8dfefe5094 | |
Mario Visic | efc843c2d9 | |
Mario Visic | 8dbd51734a | |
Mario Visic | 82b763c1bf | |
Mario Visic | 1b86150042 | |
Mario Visic | 3113fbc9f0 | |
Mario Visic | d586d0eff4 | |
Mario Visic | eb2d25e2f9 | |
Mario Visic | f6609a699b | |
Mario Visic | aa6eb1ea9d | |
Didier Lafforgue | f81d3a698f | |
did | 6a2f0f17dd | |
Didier Lafforgue | 4a82935b46 | |
did | c84a571afc | |
Didier Lafforgue | 761a64b130 | |
Didier Lafforgue | d121a56efc | |
did | cd5f3b9712 | |
did | dea0b67fe1 | |
Mario Visic | c83c6828a9 | |
Paul | acd731347c | |
GarPit | 1e5e151be6 | |
PitOn | 367b0aab4f | |
PitOn | db5cb0950d | |
PitOn | a1d976ace1 | |
PitOn | a46019da40 | |
Arjen Oosterkamp | a78bcdaf38 | |
Alex Sanford | 988323b1d0 | |
Mario Visic | ff901ca3d3 | |
Mario Visic | cd464e604c | |
Mario Visic | 63c30bc135 | |
M. Scott Ford | d49453dfc8 | |
PitOn | ef75d4acef | |
PitOn | d9dafd2222 | |
PitOn | e8bea2844b | |
did | 265525c1a7 | |
did | bb48552b51 | |
did | aa5c5f0092 | |
Didier Lafforgue | 201063aae0 | |
did | 71a592eec1 | |
Mario Visic | fdf55aee88 | |
did | c990a89e57 | |
did | 01f6a0aad5 | |
did | 7a9caabc41 | |
did | d0566f917e | |
did | aff1d23d90 | |
Didier Lafforgue | e111e2c1f9 | |
Didier Lafforgue | f140fcc260 | |
Mario Visic | 22445856ec | |
Mario Visic | 8a5241f265 | |
Mario Visic | a7bc648333 | |
Mario Visic | 5c3cf83082 | |
Mario Visic | 24c9752018 | |
Mario Visic | 0ed6c21f10 | |
Alex Sanford | 88fd17a5aa | |
did | 7ea25b3a59 | |
did | 0e3d601ea9 | |
did | 52e78d9b9a | |
did | 8e26b922f4 | |
GarPit | 75e6f2cd08 | |
did | e0b9367f10 | |
Didier Lafforgue | c3ba38216d | |
did | b3a8916565 | |
did | 2d4f3df106 | |
did | 3ad8101ed6 | |
Didier Lafforgue | 8d30ba5152 | |
did | cdf386aac2 | |
did | 4543e597ed | |
Didier Lafforgue | acbf481134 | |
Didier Lafforgue | 5d8f255e72 | |
Didier Lafforgue | 12c9bd1eca | |
Didier Lafforgue | b4bfea616a | |
did | 408ff098ba | |
Rytis Lukoševičius | 69e24e8fe0 | |
Rytis Lukoševičius | 025d5a7dda | |
did | b23f2697e9 | |
M. Scott Ford | 19f4fe295d | |
M. Scott Ford | 1d85c0dbf3 | |
M. Scott Ford | 48f869dc27 | |
Enrique García Cota | cab52f8f7b | |
GarPit | 09689a0cc9 | |
Enrique García Cota | e0f11c8a5c | |
Enrique García Cota | d398b8fba5 | |
Enrique García Cota | 85f29c00fe | |
did | 161878f57e | |
Didier Lafforgue | 7a4253a7e4 | |
did | 67d7b13f4f | |
Benjamin Quorning | e2eb8f2e90 | |
Alex Sanford | c225a8d394 | |
Andrea Frigido | 37c50d27ff | |
Andrea Frigido | 3966c7bdae | |
did | 333934c022 | |
did | 040a51bc5f | |
Didier Lafforgue | 49fee12ffe | |
did | a9b6c234e7 | |
Didier Lafforgue | 92ec012472 | |
did | 6d66275def | |
did | 08cac3b324 | |
did | dbee233d0a | |
Didier Lafforgue | 50b1c0e383 | |
did | 4c8272dfa0 | |
John Polling | 7c8b973889 | |
M. Scott Ford | 36914834a1 | |
M. Scott Ford | 8564055fd1 | |
M. Scott Ford | a532bb4c60 | |
M. Scott Ford | 707973be16 | |
Didier Lafforgue | 7e31d3ea76 | |
Didier Lafforgue | 243d0ac381 | |
Tony C. Heupel | d810e0b9c4 | |
did | a1977085a3 | |
did | d51e74b341 | |
did | 8da0db2454 | |
Sean Grove | 2320aa6fb1 | |
did | 2c2c565aad | |
Didier Lafforgue | e74f996c8c | |
Sharagoz | 4f34610918 | |
did | b2ca79038b | |
Sean Grove | 2f2f410312 | |
did | d4b2153c7b | |
did | 8a58a0cad1 | |
did | abbc151ed2 | |
M. Scott Ford | 3a21b7c29c | |
did | 747ba0d6fa | |
did | b042a02ed4 | |
did | 7f1c9282c7 | |
did | 616195fe8c | |
Kev Zettler | 18ab1e09e6 | |
did | a1f0ffad98 | |
Kev Zettler | 0473fdd7ea | |
did | d5111d2a4f | |
did | e05586d387 | |
Andrea Frigido | 1dd432c2c8 | |
Sean Grove | 5e3a4ffa0f | |
Sean Grove | 09343dd20a | |
Sean Grove | 93a852c705 | |
Sean Grove | 8de926bca9 | |
Sean Grove | 9bab872e5b | |
did | 7b8053241d | |
did | 5ef92e6951 | |
did | 0a8321ad3d | |
did | ffb780238b | |
did | cb349b3ac0 | |
did | 4f7312a659 | |
Kev Zettler | b780bbd42a | |
did | e2b68ba861 | |
Kev Zettler | 13e247691f | |
Kev Zettler | 2472e486fd | |
Kev Zettler | 1ce9c2a432 | |
Sean Grove | 5ea345aed5 | |
Sean Grove | 2a9a49f1b1 | |
Sean Grove | 694ca19324 | |
Sean Grove | 32f57cc43c | |
Kev Zettler | cf0b49932e | |
Kev Zettler | c1a1e720d3 | |
Kev Zettler | e5549cc600 | |
Kev Zettler | 55f95499ce | |
Kev Zettler | 466cd99101 | |
Kev Zettler | b9f5943585 | |
Didier Lafforgue | 756ebc06b2 | |
Kev Zettler | 6fa003db5c | |
Petr Blaho | dfa0196e89 | |
Petr Blaho | a491b15801 | |
Petr Blaho | 18d3c5c591 | |
Didier Lafforgue | 294da07565 | |
Petr Blaho | e39519f3ba | |
Petr Blaho | 41472c88bd | |
did | 819d7ac5ff | |
did | 194a01d15f | |
did | 91aa975973 | |
did | 47088f9b0e | |
did | 45ff488ae8 | |
Kev Zettler | 6db607cb1e | |
Kev Zettler | 4eabcdbaa8 | |
Kev Zettler | e22e7a5e46 | |
Kev Zettler | 217465cfda | |
did | 53a83b5f79 | |
Kev Zettler | 3b5df5e8a8 | |
did | 9a36e85ce1 | |
did | e27c26ebdd | |
did | 5f29ebd55b | |
Didier Lafforgue | cd45ddf551 | |
did | efe2e63aa3 | |
Vladimir Andrijevik | ce96d86cdd | |
Didier Lafforgue | 4a9da56341 | |
Didier Lafforgue | 93da1f0cf3 | |
Alex Sanford | d162cf20c8 | |
did | 2c562038d8 | |
did | 8956145da7 | |
did | 770ae3a543 | |
Kev Zettler | 7ca3e7fec7 | |
Andrea Frigido | f6c91ed791 | |
Andrea Frigido | 0fde9917d5 | |
Andrea Frigido | d5e2d20181 | |
Kev Zettler | 904bed1c10 | |
Kev Zettler | d997741842 | |
did | 86259e94b7 | |
Kev Zettler | 058e97d376 | |
did | dc9570dda0 | |
did | 2236b43222 | |
did | 0ea5275504 | |
Andrea Frigido | 33b2b83db7 | |
did | 72c1ac9454 | |
Andrea Frigido | 89cc143083 | |
Didier Lafforgue | c426b83871 | |
Kev Zettler | ca2fad461d | |
M. Scott Ford | 8437b51901 | |
did | 390f25ce1f | |
did | b2ddaf805c | |
did | 711110a6e0 | |
Kev Zettler | a342f7e6b1 | |
did | 9008324367 | |
did | 900d526a2f | |
did | 007f34ed8c | |
did | 88325ca932 | |
Didier Lafforgue | bf4b2be2b9 | |
Kev Zettler | e78726caa4 | |
M. Scott Ford | 314c1293d9 | |
did | fe47b3e6c6 | |
did | b4e72f98b9 | |
did | 37d10aa25b | |
Didier Lafforgue | 875d840442 | |
did | 6acec074e2 | |
did | 0737919c2c | |
did | 6f58d89e39 | |
did | 1a62d8f5ad | |
Didier Lafforgue | 43670714b9 | |
did | 6ce086520f | |
Didier Lafforgue | 59a6e03da2 | |
did | bf99a36b58 | |
did | 01b0cde69b | |
did | ca0921d2f3 | |
did | bd28f4c1ec | |
did | 71d7e86acd | |
did | 00fd00240f | |
did | 1e465e231e | |
did | 91f2f145b3 | |
did | 02186d7368 | |
did | aad4b09ad7 | |
did | 05331dee86 | |
did | 7405b9343b | |
did | 2cd44190ae | |
did | 690b2f2b2e | |
did | 812965ad50 | |
did | e560c71ee5 | |
did | 187de54962 | |
did | c7ea5ab532 | |
did | b2d6a7e001 | |
did | c8f0ad0bbe | |
did | c1f89f1cca | |
did | 322e617068 | |
did | 8c1372afc6 | |
did | e304d5aa98 | |
did | 5e8eac53d4 | |
did | 2ad01833d8 | |
did | be6629d986 | |
did | 1be92e0db4 | |
did | 09171555a7 | |
did | 33a29210ba | |
did | c9f3989c2b | |
did | c9bc8c8222 | |
did | 1d1889d155 | |
did | 2cc07b3957 | |
did | eb37cdcf36 | |
did | 587d383ac5 | |
did | fa7e4c24d8 | |
did | d4b7734003 | |
did | d31f1f959a | |
did | 40530de8bb | |
did | a5cd2290ea | |
did | 4d29500483 | |
did | 3c0f7afec0 | |
did | be02539695 | |
did | 0631b96df9 | |
did | 3c31c8dbcf | |
did | a0293b161b | |
did | 6ed9788d50 | |
did | b00c84019c | |
did | f4d9acd282 | |
did | 57ba3ba273 | |
Kev Zettler | 41b26848ee | |
did | 87e7ced3c1 | |
did | ecdb79bb2d | |
did | 58ab954ec1 | |
did | 21ccbb635b | |
did | be055e51bc | |
did | 0878a39858 | |
did | afe07d4976 | |
did | 6b2f067cb3 | |
did | adfcbb6658 | |
did | de217b74b7 | |
did | cd428e467c | |
did | f1d8e7c141 | |
Kev Zettler | ecbb517215 | |
did | 5bf6d46574 | |
did | 2d060dd2d9 | |
did | 49080b737d | |
did | fdfa36838b | |
Andrea Frigido | 9e512485dd | |
Andrea Frigido | 950e59abdc | |
did | 86c1342dcd | |
Sean Grove | d954b75285 | |
Sean Grove | 3678c7f49c | |
did | f9decc0890 | |
Kev Zettler | 40dfa83fad | |
Kev Zettler | 2bc79b2703 | |
Kev Zettler | 308fcd665a | |
Kev Zettler | c39115f5ae | |
Kev Zettler | 891db0d7cc | |
did | abcf4f684a | |
Mario Visic | 8c62ec4dba | |
Mario Visic | 19a07910f7 | |
Mario Visic | 8575af8b33 | |
Mario Visic | 684b1ddf5c | |
Mario Visic | c07dbb3f98 | |
Mario Visic | 60c48f4f2e | |
did | a5bf4664f2 | |
did | 91119bf54e | |
did | 4618b35318 | |
did | 4518cfda1f | |
did | 6d208553af | |
Andrea Frigido | cf246268e7 | |
Andrea Frigido | db23a06c3f | |
Didier Lafforgue | ddce344e73 | |
Didier Lafforgue | 372941ad89 | |
Sean Grove | d557af74ea | |
Sean Grove | 6834e6db85 | |
did | 47ffafca20 | |
Benjamin Athlan | 8716ba5f43 | |
Benjamin Athlan | a224aff063 | |
did | 9b4f9064f3 | |
Benjamin Athlan | 2e76ebd521 | |
Benjamin Athlan | b1819af066 | |
Benjamin Athlan | 750551cefb | |
Benjamin Athlan | 32b7f36fe2 | |
Benjamin Athlan | 5d9a6b552d | |
Andrew Bennett | 28a4ec4ac2 |
|
@ -1,11 +1,12 @@
|
||||||
.bundle
|
.bundle
|
||||||
db/*.sqlite3
|
db/*.sqlite3
|
||||||
log/*.log
|
log
|
||||||
tmp/**/*
|
tmp/**/*
|
||||||
.DS_Store
|
.DS_Store
|
||||||
rerun.txt
|
rerun.txt
|
||||||
uploads
|
uploads
|
||||||
spec/tmp
|
spec/tmp
|
||||||
|
spec/fixtures/themes/default
|
||||||
public/assets
|
public/assets
|
||||||
public/sites
|
public/sites
|
||||||
public/uploads
|
public/uploads
|
||||||
|
@ -29,6 +30,16 @@ Capfile
|
||||||
config/deploy.rb
|
config/deploy.rb
|
||||||
perf/*.rb
|
perf/*.rb
|
||||||
gem_graph.png
|
gem_graph.png
|
||||||
sites/
|
|
||||||
permanent
|
permanent
|
||||||
doc/bushido
|
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
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
script: "bundle exec rake travis"
|
||||||
|
before_script: ./bin/ci/before_build.sh
|
||||||
|
rvm:
|
||||||
|
- 1.9.2
|
||||||
|
- 1.9.3
|
||||||
|
notifications:
|
||||||
|
email:
|
||||||
|
- didier@nocoffee.fr
|
||||||
|
- mario@mariovisic.com
|
||||||
|
irc: "irc.freenode.org#locomotivecms"
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
- 1.0-stable
|
|
@ -1,74 +1,55 @@
|
||||||
|
#!/usr/bin/env bundle
|
||||||
|
# encoding: utf-8
|
||||||
|
|
||||||
source :rubygems
|
source :rubygems
|
||||||
|
|
||||||
# add in all the runtime dependencies
|
gemspec # Include gemspec dependencies
|
||||||
|
|
||||||
gem 'rake', '0.8.7'
|
# The rest of the dependencies are for use when in the locomotive development environment
|
||||||
|
|
||||||
gem 'rails', '>= 3.0.7'
|
|
||||||
|
|
||||||
gem 'warden'
|
|
||||||
gem 'devise', '= 1.1.3'
|
|
||||||
|
|
||||||
gem 'mongoid', '~> 2.0.1'
|
|
||||||
gem 'bson_ext', '~> 1.3.0'
|
|
||||||
gem 'locomotive_mongoid_acts_as_tree', '0.1.5.5', :require => 'mongoid_acts_as_tree'
|
|
||||||
gem 'will_paginate'
|
|
||||||
|
|
||||||
gem 'haml', '3.0.25'
|
|
||||||
gem 'locomotive_liquid', '2.2.2', :require => 'liquid'
|
|
||||||
gem 'formtastic', '~> 1.2.3'
|
|
||||||
gem 'inherited_resources', '~> 1.1.2'
|
|
||||||
|
|
||||||
gem 'rmagick', '2.12.2'
|
|
||||||
gem 'locomotive_carrierwave', '0.5.0.1.beta3', :require => 'carrierwave'
|
|
||||||
|
|
||||||
gem 'custom_fields', '1.0.0.beta.13'
|
|
||||||
gem 'fog', '0.3.7'
|
|
||||||
gem 'mimetype-fu'
|
|
||||||
gem 'actionmailer-with-request', :require => 'actionmailer_with_request'
|
|
||||||
gem 'heroku', '1.19.1'
|
|
||||||
gem 'httparty', '>= 0.6.1'
|
|
||||||
gem 'RedCloth', '4.2.7'
|
|
||||||
gem 'delayed_job', '2.1.4'
|
|
||||||
gem 'delayed_job_mongoid', '1.0.2'
|
|
||||||
gem 'rubyzip'
|
|
||||||
gem 'locomotive_jammit-s3', :require => 'jammit-s3'
|
|
||||||
gem 'SystemTimer', :platforms => :ruby_18
|
|
||||||
|
|
||||||
# The rest of the dependencies are for use when in the locomotive dev environment
|
|
||||||
|
|
||||||
group :development do
|
group :development do
|
||||||
# Using unicorn_rails instead of webrick (default server)
|
# gem 'custom_fields', :path => '../gems/custom_fields' # for Developers
|
||||||
gem 'unicorn'
|
# gem 'custom_fields', :git => 'git://github.com/locomotivecms/custom_fields.git', :branch => '2.0.0.rc' # Branch on Github
|
||||||
|
|
||||||
|
# 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
|
end
|
||||||
|
|
||||||
group :test, :development do
|
group :assets do
|
||||||
gem 'ruby-debug', :platforms => :mri_18
|
gem 'sass-rails', '~> 3.2.4'
|
||||||
gem 'ruby-debug19', :platforms => :mri_19
|
gem 'coffee-rails', '~> 3.2.2'
|
||||||
|
gem 'uglifier', '~> 1.2.4'
|
||||||
gem 'bushido_stub', :git => 'git://github.com/did/bushido_stub.git'
|
gem 'compass-rails'
|
||||||
# :path => '../gems/bushido_stub'
|
|
||||||
# gem 'bushido'
|
|
||||||
end
|
|
||||||
|
|
||||||
group :production do
|
|
||||||
gem 'bushido'
|
|
||||||
end
|
end
|
||||||
|
|
||||||
group :test do
|
group :test do
|
||||||
gem 'autotest'
|
gem 'launchy'
|
||||||
gem 'ZenTest'
|
|
||||||
gem 'growl-glue'
|
# gem 'autotest', :platforms => :mri
|
||||||
gem 'rspec-rails', '2.3.1'
|
# gem 'ZenTest', :platforms => :mri
|
||||||
gem 'factory_girl_rails'
|
|
||||||
|
# gem 'growl-glue'
|
||||||
|
|
||||||
|
gem 'cucumber-rails', :require => false
|
||||||
|
gem 'poltergeist'
|
||||||
|
gem 'rspec-rails', '~> 2.8.0'
|
||||||
|
gem 'shoulda-matchers'
|
||||||
|
|
||||||
|
gem 'factory_girl_rails', '~> 1.6.0'
|
||||||
gem 'pickle'
|
gem 'pickle'
|
||||||
gem 'xpath', :git => 'https://github.com/wunderbread/xpath.git'
|
gem 'mocha', '0.9.12' # :git => 'git://github.com/floehopper/mocha.git'
|
||||||
|
|
||||||
gem 'capybara'
|
gem 'capybara'
|
||||||
|
|
||||||
|
gem 'xpath', '~> 0.1.4'
|
||||||
|
|
||||||
|
gem 'json_spec'
|
||||||
|
|
||||||
gem 'database_cleaner'
|
gem 'database_cleaner'
|
||||||
gem 'cucumber', '0.8.5'
|
|
||||||
gem 'cucumber-rails'
|
# gem 'debugger', :git => 'git://github.com/cldwalker/debugger.git'
|
||||||
gem 'spork'
|
|
||||||
gem 'launchy'
|
|
||||||
gem 'mocha', :git => 'git://github.com/floehopper/mocha.git'
|
|
||||||
end
|
end
|
||||||
|
|
589
Gemfile.lock
|
@ -1,316 +1,345 @@
|
||||||
GIT
|
PATH
|
||||||
remote: git://github.com/did/bushido_stub.git
|
remote: .
|
||||||
revision: 6b83b2c4847832ffe7a213e725d2ceb7f864e360
|
|
||||||
specs:
|
specs:
|
||||||
bushido_stub (0.0.1)
|
locomotive_cms (2.0.0.rc8)
|
||||||
activesupport (>= 3.0.7)
|
RedCloth (~> 4.2.8)
|
||||||
|
actionmailer-with-request (~> 0.3.0)
|
||||||
GIT
|
bson_ext (~> 1.5.2)
|
||||||
remote: git://github.com/floehopper/mocha.git
|
cancan (~> 1.6.7)
|
||||||
revision: 6da1242f26b12a24c4fcf67bf5921a25bc1bc88d
|
carrierwave-mongoid (~> 0.2.1)
|
||||||
specs:
|
cells (~> 3.8.0)
|
||||||
mocha (0.9.12.20110213002255)
|
codemirror-rails (~> 2.21)
|
||||||
|
custom_fields (~> 2.0.0.rc12)
|
||||||
GIT
|
devise (~> 2.1.0)
|
||||||
remote: https://github.com/wunderbread/xpath.git
|
devise-encryptable (~> 0.1.1)
|
||||||
revision: d04da707886287e7dfe82705fda5b3d4f65e94c3
|
dragonfly (~> 0.9.8)
|
||||||
specs:
|
flash_cookie_session (~> 1.1.1)
|
||||||
xpath (0.1.2)
|
fog (~> 1.3.1)
|
||||||
nokogiri (~> 1.4)
|
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
|
GEM
|
||||||
remote: http://rubygems.org/
|
remote: http://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
POpen4 (0.1.4)
|
RedCloth (4.2.9)
|
||||||
Platform (>= 0.4.0)
|
actionmailer (3.2.5)
|
||||||
open4
|
actionpack (= 3.2.5)
|
||||||
Platform (0.4.0)
|
mail (~> 2.4.4)
|
||||||
RedCloth (4.2.7)
|
|
||||||
SystemTimer (1.2.3)
|
|
||||||
ZenTest (4.5.0)
|
|
||||||
abstract (1.0.0)
|
|
||||||
actionmailer (3.0.7)
|
|
||||||
actionpack (= 3.0.7)
|
|
||||||
mail (~> 2.2.15)
|
|
||||||
actionmailer-with-request (0.3.0)
|
actionmailer-with-request (0.3.0)
|
||||||
rails (>= 3)
|
rails (>= 3)
|
||||||
actionpack (3.0.7)
|
actionpack (3.2.5)
|
||||||
activemodel (= 3.0.7)
|
activemodel (= 3.2.5)
|
||||||
activesupport (= 3.0.7)
|
activesupport (= 3.2.5)
|
||||||
builder (~> 2.1.2)
|
builder (~> 3.0.0)
|
||||||
erubis (~> 2.6.6)
|
erubis (~> 2.7.0)
|
||||||
i18n (~> 0.5.0)
|
journey (~> 1.0.1)
|
||||||
rack (~> 1.2.1)
|
rack (~> 1.4.0)
|
||||||
rack-mount (~> 0.6.14)
|
rack-cache (~> 1.2)
|
||||||
rack-test (~> 0.5.7)
|
rack-test (~> 0.6.1)
|
||||||
tzinfo (~> 0.3.23)
|
sprockets (~> 2.1.3)
|
||||||
activemodel (3.0.7)
|
activemodel (3.2.5)
|
||||||
activesupport (= 3.0.7)
|
activesupport (= 3.2.5)
|
||||||
builder (~> 2.1.2)
|
builder (~> 3.0.0)
|
||||||
i18n (~> 0.5.0)
|
activerecord (3.2.5)
|
||||||
activerecord (3.0.7)
|
activemodel (= 3.2.5)
|
||||||
activemodel (= 3.0.7)
|
activesupport (= 3.2.5)
|
||||||
activesupport (= 3.0.7)
|
arel (~> 3.0.2)
|
||||||
arel (~> 2.0.2)
|
tzinfo (~> 0.3.29)
|
||||||
tzinfo (~> 0.3.23)
|
activeresource (3.2.5)
|
||||||
activeresource (3.0.7)
|
activemodel (= 3.2.5)
|
||||||
activemodel (= 3.0.7)
|
activesupport (= 3.2.5)
|
||||||
activesupport (= 3.0.7)
|
activesupport (3.2.5)
|
||||||
activesupport (3.0.7)
|
i18n (~> 0.6)
|
||||||
archive-tar-minitar (0.5.2)
|
multi_json (~> 1.0)
|
||||||
arel (2.0.10)
|
addressable (2.2.8)
|
||||||
autotest (4.4.6)
|
arel (3.0.2)
|
||||||
ZenTest (>= 4.4.1)
|
bcrypt-ruby (3.0.1)
|
||||||
bcrypt-ruby (2.1.4)
|
bson (1.5.2)
|
||||||
bson (1.3.1)
|
bson_ext (1.5.2)
|
||||||
bson_ext (1.3.1)
|
bson (= 1.5.2)
|
||||||
builder (2.1.2)
|
builder (3.0.0)
|
||||||
bushido (0.0.14)
|
cancan (1.6.7)
|
||||||
highline (>= 1.6.1)
|
capybara (1.1.2)
|
||||||
json (>= 1.4.6)
|
|
||||||
rest-client (>= 1.6.1)
|
|
||||||
capybara (0.4.0)
|
|
||||||
celerity (>= 0.7.9)
|
|
||||||
culerity (>= 0.2.4)
|
|
||||||
mime-types (>= 1.16)
|
mime-types (>= 1.16)
|
||||||
nokogiri (>= 1.3.3)
|
nokogiri (>= 1.3.3)
|
||||||
rack (>= 1.0.0)
|
rack (>= 1.0.0)
|
||||||
rack-test (>= 0.5.4)
|
rack-test (>= 0.5.4)
|
||||||
selenium-webdriver (>= 0.0.27)
|
selenium-webdriver (~> 2.0)
|
||||||
xpath (~> 0.1.2)
|
xpath (~> 0.1.4)
|
||||||
celerity (0.8.9)
|
carrierwave (0.6.2)
|
||||||
childprocess (0.1.9)
|
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.3.2)
|
||||||
ffi (~> 1.0.6)
|
ffi (~> 1.0.6)
|
||||||
columnize (0.3.2)
|
chunky_png (1.2.5)
|
||||||
configuration (1.2.0)
|
codemirror-rails (2.24)
|
||||||
crack (0.1.8)
|
railties (~> 3.0)
|
||||||
cucumber (0.8.5)
|
coffee-rails (3.2.2)
|
||||||
builder (~> 2.1.2)
|
coffee-script (>= 2.2.0)
|
||||||
diff-lcs (~> 1.1.2)
|
railties (~> 3.2.0)
|
||||||
gherkin (~> 2.1.4)
|
coffee-script (2.2.0)
|
||||||
json_pure (~> 1.4.3)
|
coffee-script-source
|
||||||
term-ansicolor (~> 1.0.4)
|
execjs
|
||||||
cucumber-rails (0.3.2)
|
coffee-script-source (1.3.3)
|
||||||
cucumber (>= 0.8.0)
|
compass (0.12.1)
|
||||||
culerity (0.2.15)
|
chunky_png (~> 1.2)
|
||||||
custom_fields (1.0.0.beta.13)
|
fssm (>= 0.2.7)
|
||||||
activesupport (>= 3.0.7)
|
sass (~> 3.1)
|
||||||
locomotive_carrierwave
|
compass-rails (1.0.2)
|
||||||
mongoid (~> 2.0.1)
|
compass (>= 0.12.0, < 0.14)
|
||||||
daemons (1.1.3)
|
cucumber (1.2.1)
|
||||||
database_cleaner (0.6.7)
|
builder (>= 2.1.2)
|
||||||
delayed_job (2.1.4)
|
diff-lcs (>= 1.1.3)
|
||||||
activesupport (~> 3.0)
|
gherkin (~> 2.11.0)
|
||||||
daemons
|
json (>= 1.4.6)
|
||||||
delayed_job_mongoid (1.0.2)
|
cucumber-rails (1.3.0)
|
||||||
delayed_job (~> 2.1.1)
|
capybara (>= 1.1.2)
|
||||||
mongoid (~> 2.0.0.rc)
|
cucumber (>= 1.1.8)
|
||||||
devise (1.1.3)
|
nokogiri (>= 1.5.0)
|
||||||
bcrypt-ruby (~> 2.1.2)
|
custom_fields (2.0.0.rc12)
|
||||||
warden (~> 0.10.7)
|
activesupport (~> 3.2.1)
|
||||||
diff-lcs (1.1.2)
|
carrierwave-mongoid (~> 0.2.1)
|
||||||
erubis (2.6.6)
|
mongoid (~> 2.4.9)
|
||||||
abstract (>= 1.0.0)
|
database_cleaner (0.8.0)
|
||||||
excon (0.6.3)
|
devise (2.1.0)
|
||||||
factory_girl (1.3.3)
|
bcrypt-ruby (~> 3.0)
|
||||||
factory_girl_rails (1.0.1)
|
orm_adapter (~> 0.0.7)
|
||||||
factory_girl (~> 1.3)
|
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.12)
|
||||||
|
rack
|
||||||
|
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)
|
railties (>= 3.0.0)
|
||||||
ffi (1.0.9)
|
faye-websocket (0.4.5)
|
||||||
fog (0.3.7)
|
eventmachine (>= 0.12.0)
|
||||||
|
ffi (1.0.11)
|
||||||
|
flash_cookie_session (1.1.3)
|
||||||
|
rails (~> 3.0)
|
||||||
|
fog (1.3.1)
|
||||||
builder
|
builder
|
||||||
excon (>= 0.2.3)
|
excon (~> 0.13.0)
|
||||||
formatador (>= 0.0.15)
|
formatador (~> 0.2.0)
|
||||||
json
|
|
||||||
mime-types
|
mime-types
|
||||||
net-ssh (~> 2.0.23)
|
multi_json (~> 1.0)
|
||||||
nokogiri (~> 1.4.3.1)
|
net-scp (~> 1.0.4)
|
||||||
|
net-ssh (>= 2.1.3)
|
||||||
|
nokogiri (~> 1.5.0)
|
||||||
ruby-hmac
|
ruby-hmac
|
||||||
formatador (0.1.4)
|
formatador (0.2.3)
|
||||||
formtastic (1.2.3)
|
formtastic (2.0.2)
|
||||||
actionpack (>= 2.3.7)
|
rails (~> 3.0)
|
||||||
activesupport (>= 2.3.7)
|
fssm (0.2.9)
|
||||||
i18n (~> 0.4)
|
gherkin (2.11.0)
|
||||||
gherkin (2.1.5)
|
json (>= 1.4.6)
|
||||||
trollop (~> 1.16.2)
|
haml (3.1.6)
|
||||||
growl-glue (1.0.7)
|
highline (1.6.12)
|
||||||
haml (3.0.25)
|
hike (1.2.1)
|
||||||
has_scope (0.5.0)
|
http_parser.rb (0.5.3)
|
||||||
heroku (1.19.1)
|
httparty (0.8.3)
|
||||||
activesupport (>= 2.1.0)
|
multi_json (~> 1.0)
|
||||||
launchy (~> 0.3.2)
|
multi_xml
|
||||||
rest-client (< 1.7.0, >= 1.4.0)
|
i18n (0.6.0)
|
||||||
highline (1.6.2)
|
journey (1.0.3)
|
||||||
httparty (0.7.7)
|
jquery-rails (1.0.19)
|
||||||
crack (= 0.1.8)
|
railties (~> 3.0)
|
||||||
i18n (0.5.0)
|
thor (~> 0.14)
|
||||||
inherited_resources (1.1.2)
|
json (1.7.3)
|
||||||
has_scope (~> 0.5.0)
|
json_spec (1.0.3)
|
||||||
responders (~> 0.6.0)
|
multi_json (~> 1.0)
|
||||||
jammit (0.6.3)
|
rspec (~> 2.0)
|
||||||
yui-compressor (>= 0.9.3)
|
kaminari (0.13.0)
|
||||||
json (1.5.1)
|
actionpack (>= 3.0.0)
|
||||||
json_pure (1.4.6)
|
activesupport (>= 3.0.0)
|
||||||
kgio (2.4.1)
|
railties (>= 3.0.0)
|
||||||
launchy (0.3.7)
|
kgio (2.7.4)
|
||||||
configuration (>= 0.0.5)
|
launchy (2.1.0)
|
||||||
rake (>= 0.8.1)
|
addressable (~> 2.2.6)
|
||||||
linecache (0.43)
|
libwebsocket (0.1.3)
|
||||||
linecache19 (0.5.12)
|
addressable
|
||||||
ruby_core_source (>= 0.1.4)
|
locomotive-aloha-rails (0.20.1.4)
|
||||||
locomotive_carrierwave (0.5.0.1.beta3)
|
actionpack (~> 3.2.1)
|
||||||
activesupport (~> 3.0)
|
locomotive-mongoid-tree (0.6.2)
|
||||||
locomotive_jammit-s3 (0.5.4.4)
|
mongoid (~> 2.0)
|
||||||
jammit (>= 0.5.4)
|
locomotive-tinymce-rails (3.4.7.2)
|
||||||
mimemagic (>= 0.1.7)
|
actionpack (~> 3.0)
|
||||||
s3 (>= 0.3.7)
|
|
||||||
locomotive_liquid (2.2.2)
|
locomotive_liquid (2.2.2)
|
||||||
locomotive_mongoid_acts_as_tree (0.1.5.5)
|
mail (2.4.4)
|
||||||
mongoid (~> 2.0.0.rc.7)
|
|
||||||
mail (2.2.19)
|
|
||||||
activesupport (>= 2.3.6)
|
|
||||||
i18n (>= 0.4.0)
|
i18n (>= 0.4.0)
|
||||||
mime-types (~> 1.16)
|
mime-types (~> 1.16)
|
||||||
treetop (~> 1.4.8)
|
treetop (~> 1.4.8)
|
||||||
mime-types (1.16)
|
mime-types (1.18)
|
||||||
mimemagic (0.1.8)
|
|
||||||
mimetype-fu (0.1.2)
|
mimetype-fu (0.1.2)
|
||||||
mongo (1.3.1)
|
mocha (0.9.12)
|
||||||
bson (>= 1.3.1)
|
mongo (1.5.2)
|
||||||
mongoid (2.0.2)
|
bson (= 1.5.2)
|
||||||
activemodel (~> 3.0)
|
mongoid (2.4.11)
|
||||||
mongo (~> 1.3)
|
activemodel (~> 3.1)
|
||||||
|
mongo (<= 1.6.2)
|
||||||
tzinfo (~> 0.3.22)
|
tzinfo (~> 0.3.22)
|
||||||
net-ssh (2.0.24)
|
multi_json (1.3.6)
|
||||||
nokogiri (1.4.3.1)
|
multi_xml (0.5.1)
|
||||||
open4 (1.0.1)
|
net-scp (1.0.4)
|
||||||
pickle (0.4.7)
|
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)
|
cucumber (>= 0.8)
|
||||||
rake
|
rake
|
||||||
polyglot (0.3.1)
|
poltergeist (0.6.0)
|
||||||
proxies (0.2.1)
|
capybara (~> 1.0)
|
||||||
rack (1.2.3)
|
childprocess (~> 0.3)
|
||||||
rack-mount (0.6.14)
|
faye-websocket (~> 0.4, >= 0.4.4)
|
||||||
rack (>= 1.0.0)
|
http_parser.rb (~> 0.5.3)
|
||||||
rack-test (0.5.7)
|
multi_json (~> 1.0)
|
||||||
rack (>= 1.0)
|
polyglot (0.3.3)
|
||||||
rails (3.0.7)
|
rack (1.4.1)
|
||||||
actionmailer (= 3.0.7)
|
rack-cache (1.2)
|
||||||
actionpack (= 3.0.7)
|
rack (>= 0.4)
|
||||||
activerecord (= 3.0.7)
|
rack-ssl (1.3.2)
|
||||||
activeresource (= 3.0.7)
|
|
||||||
activesupport (= 3.0.7)
|
|
||||||
bundler (~> 1.0)
|
|
||||||
railties (= 3.0.7)
|
|
||||||
railties (3.0.7)
|
|
||||||
actionpack (= 3.0.7)
|
|
||||||
activesupport (= 3.0.7)
|
|
||||||
rake (>= 0.8.7)
|
|
||||||
thor (~> 0.14.4)
|
|
||||||
rake (0.8.7)
|
|
||||||
responders (0.6.4)
|
|
||||||
rest-client (1.6.1)
|
|
||||||
mime-types (>= 1.16)
|
|
||||||
rmagick (2.12.2)
|
|
||||||
rspec (2.3.0)
|
|
||||||
rspec-core (~> 2.3.0)
|
|
||||||
rspec-expectations (~> 2.3.0)
|
|
||||||
rspec-mocks (~> 2.3.0)
|
|
||||||
rspec-core (2.3.1)
|
|
||||||
rspec-expectations (2.3.0)
|
|
||||||
diff-lcs (~> 1.1.2)
|
|
||||||
rspec-mocks (2.3.0)
|
|
||||||
rspec-rails (2.3.1)
|
|
||||||
actionpack (~> 3.0)
|
|
||||||
activesupport (~> 3.0)
|
|
||||||
railties (~> 3.0)
|
|
||||||
rspec (~> 2.3.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)
|
|
||||||
ruby-hmac (0.4.0)
|
|
||||||
ruby_core_source (0.1.5)
|
|
||||||
archive-tar-minitar (>= 0.5.2)
|
|
||||||
rubyzip (0.9.4)
|
|
||||||
s3 (0.3.8)
|
|
||||||
proxies (~> 0.2.0)
|
|
||||||
selenium-webdriver (0.2.0)
|
|
||||||
childprocess (>= 0.1.7)
|
|
||||||
ffi (>= 1.0.7)
|
|
||||||
json_pure
|
|
||||||
rubyzip
|
|
||||||
spork (0.8.5)
|
|
||||||
term-ansicolor (1.0.5)
|
|
||||||
thor (0.14.6)
|
|
||||||
treetop (1.4.9)
|
|
||||||
polyglot (>= 0.3.1)
|
|
||||||
trollop (1.16.2)
|
|
||||||
tzinfo (0.3.27)
|
|
||||||
unicorn (3.6.2)
|
|
||||||
kgio (~> 2.3)
|
|
||||||
rack
|
rack
|
||||||
warden (0.10.7)
|
rack-test (0.6.1)
|
||||||
rack (>= 1.0.0)
|
rack (>= 1.0)
|
||||||
will_paginate (2.3.15)
|
rails (3.2.5)
|
||||||
yui-compressor (0.9.6)
|
actionmailer (= 3.2.5)
|
||||||
POpen4 (>= 0.1.4)
|
actionpack (= 3.2.5)
|
||||||
|
activerecord (= 3.2.5)
|
||||||
|
activeresource (= 3.2.5)
|
||||||
|
activesupport (= 3.2.5)
|
||||||
|
bundler (~> 1.0)
|
||||||
|
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.6, < 2.0)
|
||||||
|
raindrops (0.9.0)
|
||||||
|
rake (0.9.2.2)
|
||||||
|
rdoc (3.12)
|
||||||
|
json (~> 1.4)
|
||||||
|
responders (0.6.5)
|
||||||
|
rmagick (2.12.2)
|
||||||
|
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.8.0)
|
||||||
|
rspec-expectations (2.8.0)
|
||||||
|
diff-lcs (~> 1.1.2)
|
||||||
|
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)
|
||||||
|
rubyzip (0.9.8)
|
||||||
|
sanitize (2.0.3)
|
||||||
|
nokogiri (>= 1.4.4, < 1.6)
|
||||||
|
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)
|
||||||
|
libwebsocket (~> 0.1.3)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
rubyzip
|
||||||
|
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.33)
|
||||||
|
uglifier (1.2.4)
|
||||||
|
execjs (>= 0.3.0)
|
||||||
|
multi_json (>= 1.0.2)
|
||||||
|
unicorn (4.3.1)
|
||||||
|
kgio (~> 2.6)
|
||||||
|
rack
|
||||||
|
raindrops (~> 0.7)
|
||||||
|
unidecoder (1.1.1)
|
||||||
|
warden (1.1.1)
|
||||||
|
rack (>= 1.0)
|
||||||
|
xpath (0.1.4)
|
||||||
|
nokogiri (~> 1.3)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
ruby
|
ruby
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
RedCloth (= 4.2.7)
|
|
||||||
SystemTimer
|
|
||||||
ZenTest
|
|
||||||
actionmailer-with-request
|
|
||||||
autotest
|
|
||||||
bson_ext (~> 1.3.0)
|
|
||||||
bushido
|
|
||||||
bushido_stub!
|
|
||||||
capybara
|
capybara
|
||||||
cucumber (= 0.8.5)
|
coffee-rails (~> 3.2.2)
|
||||||
|
compass-rails
|
||||||
cucumber-rails
|
cucumber-rails
|
||||||
custom_fields (= 1.0.0.beta.13)
|
|
||||||
database_cleaner
|
database_cleaner
|
||||||
delayed_job (= 2.1.4)
|
factory_girl_rails (~> 1.6.0)
|
||||||
delayed_job_mongoid (= 1.0.2)
|
json_spec
|
||||||
devise (= 1.1.3)
|
|
||||||
factory_girl_rails
|
|
||||||
fog (= 0.3.7)
|
|
||||||
formtastic (~> 1.2.3)
|
|
||||||
growl-glue
|
|
||||||
haml (= 3.0.25)
|
|
||||||
heroku (= 1.19.1)
|
|
||||||
httparty (>= 0.6.1)
|
|
||||||
inherited_resources (~> 1.1.2)
|
|
||||||
launchy
|
launchy
|
||||||
locomotive_carrierwave (= 0.5.0.1.beta3)
|
locomotive_cms!
|
||||||
locomotive_jammit-s3
|
mocha (= 0.9.12)
|
||||||
locomotive_liquid (= 2.2.2)
|
|
||||||
locomotive_mongoid_acts_as_tree (= 0.1.5.5)
|
|
||||||
mimetype-fu
|
|
||||||
mocha!
|
|
||||||
mongoid (~> 2.0.1)
|
|
||||||
pickle
|
pickle
|
||||||
rails (>= 3.0.7)
|
poltergeist
|
||||||
rake (= 0.8.7)
|
rspec-cells
|
||||||
rmagick (= 2.12.2)
|
rspec-rails (~> 2.8.0)
|
||||||
rspec-rails (= 2.3.1)
|
sass-rails (~> 3.2.4)
|
||||||
ruby-debug
|
shoulda-matchers
|
||||||
ruby-debug19
|
uglifier (~> 1.2.4)
|
||||||
rubyzip
|
|
||||||
spork
|
|
||||||
unicorn
|
unicorn
|
||||||
warden
|
xpath (~> 0.1.4)
|
||||||
will_paginate
|
|
||||||
xpath!
|
|
||||||
|
|
2
LICENSE
|
@ -1,6 +1,6 @@
|
||||||
== MIT License
|
== 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
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,14 +1,19 @@
|
||||||
h1. Locomotive CMS
|
h1. Locomotive CMS
|
||||||
|
|
||||||
|
"!https://secure.travis-ci.org/locomotivecms/engine.png!":http://travis-ci.org/locomotivecms/engine
|
||||||
|
|
||||||
|
|
||||||
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.
|
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
|
* managing as many websites as you want with one application instance
|
||||||
* nice looking UI (see http://www.locomotivecms.com for some screenshots)
|
* nice looking UI (see http://www.locomotivecms.com for some screenshots)
|
||||||
* flexible content types
|
* flexible content types
|
||||||
* playing smoothly with Heroku and MongoHQ
|
* content localization out of the box
|
||||||
* inline editing (beta)
|
* playing smoothly with Heroku, Bushido and MongoHQ
|
||||||
|
* inline editing (wip)
|
||||||
|
* API
|
||||||
|
|
||||||
h2. Strategy / Development status
|
h2. Strategy / Development status
|
||||||
|
|
||||||
|
@ -17,26 +22,53 @@ Now, our goal is to port our prototype to Rails 3 and migrate from mongomapper t
|
||||||
|
|
||||||
h2. Gems
|
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.7
|
* Rails 3.2.5
|
||||||
* Mongoid 2.0.1 (with MongoDB 1.6)
|
* Mongoid 2.4.9 (with MongoDB 2.0)
|
||||||
* Liquid
|
* Liquid
|
||||||
* Devise
|
* Devise
|
||||||
* Carrierwave
|
* Carrierwave
|
||||||
* Haml
|
* Haml
|
||||||
* Delayed job
|
* Formtastic
|
||||||
* Jammit-s3
|
* Cells
|
||||||
|
* Coffeescript / Backbone / SASS
|
||||||
|
|
||||||
h2. Installation
|
h2. Installation
|
||||||
|
|
||||||
See the "official website":http://www.locomotivecms.com
|
See the "official website":http://www.locomotivecms.com
|
||||||
|
|
||||||
|
h2. Upgrading
|
||||||
|
|
||||||
|
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 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/locomotivecms
|
||||||
|
|
||||||
|
h2. Contributing to Locomotive
|
||||||
|
|
||||||
|
Locomotive CMS is an open source project, we encourage contributions. If you have found a bug and want to contribute a fix, or have a new feature you would like to add, follow the steps below to get your patch into the project:
|
||||||
|
|
||||||
|
* 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 "Google group":https://groups.google.com/forum/?fromgroups#!forum/locomotivecms first to make sure it fits into the goals of the project.
|
||||||
|
|
||||||
h2. Team
|
h2. Team
|
||||||
|
|
||||||
* Developers: "Didier Lafforgue":http://www.nocoffee.fr, "Jacques Crocker":http://www.railsjedi.com
|
* 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, "Mario Visic":http://www.mariovisic.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)
|
* 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
|
* UI Designer: "Sacha Greif":http://www.sachagreif.com
|
||||||
|
* IE maintainer: "Alex Sanford":https://github.com/alexsanford
|
||||||
|
|
||||||
h2. Support
|
h2. Support
|
||||||
|
|
||||||
|
@ -52,4 +84,5 @@ h2. Contact
|
||||||
|
|
||||||
Feel free to contact me at didier at nocoffee dot fr.
|
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
|
||||||
|
...
|
||||||
|
|
43
Rakefile
|
@ -1,20 +1,33 @@
|
||||||
require File.expand_path('../config/application', __FILE__)
|
#!/usr/bin/env rake
|
||||||
|
begin
|
||||||
require 'rake'
|
require 'bundler/setup'
|
||||||
require 'rake/testtask'
|
rescue LoadError
|
||||||
require 'rake/rdoctask'
|
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
||||||
require 'rake/gempackagetask'
|
|
||||||
|
|
||||||
Locomotive::Application.load_tasks
|
|
||||||
|
|
||||||
gemspec = eval(File.read('locomotive_cms.gemspec'))
|
|
||||||
Rake::GemPackageTask.new(gemspec) do |pkg|
|
|
||||||
pkg.gem_spec = gemspec
|
|
||||||
end
|
end
|
||||||
|
|
||||||
desc "build the gem and release it to rubygems.org"
|
APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
|
||||||
task :release => :gem do
|
|
||||||
sh "gem push pkg/locomotive_cms-#{gemspec.version}.gem"
|
# === Locomotive tasks ===
|
||||||
|
load 'lib/tasks/locomotive.rake'
|
||||||
|
|
||||||
|
# === Gems install tasks ===
|
||||||
|
Bundler::GemHelper.install_tasks
|
||||||
|
|
||||||
|
# === Travis
|
||||||
|
task :travis do
|
||||||
|
["rspec spec", "cucumber -b"].each do |cmd|
|
||||||
|
puts "Starting to run #{cmd}..."
|
||||||
|
system("export DISPLAY=:99.0 && bundle exec #{cmd}")
|
||||||
|
raise "#{cmd} failed!" unless $?.exitstatus == 0
|
||||||
|
end
|
||||||
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]
|
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 |
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 |
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 |
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 |
After Width: | Height: | Size: 639 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 |
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 |
After Width: | Height: | Size: 611 B |
After Width: | Height: | Size: 427 B |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 403 B |
After Width: | Height: | Size: 302 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 |
After Width: | Height: | Size: 720 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
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 |
After Width: | Height: | Size: 112 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
|