red_base 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +339 -0
  3. data/README.rdoc +40 -0
  4. data/Rakefile +42 -0
  5. data/app/assets/fonts/DroidNaskh-Bold.ttf +0 -0
  6. data/app/assets/fonts/DroidNaskh-Regular.ttf +0 -0
  7. data/app/assets/fonts/OpenSans-Bold.ttf +0 -0
  8. data/app/assets/fonts/OpenSans-BoldItalic.ttf +0 -0
  9. data/app/assets/fonts/OpenSans-ExtraBold.ttf +0 -0
  10. data/app/assets/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  11. data/app/assets/fonts/OpenSans-Italic.ttf +0 -0
  12. data/app/assets/fonts/OpenSans-Light.ttf +0 -0
  13. data/app/assets/fonts/OpenSans-LightItalic.ttf +0 -0
  14. data/app/assets/fonts/OpenSans-Regular.ttf +0 -0
  15. data/app/assets/fonts/OpenSans-Semibold.ttf +0 -0
  16. data/app/assets/fonts/OpenSans-SemiboldItalic.ttf +0 -0
  17. data/app/assets/javascripts/red_base/application.js +20 -0
  18. data/app/assets/javascripts/red_base/dashboard/angular.js +9 -0
  19. data/app/assets/javascripts/red_base/dashboard/app.js +65 -0
  20. data/app/assets/javascripts/red_base/dashboard/application.js.erb +24 -0
  21. data/app/assets/javascripts/red_base/dashboard/functions.js.erb +91 -0
  22. data/app/assets/javascripts/red_base/dashboard/init.js +38 -0
  23. data/app/assets/javascripts/red_base/dashboard/init.js~ +0 -0
  24. data/app/assets/javascripts/red_base/dashboard/lib/angular-animate.js +1226 -0
  25. data/app/assets/javascripts/red_base/dashboard/lib/angular-gettext.js +202 -0
  26. data/app/assets/javascripts/red_base/dashboard/lib/angular-resource.js +578 -0
  27. data/app/assets/javascripts/red_base/dashboard/lib/angular-route.js +880 -0
  28. data/app/assets/javascripts/red_base/dashboard/lib/angular.js +20031 -0
  29. data/app/assets/javascripts/red_base/dashboard/lib/lodash.underscore.js +4893 -0
  30. data/app/assets/javascripts/red_base/dashboard/lib/restangular.js +1066 -0
  31. data/app/assets/javascripts/red_base/dashboard/locale/translations.js +5 -0
  32. data/app/assets/javascripts/red_base/dashboard/modules/anim.js +32 -0
  33. data/app/assets/javascripts/red_base/dashboard/modules/api.js +32 -0
  34. data/app/assets/javascripts/red_base/dashboard/modules/auth/auth.js +34 -0
  35. data/app/assets/javascripts/red_base/dashboard/modules/auth/group.js +174 -0
  36. data/app/assets/javascripts/red_base/dashboard/modules/auth/user.js +122 -0
  37. data/app/assets/javascripts/red_base/dashboard/modules/list-view.js +293 -0
  38. data/app/assets/javascripts/red_base/dashboard/modules/logs.js +41 -0
  39. data/app/assets/javascripts/red_base/dashboard/modules/modules.js +50 -0
  40. data/app/assets/javascripts/red_base/dashboard/modules/nav.js.erb +92 -0
  41. data/app/assets/javascripts/red_base/dashboard/templates/application.handlebars.erb +42 -0
  42. data/app/assets/javascripts/red_base/dashboard/templates/auth/groups/details.handlebars.erb +15 -0
  43. data/app/assets/javascripts/red_base/dashboard/templates/auth/groups/index.handlebars.erb +7 -0
  44. data/app/assets/javascripts/red_base/dashboard/templates/auth/groups/new.handlebars.erb +39 -0
  45. data/app/assets/javascripts/red_base/dashboard/templates/auth/index.handlebars.erb +31 -0
  46. data/app/assets/javascripts/red_base/dashboard/templates/auth/users/details.handlebars.erb +15 -0
  47. data/app/assets/javascripts/red_base/dashboard/templates/auth/users/index.handlebars.erb +11 -0
  48. data/app/assets/javascripts/red_base/dashboard/templates/auth/users/new.handlebars.erb +33 -0
  49. data/app/assets/javascripts/red_base/dashboard/templates/components/list-view.handlebars.erb +59 -0
  50. data/app/assets/javascripts/red_base/dashboard/templates/components/model-form.handlebars.erb +3 -0
  51. data/app/assets/javascripts/red_base/dashboard/templates/modules.handlebars.erb +15 -0
  52. data/app/assets/javascripts/red_base/dashboard/templates/navigation.handlebars.erb +43 -0
  53. data/app/assets/javascripts/red_base/dashboard/templates/widgets.handlebars +23 -0
  54. data/app/assets/javascripts/red_base/dashboard/variables.js.erb +17 -0
  55. data/app/assets/javascripts/red_base/groups.js +2 -0
  56. data/app/assets/javascripts/red_base/home.js +2 -0
  57. data/app/assets/javascripts/red_base/i18n.js +13 -0
  58. data/app/assets/javascripts/red_base/locale/en.json +27 -0
  59. data/app/assets/javascripts/red_base/locale/fa.json +27 -0
  60. data/app/assets/javascripts/red_base/users.js +2 -0
  61. data/app/assets/stylesheets/red_base/base.css.scss +402 -0
  62. data/app/assets/stylesheets/red_base/dashboard/dashboard.css.scss +169 -0
  63. data/app/assets/stylesheets/red_base/dashboard/ltr/application.css +21 -0
  64. data/app/assets/stylesheets/red_base/dashboard/ltr/base.css.scss.erb +28 -0
  65. data/app/assets/stylesheets/red_base/dashboard/ltr/base.css.scss~ +15 -0
  66. data/app/assets/stylesheets/red_base/dashboard/ltr/buttons.css.scss.erb +48 -0
  67. data/app/assets/stylesheets/red_base/dashboard/ltr/direction.css.scss +38 -0
  68. data/app/assets/stylesheets/red_base/dashboard/ltr/foundation_and_overrides.css.scss +1014 -0
  69. data/app/assets/stylesheets/red_base/dashboard/rtl/application.css +21 -0
  70. data/app/assets/stylesheets/red_base/dashboard/rtl/base.css.scss.erb +31 -0
  71. data/app/assets/stylesheets/red_base/dashboard/rtl/base.css.scss~ +1 -0
  72. data/app/assets/stylesheets/red_base/dashboard/rtl/base.css_flymake.scss +25 -0
  73. data/app/assets/stylesheets/red_base/dashboard/rtl/buttons.css.scss.erb +45 -0
  74. data/app/assets/stylesheets/red_base/dashboard/rtl/direction.css.scss +37 -0
  75. data/app/assets/stylesheets/red_base/dashboard/rtl/foundation_and_overrides.css.scss +1014 -0
  76. data/app/assets/stylesheets/red_base/dashboard/sidebar.css.scss +93 -0
  77. data/app/assets/stylesheets/red_base/devise.css.scss +34 -0
  78. data/app/assets/stylesheets/red_base/groups.css +4 -0
  79. data/app/assets/stylesheets/red_base/home.css.scss +14 -0
  80. data/app/assets/stylesheets/red_base/ltr/application.css +20 -0
  81. data/app/assets/stylesheets/red_base/ltr/buttons.css.scss.erb +48 -0
  82. data/app/assets/stylesheets/red_base/ltr/foundation_and_overrides.scss.erb +1012 -0
  83. data/app/assets/stylesheets/red_base/mixins.css.scss +15 -0
  84. data/app/assets/stylesheets/red_base/mixins.css.scss~ +7 -0
  85. data/app/assets/stylesheets/red_base/rtl/application.css +20 -0
  86. data/app/assets/stylesheets/red_base/rtl/buttons.css.scss.erb +48 -0
  87. data/app/assets/stylesheets/red_base/rtl/foundation_and_overrides.scss.erb +1012 -0
  88. data/app/assets/stylesheets/red_base/users.css +4 -0
  89. data/app/assets/stylesheets/red_base/variables.css.scss +100 -0
  90. data/app/controllers/red_base/api/v1/groups_controller.rb +65 -0
  91. data/app/controllers/red_base/api/v1/logs_controller.rb +12 -0
  92. data/app/controllers/red_base/api/v1/permissions_controller.rb +17 -0
  93. data/app/controllers/red_base/api/v1/users_controller.rb +54 -0
  94. data/app/controllers/red_base/api_controller.rb +51 -0
  95. data/app/controllers/red_base/application_controller.rb +34 -0
  96. data/app/controllers/red_base/dashboard_controller.rb +40 -0
  97. data/app/controllers/red_base/home_controller.rb +19 -0
  98. data/app/controllers/red_base/omniauth/callbacks_controller.rb +43 -0
  99. data/app/controllers/red_base/users/omniauth_callbacks_controller.rb~ +2 -0
  100. data/app/helpers/red_base/application_helper.rb +4 -0
  101. data/app/helpers/red_base/dashboard_helper.rb +5 -0
  102. data/app/helpers/red_base/groups_helper.rb +4 -0
  103. data/app/helpers/red_base/home_helper.rb +4 -0
  104. data/app/helpers/red_base/users_helper.rb +4 -0
  105. data/app/models/ability.rb +39 -0
  106. data/app/models/red_base/group.rb +27 -0
  107. data/app/models/red_base/permission.rb +15 -0
  108. data/app/models/red_base/user.rb +77 -0
  109. data/app/views/angularjs_templates/auth/groups/details.html +21 -0
  110. data/app/views/angularjs_templates/auth/groups/index.html +5 -0
  111. data/app/views/angularjs_templates/auth/groups/new.html +40 -0
  112. data/app/views/angularjs_templates/auth/index.html +30 -0
  113. data/app/views/angularjs_templates/auth/users/details.html +28 -0
  114. data/app/views/angularjs_templates/auth/users/index.html +6 -0
  115. data/app/views/angularjs_templates/auth/users/new.html +45 -0
  116. data/app/views/angularjs_templates/index.html +8 -0
  117. data/app/views/angularjs_templates/list-view/index.html +66 -0
  118. data/app/views/angularjs_templates/locale/fa.po +25 -0
  119. data/app/views/angularjs_templates/locale/templates.pot +24 -0
  120. data/app/views/angularjs_templates/logs/index.html +6 -0
  121. data/app/views/angularjs_templates/modules.html +17 -0
  122. data/app/views/angularjs_templates/nav.html.erb +38 -0
  123. data/app/views/angularjs_templates/nav.html.erb~ +43 -0
  124. data/app/views/devise/confirmations/new.html.erb +34 -0
  125. data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  126. data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  127. data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  128. data/app/views/devise/passwords/edit.html.erb +44 -0
  129. data/app/views/devise/passwords/new.html.erb +32 -0
  130. data/app/views/devise/registrations/edit.html.erb +29 -0
  131. data/app/views/devise/registrations/new.html.erb +91 -0
  132. data/app/views/devise/sessions/new.html.erb +98 -0
  133. data/app/views/devise/shared/_links.erb +25 -0
  134. data/app/views/devise/unlocks/new.html.erb +30 -0
  135. data/app/views/layouts/red_base/application.html.erb +90 -0
  136. data/app/views/layouts/red_base/dashboard.html.erb +21 -0
  137. data/app/views/red_base/api/v1/groups/create.json.jbuilder +4 -0
  138. data/app/views/red_base/api/v1/groups/destroy.html.erb +2 -0
  139. data/app/views/red_base/api/v1/groups/destroy.json.jbuilder +1 -0
  140. data/app/views/red_base/api/v1/groups/edit.html.erb +2 -0
  141. data/app/views/red_base/api/v1/groups/index.html.erb +2 -0
  142. data/app/views/red_base/api/v1/groups/index.json.jbuilder +6 -0
  143. data/app/views/red_base/api/v1/groups/new.html.erb +2 -0
  144. data/app/views/red_base/api/v1/groups/show.html.erb +2 -0
  145. data/app/views/red_base/api/v1/groups/show.json.jbuilder +5 -0
  146. data/app/views/red_base/api/v1/groups/update.json.jbuilder +4 -0
  147. data/app/views/red_base/api/v1/logs/index.json.jbuilder +1 -0
  148. data/app/views/red_base/api/v1/permissions/index.json.jbuilder +1 -0
  149. data/app/views/red_base/api/v1/users/create.html.erb +2 -0
  150. data/app/views/red_base/api/v1/users/create.json.jbuilder +1 -0
  151. data/app/views/red_base/api/v1/users/destroy.json.jbuilder +1 -0
  152. data/app/views/red_base/api/v1/users/distroy.html.erb +2 -0
  153. data/app/views/red_base/api/v1/users/edit.html.erb +2 -0
  154. data/app/views/red_base/api/v1/users/index.html.erb +2 -0
  155. data/app/views/red_base/api/v1/users/index.json.jbuilder +4 -0
  156. data/app/views/red_base/api/v1/users/show.html.erb +2 -0
  157. data/app/views/red_base/api/v1/users/show.json.jbuilder +2 -0
  158. data/app/views/red_base/api/v1/users/update.json.jbuilder +1 -0
  159. data/app/views/red_base/dashboard/index.html.erb +37 -0
  160. data/app/views/red_base/home/index.html.erb +119 -0
  161. data/config/initializers/devise.rb +28 -0
  162. data/config/locales/devise.en.yml +59 -0
  163. data/config/locales/devise.fa.yml +56 -0
  164. data/config/locales/fa/LC_MESSAGES/red_base.mo +0 -0
  165. data/config/locales/fa/messages.mo +0 -0
  166. data/config/locales/fa/red_base.po +181 -0
  167. data/config/locales/red_base.pot +181 -0
  168. data/config/routes.rb +33 -0
  169. data/db/migrate/20131013091000_devise_create_red_base_users.rb +64 -0
  170. data/db/migrate/20131020124701_create_red_base_groups.rb +9 -0
  171. data/db/migrate/20131021170923_create_red_base_permissions.rb +10 -0
  172. data/db/migrate/20131123120422_add_permissions_groups_table.rb +8 -0
  173. data/db/seeds.rb +15 -0
  174. data/lib/devise_patch.rb~ +5 -0
  175. data/lib/generators/red_base/USAGE +8 -0
  176. data/lib/generators/red_base/angularjs_resource_generator.rb +74 -0
  177. data/lib/generators/red_base/install_all_generator.rb +38 -0
  178. data/lib/generators/red_base/install_generator.rb +42 -0
  179. data/lib/generators/red_base/install_specs_generator.rb +48 -0
  180. data/lib/generators/red_base/js_scaffold_generator.rb +232 -0
  181. data/lib/generators/red_base/templates/README +41 -0
  182. data/lib/generators/red_base/templates/README~ +4 -0
  183. data/lib/generators/red_base/templates/SPECS +13 -0
  184. data/lib/generators/red_base/templates/angularjs/details.html.erb +20 -0
  185. data/lib/generators/red_base/templates/angularjs/details.html.erb~ +0 -0
  186. data/lib/generators/red_base/templates/angularjs/index.html.erb +59 -0
  187. data/lib/generators/red_base/templates/angularjs/module.js.erb +259 -0
  188. data/lib/generators/red_base/templates/angularjs/new.html.erb +43 -0
  189. data/lib/generators/red_base/templates/api/controller.rb.erb +54 -0
  190. data/lib/generators/red_base/templates/api/controller.rb.erb~ +37 -0
  191. data/lib/generators/red_base/templates/devise.rb +251 -0
  192. data/lib/generators/red_base/templates/devise.rb~ +238 -0
  193. data/lib/generators/red_base/templates/fast_gettext.rb +4 -0
  194. data/lib/generators/red_base/templates/features/api.feature +92 -0
  195. data/lib/generators/red_base/templates/features/api.step.rb +7 -0
  196. data/lib/generators/red_base/templates/features/step_definitions/email_steps.rb +206 -0
  197. data/lib/generators/red_base/templates/features/support/email_spec.rb +1 -0
  198. data/lib/generators/red_base/templates/features/support/env.rb +79 -0
  199. data/lib/generators/red_base/templates/formtastic.rb +76 -0
  200. data/lib/generators/red_base/templates/js_scaffold.README +25 -0
  201. data/lib/generators/red_base/templates/red_base.rb +14 -0
  202. data/lib/generators/red_base/templates/red_base.rb~ +251 -0
  203. data/lib/generators/red_base/templates/seeds.rb +1 -0
  204. data/lib/generators/red_base/templates/spec/factories/groups.rb +5 -0
  205. data/lib/generators/red_base/templates/spec/factories/users.rb +10 -0
  206. data/lib/generators/red_base/templates/spec/spec_helper.rb +69 -0
  207. data/lib/generators/red_base/templates/spec/support/devise.rb +3 -0
  208. data/lib/generators/red_base/templates/views/create.json.jbuilder.erb +2 -0
  209. data/lib/generators/red_base/templates/views/destroy.json.jbuilder.erb +1 -0
  210. data/lib/generators/red_base/templates/views/index.json.jbuilder.erb +10 -0
  211. data/lib/generators/red_base/templates/views/index.json.jbuilder.erb~ +0 -0
  212. data/lib/generators/red_base/templates/views/show.json.jbuilder.erb +6 -0
  213. data/lib/generators/red_base/templates/views/update.json.jbuilder.erb +6 -0
  214. data/lib/generators/red_base/views_generator.rb +41 -0
  215. data/lib/red_base/active_record.rb +78 -0
  216. data/lib/red_base/active_record.rb~ +0 -0
  217. data/lib/red_base/api/groups_api.rb +41 -0
  218. data/lib/red_base/api/permissions_api.rb +24 -0
  219. data/lib/red_base/api/root.rb +15 -0
  220. data/lib/red_base/api/users_api.rb +20 -0
  221. data/lib/red_base/api.rb +61 -0
  222. data/lib/red_base/cucumber/auth.rb +45 -0
  223. data/lib/red_base/cucumber/exceptions.rb +40 -0
  224. data/lib/red_base/cucumber/interaction.rb +43 -0
  225. data/lib/red_base/cucumber/query.rb +28 -0
  226. data/lib/red_base/cucumber/urls.rb +76 -0
  227. data/lib/red_base/cucumber.rb +25 -0
  228. data/lib/red_base/dashboard/controller.rb +42 -0
  229. data/lib/red_base/dashboard/module.rb +45 -0
  230. data/lib/red_base/dashboard/module.rb~ +25 -0
  231. data/lib/red_base/dashboard.rb +60 -0
  232. data/lib/red_base/dashboard.rb~ +18 -0
  233. data/lib/red_base/engine.rb +132 -0
  234. data/lib/red_base/exceptions.rb +26 -0
  235. data/lib/red_base/i18n.rb +35 -0
  236. data/lib/red_base/initialize.rb +7 -0
  237. data/lib/red_base/omniauth/callbacks.rb +58 -0
  238. data/lib/red_base/omniauth/callbakcs.rb~ +7 -0
  239. data/lib/red_base/omniauth.rb +24 -0
  240. data/lib/red_base/omniauth.rb~ +1 -0
  241. data/lib/red_base/plugins.rb +44 -0
  242. data/lib/red_base/version.rb +22 -0
  243. data/lib/red_base.rb +30 -0
  244. data/lib/tasks/grunt/Gruntfile.js +25 -0
  245. data/lib/tasks/red_base_tasks.rake +23 -0
  246. data/spec/dummy/README.rdoc +28 -0
  247. data/spec/dummy/Rakefile +6 -0
  248. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  249. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  250. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  251. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  252. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  253. data/spec/dummy/bin/bundle +3 -0
  254. data/spec/dummy/bin/rails +4 -0
  255. data/spec/dummy/bin/rake +4 -0
  256. data/spec/dummy/config/application.rb +23 -0
  257. data/spec/dummy/config/boot.rb +5 -0
  258. data/spec/dummy/config/database.yml +25 -0
  259. data/spec/dummy/config/environment.rb +5 -0
  260. data/spec/dummy/config/environments/development.rb +29 -0
  261. data/spec/dummy/config/environments/production.rb +80 -0
  262. data/spec/dummy/config/environments/test.rb +36 -0
  263. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  264. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  265. data/spec/dummy/config/initializers/inflections.rb +16 -0
  266. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  267. data/spec/dummy/config/initializers/secret_token.rb +12 -0
  268. data/spec/dummy/config/initializers/session_store.rb +3 -0
  269. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  270. data/spec/dummy/config/locales/en.yml +23 -0
  271. data/spec/dummy/config/routes.rb +4 -0
  272. data/spec/dummy/config.ru +4 -0
  273. data/spec/dummy/public/404.html +58 -0
  274. data/spec/dummy/public/422.html +58 -0
  275. data/spec/dummy/public/500.html +57 -0
  276. data/spec/dummy/public/favicon.ico +0 -0
  277. data/spec/spec_helper.rb +52 -0
  278. metadata +661 -0
