tao_on_rails 0.10.0 → 1.0.0.beta.1
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.
- 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
|