tao_on_rails 0.10.0 → 1.0.0.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/generators/tao/component/component_generator.rb +2 -12
- data/lib/generators/tao/install/install_generator.rb +11 -9
- data/lib/generators/tao/install/templates/app/views/layouts/application.html.erb +0 -1
- data/lib/tao_on_rails/action_view/helpers.rb +1 -1
- data/lib/tao_on_rails/components/base.rb +10 -3
- data/lib/tao_on_rails/engine.rb +0 -4
- data/lib/tao_on_rails/version.rb +1 -1
- metadata +7 -133
- data/lib/assets/javascripts/tao/application.coffee +0 -86
- data/lib/assets/javascripts/tao/attribute_manager.coffee +0 -94
- data/lib/assets/javascripts/tao/component.coffee +0 -175
- data/lib/assets/javascripts/tao/helpers.coffee +0 -34
- data/lib/assets/javascripts/tao/index.coffee +0 -14
- data/lib/assets/javascripts/tao/module.coffee +0 -93
- data/lib/assets/javascripts/tao/page.coffee +0 -9
- data/lib/assets/stylesheets/tao.scss +0 -3
- data/lib/generators/tao/assets/USAGE +0 -18
- data/lib/generators/tao/assets/assets_generator.rb +0 -8
- data/lib/generators/tao/channel/USAGE +0 -9
- data/lib/generators/tao/channel/channel_generator.rb +0 -17
- data/lib/generators/tao/channel/templates/channel.coffee.erb +0 -20
- data/lib/generators/tao/channel/templates/channel.rb.erb +0 -13
- data/lib/generators/tao/coffee/USAGE +0 -15
- data/lib/generators/tao/coffee/coffee_generator.rb +0 -27
- data/lib/generators/tao/coffee/templates/coffee.erb +0 -14
- data/lib/generators/tao/component/templates/component.coffee.erb +0 -5
- data/lib/generators/tao/component/templates/component.scss.erb +0 -3
- data/lib/generators/tao/controller/USAGE +0 -8
- data/lib/generators/tao/controller/controller_generator.rb +0 -20
- data/lib/generators/tao/controller/templates/controller.rb.erb +0 -57
- data/lib/generators/tao/locale/USAGE +0 -11
- data/lib/generators/tao/locale/locale_generator.rb +0 -34
- data/lib/generators/tao/locale/templates/model.yml.erb +0 -7
- data/lib/generators/tao/sass/USAGE +0 -15
- data/lib/generators/tao/sass/sass_generator.rb +0 -27
- data/lib/generators/tao/sass/templates/sass.erb +0 -3
- data/lib/generators/tao/scaffold/USAGE +0 -22
- data/lib/generators/tao/scaffold/scaffold_generator.rb +0 -16
- data/lib/generators/tao/view/USAGE +0 -9
- data/lib/generators/tao/view/templates/create.js.coffee +0 -5
- data/lib/generators/tao/view/templates/destroy.js.coffee +0 -2
- data/lib/generators/tao/view/templates/edit.html.erb +0 -1
- data/lib/generators/tao/view/templates/index.html.erb +0 -1
- data/lib/generators/tao/view/templates/new.html.erb +0 -1
- data/lib/generators/tao/view/templates/show.html.erb +0 -1
- data/lib/generators/tao/view/templates/update.js.coffee +0 -5
- data/lib/generators/tao/view/view_generator.rb +0 -38
- data/vendor/assets/javascripts/polyfills/custom-elements.js +0 -68
- data/vendor/assets/javascripts/polyfills/index.coffee +0 -7
- data/vendor/assets/javascripts/polyfills/native-shim.coffee +0 -117
@@ -1,175 +0,0 @@
|
|
1
|
-
#= require ./attribute_manager
|
2
|
-
|
3
|
-
components = {}
|
4
|
-
|
5
|
-
TaoComponentBasedOn = (superClassName = 'HTMLElement') ->
|
6
|
-
return components[superClassName] if components[superClassName]
|
7
|
-
|
8
|
-
class ComponentClass
|
9
|
-
|
10
|
-
# coffee's inheritance code is not compatible with custom elements
|
11
|
-
superClass = window[superClassName]
|
12
|
-
|
13
|
-
@prototype = Object.create superClass.prototype,
|
14
|
-
constructor:
|
15
|
-
value: @
|
16
|
-
enumerable: false
|
17
|
-
writable: true
|
18
|
-
configurable: true
|
19
|
-
|
20
|
-
if Object.setPrototypeOf?
|
21
|
-
Object.setPrototypeOf @, superClass
|
22
|
-
else
|
23
|
-
@__proto__ = superClass
|
24
|
-
|
25
|
-
|
26
|
-
count = 0
|
27
|
-
|
28
|
-
@extend: (obj) ->
|
29
|
-
obj = obj.call(@) if _.isFunction obj
|
30
|
-
return unless obj and typeof obj == 'object'
|
31
|
-
|
32
|
-
for key, val of obj when key not in ['included', 'extended']
|
33
|
-
@[key] = val
|
34
|
-
|
35
|
-
obj.extended?.call(@)
|
36
|
-
@
|
37
|
-
|
38
|
-
@include: (obj) ->
|
39
|
-
obj = obj.call(@) if _.isFunction obj
|
40
|
-
return unless obj and typeof obj == 'object'
|
41
|
-
|
42
|
-
for key, val of obj when key not in ['included', 'extended']
|
43
|
-
@::[key] = val
|
44
|
-
|
45
|
-
obj.included?.call(@)
|
46
|
-
@
|
47
|
-
|
48
|
-
@get: (attributeName, getMethod) ->
|
49
|
-
Object.defineProperty @prototype, attributeName,
|
50
|
-
get: getMethod
|
51
|
-
configurable: true
|
52
|
-
|
53
|
-
@set: (attributeName, setMethod) ->
|
54
|
-
Object.defineProperty @prototype, attributeName,
|
55
|
-
set: setMethod
|
56
|
-
configurable: true
|
57
|
-
|
58
|
-
@attribute: (names..., options = {}) ->
|
59
|
-
unless typeof options == 'object'
|
60
|
-
names.push(options)
|
61
|
-
options = {}
|
62
|
-
|
63
|
-
names.forEach (name) =>
|
64
|
-
attrName = _.kebabCase(name)
|
65
|
-
|
66
|
-
@get name, ->
|
67
|
-
Tao.AttributeManager.getAttribute @, attrName, options
|
68
|
-
|
69
|
-
@set name, (val) ->
|
70
|
-
return if @_beforeAttributeChanged(attrName, val) == false
|
71
|
-
Tao.AttributeManager.setAttribute @, attrName, val, options
|
72
|
-
|
73
|
-
@observedAttributes.push(attrName) if options.observe
|
74
|
-
|
75
|
-
@_tag: 'tao-component'
|
76
|
-
|
77
|
-
@tag: (tag) ->
|
78
|
-
@_tag = tag unless _.isUndefined tag
|
79
|
-
@_tag
|
80
|
-
|
81
|
-
@register: (componentClass) ->
|
82
|
-
return unless componentClass.tag() && window.customElements
|
83
|
-
customElements.define componentClass.tag(), componentClass
|
84
|
-
|
85
|
-
@observedAttributes: []
|
86
|
-
|
87
|
-
@get 'jq', ->
|
88
|
-
$(@)
|
89
|
-
|
90
|
-
@attribute 'taoId'
|
91
|
-
|
92
|
-
constructor: ->
|
93
|
-
_instance = superClass.apply @, arguments
|
94
|
-
@_created()
|
95
|
-
return _instance
|
96
|
-
|
97
|
-
connectedCallback: ->
|
98
|
-
$ =>
|
99
|
-
@connected = true
|
100
|
-
|
101
|
-
unless @initialized
|
102
|
-
@taoId = ++count
|
103
|
-
@_init()
|
104
|
-
@initialized = true
|
105
|
-
@namespacedTrigger 'initialized'
|
106
|
-
|
107
|
-
@_connected()
|
108
|
-
@namespacedTrigger 'connected'
|
109
|
-
|
110
|
-
disconnectedCallback: ->
|
111
|
-
$ =>
|
112
|
-
@connected = false
|
113
|
-
@_disconnected()
|
114
|
-
@namespacedTrigger 'disconnected'
|
115
|
-
|
116
|
-
attributeChangedCallback: (name) ->
|
117
|
-
return unless @connected
|
118
|
-
@_attributeChanged name
|
119
|
-
|
120
|
-
_created: ->
|
121
|
-
# called when the element was created
|
122
|
-
|
123
|
-
_init: ->
|
124
|
-
# called when the element was connected to dom for the first time
|
125
|
-
|
126
|
-
_connected: ->
|
127
|
-
# called when the element was connected to dom
|
128
|
-
|
129
|
-
_disconnected: ->
|
130
|
-
# called when the element was disconnected from dom
|
131
|
-
|
132
|
-
_beforeAttributeChanged: (name, val) ->
|
133
|
-
@["_before#{_.upperFirst _.camelCase name}Changed"]?(val)
|
134
|
-
|
135
|
-
_attributeChanged: (name) ->
|
136
|
-
@["_#{_.camelCase name}Changed"]?()
|
137
|
-
|
138
|
-
reflow: ->
|
139
|
-
Tao.helpers.reflow @
|
140
|
-
@
|
141
|
-
|
142
|
-
beforeCache: ->
|
143
|
-
# called before turbolinks cache pages
|
144
|
-
|
145
|
-
findComponent: (selectors...) ->
|
146
|
-
callback = selectors.pop() if _.isFunction(_.last(selectors))
|
147
|
-
Tao.helpers.findComponent selectors, callback, @
|
148
|
-
|
149
|
-
on: (name, args...) ->
|
150
|
-
if name && name.indexOf('.') < 0
|
151
|
-
name = "#{name}.#{@constructor._tag}-#{@taoId}"
|
152
|
-
@jq.on name, args...
|
153
|
-
|
154
|
-
off: (name = '', args...) ->
|
155
|
-
if name.indexOf('.') < 0
|
156
|
-
name = "#{name}.#{@constructor._tag}-#{@taoId}"
|
157
|
-
@jq.off name, args...
|
158
|
-
|
159
|
-
trigger: (args...) ->
|
160
|
-
@jq.trigger(args...)
|
161
|
-
|
162
|
-
triggerHandler: (args...) ->
|
163
|
-
@jq.triggerHandler(args...)
|
164
|
-
|
165
|
-
namespacedTrigger: (name, params) ->
|
166
|
-
@trigger "tao:#{name}", params
|
167
|
-
@trigger "#{@constructor._tag}:#{name}", params
|
168
|
-
|
169
|
-
one: (args...) ->
|
170
|
-
@jq.one args...
|
171
|
-
|
172
|
-
components[superClassName] = ComponentClass
|
173
|
-
|
174
|
-
Tao.TaoComponentBasedOn = window.TaoComponentBasedOn = TaoComponentBasedOn
|
175
|
-
Tao.Component = window.TaoComponent = TaoComponentBasedOn 'HTMLElement'
|
@@ -1,34 +0,0 @@
|
|
1
|
-
|
2
|
-
Tao.helpers =
|
3
|
-
|
4
|
-
reflow: (el) ->
|
5
|
-
$(el)[0].offsetHeight
|
6
|
-
|
7
|
-
findComponent: (selectors, callback, scope = document) ->
|
8
|
-
selectors = [selectors] unless _.isArray selectors
|
9
|
-
components = _.flatten selectors.map (s) => $(scope).find(s).get()
|
10
|
-
|
11
|
-
if components.length > 0 && _.isFunction callback
|
12
|
-
Tao.helpers.componentReady components, -> callback(components...)
|
13
|
-
|
14
|
-
if components.length > 1
|
15
|
-
components
|
16
|
-
else if components.length == 1
|
17
|
-
components[0]
|
18
|
-
else
|
19
|
-
null
|
20
|
-
|
21
|
-
componentReady: (components, callback) ->
|
22
|
-
components = [components] unless _.isArray components
|
23
|
-
promises = components.map (el) ->
|
24
|
-
deferred = $.Deferred()
|
25
|
-
if el.connected
|
26
|
-
setTimeout -> deferred.resolve()
|
27
|
-
else
|
28
|
-
el.on 'tao:connected.taoReady', (e) ->
|
29
|
-
return unless e.target == el
|
30
|
-
el.off 'tao:connected.taoReady'
|
31
|
-
deferred.resolve()
|
32
|
-
deferred.promise()
|
33
|
-
|
34
|
-
$.when(promises...).then -> callback()
|
@@ -1,14 +0,0 @@
|
|
1
|
-
#= require polyfills
|
2
|
-
#= require turbolinks
|
3
|
-
#= require jquery3
|
4
|
-
#= require jquery_ujs
|
5
|
-
#= require lodash
|
6
|
-
|
7
|
-
#= require_self
|
8
|
-
#= require ./helpers
|
9
|
-
#= require ./module
|
10
|
-
#= require ./component
|
11
|
-
#= require ./application
|
12
|
-
#= require ./page
|
13
|
-
|
14
|
-
window.Tao = {}
|
@@ -1,93 +0,0 @@
|
|
1
|
-
class TaoModule
|
2
|
-
|
3
|
-
id = 0
|
4
|
-
|
5
|
-
@extend: (obj) ->
|
6
|
-
obj = obj.call(@) if _.isFunction obj
|
7
|
-
return unless obj and typeof obj == 'object'
|
8
|
-
|
9
|
-
for key, val of obj when key not in ['included', 'extended']
|
10
|
-
@[key] = val
|
11
|
-
|
12
|
-
obj.extended?.call(@)
|
13
|
-
@
|
14
|
-
|
15
|
-
@include: (obj) ->
|
16
|
-
obj = obj.call(@) if _.isFunction obj
|
17
|
-
return unless obj and typeof obj == 'object'
|
18
|
-
|
19
|
-
for key, val of obj when key not in ['included', 'extended']
|
20
|
-
@::[key] = val
|
21
|
-
|
22
|
-
obj.included?.call(@)
|
23
|
-
@
|
24
|
-
|
25
|
-
@get: (name, method) ->
|
26
|
-
Object.defineProperty @prototype, name,
|
27
|
-
get: method
|
28
|
-
configurable: true
|
29
|
-
|
30
|
-
@set: (name, method) ->
|
31
|
-
Object.defineProperty @prototype, name,
|
32
|
-
set: method
|
33
|
-
configurable: true
|
34
|
-
|
35
|
-
@property: (names..., options = {}) ->
|
36
|
-
unless typeof options == 'object'
|
37
|
-
names.push(options)
|
38
|
-
options = {}
|
39
|
-
|
40
|
-
names.forEach (name) =>
|
41
|
-
@get name, ->
|
42
|
-
unless _.isUndefined @_proterties[name]
|
43
|
-
@_proterties[name]
|
44
|
-
else if _.isFunction options.default
|
45
|
-
options.default.call @
|
46
|
-
else
|
47
|
-
options.default
|
48
|
-
@set name, (val) ->
|
49
|
-
return if @_proterties[name] == val
|
50
|
-
@_proterties[name] = val
|
51
|
-
@["_#{name}Changed"]?()
|
52
|
-
|
53
|
-
@_options: []
|
54
|
-
|
55
|
-
@option: (names..., options = {}) ->
|
56
|
-
unless typeof options == 'object'
|
57
|
-
names.push(options)
|
58
|
-
options = {}
|
59
|
-
|
60
|
-
names.forEach (name) =>
|
61
|
-
@_options.push(name) unless name in @_options
|
62
|
-
@property name, options
|
63
|
-
|
64
|
-
@aliasMethod: (newMethod, oldMethod) ->
|
65
|
-
@::[newMethod] = ->
|
66
|
-
@[oldMethod]?.apply(@, arguments)
|
67
|
-
|
68
|
-
constructor: (options = {}) ->
|
69
|
-
@id = ++id
|
70
|
-
@_proterties = {}
|
71
|
-
|
72
|
-
if _.isObject options
|
73
|
-
for key, val of options
|
74
|
-
@[key] = val if key in @constructor._options
|
75
|
-
|
76
|
-
@_init()
|
77
|
-
|
78
|
-
_init: ->
|
79
|
-
# to be implemented
|
80
|
-
|
81
|
-
on: (args...) ->
|
82
|
-
$(@).on args...
|
83
|
-
|
84
|
-
off: (args...) ->
|
85
|
-
$(@).off args...
|
86
|
-
|
87
|
-
trigger: (args...) ->
|
88
|
-
$(@).triggerHandler(args...)
|
89
|
-
|
90
|
-
one: (args...) ->
|
91
|
-
$(@).one args...
|
92
|
-
|
93
|
-
Tao.Module = window.TaoModule = TaoModule
|
@@ -1,18 +0,0 @@
|
|
1
|
-
Description:
|
2
|
-
Generate assets files for tao page.
|
3
|
-
|
4
|
-
Example:
|
5
|
-
`rails generate tao:assets employee index`
|
6
|
-
|
7
|
-
Create files:
|
8
|
-
app/assets/javascripts/employees/index_page.coffee
|
9
|
-
app/assets/stylesheets/employees/index_page.scss
|
10
|
-
|
11
|
-
|
12
|
-
`rails generate tao:assets home index --variants=default phone`
|
13
|
-
|
14
|
-
Create files:
|
15
|
-
app/assets/javascripts/default/employees/index_page.coffee
|
16
|
-
app/assets/stylesheets/default/employees/index_page.scss
|
17
|
-
app/assets/javascripts/phone/employees/index_page.coffee
|
18
|
-
app/assets/stylesheets/phone/employees/index_page.scss
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module Tao
|
2
|
-
module Generators
|
3
|
-
class ChannelGenerator < Rails::Generators::NamedBase
|
4
|
-
source_root File.expand_path('../templates', __FILE__)
|
5
|
-
|
6
|
-
argument :actions, type: :array, default: [], banner: "method method"
|
7
|
-
|
8
|
-
check_class_collision suffix: "Channel"
|
9
|
-
|
10
|
-
def create_channel_files
|
11
|
-
template "channel.coffee.erb", "app/assets/javascripts/channels/#{name.singularize}.coffee"
|
12
|
-
template "channel.rb.erb", "app/channels/#{name.singularize}_channel.rb"
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
app.<%= class_name.camelize(:lower) %>Channel = app.cable.subscriptions.create "<%= class_name %>Channel",
|
2
|
-
connected: ->
|
3
|
-
# Called when the subscription is ready for use on the server
|
4
|
-
if app.currentPage
|
5
|
-
currentPage.trigger 'channel-connected', ['<%= class_name.underscore %>']
|
6
|
-
|
7
|
-
disconnected: ->
|
8
|
-
# Called when the subscription has been terminated by the server
|
9
|
-
if app.currentPage
|
10
|
-
currentPage.trigger 'channel-disconnected', ['<%= class_name.underscore %>']
|
11
|
-
|
12
|
-
received: (data) ->
|
13
|
-
# Called when there's incoming data on the websocket for this channel
|
14
|
-
if app.currentPage
|
15
|
-
currentPage.trigger 'channel-received', ['<%= class_name.underscore %>', data]
|
16
|
-
<% actions.each do |action| -%>
|
17
|
-
|
18
|
-
<%= action %>: ->
|
19
|
-
@perform '<%= action %>'
|
20
|
-
<% end -%>
|
@@ -1,13 +0,0 @@
|
|
1
|
-
class <%= class_name %>Channel < ApplicationCable::Channel
|
2
|
-
def subscribed
|
3
|
-
# stream_from "some_channel"
|
4
|
-
end
|
5
|
-
|
6
|
-
def unsubscribed
|
7
|
-
# Any cleanup needed when channel is unsubscribed
|
8
|
-
end
|
9
|
-
<% actions.each do |action| -%>
|
10
|
-
def <%= action %>
|
11
|
-
end
|
12
|
-
<% end -%>
|
13
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
Description:
|
2
|
-
Generate coffee files for tao page.
|
3
|
-
|
4
|
-
Example:
|
5
|
-
`rails generate tao:coffee employee new`
|
6
|
-
|
7
|
-
Create coffee file:
|
8
|
-
app/assets/javascripts/employees/new.coffee
|
9
|
-
|
10
|
-
|
11
|
-
`rails generate tao:coffee employee index --variants=default phone`
|
12
|
-
|
13
|
-
Create coffee files:
|
14
|
-
app/assets/javascripts/default/employees/index.coffee
|
15
|
-
app/assets/javascripts/phone/employees/index.coffee
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module Tao
|
2
|
-
module Generators
|
3
|
-
class CoffeeGenerator < Rails::Generators::NamedBase
|
4
|
-
source_root File.expand_path('../templates', __FILE__)
|
5
|
-
|
6
|
-
argument :actions, type: :array, default: %w(index new edit show), banner: "new edit"
|
7
|
-
|
8
|
-
class_option :variants, type: :array, default: [], desc: "Generate assets for different variants"
|
9
|
-
|
10
|
-
attr_reader :page_id
|
11
|
-
|
12
|
-
def create_coffee_file
|
13
|
-
actions.each do |action|
|
14
|
-
@page_id = [class_path, file_name, action].flatten.join('-')
|
15
|
-
if (variants = options[:variants]).any?
|
16
|
-
variants.each do |variant|
|
17
|
-
template "coffee.erb", File.join("app/assets/javascripts", variant, name.pluralize, "#{action}_page.coffee")
|
18
|
-
end
|
19
|
-
else
|
20
|
-
template "coffee.erb", File.join('app/assets/javascripts', name.pluralize, "#{action}_page.coffee")
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
class <%= page_id.underscore.camelize %>Page extends TaoPage
|
2
|
-
|
3
|
-
@tag "<%= page_id %>-page"
|
4
|
-
|
5
|
-
_init: ->
|
6
|
-
# called when the page connected to dom for the first time
|
7
|
-
|
8
|
-
_connected: ->
|
9
|
-
# called every time the page connected to dom
|
10
|
-
|
11
|
-
_disconnected: ->
|
12
|
-
# called every time the page disconnected from dom
|
13
|
-
|
14
|
-
TaoPage.register <%= page_id.underscore.camelize %>Page
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module Tao
|
2
|
-
module Generators
|
3
|
-
|
4
|
-
class ControllerGenerator < Rails::Generators::NamedBase
|
5
|
-
source_root File.expand_path('../templates', __FILE__)
|
6
|
-
|
7
|
-
argument :actions, type: :array, default: %w(index new create edit update show destroy), banner: "action action"
|
8
|
-
|
9
|
-
check_class_collision suffix: "Controller"
|
10
|
-
|
11
|
-
attr_reader :resource
|
12
|
-
|
13
|
-
def create_controller_file
|
14
|
-
@resource = file_name.singularize
|
15
|
-
template "controller.rb.erb", File.join('app/controllers', class_path, "#{file_name}_controller.rb")
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
class <%= class_name %>Controller < ApplicationController
|
2
|
-
<% if "new".in? actions %>
|
3
|
-
def new
|
4
|
-
build_<%= resource %>
|
5
|
-
end
|
6
|
-
<% end -%>
|
7
|
-
<% if "create".in? actions %>
|
8
|
-
def create
|
9
|
-
build_<%= resource %>
|
10
|
-
@<%= resource %>.save
|
11
|
-
end
|
12
|
-
<% end -%>
|
13
|
-
<% if "edit".in? actions %>
|
14
|
-
def edit
|
15
|
-
load_<%= resource %>
|
16
|
-
build_<%= resource %>
|
17
|
-
end
|
18
|
-
<% end -%>
|
19
|
-
<% if "update".in? actions %>
|
20
|
-
def update
|
21
|
-
load_<%= resource %>
|
22
|
-
build_<%= resource %>
|
23
|
-
@<%= resource %>.save
|
24
|
-
end
|
25
|
-
<% end -%>
|
26
|
-
<% if "show".in? actions %>
|
27
|
-
def show
|
28
|
-
load_<%= resource %>
|
29
|
-
end
|
30
|
-
<% end -%>
|
31
|
-
<% if "destroy".in? actions %>
|
32
|
-
def destroy
|
33
|
-
load_<%= resource %>
|
34
|
-
@<%= resource %>.destroy
|
35
|
-
end
|
36
|
-
<% end -%>
|
37
|
-
<% unless actions.empty? %>
|
38
|
-
private
|
39
|
-
<% end -%>
|
40
|
-
<% unless actions == %w(destroy) %>
|
41
|
-
def build_<%= resource %>
|
42
|
-
@<%= resource %> ||= <%= class_name %>.new
|
43
|
-
@<%= resource %>.attributes = <%= resource %>_params
|
44
|
-
end
|
45
|
-
<% end -%>
|
46
|
-
<% if (actions & %w(edit update show destroy)).any? %>
|
47
|
-
def load_<%= resource %>
|
48
|
-
@<%= resource %> = <%= class_name %>.find params[:id]
|
49
|
-
end
|
50
|
-
<% end -%>
|
51
|
-
<% unless actions == %w(destroy) %>
|
52
|
-
def <%= resource %>_params
|
53
|
-
params.fetch(:<%= singular_table_name %>, {}).permit()
|
54
|
-
end
|
55
|
-
<% end -%>
|
56
|
-
|
57
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
Description:
|
2
|
-
Generate locale files
|
3
|
-
|
4
|
-
Example:
|
5
|
-
`rails generate tao:locale namespace/resource zh-CN en`
|
6
|
-
|
7
|
-
Create files:
|
8
|
-
config/locales/models/namespace/resource/zh-CN.yml
|
9
|
-
config/locales/models/namespace/resource/en.yml
|
10
|
-
config/locales/views/namespace/resources/zh-CN.yml
|
11
|
-
config/locales/views/namespace/resources/en.yml
|
@@ -1,34 +0,0 @@
|
|
1
|
-
module Tao
|
2
|
-
module Generators
|
3
|
-
class LocaleGenerator < Rails::Generators::NamedBase
|
4
|
-
source_root File.expand_path('../templates', __FILE__)
|
5
|
-
|
6
|
-
argument :locales, type: :array, default: [I18n.locale], banner: "locale locale"
|
7
|
-
|
8
|
-
class_option :model, type: :boolean, default: true, desc: "Generate locale files for model"
|
9
|
-
class_option :view, type: :boolean, default: true, desc: "Generate locale files for view"
|
10
|
-
|
11
|
-
attr_reader :locale
|
12
|
-
|
13
|
-
def copy_to_model
|
14
|
-
return unless options[:model]
|
15
|
-
locales.each do |locale|
|
16
|
-
@locale = locale
|
17
|
-
template "model.yml.erb", File.join('config/locales/models', name.pluralize, "#{locale}.yml")
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def copy_to_view
|
22
|
-
return unless options[:view]
|
23
|
-
file_content = (class_path + [plural_name]).reverse.inject(nil) do |content, path|
|
24
|
-
{ path => content }
|
25
|
-
end
|
26
|
-
locales.each do |locale|
|
27
|
-
@locale = locale
|
28
|
-
create_file File.join('config/locales/views', name.pluralize, "#{locale}.yml"), {locale => file_content}.to_yaml
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,7 +0,0 @@
|
|
1
|
-
<%= locale %>:
|
2
|
-
activerecord:
|
3
|
-
models:
|
4
|
-
<%= template_namespace = class_path.map(&:pluralize).join('/') %>/<%= template_name = singular_name.singularize %>: <%= template_name.capitalize %>
|
5
|
-
attributes:
|
6
|
-
<%= template_namespace %>/<%= template_name %>:
|
7
|
-
# attributes
|
@@ -1,15 +0,0 @@
|
|
1
|
-
Description:
|
2
|
-
Generate sass files for tao page.
|
3
|
-
|
4
|
-
Example:
|
5
|
-
`rails generate tao:sass employee new`
|
6
|
-
|
7
|
-
Create coffee file:
|
8
|
-
app/assets/stylesheets/employees/new.coffee
|
9
|
-
|
10
|
-
|
11
|
-
`rails generate tao:sass employee index --variants=default phone`
|
12
|
-
|
13
|
-
Create coffee files:
|
14
|
-
app/assets/stylesheets/default/employees/index.coffee
|
15
|
-
app/assets/stylesheets/phone/employees/index.coffee
|