geri 0.0.1

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 (211) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +26 -0
  4. data/app/assets/javascripts/geri/admin.js +33 -0
  5. data/app/assets/javascripts/geri/admin/app.js +758 -0
  6. data/app/assets/javascripts/geri/admin/editor.js +56 -0
  7. data/app/assets/javascripts/geri/admin/password_resets.js +2 -0
  8. data/app/assets/stylesheets/geri/admin.css.less +60 -0
  9. data/app/assets/stylesheets/geri/admin/app.css +4915 -0
  10. data/app/assets/stylesheets/geri/admin/ckeditor/contents.css +135 -0
  11. data/app/assets/stylesheets/geri/admin/editor.css.less +38 -0
  12. data/app/assets/stylesheets/geri/admin/password_resets.css +4 -0
  13. data/app/assets/stylesheets/geri/admin/skin-blue.less +142 -0
  14. data/app/assets/vendor/ckeditor/CHANGES.md +1065 -0
  15. data/app/assets/vendor/ckeditor/LICENSE.md +1420 -0
  16. data/app/assets/vendor/ckeditor/README.md +39 -0
  17. data/app/assets/vendor/ckeditor/adapters/jquery.js +10 -0
  18. data/app/assets/vendor/ckeditor/build-config.js +69 -0
  19. data/app/assets/vendor/ckeditor/ckeditor.js +775 -0
  20. data/app/assets/vendor/ckeditor/config.js +34 -0
  21. data/app/assets/vendor/ckeditor/contents.css +135 -0
  22. data/app/assets/vendor/ckeditor/lang/en.js +5 -0
  23. data/app/assets/vendor/ckeditor/plugins/about/dialogs/about.js +7 -0
  24. data/app/assets/vendor/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png +0 -0
  25. data/app/assets/vendor/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
  26. data/app/assets/vendor/ckeditor/plugins/clipboard/dialogs/paste.js +12 -0
  27. data/app/assets/vendor/ckeditor/plugins/dialog/dialogDefinition.js +4 -0
  28. data/app/assets/vendor/ckeditor/plugins/icons.png +0 -0
  29. data/app/assets/vendor/ckeditor/plugins/icons_hidpi.png +0 -0
  30. data/app/assets/vendor/ckeditor/plugins/link/dialogs/anchor.js +7 -0
  31. data/app/assets/vendor/ckeditor/plugins/link/dialogs/link.js +26 -0
  32. data/app/assets/vendor/ckeditor/plugins/link/images/anchor.png +0 -0
  33. data/app/assets/vendor/ckeditor/plugins/link/images/hidpi/anchor.png +0 -0
  34. data/app/assets/vendor/ckeditor/samples/css/samples.css +1640 -0
  35. data/app/assets/vendor/ckeditor/samples/img/github-top.png +0 -0
  36. data/app/assets/vendor/ckeditor/samples/img/header-bg.png +0 -0
  37. data/app/assets/vendor/ckeditor/samples/img/header-separator.png +0 -0
  38. data/app/assets/vendor/ckeditor/samples/img/logo.png +0 -0
  39. data/app/assets/vendor/ckeditor/samples/img/navigation-tip.png +0 -0
  40. data/app/assets/vendor/ckeditor/samples/index.html +128 -0
  41. data/app/assets/vendor/ckeditor/samples/js/sample.js +53 -0
  42. data/app/assets/vendor/ckeditor/samples/js/sf.js +17 -0
  43. data/app/assets/vendor/ckeditor/samples/old/ajax.html +85 -0
  44. data/app/assets/vendor/ckeditor/samples/old/api.html +210 -0
  45. data/app/assets/vendor/ckeditor/samples/old/appendto.html +59 -0
  46. data/app/assets/vendor/ckeditor/samples/old/assets/inlineall/logo.png +0 -0
  47. data/app/assets/vendor/ckeditor/samples/old/assets/outputxhtml/outputxhtml.css +204 -0
  48. data/app/assets/vendor/ckeditor/samples/old/assets/posteddata.php +59 -0
  49. data/app/assets/vendor/ckeditor/samples/old/assets/sample.jpg +0 -0
  50. data/app/assets/vendor/ckeditor/samples/old/assets/uilanguages/languages.js +7 -0
  51. data/app/assets/vendor/ckeditor/samples/old/datafiltering.html +508 -0
  52. data/app/assets/vendor/ckeditor/samples/old/dialog/assets/my_dialog.js +48 -0
  53. data/app/assets/vendor/ckeditor/samples/old/dialog/dialog.html +190 -0
  54. data/app/assets/vendor/ckeditor/samples/old/divreplace.html +144 -0
  55. data/app/assets/vendor/ckeditor/samples/old/enterkey/enterkey.html +106 -0
  56. data/app/assets/vendor/ckeditor/samples/old/index.html +122 -0
  57. data/app/assets/vendor/ckeditor/samples/old/inlineall.html +314 -0
  58. data/app/assets/vendor/ckeditor/samples/old/inlinebycode.html +124 -0
  59. data/app/assets/vendor/ckeditor/samples/old/inlinetextarea.html +113 -0
  60. data/app/assets/vendor/ckeditor/samples/old/jquery.html +103 -0
  61. data/app/assets/vendor/ckeditor/samples/old/readonly.html +76 -0
  62. data/app/assets/vendor/ckeditor/samples/old/replacebyclass.html +60 -0
  63. data/app/assets/vendor/ckeditor/samples/old/replacebycode.html +59 -0
  64. data/app/assets/vendor/ckeditor/samples/old/sample.css +357 -0
  65. data/app/assets/vendor/ckeditor/samples/old/sample.js +50 -0
  66. data/app/assets/vendor/ckeditor/samples/old/sample_posteddata.php +16 -0
  67. data/app/assets/vendor/ckeditor/samples/old/tabindex.html +78 -0
  68. data/app/assets/vendor/ckeditor/samples/old/toolbar/toolbar.html +235 -0
  69. data/app/assets/vendor/ckeditor/samples/old/uicolor.html +72 -0
  70. data/app/assets/vendor/ckeditor/samples/old/uilanguages.html +122 -0
  71. data/app/assets/vendor/ckeditor/samples/old/wysiwygarea/fullpage.html +80 -0
  72. data/app/assets/vendor/ckeditor/samples/old/xhtmlstyle.html +234 -0
  73. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/css/fontello.css +55 -0
  74. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/font/LICENSE.txt +10 -0
  75. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/font/config.json +28 -0
  76. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/font/fontello.eot +0 -0
  77. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/font/fontello.svg +14 -0
  78. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/font/fontello.ttf +0 -0
  79. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/font/fontello.woff +0 -0
  80. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/index.html +446 -0
  81. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/js/abstracttoolbarmodifier.js +13 -0
  82. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/js/fulltoolbareditor.js +9 -0
  83. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/js/toolbarmodifier.js +33 -0
  84. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/js/toolbartextmodifier.js +14 -0
  85. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/lib/codemirror/LICENSE +19 -0
  86. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.css +325 -0
  87. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.js +288 -0
  88. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/lib/codemirror/javascript.js +25 -0
  89. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/lib/codemirror/neo.css +36 -0
  90. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.css +38 -0
  91. data/app/assets/vendor/ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.js +16 -0
  92. data/app/assets/vendor/ckeditor/skins/bootstrapck/dialog.css +1 -0
  93. data/app/assets/vendor/ckeditor/skins/bootstrapck/dialog_ie.css +1 -0
  94. data/app/assets/vendor/ckeditor/skins/bootstrapck/dialog_ie7.css +1 -0
  95. data/app/assets/vendor/ckeditor/skins/bootstrapck/dialog_ie8.css +1 -0
  96. data/app/assets/vendor/ckeditor/skins/bootstrapck/dialog_iequirks.css +1 -0
  97. data/app/assets/vendor/ckeditor/skins/bootstrapck/dialog_opera.css +1 -0
  98. data/app/assets/vendor/ckeditor/skins/bootstrapck/editor.css +1 -0
  99. data/app/assets/vendor/ckeditor/skins/bootstrapck/editor_gecko.css +1 -0
  100. data/app/assets/vendor/ckeditor/skins/bootstrapck/editor_ie.css +1 -0
  101. data/app/assets/vendor/ckeditor/skins/bootstrapck/editor_ie7.css +1 -0
  102. data/app/assets/vendor/ckeditor/skins/bootstrapck/editor_ie8.css +1 -0
  103. data/app/assets/vendor/ckeditor/skins/bootstrapck/editor_iequirks.css +1 -0
  104. data/app/assets/vendor/ckeditor/skins/bootstrapck/icons.png +0 -0
  105. data/app/assets/vendor/ckeditor/skins/bootstrapck/icons_hidpi.png +0 -0
  106. data/app/assets/vendor/ckeditor/skins/bootstrapck/images/arrow.png +0 -0
  107. data/app/assets/vendor/ckeditor/skins/bootstrapck/images/close.png +0 -0
  108. data/app/assets/vendor/ckeditor/skins/bootstrapck/images/hidpi/close.png +0 -0
  109. data/app/assets/vendor/ckeditor/skins/bootstrapck/images/hidpi/lock-open.png +0 -0
  110. data/app/assets/vendor/ckeditor/skins/bootstrapck/images/hidpi/lock.png +0 -0
  111. data/app/assets/vendor/ckeditor/skins/bootstrapck/images/hidpi/refresh.png +0 -0
  112. data/app/assets/vendor/ckeditor/skins/bootstrapck/images/lock-open.png +0 -0
  113. data/app/assets/vendor/ckeditor/skins/bootstrapck/images/lock.png +0 -0
  114. data/app/assets/vendor/ckeditor/skins/bootstrapck/images/refresh.png +0 -0
  115. data/app/assets/vendor/ckeditor/skins/bootstrapck/readme.md +35 -0
  116. data/app/assets/vendor/ckeditor/skins/bootstrapck/sample/bootstrapck-sample.html +127 -0
  117. data/app/assets/vendor/ckeditor/skins/bootstrapck/sample/css/bootstrapck-sample.css +1 -0
  118. data/app/assets/vendor/ckeditor/skins/bootstrapck/sample/js/analytics.js +4 -0
  119. data/app/assets/vendor/ckeditor/skins/bootstrapck/sample/js/jquery-1.11.0.min.js +189 -0
  120. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/browser-specific/gecko/editor_gecko.scss +25 -0
  121. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/browser-specific/ie/dialog_ie.scss +62 -0
  122. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/browser-specific/ie/editor_ie.scss +71 -0
  123. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/browser-specific/ie7/dialog_ie7.scss +68 -0
  124. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/browser-specific/ie7/editor_ie7.scss +213 -0
  125. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/browser-specific/ie8/dialog_ie8.scss +24 -0
  126. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/browser-specific/ie8/editor_ie8.scss +27 -0
  127. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/browser-specific/iequirks/dialog_iequirks.scss +21 -0
  128. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/browser-specific/iequirks/editor_iequirks.scss +79 -0
  129. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/browser-specific/opera/dialog_opera.scss +31 -0
  130. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/components/_colorpanel.scss +119 -0
  131. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/components/_elementspath.scss +66 -0
  132. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/components/_mainui.scss +189 -0
  133. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/components/_menu.scss +182 -0
  134. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/components/_panel.scss +199 -0
  135. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/components/_presets.scss +32 -0
  136. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/components/_reset.scss +107 -0
  137. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/components/_richcombo.scss +174 -0
  138. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/components/_toolbar.scss +317 -0
  139. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/components/editor.scss +66 -0
  140. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/config/_colors.scss +61 -0
  141. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/config/_config.scss +9 -0
  142. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/config/_defaults.scss +37 -0
  143. data/app/assets/vendor/ckeditor/skins/bootstrapck/scss/dialog/dialog.scss +822 -0
  144. data/app/assets/vendor/ckeditor/styles.js +111 -0
  145. data/app/controllers/geri/admin/admin_users_controller.rb +56 -0
  146. data/app/controllers/geri/admin/dashboard_controller.rb +8 -0
  147. data/app/controllers/geri/admin/editor_controller.rb +33 -0
  148. data/app/controllers/geri/admin/password_resets_controller.rb +21 -0
  149. data/app/controllers/geri/admin/sessions_controller.rb +24 -0
  150. data/app/controllers/geri/admin_controller.rb +19 -0
  151. data/app/controllers/geri/application_controller.rb +5 -0
  152. data/app/controllers/geri/pages_controller.rb +34 -0
  153. data/app/helpers/geri/admin/dashboard_helper.rb +4 -0
  154. data/app/helpers/geri/admin/editor_helper.rb +4 -0
  155. data/app/helpers/geri/admin/pages_helper.rb +45 -0
  156. data/app/helpers/geri/admin/partials_helper.rb +4 -0
  157. data/app/helpers/geri/admin/password_resets_helper.rb +4 -0
  158. data/app/helpers/geri/admin/sessions_helper.rb +4 -0
  159. data/app/helpers/geri/admin_helper.rb +24 -0
  160. data/app/helpers/geri/admin_users_helper.rb +4 -0
  161. data/app/helpers/geri/application_helper.rb +26 -0
  162. data/app/helpers/geri/meta_helper.rb +32 -0
  163. data/app/mailers/application_mailer.rb +4 -0
  164. data/app/mailers/geri/admin_user_mailer.rb +11 -0
  165. data/app/models/geri/admin_user.rb +14 -0
  166. data/app/models/geri/content.rb +6 -0
  167. data/app/models/geri/password_reset.rb +17 -0
  168. data/app/models/geri/session.rb +20 -0
  169. data/app/views/geri/admin/admin_users/_form.html.erb +5 -0
  170. data/app/views/geri/admin/admin_users/edit.html.erb +27 -0
  171. data/app/views/geri/admin/admin_users/index.html.erb +45 -0
  172. data/app/views/geri/admin/admin_users/new.html.erb +17 -0
  173. data/app/views/geri/admin/dashboard/index.html.erb +1 -0
  174. data/app/views/geri/admin/editor/template.html.erb +17 -0
  175. data/app/views/geri/admin/password_resets/new.html.erb +17 -0
  176. data/app/views/geri/admin/sessions/new.html.erb +23 -0
  177. data/app/views/geri/admin/shared/_aside.html.erb +16 -0
  178. data/app/views/geri/admin/shared/_header.html.erb +31 -0
  179. data/app/views/geri/admin/shared/_menu_item.html.erb +17 -0
  180. data/app/views/geri/admin_user_mailer/reset_password_email.text.erb +7 -0
  181. data/app/views/layouts/geri/admin.html.erb +24 -0
  182. data/app/views/layouts/geri/admin/sessions.html.erb +21 -0
  183. data/app/views/layouts/mailer.html.erb +5 -0
  184. data/app/views/layouts/mailer.text.erb +1 -0
  185. data/config/initializers/geri.rb +7 -0
  186. data/config/initializers/sorcery.rb +463 -0
  187. data/config/locales/devise.en.yml +62 -0
  188. data/config/locales/en.yml +13 -0
  189. data/config/routes.rb +23 -0
  190. data/db/migrate/20160409151523_create_geri_contents.rb +8 -0
  191. data/db/migrate/20160411205412_sorcery_core.rb +20 -0
  192. data/lib/generators/geri/install/USAGE +8 -0
  193. data/lib/generators/geri/install/install_generator.rb +54 -0
  194. data/lib/generators/geri/install/templates/bower.json +8 -0
  195. data/lib/generators/geri/install/templates/index.html.erb +46 -0
  196. data/lib/generators/geri/install/templates/initializer.rb +12 -0
  197. data/lib/generators/geri/install/templates/layout.html.erb +11 -0
  198. data/lib/generators/geri/install/templates/site.css.less +1 -0
  199. data/lib/generators/geri/install/templates/site.js +1 -0
  200. data/lib/geri.rb +7 -0
  201. data/lib/geri/cli.rb +6 -0
  202. data/lib/geri/cli/base.rb +23 -0
  203. data/lib/geri/cli/extension.rb +18 -0
  204. data/lib/geri/config.rb +29 -0
  205. data/lib/geri/config/menu_item.rb +35 -0
  206. data/lib/geri/engine.rb +34 -0
  207. data/lib/geri/tasks.rb +3 -0
  208. data/lib/geri/tasks/create_admin_user.rb +40 -0
  209. data/lib/geri/version.rb +3 -0
  210. data/lib/tasks/geri_tasks.rake +15 -0
  211. metadata +449 -0
