sofav 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +35 -0
- data/Rakefile +34 -0
- data/app/builders/admin/form_builder.rb +250 -0
- data/app/controllers/application_controller.rb +23 -0
- data/app/decorators/base_decorator.rb +172 -0
- data/app/helpers/admin/core_helper.rb +237 -0
- data/app/helpers/admin/show_view_helper.rb +69 -0
- data/app/helpers/admin/tags_helper.rb +104 -0
- data/app/services/active_record/search_service.rb +121 -0
- data/app/views/admin/application/_breadcrumb_nav.html.erb +10 -0
- data/app/views/admin/application/_collection.html.erb +79 -0
- data/app/views/admin/application/_save_js.js.erb +20 -0
- data/app/views/admin/application/_sidebar.html.erb +62 -0
- data/app/views/admin/application/_topbar.html.erb +32 -0
- data/app/views/admin/application/actions/charge.html.erb +3 -0
- data/app/views/admin/application/actions/destroy.html.erb +5 -0
- data/app/views/admin/application/actions/edit.html.erb +1 -0
- data/app/views/admin/application/actions/edit_sights.html.erb +1 -0
- data/app/views/admin/application/actions/feedback.html.erb +4 -0
- data/app/views/admin/application/actions/index_charge.html.erb +1 -0
- data/app/views/admin/application/actions/index_destroy.html.erb +1 -0
- data/app/views/admin/application/actions/index_edit.html.erb +1 -0
- data/app/views/admin/application/actions/index_edit_sights.html.erb +1 -0
- data/app/views/admin/application/actions/index_show.html.erb +1 -0
- data/app/views/admin/application/actions/new.html.erb +1 -0
- data/app/views/admin/application/create.js.erb +1 -0
- data/app/views/admin/application/destroy.js.erb +6 -0
- data/app/views/admin/application/edit.html.erb +18 -0
- data/app/views/admin/application/index.html.erb +23 -0
- data/app/views/admin/application/new.html.erb +18 -0
- data/app/views/admin/application/partials/_map_pos_picker.html.erb +101 -0
- data/app/views/admin/application/partials/_sort_script.html.erb +32 -0
- data/app/views/admin/application/show.html.erb +16 -0
- data/app/views/admin/application/update.js.erb +1 -0
- data/app/views/admin/dashboard/index.html.erb +8 -0
- data/app/views/layouts/admin.html.erb +30 -0
- data/config/locales/devise.en.yml +64 -0
- data/config/locales/devise.zh-CN.yml +120 -0
- data/config/locales/doorkeeper.en.yml +124 -0
- data/config/locales/doorkeeper.zh-CN.yml +132 -0
- data/config/locales/en.yml +23 -0
- data/config/locales/enumerize/defaults.zh-CN.yml +7 -0
- data/config/locales/kaminari.zh-CN.yml +17 -0
- data/config/locales/rails.zh-CN.yml +204 -0
- data/config/locales/views/actions.zh-CN.yml +21 -0
- data/config/locales/views/attributes.zh-CN.yml +15 -0
- data/config/locales/views/breadcrumb.zh-CN.yml +5 -0
- data/config/locales/views/common.zh-CN.yml +7 -0
- data/config/locales/views/enums.zh-CN.yml +13 -0
- data/config/locales/views/profiles.zh-CN.yml +3 -0
- data/lib/generators/sofav/USAGE +0 -0
- data/lib/generators/sofav/sofav_generator.rb +50 -0
- data/lib/generators/sofav/templates/activerecord.zh-CN.yml +4 -0
- data/lib/generators/sofav/templates/attribute_types.zh-CN.yml +2 -0
- data/lib/sofav.rb +6 -0
- data/lib/sofav/decorator.rb +47 -0
- data/lib/sofav/local.rb +52 -0
- data/lib/sofav/version.rb +3 -0
- data/lib/tasks/sofa_tasks.rake +4 -0
- data/vendor/assets/javascripts/admin/here.js +0 -0
- data/vendor/assets/javascripts/bootbox.js +1020 -0
- data/vendor/assets/javascripts/bootstrap.js +2377 -0
- data/vendor/assets/javascripts/jquery-ui.js +5169 -0
- data/vendor/assets/javascripts/select2.js +5725 -0
- data/vendor/assets/stylesheets/bootstrap.css +6800 -0
- data/vendor/assets/stylesheets/bootstrap.css.map +1 -0
- data/vendor/assets/stylesheets/jquery-ui.css +453 -0
- data/vendor/assets/stylesheets/select2.css +484 -0
- metadata +211 -0
@@ -0,0 +1,23 @@
|
|
1
|
+
# Files in the config/locales directory are used for internationalization
|
2
|
+
# and are automatically loaded by Rails. If you want to use locales other
|
3
|
+
# than English, add the necessary files in this directory.
|
4
|
+
#
|
5
|
+
# To use the locales, use `I18n.t`:
|
6
|
+
#
|
7
|
+
# I18n.t 'hello'
|
8
|
+
#
|
9
|
+
# In views, this is aliased to just `t`:
|
10
|
+
#
|
11
|
+
# <%= t('hello') %>
|
12
|
+
#
|
13
|
+
# To use a different locale, set it with `I18n.locale`:
|
14
|
+
#
|
15
|
+
# I18n.locale = :es
|
16
|
+
#
|
17
|
+
# This would use the information in config/locales/es.yml.
|
18
|
+
#
|
19
|
+
# To learn more, please read the Rails Internationalization guide
|
20
|
+
# available at http://guides.rubyonrails.org/i18n.html.
|
21
|
+
|
22
|
+
en:
|
23
|
+
hello: "Hello world"
|
@@ -0,0 +1,17 @@
|
|
1
|
+
zh-CN:
|
2
|
+
views:
|
3
|
+
pagination:
|
4
|
+
first: 第一页
|
5
|
+
previous: '<'
|
6
|
+
truncate: ...
|
7
|
+
next: '>'
|
8
|
+
last: 最后一页
|
9
|
+
helpers:
|
10
|
+
page_entries_info:
|
11
|
+
one_page:
|
12
|
+
display_entries:
|
13
|
+
zero: "暂时还没有内容喔"
|
14
|
+
one: "显示仅有的 <span class='text-primary'>1</span> 条记录"
|
15
|
+
other: "显示第 <span class='text-primary'>1 - %{count}</span> 条, 共 <span class='text-primary'>%{count}</span> 条记录"
|
16
|
+
more_pages:
|
17
|
+
display_entries: "显示第 <span class='text-primary'>%{first} - %{last}</span> 条, 共 <span class='text-primary'>%{total}</span> 条记录"
|
@@ -0,0 +1,204 @@
|
|
1
|
+
---
|
2
|
+
zh-CN:
|
3
|
+
date:
|
4
|
+
abbr_day_names:
|
5
|
+
- 周日
|
6
|
+
- 周一
|
7
|
+
- 周二
|
8
|
+
- 周三
|
9
|
+
- 周四
|
10
|
+
- 周五
|
11
|
+
- 周六
|
12
|
+
abbr_month_names:
|
13
|
+
-
|
14
|
+
- 1月
|
15
|
+
- 2月
|
16
|
+
- 3月
|
17
|
+
- 4月
|
18
|
+
- 5月
|
19
|
+
- 6月
|
20
|
+
- 7月
|
21
|
+
- 8月
|
22
|
+
- 9月
|
23
|
+
- 10月
|
24
|
+
- 11月
|
25
|
+
- 12月
|
26
|
+
day_names:
|
27
|
+
- 星期日
|
28
|
+
- 星期一
|
29
|
+
- 星期二
|
30
|
+
- 星期三
|
31
|
+
- 星期四
|
32
|
+
- 星期五
|
33
|
+
- 星期六
|
34
|
+
formats:
|
35
|
+
default: "%Y-%m-%d"
|
36
|
+
long: "%Y年%b%d日"
|
37
|
+
short: "%b%d日"
|
38
|
+
month_names:
|
39
|
+
-
|
40
|
+
- 一月
|
41
|
+
- 二月
|
42
|
+
- 三月
|
43
|
+
- 四月
|
44
|
+
- 五月
|
45
|
+
- 六月
|
46
|
+
- 七月
|
47
|
+
- 八月
|
48
|
+
- 九月
|
49
|
+
- 十月
|
50
|
+
- 十一月
|
51
|
+
- 十二月
|
52
|
+
order:
|
53
|
+
- :year
|
54
|
+
- :month
|
55
|
+
- :day
|
56
|
+
datetime:
|
57
|
+
distance_in_words:
|
58
|
+
about_x_hours:
|
59
|
+
one: 大约一小时
|
60
|
+
other: 大约%{count}小时
|
61
|
+
about_x_months:
|
62
|
+
one: 大约一个月
|
63
|
+
other: 大约%{count}个月
|
64
|
+
about_x_years:
|
65
|
+
one: 大约一年
|
66
|
+
other: 大约%{count}年
|
67
|
+
almost_x_years:
|
68
|
+
one: 接近一年
|
69
|
+
other: 接近%{count}年
|
70
|
+
half_a_minute: 半分钟
|
71
|
+
less_than_x_minutes:
|
72
|
+
one: 不到一分钟
|
73
|
+
other: 不到%{count}分钟
|
74
|
+
less_than_x_seconds:
|
75
|
+
one: 不到一秒
|
76
|
+
other: 不到%{count}秒
|
77
|
+
over_x_years:
|
78
|
+
one: 一年多
|
79
|
+
other: "%{count}年多"
|
80
|
+
x_days:
|
81
|
+
one: 一天
|
82
|
+
other: "%{count}天"
|
83
|
+
x_minutes:
|
84
|
+
one: 一分钟
|
85
|
+
other: "%{count}分钟"
|
86
|
+
x_months:
|
87
|
+
one: 一个月
|
88
|
+
other: "%{count}个月"
|
89
|
+
x_seconds:
|
90
|
+
one: 一秒
|
91
|
+
other: "%{count}秒"
|
92
|
+
prompts:
|
93
|
+
day: 日
|
94
|
+
hour: 时
|
95
|
+
minute: 分
|
96
|
+
month: 月
|
97
|
+
second: 秒
|
98
|
+
year: 年
|
99
|
+
errors:
|
100
|
+
format: "%{attribute}%{message}"
|
101
|
+
messages:
|
102
|
+
accepted: 必须是可被接受的
|
103
|
+
blank: 不能为空
|
104
|
+
present: 必须是空白
|
105
|
+
confirmation: 与确认值不匹配
|
106
|
+
empty: 不能留空
|
107
|
+
equal_to: 必须等于%{count}
|
108
|
+
even: 必须为双数
|
109
|
+
exclusion: 是保留关键字
|
110
|
+
greater_than: 必须大于%{count}
|
111
|
+
greater_than_or_equal_to: 必须大于或等于%{count}
|
112
|
+
inclusion: 不包含于列表中
|
113
|
+
invalid: 是无效的
|
114
|
+
less_than: 必须小于%{count}
|
115
|
+
less_than_or_equal_to: 必须小于或等于%{count}
|
116
|
+
not_a_number: 不是数字
|
117
|
+
not_an_integer: 必须是整数
|
118
|
+
odd: 必须为单数
|
119
|
+
record_invalid: '验证失败:%{errors}'
|
120
|
+
restrict_dependent_destroy:
|
121
|
+
one: 由于%{record}需要此记录,所以无法移除记录
|
122
|
+
many: 由于%{record}需要此记录,所以无法移除记录
|
123
|
+
taken: 已经被使用
|
124
|
+
too_long:
|
125
|
+
one: 过长(最长为一个字符)
|
126
|
+
other: 过长(最长为%{count}个字符)
|
127
|
+
too_short:
|
128
|
+
one: 过短(最短为一个字符)
|
129
|
+
other: 过短(最短为%{count}个字符)
|
130
|
+
wrong_length:
|
131
|
+
one: 长度非法(必须为一个字符)
|
132
|
+
other: 长度非法(必须为%{count}个字符)
|
133
|
+
other_than: 长度非法(不可为%{count}个字符
|
134
|
+
template:
|
135
|
+
body: 如下字段出现错误:
|
136
|
+
header:
|
137
|
+
one: 有 1 个错误发生导致「%{model}」无法被保存。
|
138
|
+
other: 有%{count}个错误发生导致「%{model}」无法被保存。
|
139
|
+
helpers:
|
140
|
+
select:
|
141
|
+
prompt: 请选择
|
142
|
+
submit:
|
143
|
+
create: 新增%{model}
|
144
|
+
submit: 储存%{model}
|
145
|
+
update: 更新%{model}
|
146
|
+
number:
|
147
|
+
currency:
|
148
|
+
format:
|
149
|
+
delimiter: ","
|
150
|
+
format: "%u%n"
|
151
|
+
precision: 2
|
152
|
+
separator: "."
|
153
|
+
significant: false
|
154
|
+
strip_insignificant_zeros: false
|
155
|
+
unit: CN¥
|
156
|
+
format:
|
157
|
+
delimiter: ","
|
158
|
+
precision: 3
|
159
|
+
separator: "."
|
160
|
+
significant: false
|
161
|
+
strip_insignificant_zeros: false
|
162
|
+
human:
|
163
|
+
decimal_units:
|
164
|
+
format: "%n%u"
|
165
|
+
units:
|
166
|
+
billion: 十亿
|
167
|
+
million: 百万
|
168
|
+
quadrillion: 千兆
|
169
|
+
thousand: 千
|
170
|
+
trillion: 兆
|
171
|
+
unit: ''
|
172
|
+
format:
|
173
|
+
delimiter: ''
|
174
|
+
precision: 1
|
175
|
+
significant: false
|
176
|
+
strip_insignificant_zeros: false
|
177
|
+
storage_units:
|
178
|
+
format: "%n%u"
|
179
|
+
units:
|
180
|
+
byte:
|
181
|
+
one: Byte
|
182
|
+
other: Bytes
|
183
|
+
gb: GB
|
184
|
+
kb: KB
|
185
|
+
mb: MB
|
186
|
+
tb: TB
|
187
|
+
percentage:
|
188
|
+
format:
|
189
|
+
delimiter: ''
|
190
|
+
precision:
|
191
|
+
format:
|
192
|
+
delimiter: ''
|
193
|
+
support:
|
194
|
+
array:
|
195
|
+
last_word_connector: ", 和 "
|
196
|
+
two_words_connector: " 和 "
|
197
|
+
words_connector: ", "
|
198
|
+
time:
|
199
|
+
am: 上午
|
200
|
+
formats:
|
201
|
+
default: "%Y年%b%d日%A%H:%M:%S%Z"
|
202
|
+
long: "%Y年%b%d日 %H:%M"
|
203
|
+
short: "%b%d日%H:%M"
|
204
|
+
pm: 下午
|
@@ -0,0 +1,21 @@
|
|
1
|
+
zh-CN:
|
2
|
+
actions:
|
3
|
+
index: 列表
|
4
|
+
show: 查看详情
|
5
|
+
new: 添加
|
6
|
+
create: 创建
|
7
|
+
edit: 编辑
|
8
|
+
reset_password: 重置密码
|
9
|
+
recharge: 充值
|
10
|
+
update: 更新
|
11
|
+
disable: 禁用
|
12
|
+
enable: 启用
|
13
|
+
delete: 删除
|
14
|
+
destroy: 删除
|
15
|
+
submit: 提交
|
16
|
+
search: 搜索
|
17
|
+
reset: 清空条件
|
18
|
+
back: 返回
|
19
|
+
back_to_list: 返回列表
|
20
|
+
feedback: 添加评论
|
21
|
+
edit_sights: 编辑景点
|
@@ -0,0 +1,13 @@
|
|
1
|
+
zh-CN:
|
2
|
+
disabled:
|
3
|
+
true_html: <span class="label label-warning">禁用</span>
|
4
|
+
false_html: <span class="label label-success">可用</span>
|
5
|
+
excellent:
|
6
|
+
true_html: <span class="label label-danger">置顶</span>
|
7
|
+
false_html: <span class="label label-success">未置顶</span>
|
8
|
+
canbeignore:
|
9
|
+
true_html: <span class="label label-danger">是</span>
|
10
|
+
false_html: <span class="label label-success">否</span>
|
11
|
+
reviewed:
|
12
|
+
true_html: <span class="label label-success">是</span>
|
13
|
+
false_html: <span class="label label-danger">否</span>
|
File without changes
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'rails/generators/named_base'
|
2
|
+
require 'rails/generators/active_record'
|
3
|
+
require 'sofav/local'
|
4
|
+
require 'sofav/decorator'
|
5
|
+
|
6
|
+
module Sofav
|
7
|
+
module Generators
|
8
|
+
class SofavGenerator < Rails::Generators::NamedBase
|
9
|
+
source_root File.expand_path('../templates', __FILE__)
|
10
|
+
argument :attributes, type: :array, default: [], banner: "field:type field:type"
|
11
|
+
include Sofav::Local
|
12
|
+
include Sofav::Decorator
|
13
|
+
|
14
|
+
def create_model
|
15
|
+
@agruments = "#{file_name}"
|
16
|
+
|
17
|
+
attributes.each do |a|
|
18
|
+
@agruments += " #{a.name}:#{a.type}"
|
19
|
+
end
|
20
|
+
|
21
|
+
generate "model", @agruments
|
22
|
+
end
|
23
|
+
|
24
|
+
def create_controller
|
25
|
+
generate "controller", "Admin::#{file_name} --skip-routes"
|
26
|
+
end
|
27
|
+
|
28
|
+
def create_kaminari
|
29
|
+
generate "kaminari:views", "default --views-prefix admin"
|
30
|
+
end
|
31
|
+
|
32
|
+
def create_locales_activerecord
|
33
|
+
@record = Array.new
|
34
|
+
attributes.each do |a|
|
35
|
+
@record << a.name
|
36
|
+
end
|
37
|
+
|
38
|
+
create_config_record(file_name, @record)
|
39
|
+
end
|
40
|
+
|
41
|
+
def create_locales_attribute_types
|
42
|
+
create_config_attribute(file_name, attributes)
|
43
|
+
end
|
44
|
+
|
45
|
+
def create_model_decorator
|
46
|
+
create_decorator(file_name, class_name, attributes)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/sofav.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
module Sofav
|
2
|
+
module Decorator
|
3
|
+
def create_decorator(file_name, class_name, attributes)
|
4
|
+
@attr = ''
|
5
|
+
|
6
|
+
attributes.each do |a|
|
7
|
+
@attr += "#{a.name} "
|
8
|
+
end
|
9
|
+
|
10
|
+
create_file "app/decorator/#{file_name}_decorator.rb", <<-FILE
|
11
|
+
class #{class_name}Decorator < BaseDecorator
|
12
|
+
include EnumerizeConcern
|
13
|
+
|
14
|
+
collection_search do
|
15
|
+
{name: "q", search_in: [], placeholder: '', action: '/admin/#{class_name}', fuzzy: true}
|
16
|
+
end
|
17
|
+
|
18
|
+
collection_attributes do
|
19
|
+
["#", ]
|
20
|
+
end
|
21
|
+
|
22
|
+
permitted_class_methods do
|
23
|
+
{index: ["new"]}
|
24
|
+
end
|
25
|
+
|
26
|
+
permitted_instance_methods do
|
27
|
+
{index: ["show", "edit", "destroy"], show: ["edit"]}
|
28
|
+
end
|
29
|
+
|
30
|
+
form_attributes do
|
31
|
+
{
|
32
|
+
profiles: %w{base_info},
|
33
|
+
base_info: %w{#{@attr}}
|
34
|
+
}
|
35
|
+
end
|
36
|
+
|
37
|
+
show_page_attributes do
|
38
|
+
{
|
39
|
+
profiles: %w{base_info},
|
40
|
+
base_info: %w{#{@attr}}
|
41
|
+
}
|
42
|
+
end
|
43
|
+
end
|
44
|
+
FILE
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|