@@ -0,0 +1,42 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Red Base - Basic website skel engine
3
+ # Copyright (C) 2012-2013 Yellowen
4
+ #
5
+ # This program is free software; you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation; either version 2 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License along
16
+ # with this program; if not, write to the Free Software Foundation, Inc.,
17
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
+ # -----------------------------------------------------------------------------
19
+
20
+ module RedBase
21
+ module Generators
22
+ class InstallGenerator < Rails::Generators::Base
23
+ source_root File.expand_path('../templates', __FILE__)
24
+
25
+ desc "Copy all the necessary files to use Red Base"
26
+ class_option :orm
27
+
28
+ def copy_init_files
29
+ template "devise.rb", "config/initializers/devise.rb"
30
+ template "red_base.rb", "config/initializers/red_base.rb"
31
+ template "fast_gettext.rb", "config/initializers/fast_gettext.rb"
32
+ template "formtastic.rb", "config/initializers/formstatic.rb"
33
+ template "seeds.rb", "db/seeds.rb"
34
+ end
35
+
36
+ def show_readme
37
+ readme "README" if behavior == :invoke
38
+ end
39
+
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,48 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Red Base - Basic website skel engine
3
+ # Copyright (C) 2012-2013 Yellowen
4
+ #
5
+ # This program is free software; you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation; either version 2 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License along
16
+ # with this program; if not, write to the Free Software Foundation, Inc.,
17
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
+ # -----------------------------------------------------------------------------
19
+
20
+ module RedBase
21
+ module Generators
22
+ class InstallSpecsGenerator < Rails::Generators::Base
23
+ source_root File.expand_path('../templates', __FILE__)
24
+
25
+ desc "Copy all the necessary files to install and use specs"
26
+
27
+ def install_gems
28
+ invoke "rspec:install"
29
+ invoke "cucumber:install", ["--capybara", "--rspec"]
30
+ end
31
+
32
+ def update_configurations
33
+ copy_file "features/step_definitions/email_steps.rb", "features/step_definitions/email_steps.rb"
34
+ copy_file "features/support/env.rb", "features/support/env.rb"
35
+ copy_file "spec/factories/groups.rb", "spec/factories/groups.rb"
36
+ copy_file "spec/factories/users.rb", "spec/factories/users.rb"
37
+ copy_file "spec/spec_helper.rb", "spec/spec_helper.rb"
38
+ copy_file "spec/support/devise.rb", "spec/support/devise.rb"
39
+ end
40
+
41
+ def show_readme
42
+ readme "SPECS" if behavior == :invoke
43
+ end
44
+
45
+
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,232 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Red Base - Basic website skel engine
3
+ # Copyright (C) 2012-2013 Yellowen
4
+ #
5
+ # This program is free software; you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation; either version 2 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License along
16
+ # with this program; if not, write to the Free Software Foundation, Inc.,
17
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
+ # -----------------------------------------------------------------------------
19
+
20
+ module RedBase
21
+ module Generators
22
+ class JsScaffoldGenerator < Rails::Generators::Base
23
+
24
+ include ActionView::Helpers::TextHelper
25
+
26
+ source_root File.expand_path('../templates', __FILE__)
27
+
28
+ argument :resource_name, :type => :string, :required => true
29
+ argument :resource_fields, type: :array, default: [], banner: "fields[:types]"
30
+ class_option :without_specs, :type => :boolean, :default => false
31
+ class_option :only_specs, :type => :boolean, :default => false
32
+ class_option :bulk_fields, :type => :string, :default => ""
33
+ class_option :no_bulk, :type => :boolean, :default => false
34
+ class_option :menu, :type => :string, :default => ""
35
+
36
+ desc "Create a new resource for client side application"
37
+ def create_module
38
+ unless options[:only_specs]
39
+ template "angularjs/module.js.erb", "#{angularjs_app_path}modules/#{resource_path}.js"
40
+ end
41
+ end
42
+
43
+ def create_template
44
+ unless options[:only_specs]
45
+ template "angularjs/index.html.erb", "app/views/angularjs_templates/#{resource.underscore}/index.html"
46
+ template "angularjs/new.html.erb", "app/views/angularjs_templates/#{resource.underscore}/new.html"
47
+ template "angularjs/details.html.erb", "app/views/angularjs_templates/#{resource.underscore}/details.html"
48
+
49
+ template "views/index.json.jbuilder.erb", "app/views/api/v1/#{resource.pluralize.underscore}/index.json.jbuilder"
50
+ template "views/show.json.jbuilder.erb", "app/views/api/v1/#{resource.pluralize.underscore}/show.json.jbuilder"
51
+ template "views/create.json.jbuilder.erb", "app/views/api/v1/#{resource.pluralize.underscore}/create.json.jbuilder"
52
+ template "views/destroy.json.jbuilder.erb", "app/views/api/v1/#{resource.pluralize.underscore}/destroy.json.jbuilder"
53
+ template "views/update.json.jbuilder.erb", "app/views/api/v1/#{resource.pluralize.underscore}/update.json.jbuilder"
54
+ end
55
+ end
56
+
57
+ def create_api
58
+ unless options[:only_specs]
59
+ template "api/controller.rb.erb", "app/controllers/api/v1/#{resource.pluralize.underscore}_controller.rb"
60
+ end
61
+ end
62
+
63
+ def create_specs
64
+ unless options[:without_specs]
65
+ template "features/api.feature", "features/#{resource.underscore}.api.feature"
66
+ template "features/api.step.rb", "features/step_definitions/#{resource.underscore}.rb"
67
+ end
68
+ end
69
+ def show_readme
70
+ readme "js_scaffold.README" if behavior == :invoke
71
+ end
72
+
73
+ # PRIVATES --------------------------------------------
74
+ private
75
+
76
+ # Path to the resource
77
+ def resource_path
78
+ path_parts = resource_name.split("/")
79
+ if path_parts.length > 1
80
+ return "#{path_parts(0..-2).join("/")}/#{path_parts[-1].underscore}"
81
+ end
82
+ resource_name.underscore
83
+ end
84
+
85
+ # Url of resource
86
+ def resource_url
87
+ path_parts = resource_name.split("/")
88
+ if path_parts.length > 1
89
+ return "#{path_parts(0..-2).join("/")}/#{path_parts[-1].pluralize.underscore}"
90
+ end
91
+ resource_name.pluralize.underscore
92
+ end
93
+
94
+ def resource
95
+ path_parts = resource_name.split("/")
96
+ if path_parts.length > 1
97
+ return path_parts[-1].camelize
98
+ end
99
+ resource_name.camelize
100
+ end
101
+
102
+ def is_in_engine?
103
+ false
104
+ end
105
+
106
+ def angularjs_app_path
107
+ path = RedBase::Engine.dashboard_js_manifest.split("/")[0..-2].join("/")
108
+ "app/assets/javascripts/#{path}/"
109
+ end
110
+
111
+ # An array of fields like
112
+ # [name, type]
113
+ def fields
114
+ fields = []
115
+ resource_fields.each do |field|
116
+ name, type, to = field.split(":")
117
+ if ["belongs_to", "has_many"].include? type
118
+ type = Relation.new(type, to)
119
+ end
120
+
121
+ fields << [name, type]
122
+ end
123
+ fields
124
+ end
125
+
126
+ def fields_hash
127
+ Hash[fields]
128
+ end
129
+
130
+ # Returns fields which is needed to be in bulk edit
131
+ def bulk_edit_fields
132
+ unless options[:bulk_fields].empty?
133
+ bfields = options[:bulk_fields].split(",")
134
+ fields = fields_hash
135
+ bfields.each do |f|
136
+ unless fields.include? f
137
+ raise ::Exception.new "'#{f}' is not in scaffold fields."
138
+ end
139
+ end
140
+ return bfields
141
+ else
142
+ return fields.keys
143
+ end
144
+ end
145
+
146
+ # Return an string to use as a function parameters each
147
+ # field appears as symbol
148
+ def fields_as_params(relations: false)
149
+ result = ""
150
+ field_num = 0
151
+ fields.each do |name, type|
152
+ if relations
153
+ if ["belongs_to"].include? type
154
+ result += " :#{name}_id"
155
+ else
156
+ result += " :#{name}"
157
+ end
158
+ field_num += 1
159
+ if field_num < fields.length
160
+ result += ","
161
+ end
162
+
163
+ else
164
+ unless ["belongs_to", "has_many"].include? type
165
+ result += " :#{name}"
166
+ field_num += 1
167
+ if field_num < fields.length
168
+ result += ","
169
+ end
170
+ end
171
+ end
172
+
173
+ end
174
+
175
+ if result
176
+ result = ",#{result}"
177
+ if result[-1] == ","
178
+ result = result[0..-2]
179
+ end
180
+ end
181
+
182
+ result
183
+ end
184
+
185
+ def random_json_data
186
+ data = {}
187
+ fields.each do |field, type|
188
+ case type
189
+ when "belongs_to"
190
+ data["#{field}_id"] = 1
191
+ when "integer"
192
+ data[field] = 1+ rand(1000)
193
+ else
194
+ data[field] = random_string
195
+ end
196
+ end
197
+ data.to_json.to_s
198
+ end
199
+
200
+ def random_string
201
+ o = [('a'..'z'), ('A'..'Z')].map { |i| i.to_a }.flatten
202
+ (0...50).map{ o[rand(o.length)] }.join
203
+ end
204
+
205
+
206
+ class Relation < String
207
+ attr_accessor :to
208
+
209
+ def initialize(value, to_)
210
+ super(value)
211
+ self.to = to_
212
+ end
213
+
214
+ def resource_name
215
+ to.split("/").last
216
+ end
217
+
218
+ def restangular
219
+ result = "API"
220
+ to.split("/").each do |resource|
221
+ result = "#{result}.all(\"#{resource}\")"
222
+ end
223
+ result
224
+ end
225
+
226
+ def get_list
227
+ "#{restangular}.getList()"
228
+ end
229
+ end
230
+ end
231
+ end
232
+ end
@@ -0,0 +1,41 @@
1
+ ==================================================
2
+ Steps to finish up installation:
3
+
4
+ 1. Ensure you have defined default url options in your environments files. Here
5
+ is an example of default_url_options appropriate for a development environment
6
+ in config/environments/development.rb:
7
+
8
+ config.action_mailer.default_url_options = { :host => 'localhost:3000' }
9
+
10
+ In production, :host should be set to the actual host of your application.
11
+
12
+ 2. You can override your root controller through RedBase::HomeController class.
13
+
14
+ 3. Ensure you have flash messages in app/views/layouts/application.html.erb.
15
+ Only if you want to change the layout
16
+
17
+ For example:
18
+
19
+ <p class="notice"><%= notice %></p>
20
+ <p class="alert"><%= alert %></p>
21
+
22
+ 4. Create a javascript manifest in 'app/assets/javascripts/dashboard/application.js'
23
+ and require 'red_base/dashboard/application.js'.
24
+
25
+ NOTE: You can change the default manifest name and path via 'config.dashboard_js_manifest'
26
+ in 'config/initializers/red_base.rb'.
27
+
28
+ 5. Make sure you take a look and configured conf/initializer/devise.rb
29
+
30
+ NOTE: if you want to use devise with omniauth configure them in
31
+ conf/initializer/devise.rb according to devise wiki
32
+
33
+ 6. Make sure you take a look and configured conf/initializer/fast_gettext.rb
34
+ 7. Make sure you take a look and configured conf/initializer/formtastic.rb
35
+ 8. Add your resources to routes.rb like this:
36
+
37
+ namespace :api, :defaults => {:format => :json} do
38
+ namespace :v1 do
39
+ resources :resource
40
+ end
41
+ end
@@ -0,0 +1,4 @@
1
+ ==================================================
2
+ Steps to finish up installation:
3
+
4
+ 1. Make sure you take a look and configured conf/initializer/devise.rb
@@ -0,0 +1,13 @@
1
+ =======================================================================
2
+
3
+ Copy this snippet to your `config/application.rb`:
4
+
5
+ config.generators do |g|
6
+ g.test_framework :rspec, :fixture => false
7
+ g.fixture_replacement :factory_girl, :dir => 'spec/factories'
8
+ g.assets false
9
+ g.helper false
10
+ g.helper = false
11
+ g.view_specs false
12
+ g.helper_specs false
13
+ end
@@ -0,0 +1,20 @@
1
+ <div class="details">
2
+ <% fields.each do |field_name, field_type| %>
3
+ <p>
4
+ <% case field_type
5
+ when "belongs_to" %> <b translate><%= field_name.capitalize %> :</b> {{object.<%= field_name %>.name}}
6
+ <% when "has_many" %><p>
7
+ <b translate><%= field_name.capitalize %> :</b>
8
+ <ul>
9
+ <li ng-repeat="item in object.<%= field_name %>"> {{ item.name }}</li>
10
+ </ul>
11
+ </p>
12
+ <% else %><b translate><%= field_name.capitalize %> :</b> {{object.<%= field_name %>}}
13
+ <% end %></p>
14
+ <% end %>
15
+ <ul class="button-group float-right">
16
+ <a ng-href="#/<%= resource_url %>/{{ object.id }}/edit" class="small">
17
+ <span class="fa fa-edit"></span> <span translated>Edit</span>
18
+ </a>
19
+ </ul>
20
+ </div>
@@ -0,0 +1,59 @@
1
+ <% unless options[:no_bulk] %>
2
+ <div ng-if="bulk_edit" class="fade_anim">
3
+ <form id="bulk_form">
4
+ <fieldset class="row clearmargin">
5
+ <legend>Bulk Edit</legend>
6
+ <div class="row">
7
+ <div class="small-6 columns">
8
+ <label for="field_name" translate>Field Name:</label>
9
+
10
+ <select id="field_name" ng-model="field_name" ng-change="field_name_change()">
11
+ <option value="0" selected translate>-- Select a field --</option>
12
+ <option ng-repeat="field in fields" value="{{ field.name }}" data-type="{{ field.type }}" data-to="{{ field.to }}"><span translate>{{ field.title }}</span></option>
13
+ </select>
14
+ </div>
15
+ <div class="small-6 columns">
16
+ <label for="field_value" translate>Field Value:</label>
17
+ <div id="value_field">
18
+ <input id="field_value" ng-model="field_value" type="text" ng-if="current_field.type == 'string' || current_field.type == 'integer'">
19
+ <textarea id="field_value" ng-model="field_value" ng-if="current_field.type == 'text'"></textarea>
20
+
21
+ <select id="field_value" ng-model="field_value" ng-if="current_field.type == 'belongs_to'">
22
+ <option ng-repeat="item in cache[current_field.name]" value="{{ item.id }}">{{ item.name }}</option>
23
+ </select>
24
+ <select id="field_value" ng-model="field_value" ng-if="current_field.type == 'has_many'" multiple>
25
+ <option ng-repeat="item in cache[current_field.name]" value="{{ item.id }}">{{ item.name }}</option>
26
+ </select>
27
+ </div>
28
+ </div>
29
+ </div>
30
+ <div class="row progressbar-container" ng-if="view_progressbar">
31
+ <div class="small-12 columns">
32
+ <div class="progressbar">
33
+ <div id="request_filler" class="filler yellow" style="width: {{ rfiller}};"></div>
34
+ <div id="success_filler" class="filler green" style="width: {{ sfiller}};"></div>
35
+ </div>
36
+ </div>
37
+ <div class="row">
38
+ <div class="small-3 columns float-right text-right">
39
+ <small>
40
+ {{ success }} <span translate>of</span> {{ total }}<span ng-if="failed > 0"> - <span translate>field:</span><span class="text-error"> {{ failed }}</span></span>
41
+ </small>
42
+ </div>
43
+ </div>
44
+ </fieldset>
45
+ <br />
46
+ <div class="row">
47
+ <div class="small-6 columns">
48
+ <button class="btn tiny green" ng-click="bulk_save()"><i class="fa fa-check"></i> <span translate>Save</span></button>
49
+ <button class="btn tiny red" ng-click="bulk_cancel()"><i class="fa fa-times"></i> <span translate>Cancel</span></button>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ </div>
54
+ <% end %>
55
+ <list-view buttons="buttons" objects="<%= resource.pluralize.underscore %>" title-attribute="'name'" details-template="details_template" item-per-page="10" on_delete="on_delete">
56
+ <div class="small-6 column text-left clearpadding">
57
+ <h3><i class="fa fa-group"></i> <span translate><%= resource.pluralize %></span></h3>
58
+ </div>
59
+ </list-view>