@@ -0,0 +1,62 @@
1
+ # Additional translations at https://github.com/plataformatec/devise/wiki/I18n
2
+
3
+ en:
4
+ devise:
5
+ confirmations:
6
+ confirmed: "Your email address has been successfully confirmed."
7
+ send_instructions: "You will receive an email with instructions for how to confirm your email address in a few minutes."
8
+ send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes."
9
+ failure:
10
+ already_authenticated: "You are already signed in."
11
+ inactive: "Your account is not activated yet."
12
+ invalid: "Invalid %{authentication_keys} or password."
13
+ locked: "Your account is locked."
14
+ last_attempt: "You have one more attempt before your account is locked."
15
+ not_found_in_database: "Invalid %{authentication_keys} or password."
16
+ timeout: "Your session expired. Please sign in again to continue."
17
+ unauthenticated: "You need to sign in or sign up before continuing."
18
+ unconfirmed: "You have to confirm your email address before continuing."
19
+ mailer:
20
+ confirmation_instructions:
21
+ subject: "Confirmation instructions"
22
+ reset_password_instructions:
23
+ subject: "Reset password instructions"
24
+ unlock_instructions:
25
+ subject: "Unlock instructions"
26
+ password_change:
27
+ subject: "Password Changed"
28
+ omniauth_callbacks:
29
+ failure: "Could not authenticate you from %{kind} because \"%{reason}\"."
30
+ success: "Successfully authenticated from %{kind} account."
31
+ passwords:
32
+ no_token: "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided."
33
+ send_instructions: "You will receive an email with instructions on how to reset your password in a few minutes."
34
+ send_paranoid_instructions: "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes."
35
+ updated: "Your password has been changed successfully. You are now signed in."
36
+ updated_not_active: "Your password has been changed successfully."
37
+ registrations:
38
+ destroyed: "Bye! Your account has been successfully cancelled. We hope to see you again soon."
39
+ signed_up: "Welcome! You have signed up successfully."
40
+ signed_up_but_inactive: "You have signed up successfully. However, we could not sign you in because your account is not yet activated."
41
+ signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked."
42
+ signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please follow the link to activate your account."
43
+ update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirm link to confirm your new email address."
44
+ updated: "Your account has been updated successfully."
45
+ sessions:
46
+ signed_in: "Signed in successfully."
47
+ signed_out: "Signed out successfully."
48
+ already_signed_out: "Signed out successfully."
49
+ unlocks:
50
+ send_instructions: "You will receive an email with instructions for how to unlock your account in a few minutes."
51
+ send_paranoid_instructions: "If your account exists, you will receive an email with instructions for how to unlock it in a few minutes."
52
+ unlocked: "Your account has been unlocked successfully. Please sign in to continue."
53
+ errors:
54
+ messages:
55
+ already_confirmed: "was already confirmed, please try signing in"
56
+ confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one"
57
+ expired: "has expired, please request a new one"
58
+ not_found: "not found"
59
+ not_locked: "was not locked"
60
+ not_saved:
61
+ one: "1 error prohibited this %{resource} from being saved:"
62
+ other: "%{count} errors prohibited this %{resource} from being saved:"
@@ -0,0 +1,13 @@
1
+ en:
2
+ activerecord:
3
+ attributes:
4
+ geri/page:
5
+ slug: Url
6
+ admin:
7
+ menu:
8
+ main_navigation: MAIN NAVIGATION
9
+ dashboard: Dashboard
10
+ pages: Pages
11
+ partials: Partials
12
+ admin_users: Admin Users
13
+ layouts: Layouts
@@ -0,0 +1,23 @@
1
+ Geri::Engine.routes.draw do
2
+
3
+ namespace :admin, path: Geri::Config.admin_path do
4
+
5
+ get 'login' => 'sessions#new', as: :login
6
+ get 'signup' => 'admin_users#signup', as: :singup
7
+ delete 'logout' => 'sessions#destroy', as: :logout
8
+
9
+ resources :sessions, only: [:create, :destroy]
10
+ resources :admin_users
11
+ resources :password_resets, except: [:index, :destroy]
12
+
13
+ get 'editor' => 'editor#template'
14
+ post 'editor' => 'editor#update_contents'
15
+ get 'edit' => 'editor#index'
16
+
17
+ root to: 'dashboard#index'
18
+ end
19
+
20
+ get '*path' => 'pages#show'
21
+ root to: 'pages#show'
22
+
23
+ end
@@ -0,0 +1,8 @@
1
+ class CreateGeriContents < ActiveRecord::Migration
2
+ def change
3
+ create_table :geri_contents do |t|
4
+ t.string :name, null: false, index: true
5
+ t.text :body, null: false
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,20 @@
1
+ class SorceryCore < ActiveRecord::Migration
2
+ def change
3
+ create_table :geri_admin_users do |t|
4
+ t.string :email, null: false
5
+ t.string :crypted_password
6
+ t.string :salt
7
+
8
+ t.string :first_name, null: false
9
+ t.string :last_name, null: false
10
+
11
+ t.string :reset_password_token, index: true
12
+ t.datetime :reset_password_token_expires_at
13
+ t.datetime :reset_password_email_sent_at
14
+
15
+ t.timestamps
16
+ end
17
+
18
+ add_index :geri_admin_users, :email, unique: true
19
+ end
20
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Explain the generator
3
+
4
+ Example:
5
+ rails generate install Thing
6
+
7
+ This will create:
8
+ what/will/it/create
@@ -0,0 +1,54 @@
1
+ class Geri::InstallGenerator < Rails::Generators::Base
2
+ source_root File.expand_path('../templates', __FILE__)
3
+
4
+ def create_initializer
5
+ template 'initializer.rb', 'config/initializers/geri/base.rb'
6
+ end
7
+
8
+ def add_mount_point
9
+ gsub_file('config/routes.rb', 'Rails.application.routes.draw do', <<-EOF
10
+ Rails.application.routes.draw do
11
+ # Sets the mounted location of the Geri CMS, if you wish to mount this elsewhere simply update this line.
12
+ mount Geri::Engine => '/'
13
+ EOF
14
+ )
15
+ end
16
+
17
+ def create_site_directory
18
+ empty_directory('app/site')
19
+ end
20
+
21
+ def create_default_layout
22
+ copy_file('layout.html.erb', 'app/site/layout.html.erb')
23
+ end
24
+
25
+ def create_default_index
26
+ copy_file('index.html.erb', 'app/site/index.html.erb')
27
+ end
28
+
29
+ def create_assets_directory
30
+ empty_directory('app/site/assets')
31
+ empty_directory('app/site/assets/vendor')
32
+ end
33
+
34
+ def setup_bower
35
+ copy_file('.bowerrc', 'app/site/.bowerrc')
36
+ copy_file('bower.json', 'app/site/bower.json')
37
+ inside('app/site') do
38
+ run 'bower install'
39
+ end
40
+ end
41
+
42
+ def install_default_css
43
+ copy_file('site.css.less', 'app/site/assets/stylesheets/site.css.less')
44
+ end
45
+
46
+ def install_default_js
47
+ copy_file('site.js', 'app/site/assets/javascripts/site.js')
48
+ end
49
+
50
+ def update_gitignore
51
+ append_file('.gitignore', 'app/site/vendor')
52
+ end
53
+
54
+ end
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "GeriCMS Website",
3
+ "dependencies": {
4
+ "jquery": "~ 2.2.3",
5
+ "bootstrap": "~ 3.3.6"
6
+
7
+ }
8
+ }
@@ -0,0 +1,46 @@
1
+ <%# METADATA %>
2
+ <% title 'GeriCMS' %>
3
+ <% keywords 'cms', 'gericms', 'rails cms', 'ruby cms' %>
4
+ <% description 'GeriCMS is a powerful Rails based CMS designed from the ground up for developers.' %>
5
+
6
+ <%# CONTENT %>
7
+ <nav class="navbar navbar-default">
8
+ <div class="container">
9
+ <div class="navbar-header">
10
+ <%= link_to 'GeriCMS', '#', class: 'navbar-brand' %>
11
+ </div>
12
+ </div>
13
+ </nav>
14
+ <div class="container">
15
+ <div class="row">
16
+ <div class="col-xs-4">
17
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In a mi ac elit imperdiet iaculis. Nunc vestibulum
18
+ arcu ut ultricies convallis. Cras sed arcu et nibh interdum porta vel et ipsum. Donec ullamcorper porta mauris,
19
+ id pulvinar turpis porta ac. Praesent non ultricies metus. Morbi sit amet eleifend ipsum. Cum sociis natoque
20
+ penatibus et magnis dis parturient montes, nascetur ridiculus mus. In in sapien enim. Nunc a eros ac neque cursus
21
+ congue non at nulla. Morbi mattis justo et nulla scelerisque, eu finibus tellus consectetur. Nullam quis
22
+ hendrerit libero. Quisque ac porttitor ligula, quis faucibus massa. Praesent ut tincidunt mi.
23
+ </div>
24
+ <div class="col-xs-4">
25
+ <%= editable :center_content do %>
26
+ Etiam porttitor dolor diam, ut cursus erat efficitur id. Duis hendrerit scelerisque vehicula. Aenean eu elit
27
+ nunc. Sed eleifend urna ut convallis rutrum. Vestibulum tortor justo, rutrum a fringilla eu, feugiat ac
28
+ sapien.
29
+
30
+ Vivamus consectetur ante lectus, at rhoncus arcu vulputate pulvinar. Curabitur semper orci vitae purus
31
+ tristique, sit amet hendrerit magna ultricies. Nam at nibh malesuada, auctor massa non, faucibus arcu.
32
+ Maecenas sed urna vitae quam aliquet euismod. Maecenas at ex enim. Quisque aliquam in purus ut hendrerit.
33
+ Donec sed gravida ex.Proin ornare vel sem id fringilla. Integer luctus leo sapien, vitae accumsan ante
34
+ pulvinar ut. Sed tristique magna sed blandit imperdiet.
35
+ <% end %>
36
+ </div>
37
+ <div class="col-xs-4">
38
+ Nam a nibh non tortor facilisis egestas id sit amet dui. Ut tortor turpis, dapibus cursus libero vel, mattis
39
+ porta ligula. Sed quam augue, gravida ac mauris quis, sodales maximus metus. Fusce congue lacus id elit ultricies
40
+ suscipit volutpat in lorem. Aenean molestie placerat ultricies. Nunc varius sem at suscipit sagittis. Suspendisse
41
+ odio ipsum, scelerisque varius lacus sit amet, eleifend hendrerit elit. Curabitur euismod sagittis finibus.
42
+ Praesent mattis, lorem id lacinia dapibus, odio nibh fringilla sem, sed consequat est eros id sapien. Mauris
43
+ eget commodo risus.
44
+ </div>
45
+ </div>
46
+ </div>
@@ -0,0 +1,12 @@
1
+ Geri::Config.configure do |c|
2
+
3
+ # Set the CMS admin path
4
+ # c.admin_path = 'admin'
5
+
6
+ #Set the website name
7
+ c.site_name = 'GeriCMS'
8
+
9
+ # Sets the mount point for the engine
10
+ # c.mount_point =
11
+
12
+ end
@@ -0,0 +1,11 @@
1
+ <html>
2
+ <head>
3
+ <title>GeriCMS | <%= page_title %></title>
4
+ <%= meta_tags %>
5
+ <%= stylesheet_link_tag 'site', media: 'all' %>
6
+ </head>
7
+ <body>
8
+ <%= yield %>
9
+ <%= javascript_include_tag 'site' %>
10
+ </body>
11
+ </html>
@@ -0,0 +1 @@
1
+ @import 'bootstrap/less/bootstrap';
@@ -0,0 +1 @@
1
+ //= require jquery/dist/jquery
@@ -0,0 +1,7 @@
1
+ require 'therubyracer'
2
+ require 'less-rails-bootstrap'
3
+ require 'jquery-rails'
4
+ require 'bootstrap_form'
5
+ require 'sorcery'
6
+
7
+ require_relative './geri/engine'
@@ -0,0 +1,6 @@
1
+ require 'thor'
2
+
3
+ require 'rails/generators'
4
+ require 'rails/generators/rails/app/app_generator'
5
+
6
+ require_relative './cli/base'
@@ -0,0 +1,23 @@
1
+ require_relative './extension'
2
+
3
+ module Geri
4
+ module CLI
5
+ class Base < Thor
6
+ include Thor::Actions
7
+ include Rails::Generators::Actions
8
+
9
+ desc 'new NAME', 'Generate new Geri based Rails application'
10
+ def new(name)
11
+ basepath = File.expand_path('../../../../', __FILE__)
12
+ Rails::Generators::AppGenerator.start [name,
13
+ '-m',
14
+ "#{basepath}/template.rb"
15
+ ]
16
+ end
17
+
18
+ desc 'extension COMMAND', 'Controls Geri extensions'
19
+ subcommand 'extension', Extension
20
+
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,18 @@
1
+ module Geri
2
+ module CLI
3
+ class Extension < Thor
4
+ include Thor::Actions
5
+ include Rails::Generators::Actions
6
+
7
+ desc 'install NAME', 'Install the named Geri extension'
8
+ def install(name)
9
+ extname = 'geri'
10
+ extname << "_#{name}" unless name == 'geri'
11
+ script = %Q{bundle exec rails runner -c 'puts Gem::Specification.find_by_name("#{extname}").gem_dir'}
12
+ gemdir = run script, capture: true, verbose: false
13
+ load("#{gemdir.strip}/installer.rb")
14
+ "#{extname.gsub('_', '/').classify}::Installer".constantize.start(name)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,29 @@
1
+ require_relative './config/menu_item'
2
+ module Geri
3
+ module Config
4
+ include ActiveSupport::Configurable
5
+ config_accessor :admin_path # route to the administrative backend
6
+ config_accessor :menu_items, instance_reader: false # menu item registry
7
+ config_accessor :site_name # name of the site
8
+ config_accessor :mount_point # sets the mount point for the Geri::Engine
9
+
10
+ # Defaults
11
+ self.admin_path = '/admin'
12
+ self.menu_items = []
13
+ self.mount_point = '/'
14
+
15
+ def self.register_menu_item(title, path_or_options=nil, options={})
16
+ self.menu_items << item = MenuItem.new(title, path_or_options, options)
17
+ yield item if block_given?
18
+ self.menu_items.sort! { |a,b| a.priority <=> b.priority }
19
+ end
20
+
21
+ # configure override
22
+ def self.configure(&block)
23
+ begin
24
+ yield self
25
+ end
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,35 @@
1
+ module Geri
2
+ module Config
3
+ class MenuItem
4
+ attr_reader :title, :priority, :is_parent, :menu_items, :icon
5
+
6
+ def initialize(title, path_or_options=nil, options={})
7
+ if !path_or_options || path_or_options.is_a?(Hash)
8
+ options = path_or_options if path_or_options
9
+ @is_parent = true
10
+ else
11
+ @path = path_or_options
12
+ end
13
+ @icon = options[:icon]
14
+ @title = title
15
+ @priority = options[:priority] || 0
16
+ @menu_items = []
17
+ end
18
+
19
+ def register_menu_item(title, path_or_options=nil, options={})
20
+ self.menu_items << item = MenuItem.new(title, path_or_options, options)
21
+ yield item if block_given?
22
+ self.menu_items.sort! { |a, b| a.priority <=> b.priority }
23
+ end
24
+
25
+ def path
26
+ "#{Geri::Config.admin_path}#{@path}"
27
+ end
28
+
29
+ def to_partial_path
30
+ 'shared/menu_item'
31
+ end
32
+
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,34 @@
1
+ require_relative './config'
2
+
3
+ module Geri
4
+ class Engine < ::Rails::Engine
5
+ isolate_namespace Geri
6
+
7
+ initializer :append_migrations do |app|
8
+ unless app.root.to_s.match root.to_s
9
+ app.config.paths['db/migrate'] << config.paths['db/migrate'].expanded[0]
10
+ end
11
+ end
12
+
13
+ config.i18n.default_locale = :en
14
+
15
+ config.generators do |g|
16
+ g.test_framework :rspec
17
+ end
18
+
19
+ initializer :update_asset_paths do |app|
20
+ config.assets.paths << app.root.join('app', 'site', 'assets', 'javascripts')
21
+ config.assets.paths << app.root.join('app', 'site', 'assets', 'vendor')
22
+ config.assets.paths << app.root.join('app', 'site', 'assets', 'stylesheets')
23
+ config.assets.paths << app.root.join('app', 'site', 'assets', 'images')
24
+ config.assets.paths << app.root.join('app', 'assets', 'vendor')
25
+ end
26
+
27
+ initializer :update_assets do
28
+ config.assets.precompile += %w{ site.js site.css geri/admin.js geri/admin.css ckeditor/ckeditor.js } +
29
+ %w{ geri/admin/editor.css geri/admin/editor.js }
30
+ end
31
+
32
+
33
+ end
34
+ end