loyal_core 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/README.md +3 -0
- data/Rakefile +27 -0
- data/app/assets/images/loyal_core/down_rating.gif +0 -0
- data/app/assets/images/loyal_core/fallbacks/loyal_core/skin/recipe/avatar/ico_missing.gif +0 -0
- data/app/assets/images/loyal_core/fallbacks/loyal_core/skin/recipe/avatar/medium_missing.gif +0 -0
- data/app/assets/images/loyal_core/fallbacks/loyal_core/skin/recipe/avatar/mini_missing.gif +0 -0
- data/app/assets/images/loyal_core/fallbacks/loyal_core/skin/recipe/avatar/missing.gif +0 -0
- data/app/assets/images/loyal_core/fallbacks/loyal_core/skin/recipe/avatar/small_missing.gif +0 -0
- data/app/assets/images/loyal_core/fallbacks/loyal_core/skin/recipe/avatar/thumb_missing.gif +0 -0
- data/app/assets/images/loyal_core/fallbacks/loyal_core/skin/recipe/avatar/tiny_missing.gif +0 -0
- data/app/assets/images/loyal_core/fallbacks/user/avatar/ico_missing.gif +0 -0
- data/app/assets/images/loyal_core/fallbacks/user/avatar/medium_missing.gif +0 -0
- data/app/assets/images/loyal_core/fallbacks/user/avatar/mini_missing.gif +0 -0
- data/app/assets/images/loyal_core/fallbacks/user/avatar/missing.gif +0 -0
- data/app/assets/images/loyal_core/fallbacks/user/avatar/small_missing.gif +0 -0
- data/app/assets/images/loyal_core/fallbacks/user/avatar/thumb_missing.gif +0 -0
- data/app/assets/images/loyal_core/fallbacks/user/avatar/tiny_missing.gif +0 -0
- data/app/assets/images/loyal_core/liked.gif +0 -0
- data/app/assets/images/loyal_core/unlike.gif +0 -0
- data/app/assets/images/loyal_core/up_rating.gif +0 -0
- data/app/assets/javascripts/jquery.cookie.js +95 -0
- data/app/assets/javascripts/loyal_core/admin/skin/folders.js +2 -0
- data/app/assets/javascripts/loyal_core/admin/skin/recipes.js +2 -0
- data/app/assets/javascripts/loyal_core/ajax/captchas.js +2 -0
- data/app/assets/javascripts/loyal_core/ajax/like_tracks.js +2 -0
- data/app/assets/javascripts/loyal_core/ajax/rating_tracks.js +3 -0
- data/app/assets/javascripts/loyal_core/ajax/users/sessions.js +2 -0
- data/app/assets/javascripts/loyal_core/ajax.js +124 -0
- data/app/assets/javascripts/loyal_core/application.js +6 -0
- data/app/assets/javascripts/loyal_core/jumps.js +2 -0
- data/app/assets/javascripts/loyal_core/tools/append_params_return_to.js +21 -0
- data/app/assets/javascripts/loyal_core/tools/editor_content_mode_selector.js +8 -0
- data/app/assets/javascripts/loyal_core/tools/font_selector.js +83 -0
- data/app/assets/stylesheets/loyal_core/admin/skin/folders.css +4 -0
- data/app/assets/stylesheets/loyal_core/admin/skin/recipes.css +4 -0
- data/app/assets/stylesheets/loyal_core/ajax/captchas.css +4 -0
- data/app/assets/stylesheets/loyal_core/ajax/like_tracks.css +4 -0
- data/app/assets/stylesheets/loyal_core/ajax/rating_tracks.css +4 -0
- data/app/assets/stylesheets/loyal_core/ajax/users/sessions.css +4 -0
- data/app/assets/stylesheets/loyal_core/application.css.scss +18 -0
- data/app/assets/stylesheets/loyal_core/jumps.css +4 -0
- data/app/controllers/loyal_core/admin/skin/folders_controller.rb +54 -0
- data/app/controllers/loyal_core/admin/skin/recipes_controller.rb +52 -0
- data/app/controllers/loyal_core/ajax/captchas_controller.rb +26 -0
- data/app/controllers/loyal_core/ajax/like_tracks_controller.rb +33 -0
- data/app/controllers/loyal_core/ajax/rating_tracks_controller.rb +41 -0
- data/app/controllers/loyal_core/ajax/users/sessions_controller.rb +8 -0
- data/app/controllers/loyal_core/ajax_controller.rb +14 -0
- data/app/controllers/loyal_core/application_controller.rb +6 -0
- data/app/controllers/loyal_core/jumps_controller.rb +10 -0
- data/app/helpers/loyal_core/admin/skin/folders_helper.rb +5 -0
- data/app/helpers/loyal_core/admin/skin/recipes_helper.rb +5 -0
- data/app/helpers/loyal_core/ajax/captchas_helper.rb +6 -0
- data/app/helpers/loyal_core/ajax/like_tracks_helper.rb +6 -0
- data/app/helpers/loyal_core/ajax/rating_tracks_helper.rb +6 -0
- data/app/helpers/loyal_core/ajax/users/sessions_helper.rb +5 -0
- data/app/helpers/loyal_core/application_helper.rb +6 -0
- data/app/helpers/loyal_core/jumps_helper.rb +5 -0
- data/app/models/kindeditor/asset.rb +14 -0
- data/app/models/kindeditor/file.rb +4 -0
- data/app/models/kindeditor/flash.rb +4 -0
- data/app/models/kindeditor/image.rb +4 -0
- data/app/models/kindeditor/media.rb +4 -0
- data/app/models/loyal_core/like_track.rb +15 -0
- data/app/models/loyal_core/rating_track.rb +32 -0
- data/app/models/loyal_core/skin/dish.rb +10 -0
- data/app/models/loyal_core/skin/folder.rb +26 -0
- data/app/models/loyal_core/skin/recipe.rb +31 -0
- data/app/models/loyal_core/skin.rb +8 -0
- data/app/uploaders/loyal_core/asset_uploader.rb +128 -0
- data/app/uploaders/loyal_core/avatar_uploader.rb +37 -0
- data/app/views/layouts/loyal_core/application.html.erb +14 -0
- data/app/views/loyal_core/admin/skin/folders/_form.html.erb +9 -0
- data/app/views/loyal_core/admin/skin/folders/edit.html.erb +11 -0
- data/app/views/loyal_core/admin/skin/folders/index.html.erb +25 -0
- data/app/views/loyal_core/admin/skin/folders/new.html.erb +11 -0
- data/app/views/loyal_core/admin/skin/folders/show.html.erb +32 -0
- data/app/views/loyal_core/admin/skin/recipes/_form.html.erb +25 -0
- data/app/views/loyal_core/admin/skin/recipes/edit.html.erb +11 -0
- data/app/views/loyal_core/admin/skin/recipes/index.html.erb +37 -0
- data/app/views/loyal_core/admin/skin/recipes/new.html.erb +11 -0
- data/app/views/loyal_core/admin/skin/recipes/show.html.erb +16 -0
- data/app/views/loyal_core/ajax/captchas/_new.html.erb +1 -0
- data/app/views/loyal_core/ajax/captchas/new.html.erb +1 -0
- data/app/views/loyal_core/jumps/show.html.erb +12 -0
- data/app/views/simple_captcha/_simple_captcha.erb +16 -0
- data/config/locales/en/default.en.yml +139 -0
- data/config/locales/en/loyal_simple_captcha.en.yml +8 -0
- data/config/locales/zh-CN/action_view.zh-CN.yml +8 -0
- data/config/locales/zh-CN/default.zh-CN.yml +199 -0
- data/config/locales/zh-CN/loyal_simple_captcha.zh-CN.yml +8 -0
- data/config/locales/zh-CN/paginate.zh-CN.yml +8 -0
- data/config/routes.rb +24 -0
- data/db/migrate/20130331104216_create_loyal_core_rating_tracks.rb +19 -0
- data/db/migrate/20130331104822_create_loyal_core_like_tracks.rb +19 -0
- data/db/migrate/20130413061851_create_kindeditor_assets.rb +17 -0
- data/db/migrate/20130610091558_create_loyal_core_skin_folders.rb +48 -0
- data/db/migrate/20130610095635_create_loyal_core_skin_recipes.rb +28 -0
- data/db/migrate/20130610095938_create_loyal_core_skin_dishes.rb +13 -0
- data/lib/loyal_core/action_controller/request_init.rb +33 -0
- data/lib/loyal_core/action_controller/seo_methods.rb +47 -0
- data/lib/loyal_core/action_controller.rb +4 -0
- data/lib/loyal_core/action_helper/ajax/like_tracks_helper.rb +26 -0
- data/lib/loyal_core/action_helper/ajax/rating_tracks_helper.rb +35 -0
- data/lib/loyal_core/action_helper/font_selector_helper.rb +25 -0
- data/lib/loyal_core/action_helper.rb +27 -0
- data/lib/loyal_core/action_view/labeled_builder.rb +127 -0
- data/lib/loyal_core/action_view.rb +7 -0
- data/lib/loyal_core/active_model/fix_counter_cache.rb +39 -0
- data/lib/loyal_core/active_model/human_display_able.rb +26 -0
- data/lib/loyal_core/active_model/strip_whitespace.rb +27 -0
- data/lib/loyal_core/active_model.rb +16 -0
- data/lib/loyal_core/acts/bit_able.rb +139 -0
- data/lib/loyal_core/acts/content_depart_able.rb +102 -0
- data/lib/loyal_core/acts/content_mode_able.rb +88 -0
- data/lib/loyal_core/acts/has_avatar.rb +31 -0
- data/lib/loyal_core/acts/has_permalink.rb +43 -0
- data/lib/loyal_core/acts/like_track_able.rb +90 -0
- data/lib/loyal_core/acts/named_filter_able.rb +40 -0
- data/lib/loyal_core/acts/rating_track_able.rb +76 -0
- data/lib/loyal_core/acts/skin_dish_able.rb +56 -0
- data/lib/loyal_core/acts/tree.rb +104 -0
- data/lib/loyal_core/acts/uuid_ful.rb +39 -0
- data/lib/loyal_core/acts/views_count_able.rb +33 -0
- data/lib/loyal_core/acts.rb +35 -0
- data/lib/loyal_core/config.rb +116 -0
- data/lib/loyal_core/core_ext/singleton_class.rb +9 -0
- data/lib/loyal_core/engine.rb +11 -0
- data/lib/loyal_core/memoist.rb +204 -0
- data/lib/loyal_core/utils/array_util.rb +16 -0
- data/lib/loyal_core/utils/config_util.rb +186 -0
- data/lib/loyal_core/utils/data_util.rb +181 -0
- data/lib/loyal_core/utils/text_util.rb +49 -0
- data/lib/loyal_core/utils.rb +8 -0
- data/lib/loyal_core/version.rb +4 -0
- data/lib/loyal_core.rb +17 -0
- data/lib/tasks/loyal_core_tasks.rake +11 -0
- metadata +231 -0
@@ -0,0 +1,37 @@
|
|
1
|
+
<h1>皮肤列表</h1>
|
2
|
+
|
3
|
+
<%= paginate @loyal_core_skin_recipes %>
|
4
|
+
|
5
|
+
<table>
|
6
|
+
<tr>
|
7
|
+
<th>ID</th>
|
8
|
+
<th>文章标题</th>
|
9
|
+
<th>作者</th>
|
10
|
+
<th>操作</th>
|
11
|
+
</tr>
|
12
|
+
<% if @loyal_core_skin_recipes.to_a.any? %>
|
13
|
+
<% @loyal_core_skin_recipes.each do |recipe| %>
|
14
|
+
<tr>
|
15
|
+
<td><%= recipe.id %></td>
|
16
|
+
<td><%= link_to "#{recipe.name}", loyal_core_app.admin_skin_recipe_url(:id => recipe.id) %></td>
|
17
|
+
<td>
|
18
|
+
<% if recipe.creator %>
|
19
|
+
<%= link_to "#{recipe.creator.nick_name}", loyal_passport_app.admin_user_url(:id => recipe.creator.id) %>
|
20
|
+
<% else %>
|
21
|
+
未知
|
22
|
+
<% end %>
|
23
|
+
</td>
|
24
|
+
<td>
|
25
|
+
<%= link_to "编辑", loyal_core_app.edit_admin_skin_recipe_url(:id => recipe.id) %>
|
26
|
+
<%= link_to "删除", loyal_core_app.admin_skin_recipe_url(:id => recipe.id), :method => :delete, :confirm => '确定要删除吗?' %>
|
27
|
+
</td>
|
28
|
+
</tr>
|
29
|
+
<% end %>
|
30
|
+
<% else %>
|
31
|
+
列表为空
|
32
|
+
<% end %>
|
33
|
+
</table>
|
34
|
+
|
35
|
+
<%= paginate @loyal_core_skin_recipes %>
|
36
|
+
|
37
|
+
<%= link_to "new", loyal_core_app.new_admin_skin_recipe_url %>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<h1>新建新皮肤</h1>
|
2
|
+
|
3
|
+
<%= form_for(
|
4
|
+
@loyal_core_skin_recipe,
|
5
|
+
:url => loyal_core_app.admin_skin_recipes_url,
|
6
|
+
:builder => ::LoyalCore::ActionView::LabeledBuilder,
|
7
|
+
:as => :loyal_core_skin_recipe
|
8
|
+
) do |f| %>
|
9
|
+
<%= render :partial => 'form', :locals => { :f => f } %>
|
10
|
+
<% end %>
|
11
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<h1>【皮肤】 <%= @loyal_core_skin_recipe.name %></h1>
|
2
|
+
|
3
|
+
<div>
|
4
|
+
<b>短标题</b><%= @loyal_core_skin_recipe.short_name %><br/>
|
5
|
+
<b>路径</b><%= @loyal_core_skin_recipe.assets_path %><br/>
|
6
|
+
<b>样式表</b><%= @loyal_core_skin_recipe.stylesheet_text %><br/>
|
7
|
+
<b>简介</b><%= @loyal_core_skin_recipe.instroduction %><br/>
|
8
|
+
<b>描述</b><%= @loyal_core_skin_recipe.description %><br/>
|
9
|
+
|
10
|
+
<b>描述</b>
|
11
|
+
<%= image_tag @loyal_core_skin_recipe.avatar.url(:small) %>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
|
15
|
+
<%= link_to "编辑", loyal_core_app.edit_admin_skin_recipe_url(:id => @loyal_core_skin_recipe.id) %>
|
16
|
+
<%= link_to "返回列表", loyal_core_app.admin_skin_recipes_url %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= show_simple_captcha options %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= show_simple_captcha @simple_captcha_options %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
5
|
+
<title>redirect</title>
|
6
|
+
<meta http-equiv="refresh" content="0;url=<%= params[:url] %>">
|
7
|
+
<%= csrf_meta_tags %>
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
|
11
|
+
</body>
|
12
|
+
</html>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<div class='simple_captcha'>
|
2
|
+
<span class='simple_captcha_image'>
|
3
|
+
<%= simple_captcha_options[:image] %>
|
4
|
+
<%= link_to I18n.t('simple_captcha.retry'),
|
5
|
+
"javascript:;",
|
6
|
+
:onclick => "marchBackstage.retrySimpleCaptcha(this, \'#{j loyal_core_app.new_ajax_core_captcha_url}\');",
|
7
|
+
:class => 'retry'
|
8
|
+
%>
|
9
|
+
</span>
|
10
|
+
|
11
|
+
<span class='simple_captcha_field'>
|
12
|
+
<%= simple_captcha_options[:field] %>
|
13
|
+
</span>
|
14
|
+
</div>
|
15
|
+
|
16
|
+
|
@@ -0,0 +1,139 @@
|
|
1
|
+
# # Sample localization file for English. Add more files in this directory for other locales.
|
2
|
+
# # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
|
3
|
+
#
|
4
|
+
# en:
|
5
|
+
# hello: "Hello world"
|
6
|
+
|
7
|
+
en:
|
8
|
+
date:
|
9
|
+
formats:
|
10
|
+
# Use the strftime parameters for formats.
|
11
|
+
# When no format has been given, it uses default.
|
12
|
+
# You can provide other formats here if you like!
|
13
|
+
default: "%Y-%m-%d"
|
14
|
+
short: "%b %d"
|
15
|
+
long: "%B %d, %Y"
|
16
|
+
|
17
|
+
day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
|
18
|
+
abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
|
19
|
+
|
20
|
+
# Don't forget the nil at the beginning; there's no such thing as a 0th month
|
21
|
+
month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
|
22
|
+
abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
|
23
|
+
# Used in date_select and datetime_select.
|
24
|
+
order:
|
25
|
+
- :year
|
26
|
+
- :month
|
27
|
+
- :day
|
28
|
+
|
29
|
+
time:
|
30
|
+
formats:
|
31
|
+
default: "%a, %d %b %Y %H:%M:%S %z"
|
32
|
+
short: "%d %b %H:%M"
|
33
|
+
long: "%B %d, %Y %H:%M"
|
34
|
+
am: "am"
|
35
|
+
pm: "pm"
|
36
|
+
|
37
|
+
# Used in array.to_sentence.
|
38
|
+
support:
|
39
|
+
array:
|
40
|
+
words_connector: ", "
|
41
|
+
two_words_connector: " and "
|
42
|
+
last_word_connector: ", and "
|
43
|
+
number:
|
44
|
+
# Used in NumberHelper.number_to_delimited()
|
45
|
+
# These are also the defaults for 'currency', 'percentage', 'precision', and 'human'
|
46
|
+
format:
|
47
|
+
# Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5)
|
48
|
+
separator: "."
|
49
|
+
# Delimits thousands (e.g. 1,000,000 is a million) (always in groups of three)
|
50
|
+
delimiter: ","
|
51
|
+
# Number of decimals, behind the separator (the number 1 with a precision of 2 gives: 1.00)
|
52
|
+
precision: 3
|
53
|
+
# If set to true, precision will mean the number of significant digits instead
|
54
|
+
# of the number of decimal digits (1234 with precision 2 becomes 1200, 1.23543 becomes 1.2)
|
55
|
+
significant: false
|
56
|
+
# If set, the zeros after the decimal separator will always be stripped (eg.: 1.200 will be 1.2)
|
57
|
+
strip_insignificant_zeros: false
|
58
|
+
|
59
|
+
# Used in NumberHelper.number_to_currency()
|
60
|
+
currency:
|
61
|
+
format:
|
62
|
+
# Where is the currency sign? %u is the currency unit, %n the number (default: $5.00)
|
63
|
+
format: "%u%n"
|
64
|
+
unit: "$"
|
65
|
+
# These five are to override number.format and are optional
|
66
|
+
separator: "."
|
67
|
+
delimiter: ","
|
68
|
+
precision: 2
|
69
|
+
significant: false
|
70
|
+
strip_insignificant_zeros: false
|
71
|
+
|
72
|
+
# Used in NumberHelper.number_to_percentage()
|
73
|
+
percentage:
|
74
|
+
format:
|
75
|
+
# These five are to override number.format and are optional
|
76
|
+
# separator:
|
77
|
+
delimiter: ""
|
78
|
+
# precision:
|
79
|
+
# significant: false
|
80
|
+
# strip_insignificant_zeros: false
|
81
|
+
format: "%n%"
|
82
|
+
|
83
|
+
# Used in NumberHelper.number_to_rounded()
|
84
|
+
precision:
|
85
|
+
format:
|
86
|
+
# These five are to override number.format and are optional
|
87
|
+
# separator:
|
88
|
+
delimiter: ""
|
89
|
+
# precision:
|
90
|
+
# significant: false
|
91
|
+
# strip_insignificant_zeros: false
|
92
|
+
|
93
|
+
# Used in NumberHelper.number_to_human_size() and NumberHelper.number_to_human()
|
94
|
+
human:
|
95
|
+
format:
|
96
|
+
# These five are to override number.format and are optional
|
97
|
+
# separator:
|
98
|
+
delimiter: ""
|
99
|
+
precision: 3
|
100
|
+
significant: true
|
101
|
+
strip_insignificant_zeros: true
|
102
|
+
# Used in number_to_human_size()
|
103
|
+
storage_units:
|
104
|
+
# Storage units output formatting.
|
105
|
+
# %u is the storage unit, %n is the number (default: 2 MB)
|
106
|
+
format: "%n %u"
|
107
|
+
units:
|
108
|
+
byte:
|
109
|
+
one: "Byte"
|
110
|
+
other: "Bytes"
|
111
|
+
kb: "KB"
|
112
|
+
mb: "MB"
|
113
|
+
gb: "GB"
|
114
|
+
tb: "TB"
|
115
|
+
# Used in NumberHelper.number_to_human()
|
116
|
+
decimal_units:
|
117
|
+
format: "%n %u"
|
118
|
+
# Decimal units output formatting
|
119
|
+
# By default we will only quantify some of the exponents
|
120
|
+
# but the commented ones might be defined or overridden
|
121
|
+
# by the user.
|
122
|
+
units:
|
123
|
+
# femto: Quadrillionth
|
124
|
+
# pico: Trillionth
|
125
|
+
# nano: Billionth
|
126
|
+
# micro: Millionth
|
127
|
+
# mili: Thousandth
|
128
|
+
# centi: Hundredth
|
129
|
+
# deci: Tenth
|
130
|
+
unit: ""
|
131
|
+
# ten:
|
132
|
+
# one: Ten
|
133
|
+
# other: Tens
|
134
|
+
# hundred: Hundred
|
135
|
+
thousand: Thousand
|
136
|
+
million: Million
|
137
|
+
billion: Billion
|
138
|
+
trillion: Trillion
|
139
|
+
quadrillion: Quadrillion
|
@@ -0,0 +1,199 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
zh-CN:
|
3
|
+
hello: '您好!'
|
4
|
+
date:
|
5
|
+
abbr_day_names:
|
6
|
+
- 日
|
7
|
+
- 一
|
8
|
+
- 二
|
9
|
+
- 三
|
10
|
+
- 四
|
11
|
+
- 五
|
12
|
+
- 六
|
13
|
+
abbr_month_names:
|
14
|
+
-
|
15
|
+
- 1月
|
16
|
+
- 2月
|
17
|
+
- 3月
|
18
|
+
- 4月
|
19
|
+
- 5月
|
20
|
+
- 6月
|
21
|
+
- 7月
|
22
|
+
- 8月
|
23
|
+
- 9月
|
24
|
+
- 10月
|
25
|
+
- 11月
|
26
|
+
- 12月
|
27
|
+
day_names:
|
28
|
+
- 星期日
|
29
|
+
- 星期一
|
30
|
+
- 星期二
|
31
|
+
- 星期三
|
32
|
+
- 星期四
|
33
|
+
- 星期五
|
34
|
+
- 星期六
|
35
|
+
formats:
|
36
|
+
default: ! '%Y-%m-%d'
|
37
|
+
long: ! '%Y年%b%d日'
|
38
|
+
short: ! '%b%d日'
|
39
|
+
month_names:
|
40
|
+
-
|
41
|
+
- 一月
|
42
|
+
- 二月
|
43
|
+
- 三月
|
44
|
+
- 四月
|
45
|
+
- 五月
|
46
|
+
- 六月
|
47
|
+
- 七月
|
48
|
+
- 八月
|
49
|
+
- 九月
|
50
|
+
- 十月
|
51
|
+
- 十一月
|
52
|
+
- 十二月
|
53
|
+
order:
|
54
|
+
- :year
|
55
|
+
- :month
|
56
|
+
- :day
|
57
|
+
datetime:
|
58
|
+
distance_in_words:
|
59
|
+
about_x_hours:
|
60
|
+
one: 大约一小时
|
61
|
+
other: 大约 %{count} 小时
|
62
|
+
about_x_months:
|
63
|
+
one: 大约一个月
|
64
|
+
other: 大约 %{count} 个月
|
65
|
+
about_x_years:
|
66
|
+
one: 大约一年
|
67
|
+
other: 大约 %{count} 年
|
68
|
+
almost_x_years:
|
69
|
+
one: 接近一年
|
70
|
+
other: 接近 %{count} 年
|
71
|
+
half_a_minute: 半分钟
|
72
|
+
less_than_x_minutes:
|
73
|
+
one: 不到一分钟
|
74
|
+
other: 不到 %{count} 分钟
|
75
|
+
less_than_x_seconds:
|
76
|
+
one: 不到一秒
|
77
|
+
other: 不到 %{count} 秒
|
78
|
+
over_x_years:
|
79
|
+
one: 一年多
|
80
|
+
other: ! '%{count} 年多'
|
81
|
+
x_days:
|
82
|
+
one: 一天
|
83
|
+
other: ! '%{count} 天'
|
84
|
+
x_minutes:
|
85
|
+
one: 一分钟
|
86
|
+
other: ! '%{count} 分钟'
|
87
|
+
x_months:
|
88
|
+
one: 一个月
|
89
|
+
other: ! '%{count} 个月'
|
90
|
+
x_seconds:
|
91
|
+
one: 一秒
|
92
|
+
other: ! '%{count} 秒'
|
93
|
+
prompts:
|
94
|
+
day: 日
|
95
|
+
hour: 时
|
96
|
+
minute: 分
|
97
|
+
month: 月
|
98
|
+
second: 秒
|
99
|
+
year: 年
|
100
|
+
errors: &errors
|
101
|
+
format: ! '%{attribute} %{message}'
|
102
|
+
messages:
|
103
|
+
extension_white_list_error: '不支持该文件类型'
|
104
|
+
accepted: 必须是可被接受的
|
105
|
+
blank: 不能为空字符
|
106
|
+
confirmation: 与确认值不匹配
|
107
|
+
empty: 不能留空
|
108
|
+
equal_to: 必须等于 %{count}
|
109
|
+
even: 必须为双数
|
110
|
+
exclusion: 是保留关键字
|
111
|
+
greater_than: 必须大于 %{count}
|
112
|
+
greater_than_or_equal_to: 必须大于或等于 %{count}
|
113
|
+
inclusion: 不包含于列表中
|
114
|
+
invalid: 是无效的
|
115
|
+
less_than: 必须小于 %{count}
|
116
|
+
less_than_or_equal_to: 必须小于或等于 %{count}
|
117
|
+
not_a_number: 不是数字
|
118
|
+
not_an_integer: 必须是整数
|
119
|
+
odd: 必须为单数
|
120
|
+
record_invalid: ! '验证失败: %{errors}'
|
121
|
+
taken: 已经被使用
|
122
|
+
too_long: 过长(最长为 %{count} 个字符)
|
123
|
+
too_short: 过短(最短为 %{count} 个字符)
|
124
|
+
wrong_length: 长度非法(必须为 %{count} 个字符)
|
125
|
+
not_exist: 不存在
|
126
|
+
length_not_in_the_range: 长度必须在 %{min}-%{max} 之间
|
127
|
+
template:
|
128
|
+
body: 如下字段出现错误:
|
129
|
+
header:
|
130
|
+
one: 有 1 个错误发生导致「%{model}」无法被保存。
|
131
|
+
other: 有 %{count} 个错误发生导致「%{model}」无法被保存。
|
132
|
+
helpers:
|
133
|
+
select:
|
134
|
+
prompt: 请选择
|
135
|
+
submit:
|
136
|
+
create: 新建%{model}
|
137
|
+
submit: 储存%{model}
|
138
|
+
update: 更新%{model}
|
139
|
+
number:
|
140
|
+
currency:
|
141
|
+
format:
|
142
|
+
delimiter: ! ','
|
143
|
+
format: ! '%u %n'
|
144
|
+
precision: 2
|
145
|
+
separator: .
|
146
|
+
significant: false
|
147
|
+
strip_insignificant_zeros: false
|
148
|
+
unit: CN¥
|
149
|
+
format:
|
150
|
+
delimiter: ! ','
|
151
|
+
precision: 3
|
152
|
+
separator: .
|
153
|
+
significant: false
|
154
|
+
strip_insignificant_zeros: false
|
155
|
+
human:
|
156
|
+
decimal_units:
|
157
|
+
format: ! '%n %u'
|
158
|
+
units:
|
159
|
+
billion: 十亿
|
160
|
+
million: 百万
|
161
|
+
quadrillion: 千兆
|
162
|
+
thousand: 千
|
163
|
+
trillion: 兆
|
164
|
+
unit: ''
|
165
|
+
format:
|
166
|
+
delimiter: ''
|
167
|
+
precision: 1
|
168
|
+
significant: false
|
169
|
+
strip_insignificant_zeros: false
|
170
|
+
storage_units:
|
171
|
+
format: ! '%n %u'
|
172
|
+
units:
|
173
|
+
byte:
|
174
|
+
one: Byte
|
175
|
+
other: Bytes
|
176
|
+
gb: GB
|
177
|
+
kb: KB
|
178
|
+
mb: MB
|
179
|
+
tb: TB
|
180
|
+
percentage:
|
181
|
+
format:
|
182
|
+
delimiter: ''
|
183
|
+
precision:
|
184
|
+
format:
|
185
|
+
delimiter: ''
|
186
|
+
support:
|
187
|
+
array:
|
188
|
+
two_words_connector: ! ' 和 '
|
189
|
+
last_word_connector: ! ', 和 '
|
190
|
+
words_connector: ! ', '
|
191
|
+
time:
|
192
|
+
am: 上午
|
193
|
+
formats:
|
194
|
+
default: ! '%Y年%m月%d日 %H:%M'
|
195
|
+
long: ! '%Y年%m月%d日 %A %H:%M:%S %Z'
|
196
|
+
short: ! '%m月%d日 %H:%M'
|
197
|
+
mini: ! '%m.%d %H:%M'
|
198
|
+
pm: 下午
|
199
|
+
|
data/config/routes.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
LoyalCore::Engine.routes.draw do
|
3
|
+
|
4
|
+
scope :admin, :module => :admin, :as => :admin, :path => :loyal_core do
|
5
|
+
namespace :skin do
|
6
|
+
resources :folders
|
7
|
+
resources :recipes
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
namespace :ajax do
|
12
|
+
scope :core, :as => :core, :path => :core do
|
13
|
+
get "like_tracks/:target_type/:target_id/touch(.:format)" => "like_tracks#touch", :as => :touch_like_track
|
14
|
+
get "rating_tracks/:target_type/:target_id/up(.:format)" => "rating_tracks#up", :as => :up_rating_track
|
15
|
+
get "rating_tracks/:target_type/:target_id/down(.:format)" => "rating_tracks#down", :as => :down_rating_track
|
16
|
+
|
17
|
+
|
18
|
+
resources :captchas, :only => [:new]
|
19
|
+
|
20
|
+
# ajax_core_login_path
|
21
|
+
get "login(.:format)" => "users/sessions#new", :as => :login
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
class CreateLoyalCoreRatingTracks < ActiveRecord::Migration
|
3
|
+
def change
|
4
|
+
create_table :loyal_core_rating_tracks do |t|
|
5
|
+
t.references :target, :polymorphic => true
|
6
|
+
t.integer :created_by
|
7
|
+
t.string :created_ip
|
8
|
+
t.integer :score, :default => 0, :null => false
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
|
13
|
+
add_index :loyal_core_rating_tracks, [:created_by]
|
14
|
+
|
15
|
+
add_index :loyal_core_rating_tracks, [:target_id, :target_type],
|
16
|
+
:name => :loyal_core_rating_tracks_target
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
class CreateLoyalCoreLikeTracks < ActiveRecord::Migration
|
3
|
+
def change
|
4
|
+
create_table :loyal_core_like_tracks do |t|
|
5
|
+
t.references :target, :polymorphic => true
|
6
|
+
t.integer :created_by
|
7
|
+
t.string :created_ip
|
8
|
+
t.integer :position, :default => 0, :null => false
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
|
13
|
+
add_index :loyal_core_like_tracks, [:created_by]
|
14
|
+
|
15
|
+
add_index :loyal_core_like_tracks, [:target_id, :target_type],
|
16
|
+
:name => :loyal_core_like_tracks_target
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
class CreateKindeditorAssets < ActiveRecord::Migration
|
3
|
+
def self.up
|
4
|
+
create_table :kindeditor_assets do |t|
|
5
|
+
t.string :asset
|
6
|
+
t.string :file_name
|
7
|
+
t.integer :file_size
|
8
|
+
t.string :file_type
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.down
|
14
|
+
drop_table :kindeditor_assets
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
class CreateLoyalCoreSkinFolders < ActiveRecord::Migration
|
3
|
+
def change
|
4
|
+
create_table :loyal_core_skin_folders do |t|
|
5
|
+
t.string :name #名称
|
6
|
+
t.string :short_name #简称
|
7
|
+
|
8
|
+
t.integer :publish_status, :default => 0, :null => false
|
9
|
+
|
10
|
+
t.integer :created_by
|
11
|
+
t.string :created_ip
|
12
|
+
|
13
|
+
# 简介
|
14
|
+
t.string :instroduction
|
15
|
+
|
16
|
+
# 描述
|
17
|
+
t.text :description
|
18
|
+
|
19
|
+
t.integer :lang, default: 0, :null => false #语言
|
20
|
+
|
21
|
+
t.string :uuid
|
22
|
+
|
23
|
+
t.string :space #命名空间
|
24
|
+
t.string :permalink
|
25
|
+
|
26
|
+
###### avatar #############################
|
27
|
+
t.string :avatar
|
28
|
+
|
29
|
+
###### for nested_ful #####################
|
30
|
+
t.integer :parent_id
|
31
|
+
t.integer :left_id
|
32
|
+
t.integer :right_id
|
33
|
+
t.integer :depth
|
34
|
+
t.integer :children_count, default: 0
|
35
|
+
|
36
|
+
##### soft deleted #######################
|
37
|
+
t.datetime :deleted_at
|
38
|
+
|
39
|
+
t.timestamps
|
40
|
+
end
|
41
|
+
|
42
|
+
add_index :loyal_core_skin_folders, [:uuid]
|
43
|
+
add_index :loyal_core_skin_folders, [:space, :permalink]
|
44
|
+
add_index :loyal_core_skin_folders, [:parent_id]
|
45
|
+
add_index :loyal_core_skin_folders, [:left_id]
|
46
|
+
add_index :loyal_core_skin_folders, [:right_id]
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
class CreateLoyalCoreSkinRecipes < ActiveRecord::Migration
|
3
|
+
def change
|
4
|
+
create_table :loyal_core_skin_recipes do |t|
|
5
|
+
t.integer :folder_id
|
6
|
+
|
7
|
+
t.string :name
|
8
|
+
t.string :short_name
|
9
|
+
|
10
|
+
t.string :avatar
|
11
|
+
t.string :stored_tags
|
12
|
+
|
13
|
+
t.string :assets_path
|
14
|
+
t.text :stylesheet_text
|
15
|
+
|
16
|
+
t.integer :created_by
|
17
|
+
t.string :created_ip
|
18
|
+
|
19
|
+
# 简介
|
20
|
+
t.string :instroduction
|
21
|
+
|
22
|
+
# 描述
|
23
|
+
t.text :description
|
24
|
+
|
25
|
+
t.timestamps
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
class CreateLoyalCoreSkinDishes < ActiveRecord::Migration
|
3
|
+
def change
|
4
|
+
create_table :loyal_core_skin_dishes do |t|
|
5
|
+
|
6
|
+
t.references :target, :polymorphic => true
|
7
|
+
|
8
|
+
t.integer :recipe_id
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
module LoyalCore::ActionController
|
3
|
+
module RequestInit
|
4
|
+
def self.included base
|
5
|
+
base.class_eval do
|
6
|
+
before_filter do |controller|
|
7
|
+
request = controller.send :request
|
8
|
+
|
9
|
+
Rails.logger.debug " -> domain: #{request.domain}"
|
10
|
+
Rails.logger.debug " -> subdomain: #{request.subdomain}"
|
11
|
+
Rails.logger.debug " -> host: #{request.host}"
|
12
|
+
Rails.logger.debug " * Accept-Language: #{request.env['HTTP_ACCEPT_LANGUAGE']}"
|
13
|
+
# I18n.locale = params[:locale] || extract_locale_from_accept_language_header || I18n.default_locale
|
14
|
+
I18n.locale = params[:locale] || I18n.default_locale
|
15
|
+
Rails.logger.debug " * Locale set to '#{I18n.locale}'"
|
16
|
+
|
17
|
+
Rails.logger.debug " * session: #{session.to_hash}"
|
18
|
+
end
|
19
|
+
|
20
|
+
include InstanceMethods
|
21
|
+
include ::LoyalCore::ActionController::SeoMethods
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
module InstanceMethods
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
if defined?(ActionController::Base)
|
32
|
+
ActionController::Base.send :include, ::LoyalCore::ActionController::RequestInit
|
33
|
+
end
|