somatics3 0.0.10

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 (189) hide show
  1. data/.document +5 -0
  2. data/LICENSE +20 -0
  3. data/README.rdoc +91 -0
  4. data/Rakefile +72 -0
  5. data/VERSION +1 -0
  6. data/bin/somatics +23 -0
  7. data/bin/somatify +21 -0
  8. data/lib/generators/somatics.rb +37 -0
  9. data/lib/generators/somatics/associated/associated_generator.rb +184 -0
  10. data/lib/generators/somatics/associated/templates/migration.rb +11 -0
  11. data/lib/generators/somatics/attributes/attributes_generator.rb +115 -0
  12. data/lib/generators/somatics/attributes/templates/migration.rb +11 -0
  13. data/lib/generators/somatics/authenticated/authenticated_generator.rb +65 -0
  14. data/lib/generators/somatics/authenticated/templates/partial_form.html.erb +23 -0
  15. data/lib/generators/somatics/authenticated_controller/authenticated_controller_generator.rb +38 -0
  16. data/lib/generators/somatics/authenticated_controller/templates/locales_en.yml +6 -0
  17. data/lib/generators/somatics/authenticated_controller/templates/locales_zh-TW.yml +6 -0
  18. data/lib/generators/somatics/authenticated_controller/templates/login.html.erb +31 -0
  19. data/lib/generators/somatics/authenticated_controller/templates/sessions_controller.rb +11 -0
  20. data/lib/generators/somatics/helper/helper_generator.rb +16 -0
  21. data/lib/generators/somatics/install/install_generator.rb +101 -0
  22. data/lib/generators/somatics/install/templates/config/locales/devise_zh-TW.yml +39 -0
  23. data/lib/generators/somatics/install/templates/config/locales/somatics_en.yml +35 -0
  24. data/lib/generators/somatics/install/templates/config/locales/somatics_zh-TW.yml +35 -0
  25. data/lib/generators/somatics/install/templates/controller_admin.rb +17 -0
  26. data/lib/generators/somatics/install/templates/controller_home.rb +4 -0
  27. data/lib/generators/somatics/install/templates/helper_admin.rb +99 -0
  28. data/lib/generators/somatics/install/templates/initializer_paper_trail.rb +2 -0
  29. data/lib/generators/somatics/install/templates/layout_admin.html.erb +87 -0
  30. data/lib/generators/somatics/install/templates/lib/active_record/diff.rb +61 -0
  31. data/lib/generators/somatics/install/templates/lib/somatic_link_renderer.rb +24 -0
  32. data/lib/generators/somatics/install/templates/lib/tasks/heroku.rake +30 -0
  33. data/lib/generators/somatics/install/templates/lib/tasks/svn.rake +47 -0
  34. data/lib/generators/somatics/install/templates/partial_menu.html.erb +1 -0
  35. data/lib/generators/somatics/install/templates/partial_versions.html.erb +56 -0
  36. data/lib/generators/somatics/install/templates/public/images/somatics/add.png +0 -0
  37. data/lib/generators/somatics/install/templates/public/images/somatics/arrow_collapsed.png +0 -0
  38. data/lib/generators/somatics/install/templates/public/images/somatics/arrow_expanded.png +0 -0
  39. data/lib/generators/somatics/install/templates/public/images/somatics/attachment.png +0 -0
  40. data/lib/generators/somatics/install/templates/public/images/somatics/bullet_arrow_left.png +0 -0
  41. data/lib/generators/somatics/install/templates/public/images/somatics/bullet_arrow_right.png +0 -0
  42. data/lib/generators/somatics/install/templates/public/images/somatics/bullet_diamond.png +0 -0
  43. data/lib/generators/somatics/install/templates/public/images/somatics/bullet_end.png +0 -0
  44. data/lib/generators/somatics/install/templates/public/images/somatics/bullet_go.png +0 -0
  45. data/lib/generators/somatics/install/templates/public/images/somatics/bullet_toggle_minus.png +0 -0
  46. data/lib/generators/somatics/install/templates/public/images/somatics/bullet_toggle_plus.png +0 -0
  47. data/lib/generators/somatics/install/templates/public/images/somatics/c.png +0 -0
  48. data/lib/generators/somatics/install/templates/public/images/somatics/cancel.png +0 -0
  49. data/lib/generators/somatics/install/templates/public/images/somatics/changeset.png +0 -0
  50. data/lib/generators/somatics/install/templates/public/images/somatics/comment.png +0 -0
  51. data/lib/generators/somatics/install/templates/public/images/somatics/comments.png +0 -0
  52. data/lib/generators/somatics/install/templates/public/images/somatics/content-left.png +0 -0
  53. data/lib/generators/somatics/install/templates/public/images/somatics/content-right.png +0 -0
  54. data/lib/generators/somatics/install/templates/public/images/somatics/copy.png +0 -0
  55. data/lib/generators/somatics/install/templates/public/images/somatics/csharp.png +0 -0
  56. data/lib/generators/somatics/install/templates/public/images/somatics/database_key.png +0 -0
  57. data/lib/generators/somatics/install/templates/public/images/somatics/default.png +0 -0
  58. data/lib/generators/somatics/install/templates/public/images/somatics/delete.png +0 -0
  59. data/lib/generators/somatics/install/templates/public/images/somatics/document.png +0 -0
  60. data/lib/generators/somatics/install/templates/public/images/somatics/draft.png +0 -0
  61. data/lib/generators/somatics/install/templates/public/images/somatics/duplicate.png +0 -0
  62. data/lib/generators/somatics/install/templates/public/images/somatics/edit.png +0 -0
  63. data/lib/generators/somatics/install/templates/public/images/somatics/exclamation.png +0 -0
  64. data/lib/generators/somatics/install/templates/public/images/somatics/external.png +0 -0
  65. data/lib/generators/somatics/install/templates/public/images/somatics/fav.png +0 -0
  66. data/lib/generators/somatics/install/templates/public/images/somatics/fav_off.png +0 -0
  67. data/lib/generators/somatics/install/templates/public/images/somatics/feed.png +0 -0
  68. data/lib/generators/somatics/install/templates/public/images/somatics/folder.png +0 -0
  69. data/lib/generators/somatics/install/templates/public/images/somatics/folder_open.png +0 -0
  70. data/lib/generators/somatics/install/templates/public/images/somatics/footer-bg.png +0 -0
  71. data/lib/generators/somatics/install/templates/public/images/somatics/footer-left.png +0 -0
  72. data/lib/generators/somatics/install/templates/public/images/somatics/footer-right.png +0 -0
  73. data/lib/generators/somatics/install/templates/public/images/somatics/group.png +0 -0
  74. data/lib/generators/somatics/install/templates/public/images/somatics/help.png +0 -0
  75. data/lib/generators/somatics/install/templates/public/images/somatics/history.png +0 -0
  76. data/lib/generators/somatics/install/templates/public/images/somatics/image.png +0 -0
  77. data/lib/generators/somatics/install/templates/public/images/somatics/lightning.png +0 -0
  78. data/lib/generators/somatics/install/templates/public/images/somatics/link.png +0 -0
  79. data/lib/generators/somatics/install/templates/public/images/somatics/loading.gif +0 -0
  80. data/lib/generators/somatics/install/templates/public/images/somatics/locked.png +0 -0
  81. data/lib/generators/somatics/install/templates/public/images/somatics/message.png +0 -0
  82. data/lib/generators/somatics/install/templates/public/images/somatics/milestone.png +0 -0
  83. data/lib/generators/somatics/install/templates/public/images/somatics/move.png +0 -0
  84. data/lib/generators/somatics/install/templates/public/images/somatics/news.png +0 -0
  85. data/lib/generators/somatics/install/templates/public/images/somatics/openid-bg.gif +0 -0
  86. data/lib/generators/somatics/install/templates/public/images/somatics/package.png +0 -0
  87. data/lib/generators/somatics/install/templates/public/images/somatics/pdf.png +0 -0
  88. data/lib/generators/somatics/install/templates/public/images/somatics/php.png +0 -0
  89. data/lib/generators/somatics/install/templates/public/images/somatics/plugin.png +0 -0
  90. data/lib/generators/somatics/install/templates/public/images/somatics/projects.png +0 -0
  91. data/lib/generators/somatics/install/templates/public/images/somatics/rails.png +0 -0
  92. data/lib/generators/somatics/install/templates/public/images/somatics/reload.png +0 -0
  93. data/lib/generators/somatics/install/templates/public/images/somatics/report.png +0 -0
  94. data/lib/generators/somatics/install/templates/public/images/somatics/ruby.png +0 -0
  95. data/lib/generators/somatics/install/templates/public/images/somatics/save.png +0 -0
  96. data/lib/generators/somatics/install/templates/public/images/somatics/sort_asc.png +0 -0
  97. data/lib/generators/somatics/install/templates/public/images/somatics/sort_desc.png +0 -0
  98. data/lib/generators/somatics/install/templates/public/images/somatics/stats.png +0 -0
  99. data/lib/generators/somatics/install/templates/public/images/somatics/table_multiple.png +0 -0
  100. data/lib/generators/somatics/install/templates/public/images/somatics/task_done.png +0 -0
  101. data/lib/generators/somatics/install/templates/public/images/somatics/task_late.png +0 -0
  102. data/lib/generators/somatics/install/templates/public/images/somatics/task_parent_end.png +0 -0
  103. data/lib/generators/somatics/install/templates/public/images/somatics/task_todo.png +0 -0
  104. data/lib/generators/somatics/install/templates/public/images/somatics/text.png +0 -0
  105. data/lib/generators/somatics/install/templates/public/images/somatics/text_list_bullets.png +0 -0
  106. data/lib/generators/somatics/install/templates/public/images/somatics/textfield.png +0 -0
  107. data/lib/generators/somatics/install/templates/public/images/somatics/ticket.png +0 -0
  108. data/lib/generators/somatics/install/templates/public/images/somatics/ticket_checked.png +0 -0
  109. data/lib/generators/somatics/install/templates/public/images/somatics/ticket_edit.png +0 -0
  110. data/lib/generators/somatics/install/templates/public/images/somatics/ticket_go.png +0 -0
  111. data/lib/generators/somatics/install/templates/public/images/somatics/ticket_note.png +0 -0
  112. data/lib/generators/somatics/install/templates/public/images/somatics/time.png +0 -0
  113. data/lib/generators/somatics/install/templates/public/images/somatics/time_add.png +0 -0
  114. data/lib/generators/somatics/install/templates/public/images/somatics/toggle_check.png +0 -0
  115. data/lib/generators/somatics/install/templates/public/images/somatics/true.png +0 -0
  116. data/lib/generators/somatics/install/templates/public/images/somatics/unlock.png +0 -0
  117. data/lib/generators/somatics/install/templates/public/images/somatics/user.png +0 -0
  118. data/lib/generators/somatics/install/templates/public/images/somatics/warning.png +0 -0
  119. data/lib/generators/somatics/install/templates/public/images/somatics/wiki_edit.png +0 -0
  120. data/lib/generators/somatics/install/templates/public/images/somatics/xml.png +0 -0
  121. data/lib/generators/somatics/install/templates/public/images/somatics/zip.png +0 -0
  122. data/lib/generators/somatics/install/templates/public/images/somatics/zoom_in.png +0 -0
  123. data/lib/generators/somatics/install/templates/public/javascripts/somatics/base.js +237 -0
  124. data/lib/generators/somatics/install/templates/public/javascripts/somatics/context_menu.js +237 -0
  125. data/lib/generators/somatics/install/templates/public/javascripts/somatics/controls.js +965 -0
  126. data/lib/generators/somatics/install/templates/public/javascripts/somatics/dragdrop.js +974 -0
  127. data/lib/generators/somatics/install/templates/public/javascripts/somatics/effects.js +1123 -0
  128. data/lib/generators/somatics/install/templates/public/javascripts/somatics/prototype.js +6001 -0
  129. data/lib/generators/somatics/install/templates/public/javascripts/somatics/rails.js +175 -0
  130. data/lib/generators/somatics/install/templates/public/javascripts/somatics/select_list_move.js +82 -0
  131. data/lib/generators/somatics/install/templates/public/stylesheets/application.css +863 -0
  132. data/lib/generators/somatics/install/templates/public/stylesheets/somatics/base.css +951 -0
  133. data/lib/generators/somatics/install/templates/public/stylesheets/somatics/context_menu.css +52 -0
  134. data/lib/generators/somatics/install/templates/public/stylesheets/somatics/csshover.htc +122 -0
  135. data/lib/generators/somatics/install/templates/public/stylesheets/somatics/jstoolbar.css +95 -0
  136. data/lib/generators/somatics/install/templates/public/themes/default/stylesheets/application.css +951 -0
  137. data/lib/generators/somatics/install/templates/view_index.html.erb +46 -0
  138. data/lib/generators/somatics/relationship/relationship_generator.rb +173 -0
  139. data/lib/generators/somatics/relationship/templates/migration.rb +11 -0
  140. data/lib/generators/somatics/scaffold/scaffold_generator.rb +24 -0
  141. data/lib/generators/somatics/scaffold/templates/_form.html.erb +23 -0
  142. data/lib/generators/somatics/scaffold/templates/edit.html.erb +6 -0
  143. data/lib/generators/somatics/scaffold/templates/index.html.erb +27 -0
  144. data/lib/generators/somatics/scaffold/templates/new.html.erb +5 -0
  145. data/lib/generators/somatics/scaffold/templates/show.html.erb +12 -0
  146. data/lib/generators/somatics/scaffold_controller/USAGE +20 -0
  147. data/lib/generators/somatics/scaffold_controller/scaffold_controller_generator.rb +108 -0
  148. data/lib/generators/somatics/scaffold_controller/templates/builder_index.xls.builder +24 -0
  149. data/lib/generators/somatics/scaffold_controller/templates/builder_index.xml.builder +10 -0
  150. data/lib/generators/somatics/scaffold_controller/templates/controller.rb +123 -0
  151. data/lib/generators/somatics/scaffold_controller/templates/locales_en.yml +17 -0
  152. data/lib/generators/somatics/scaffold_controller/templates/locales_zh-TW.yml +20 -0
  153. data/lib/generators/somatics/scaffold_controller/templates/partial_bulk.html.erb +12 -0
  154. data/lib/generators/somatics/scaffold_controller/templates/partial_edit.html.erb +7 -0
  155. data/lib/generators/somatics/scaffold_controller/templates/partial_form.html.erb +13 -0
  156. data/lib/generators/somatics/scaffold_controller/templates/partial_list.html.erb +30 -0
  157. data/lib/generators/somatics/scaffold_controller/templates/partial_menu.html.erb +1 -0
  158. data/lib/generators/somatics/scaffold_controller/templates/partial_show.html.erb +31 -0
  159. data/lib/generators/somatics/scaffold_controller/templates/view_edit.html.erb +24 -0
  160. data/lib/generators/somatics/scaffold_controller/templates/view_index.html.erb +27 -0
  161. data/lib/generators/somatics/scaffold_controller/templates/view_new.html.erb +14 -0
  162. data/lib/generators/somatics/scaffold_controller/templates/view_show.html.erb +26 -0
  163. data/lib/generators/somatics/settings/settings_generator.rb +86 -0
  164. data/lib/generators/somatics/settings_controller/USAGE +20 -0
  165. data/lib/generators/somatics/settings_controller/settings_controller_generator.rb +11 -0
  166. data/lib/generators/somatics/settings_controller/templates/builder_index.xls.builder +24 -0
  167. data/lib/generators/somatics/settings_controller/templates/builder_index.xml.builder +10 -0
  168. data/lib/generators/somatics/settings_controller/templates/controller.rb +64 -0
  169. data/lib/generators/somatics/settings_controller/templates/helper.rb +2 -0
  170. data/lib/generators/somatics/settings_controller/templates/locales_en.yml +9 -0
  171. data/lib/generators/somatics/settings_controller/templates/locales_zh-TW.yml +28 -0
  172. data/lib/generators/somatics/settings_controller/templates/migration.rb +17 -0
  173. data/lib/generators/somatics/settings_controller/templates/partial_bulk.html.erb +12 -0
  174. data/lib/generators/somatics/settings_controller/templates/partial_edit.html.erb +7 -0
  175. data/lib/generators/somatics/settings_controller/templates/partial_form.html.erb +15 -0
  176. data/lib/generators/somatics/settings_controller/templates/partial_list.html.erb +28 -0
  177. data/lib/generators/somatics/settings_controller/templates/partial_menu.html.erb +1 -0
  178. data/lib/generators/somatics/settings_controller/templates/partial_show.html.erb +13 -0
  179. data/lib/generators/somatics/settings_controller/templates/view_edit.html.erb +23 -0
  180. data/lib/generators/somatics/settings_controller/templates/view_index.html.erb +22 -0
  181. data/lib/generators/somatics/settings_controller/templates/view_new.html.erb +14 -0
  182. data/lib/generators/somatics/settings_controller/templates/view_show.html.erb +23 -0
  183. data/lib/somatics.rb +9 -0
  184. data/somatics.gemspec +249 -0
  185. data/somatics3.gemspec +248 -0
  186. data/templates/somatics.rb +106 -0
  187. data/test/helper.rb +10 -0
  188. data/test/test_somatics3-generators.rb +7 -0
  189. metadata +398 -0
