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.
- data/.document +5 -0
- data/LICENSE +20 -0
- data/README.rdoc +91 -0
- data/Rakefile +72 -0
- data/VERSION +1 -0
- data/bin/somatics +23 -0
- data/bin/somatify +21 -0
- data/lib/generators/somatics.rb +37 -0
- data/lib/generators/somatics/associated/associated_generator.rb +184 -0
- data/lib/generators/somatics/associated/templates/migration.rb +11 -0
- data/lib/generators/somatics/attributes/attributes_generator.rb +115 -0
- data/lib/generators/somatics/attributes/templates/migration.rb +11 -0
- data/lib/generators/somatics/authenticated/authenticated_generator.rb +65 -0
- data/lib/generators/somatics/authenticated/templates/partial_form.html.erb +23 -0
- data/lib/generators/somatics/authenticated_controller/authenticated_controller_generator.rb +38 -0
- data/lib/generators/somatics/authenticated_controller/templates/locales_en.yml +6 -0
- data/lib/generators/somatics/authenticated_controller/templates/locales_zh-TW.yml +6 -0
- data/lib/generators/somatics/authenticated_controller/templates/login.html.erb +31 -0
- data/lib/generators/somatics/authenticated_controller/templates/sessions_controller.rb +11 -0
- data/lib/generators/somatics/helper/helper_generator.rb +16 -0
- data/lib/generators/somatics/install/install_generator.rb +101 -0
- data/lib/generators/somatics/install/templates/config/locales/devise_zh-TW.yml +39 -0
- data/lib/generators/somatics/install/templates/config/locales/somatics_en.yml +35 -0
- data/lib/generators/somatics/install/templates/config/locales/somatics_zh-TW.yml +35 -0
- data/lib/generators/somatics/install/templates/controller_admin.rb +17 -0
- data/lib/generators/somatics/install/templates/controller_home.rb +4 -0
- data/lib/generators/somatics/install/templates/helper_admin.rb +99 -0
- data/lib/generators/somatics/install/templates/initializer_paper_trail.rb +2 -0
- data/lib/generators/somatics/install/templates/layout_admin.html.erb +87 -0
- data/lib/generators/somatics/install/templates/lib/active_record/diff.rb +61 -0
- data/lib/generators/somatics/install/templates/lib/somatic_link_renderer.rb +24 -0
- data/lib/generators/somatics/install/templates/lib/tasks/heroku.rake +30 -0
- data/lib/generators/somatics/install/templates/lib/tasks/svn.rake +47 -0
- data/lib/generators/somatics/install/templates/partial_menu.html.erb +1 -0
- data/lib/generators/somatics/install/templates/partial_versions.html.erb +56 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/add.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/arrow_collapsed.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/arrow_expanded.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/attachment.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/bullet_arrow_left.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/bullet_arrow_right.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/bullet_diamond.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/bullet_end.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/bullet_go.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/bullet_toggle_minus.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/bullet_toggle_plus.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/c.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/cancel.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/changeset.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/comment.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/comments.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/content-left.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/content-right.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/copy.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/csharp.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/database_key.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/default.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/delete.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/document.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/draft.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/duplicate.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/edit.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/exclamation.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/external.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/fav.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/fav_off.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/feed.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/folder.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/folder_open.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/footer-bg.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/footer-left.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/footer-right.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/group.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/help.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/history.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/image.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/lightning.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/link.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/loading.gif +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/locked.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/message.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/milestone.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/move.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/news.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/openid-bg.gif +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/package.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/pdf.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/php.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/plugin.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/projects.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/rails.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/reload.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/report.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/ruby.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/save.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/sort_asc.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/sort_desc.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/stats.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/table_multiple.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/task_done.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/task_late.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/task_parent_end.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/task_todo.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/text.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/text_list_bullets.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/textfield.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/ticket.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/ticket_checked.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/ticket_edit.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/ticket_go.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/ticket_note.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/time.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/time_add.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/toggle_check.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/true.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/unlock.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/user.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/warning.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/wiki_edit.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/xml.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/zip.png +0 -0
- data/lib/generators/somatics/install/templates/public/images/somatics/zoom_in.png +0 -0
- data/lib/generators/somatics/install/templates/public/javascripts/somatics/base.js +237 -0
- data/lib/generators/somatics/install/templates/public/javascripts/somatics/context_menu.js +237 -0
- data/lib/generators/somatics/install/templates/public/javascripts/somatics/controls.js +965 -0
- data/lib/generators/somatics/install/templates/public/javascripts/somatics/dragdrop.js +974 -0
- data/lib/generators/somatics/install/templates/public/javascripts/somatics/effects.js +1123 -0
- data/lib/generators/somatics/install/templates/public/javascripts/somatics/prototype.js +6001 -0
- data/lib/generators/somatics/install/templates/public/javascripts/somatics/rails.js +175 -0
- data/lib/generators/somatics/install/templates/public/javascripts/somatics/select_list_move.js +82 -0
- data/lib/generators/somatics/install/templates/public/stylesheets/application.css +863 -0
- data/lib/generators/somatics/install/templates/public/stylesheets/somatics/base.css +951 -0
- data/lib/generators/somatics/install/templates/public/stylesheets/somatics/context_menu.css +52 -0
- data/lib/generators/somatics/install/templates/public/stylesheets/somatics/csshover.htc +122 -0
- data/lib/generators/somatics/install/templates/public/stylesheets/somatics/jstoolbar.css +95 -0
- data/lib/generators/somatics/install/templates/public/themes/default/stylesheets/application.css +951 -0
- data/lib/generators/somatics/install/templates/view_index.html.erb +46 -0
- data/lib/generators/somatics/relationship/relationship_generator.rb +173 -0
- data/lib/generators/somatics/relationship/templates/migration.rb +11 -0
- data/lib/generators/somatics/scaffold/scaffold_generator.rb +24 -0
- data/lib/generators/somatics/scaffold/templates/_form.html.erb +23 -0
- data/lib/generators/somatics/scaffold/templates/edit.html.erb +6 -0
- data/lib/generators/somatics/scaffold/templates/index.html.erb +27 -0
- data/lib/generators/somatics/scaffold/templates/new.html.erb +5 -0
- data/lib/generators/somatics/scaffold/templates/show.html.erb +12 -0
- data/lib/generators/somatics/scaffold_controller/USAGE +20 -0
- data/lib/generators/somatics/scaffold_controller/scaffold_controller_generator.rb +108 -0
- data/lib/generators/somatics/scaffold_controller/templates/builder_index.xls.builder +24 -0
- data/lib/generators/somatics/scaffold_controller/templates/builder_index.xml.builder +10 -0
- data/lib/generators/somatics/scaffold_controller/templates/controller.rb +123 -0
- data/lib/generators/somatics/scaffold_controller/templates/locales_en.yml +17 -0
- data/lib/generators/somatics/scaffold_controller/templates/locales_zh-TW.yml +20 -0
- data/lib/generators/somatics/scaffold_controller/templates/partial_bulk.html.erb +12 -0
- data/lib/generators/somatics/scaffold_controller/templates/partial_edit.html.erb +7 -0
- data/lib/generators/somatics/scaffold_controller/templates/partial_form.html.erb +13 -0
- data/lib/generators/somatics/scaffold_controller/templates/partial_list.html.erb +30 -0
- data/lib/generators/somatics/scaffold_controller/templates/partial_menu.html.erb +1 -0
- data/lib/generators/somatics/scaffold_controller/templates/partial_show.html.erb +31 -0
- data/lib/generators/somatics/scaffold_controller/templates/view_edit.html.erb +24 -0
- data/lib/generators/somatics/scaffold_controller/templates/view_index.html.erb +27 -0
- data/lib/generators/somatics/scaffold_controller/templates/view_new.html.erb +14 -0
- data/lib/generators/somatics/scaffold_controller/templates/view_show.html.erb +26 -0
- data/lib/generators/somatics/settings/settings_generator.rb +86 -0
- data/lib/generators/somatics/settings_controller/USAGE +20 -0
- data/lib/generators/somatics/settings_controller/settings_controller_generator.rb +11 -0
- data/lib/generators/somatics/settings_controller/templates/builder_index.xls.builder +24 -0
- data/lib/generators/somatics/settings_controller/templates/builder_index.xml.builder +10 -0
- data/lib/generators/somatics/settings_controller/templates/controller.rb +64 -0
- data/lib/generators/somatics/settings_controller/templates/helper.rb +2 -0
- data/lib/generators/somatics/settings_controller/templates/locales_en.yml +9 -0
- data/lib/generators/somatics/settings_controller/templates/locales_zh-TW.yml +28 -0
- data/lib/generators/somatics/settings_controller/templates/migration.rb +17 -0
- data/lib/generators/somatics/settings_controller/templates/partial_bulk.html.erb +12 -0
- data/lib/generators/somatics/settings_controller/templates/partial_edit.html.erb +7 -0
- data/lib/generators/somatics/settings_controller/templates/partial_form.html.erb +15 -0
- data/lib/generators/somatics/settings_controller/templates/partial_list.html.erb +28 -0
- data/lib/generators/somatics/settings_controller/templates/partial_menu.html.erb +1 -0
- data/lib/generators/somatics/settings_controller/templates/partial_show.html.erb +13 -0
- data/lib/generators/somatics/settings_controller/templates/view_edit.html.erb +23 -0
- data/lib/generators/somatics/settings_controller/templates/view_index.html.erb +22 -0
- data/lib/generators/somatics/settings_controller/templates/view_new.html.erb +14 -0
- data/lib/generators/somatics/settings_controller/templates/view_show.html.erb +23 -0
- data/lib/somatics.rb +9 -0
- data/somatics.gemspec +249 -0
- data/somatics3.gemspec +248 -0
- data/templates/somatics.rb +106 -0
- data/test/helper.rb +10 -0
- data/test/test_somatics3-generators.rb +7 -0
- 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,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,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 © <%= 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
|