@@ -0,0 +1,39 @@
1
+ zh-TW:
2
+ errors:
3
+ messages:
4
+ not_found: "沒有找到"
5
+ already_confirmed: "已被確認過了"
6
+ not_locked: "被鎖定了"
7
+
8
+ devise:
9
+ failure:
10
+ unauthenticated: '您需要先註冊、登入後才能繼續。'
11
+ unconfirmed: '您的帳號需需要經過確認後,才能繼續。'
12
+ locked: '您的帳號已被鎖定。'
13
+ invalid: 'Email 或密碼是無效的。'
14
+ invalid_token: '無效的認證代碼。'
15
+ timeout: '您的登入時效過期,請重新登入,才能繼續。'
16
+ inactive: '您的帳號尚未被啟用。'
17
+ sessions:
18
+ signed_in: '成功登入了。'
19
+ signed_out: '成功登出了。'
20
+ passwords:
21
+ send_instructions: '您將在幾分鐘後收到一封電子郵件,內有重新設定密碼的步驟說明。'
22
+ updated: '您的密碼已被修改,而您現在已重新登入。'
23
+ confirmations:
24
+ send_instructions: '您將在幾分鐘後收到一封電子郵件,內有確認帳號的步驟說明。'
25
+ confirmed: '您的帳號已經過確認,現在您已成功登入。'
26
+ registrations:
27
+ signed_up: '您已經成功的登錄,確認信件已送至您的 Email 信箱。'
28
+ updated: '您已經成功的更新帳號資訊。'
29
+ destroyed: '再會!您的帳號已被取消。有緣再會。'
30
+ unlocks:
31
+ send_instructions: '您將在幾分鐘後收到一封電子郵件,內有將帳號解除鎖定的步驟說明。'
32
+ unlocked: '您的帳號已被解鎖,現在您已成功登入。'
33
+ mailer:
34
+ confirmation_instructions:
35
+ subject: '確認步驟'
36
+ reset_password_instructions:
37
+ subject: '重設密碼步驟'
38
+ unlock_instructions:
39
+ subject: '解鎖步驟'
@@ -0,0 +1,35 @@
1
+ en:
2
+ Overview: Overview
3
+ new: new
4
+ New: New
5
+ create: create
6
+ Create: Create
7
+ update: update
8
+ Update: Update
9
+ delete: delete
10
+ Delete: Delete
11
+ back: back
12
+ Back: Back
13
+ back_to: back to
14
+ Back_to: Back to
15
+ information: information
16
+ Information: Information
17
+ bulk: bulk
18
+ Bulk: Bulk
19
+ ID: ID
20
+ Logged_in_as: Logged in as
21
+ Logout: Logout
22
+ Home: Home
23
+ Admin_Panel: Admin Panel
24
+ Support: Support
25
+ Loading: Loading
26
+ Search: Search
27
+ Also_available_in: Also available in
28
+ Log_in: Log in
29
+ previous: Previous
30
+ next: Next
31
+ no_data_available: No Data Available
32
+ Add: Add
33
+ Cancel: Cancel
34
+ Sort_by_this_field: Sort by this field
35
+ sort_by: sort by {{field}}
@@ -0,0 +1,35 @@
1
+ "zh-TW":
2
+ Overview: 概覽
3
+ new: 新增
4
+ New: 新增
5
+ create: 新增
6
+ Create: 新增
7
+ update: 更新
8
+ Update: 更新
9
+ delete: 刪除
10
+ Delete: 刪除
11
+ back: 返回
12
+ Back: 返回
13
+ back_to: 返回
14
+ Back_to: 返回
15
+ information: 資料
16
+ Information: 資料
17
+ bulk: 批量
18
+ Bulk: 批量
19
+ ID: 編號
20
+ Logged_in_as: 登入為
21
+ Logout: 登出
22
+ Home: 首頁
23
+ Admin_Panel: 管理面板
24
+ Support: 支援
25
+ Loading: 載入中
26
+ Search: 搜尋
27
+ Also_available_in: 匯出為
28
+ Log_in: 登入
29
+ previous: 上一頁
30
+ next: 下一頁
31
+ no_data_available: 未有可用的資料
32
+ Add: 加入
33
+ Cancel: 取消
34
+ Sort_by_this_field: 以此列排序
35
+ sort_by: sort by {{field}}
@@ -0,0 +1,17 @@
1
+ # Filters added to this controller apply to all controllers in the application.
2
+ # Likewise, all the methods added will be available for all controllers.
3
+
4
+ class Admin::AdminController < ActionController::Base
5
+ helper :all # include all helpers, all the time
6
+ protect_from_forgery # See ActionController::RequestForgeryProtection for details
7
+
8
+ layout Proc.new { |c| c.request.format.js? ? false : 'admin' }
9
+ before_filter :authenticate_user!
10
+
11
+ uses_tiny_mce :options => {
12
+ :theme => 'advanced',
13
+ :theme_advanced_resizing => true,
14
+ :theme_advanced_resize_horizontal => false,
15
+ :plugins => %w{ table fullscreen }
16
+ }
17
+ end
@@ -0,0 +1,4 @@
1
+ class Admin::HomeController < Admin::AdminController
2
+ def index
3
+ end
4
+ end
@@ -0,0 +1,99 @@
1
+ # Methods added to this helper will be available to all templates in the application.
2
+ module Admin::AdminHelper
3
+ def content_for(name, content = nil, &block)
4
+ @has_content ||= {}
5
+ @has_content[name] = true
6
+ super(name, content, &block)
7
+ end
8
+
9
+ def has_content?(name)
10
+ (@has_content && @has_content[name]) || false
11
+ end
12
+
13
+ def match_controller?(name)
14
+ controller.controller_name == name
15
+ end
16
+
17
+ def match_action?(name)
18
+ controller.action_name == name
19
+ end
20
+
21
+ def sort_asc_desc_helper(model_name, param)
22
+ result = image_tag('somatics/sort_asc.png') if params[:"#{model_name}_sort"] == param
23
+ result = image_tag('somatics/sort_desc.png') if params[:"#{model_name}_sort"] == param + "_reverse"
24
+ return result || ''
25
+ end
26
+
27
+ def sort_link_helper(text, model_name ,param)
28
+ key = param
29
+ key += "_reverse" if params[:"#{model_name}_sort"] == param
30
+ html_options = {
31
+ :title => I18n.t("sort_by",:field => text),
32
+ :remote=>true
33
+ }
34
+ link_to(text, params.merge({:"#{model_name}_sort" => key}), html_options) + sort_asc_desc_helper(model_name,param)
35
+ end
36
+
37
+ def paper_trail_for(object)
38
+ render 'admin/shared/versions', :obj => object
39
+ end
40
+
41
+ def excel_document(xml, &block)
42
+ xml.instruct! :xml, :version=>"1.0", :encoding=>"UTF-8"
43
+ xml.Workbook({
44
+ 'xmlns' => "urn:schemas-microsoft-com:office:spreadsheet",
45
+ 'xmlns:o' => "urn:schemas-microsoft-com:office:office",
46
+ 'xmlns:x' => "urn:schemas-microsoft-com:office:excel",
47
+ 'xmlns:html' => "http://www.w3.org/TR/REC-html40",
48
+ 'xmlns:ss' => "urn:schemas-microsoft-com:office:spreadsheet"
49
+ }) do
50
+ xml.Styles do
51
+ xml.Style 'ss:ID' => 'Default', 'ss:Name' => 'Normal' do
52
+ xml.Alignment 'ss:Vertical' => 'Bottom'
53
+ xml.Borders
54
+ xml.Font 'ss:FontName' => 'Arial'
55
+ xml.Interior
56
+ xml.NumberFormat
57
+ xml.Protection
58
+ end
59
+ end
60
+ yield block
61
+ end
62
+ end
63
+
64
+
65
+ def date_to_words(date)
66
+ if date == Date.today
67
+ "Today"
68
+ elsif date <= Date.today - 1
69
+ if date == Date.today - 1
70
+ "Yesterday"
71
+ elsif ((Date.today - 7)..(Date.today - 1)).include?(date)
72
+ "Last #{date.strftime("%A")}"
73
+ elsif ((Date.today - 14)..(Date.today - 8)).include?(date)
74
+ "Two #{date.strftime("%A")}s ago"
75
+ elsif ((Date.today - 21)..(Date.today - 15)).include?(date)
76
+ "Three #{date.strftime("%A")}s ago"
77
+ elsif ((Date.today - 29)..(Date.today - 22)).include?(date)
78
+ "Four #{date.strftime("%A")}s ago"
79
+ elsif Date.today - 30 < date
80
+ "More than a month ago"
81
+ end
82
+ else
83
+ if date == Date.today + 1
84
+ "Tomorrow"
85
+ elsif ((Date.today + 1)..(Date.today + 6)).include?(date)
86
+ "This coming #{date.strftime("%A")}"
87
+ elsif ((Date.today + 7)..(Date.today + 14)).include?(date)
88
+ "Next #{date.strftime("%A")}s away"
89
+ elsif ((Date.today + 15)..(Date.today + 21)).include?(date)
90
+ "Two #{date.strftime("%A")}s away"
91
+ elsif ((Date.today + 22)..(Date.today + 29)).include?(date)
92
+ "Three #{date.strftime("%A")}s away"
93
+ elsif Date.today + 30 > date
94
+ "More than a month in the future"
95
+ end
96
+ end
97
+ end
98
+
99
+ end
@@ -0,0 +1,2 @@
1
+ require 'active_record/diff'
2
+ ActiveRecord::Base.send(:include, ActiveRecord::Diff)
@@ -0,0 +1,87 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
+ <head>
4
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5
+ <title>Inspire Synergy Limited</title>
6
+
7
+ <%%= stylesheet_link_tag "/themes/#{Setting['theme']}/stylesheets/application.css", 'somatics/jstoolbar', :media => 'all' %>
8
+ <%%#= stylesheet_link_tag 'somatics/context_menu', :media => 'all' %>
9
+
10
+ <!--[if IE]>
11
+ <style type="text/css">
12
+ * html body{ width: expression( document.documentElement.clientWidth < 900 ? '900px' : '100%' ); }
13
+ body {behavior: url(/stylesheets/somatics/csshover.htc);}
14
+ </style>
15
+ <![endif]-->
16
+
17
+ <%%= javascript_include_tag 'somatics/prototype.js', "rails", 'somatics/effects.js', 'somatics/dragdrop.js', 'somatics/controls.js','somatics/base.js','somatics/select_list_move.js','somatics/context_menu.js' %>
18
+ <%%= csrf_meta_tag %>
19
+
20
+ <%%= include_tiny_mce_if_needed %>
21
+ </head>
22
+ <body>
23
+ <div id="wrapper">
24
+ <div id="wrapper2">
25
+ <div id="top-menu">
26
+ <%% if current_user %>
27
+ <div id="account">
28
+ <ul>
29
+ <li><%%= t('Logged_in_as') %> <%%= link_to current_user.name, edit_admin_user_url(current_user) %></li>
30
+ <li><%%= link_to t('Logout'), destroy_user_session_url %></li>
31
+ </ul>
32
+ </div>
33
+ <%% end %>
34
+ <ul>
35
+ <li><%%= link_to t('Home'), '/' %></li>
36
+ <li><%%= link_to t('Admin_Panel'), admin_root_path %></li>
37
+ <li><%%= link_to t('Support'), 'http://support.inspiresynergy.com', :class => 'supports' %></li>
38
+ </ul>
39
+ </div> <!-- End of Top Menu -->
40
+ <div id="header">
41
+ <!-- <div id="quick-search">
42
+ <form action="" method="get">
43
+ <input name="" type="hidden" value="1" />
44
+ <a href="" accesskey="4"><%#= t('Search') %></a>:
45
+ <input accesskey="f" class="small" id="q" name="q" size="20" type="text" />
46
+ </form>
47
+ </div> -->
48
+ <h1>Somatics - <%%= t('Admin_Panel') %></h1>
49
+ <%% if current_user %>
50
+ <div id="main-menu">
51
+ <ul>
52
+ <%%= render :partial => 'admin/shared/menu' %>
53
+ </ul>
54
+ </div>
55
+ <%% end %>
56
+ </div> <!-- End of Header -->
57
+ <div class="main <%%='nosidebar' unless has_content?(:sidebar)%>" id="main">
58
+ <div id="sidebar">
59
+ <%%= yield :sidebar %>
60
+ <!-- <h3>Issues</h3>
61
+ <h3>Custom queries</h3> -->
62
+ </div> <!-- End of Sidebar -->
63
+ <div id="content">
64
+ <%% if flash[:notice] %>
65
+ <div class="flash notice"><%%= flash[:notice] %></div>
66
+ <%% end %>
67
+ <%% if flash[:error] %>
68
+ <div class="flash error"><%%= flash[:error] %></div>
69
+ <%% end %>
70
+ <%% if flash[:warning] %>
71
+ <div class="flash warning"><%%= flash[:warning] %></div>
72
+ <%% end %>
73
+ <%%= yield %>
74
+ </div> <!-- End of Content -->
75
+ <div id="ajax-indicator" style="display:none;"><span><%%= t('Loading') %>...</span></div>
76
+ <div id="footer">
77
+ <div class="bgl">
78
+ <div class="bgr">
79
+ Somatics. Powered by &copy; <%= Time.now.year %> Inspire Synergy Limited. MIT License
80
+ </div>
81
+ </div>
82
+ </div> <!-- End of Footer -->
83
+ </div> <!-- End of Main -->
84
+ </div> <!-- End of Wrapper2 -->
85
+ </div> <!-- End of Wrapper -->
86
+ </body>
87
+ </html>
@@ -0,0 +1,61 @@
1
+ module ActiveRecord
2
+ module Diff
3
+ module ClassMethods
4
+ def diff(*attrs)
5
+ write_inheritable_attribute(:diff_attrs, attrs)
6
+ end
7
+
8
+ def diff_attrs
9
+ attrs = read_inheritable_attribute(:diff_attrs)
10
+
11
+ if attrs.nil?
12
+ content_columns.map { |column| column.name }
13
+ elsif attrs.length == 1 && Hash === attrs.first
14
+ columns = content_columns.map { |column| column.name.to_sym }
15
+
16
+ columns + (attrs.first[:include] || []) - (attrs.first[:exclude] || [])
17
+ else
18
+ attrs
19
+ end
20
+ end
21
+ end
22
+
23
+ def self.included(base)
24
+ base.extend ClassMethods
25
+ end
26
+
27
+ def diff?(record = nil)
28
+ not diff(record).empty?
29
+ end
30
+
31
+ def diff(other_record = nil)
32
+ if other_record.nil?
33
+ old_record, new_record = self.class.find(id), self
34
+ else
35
+ old_record, new_record = self, other_record
36
+ end
37
+
38
+ if new_record.is_a?(Hash)
39
+ diff_each(new_record) do |(attr_name, hash_value)|
40
+ [attr_name, old_record.send(attr_name), hash_value]
41
+ end
42
+ else
43
+ diff_each(self.class.diff_attrs) do |attr_name|
44
+ [attr_name, old_record.send(attr_name), new_record.send(attr_name)]
45
+ end
46
+ end
47
+ end
48
+
49
+ def diff_each(enum)
50
+ enum.inject({}) do |diff_hash, attr_name|
51
+ attr_name, old_value, new_value = *yield(attr_name)
52
+
53
+ unless old_value === new_value
54
+ diff_hash[attr_name.to_sym] = [old_value, new_value]
55
+ end
56
+
57
+ diff_hash
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,24 @@
1
+ class SomaticLinkRenderer < WillPaginate::ViewHelpers::LinkRenderer
2
+
3
+ def prepare(collection, options, template)
4
+ super
5
+ @collection_name = template.controller.controller_name
6
+ @param_name = "#{@collection_name}_page"
7
+ @options[:previous_label] = I18n.t(:previous)
8
+ @options[:next_label] = I18n.t(:next)
9
+ end
10
+
11
+ private
12
+
13
+ def link(text, target, attributes = {})
14
+ if target.is_a? Fixnum
15
+ attributes[:rel] = rel_value(target)
16
+ target = url(target)
17
+ end
18
+ attributes[:href] = target
19
+ # tag(:a, text, attributes)
20
+ @template.link_to(text,target, attributes.merge({:remote => true}))
21
+ end
22
+
23
+
24
+ end
@@ -0,0 +1,30 @@
1
+ namespace :heroku do
2
+ desc "Configure Heroku"
3
+ task :setup, :name do |t, args|
4
+ app_name = args.name
5
+ system "git init"
6
+ system "heroku info || heroku create #{app_name}"
7
+ system "git add ."
8
+ system "git commit -a -m 'Initial Commit'"
9
+ # system "heroku addons:add cron:daily"
10
+ system "heroku addons:add deployhooks:email \
11
+ recipient=heroku@inspiresynergy.com \
12
+ subject='[#{app_name}] Deployed' \
13
+ body='{{user}} deployed #{app_name} successfully'"
14
+ system "heroku addons:add piggyback_ssl"
15
+ system "heroku addons:add newrelic:bronze"
16
+ end
17
+
18
+ desc "Deploy to Heroku"
19
+ task :deploy do
20
+ system "git add ."
21
+ system "git commit -a -m 'Heroku Release'"
22
+ system "git push heroku master"
23
+ end
24
+
25
+ desc "Deploy and Migrate to Heroku"
26
+ task :deploy_migrate => :deploy do
27
+ system "heroku rake db:migrate"
28
+ end
29
+
30
+ end