faalis 1.0.0.alpha0 → 1.0.0.alpha1
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/README.md +44 -22
- data/Rakefile +1 -0
- data/app/assets/javascripts/faalis/angular-manifest.js +1 -0
- data/app/assets/javascripts/faalis/dashboard/app.js +4 -3
- data/app/assets/javascripts/faalis/dashboard/application.js.erb +0 -1
- data/app/assets/javascripts/faalis/dashboard/functions.js.erb +5 -7
- data/app/assets/javascripts/faalis/dashboard/init.js +1 -2
- data/app/assets/javascripts/faalis/dashboard/modules/fields/datetime.js +5 -3
- data/app/assets/javascripts/faalis/dashboard/modules/fields/image.js +46 -105
- data/app/assets/javascripts/faalis/dashboard/modules/services/upload_service.js +17 -0
- data/app/assets/javascripts/faalis/dashboard/variables.js.erb +1 -1
- data/app/assets/javascripts/faalis/{locale → locales}/en.json +0 -0
- data/app/assets/javascripts/faalis/{locale → locales}/fa.json +0 -0
- data/app/assets/javascripts/faalis/locales/translations.fa.js +4 -0
- data/app/assets/locale/templates.fa.pot +275 -0
- data/app/assets/locale/templates.pot +0 -8
- data/app/controllers/faalis/#api_controller.rb# +51 -0
- data/app/controllers/faalis/#dashboard_controller.rb# +65 -0
- data/app/controllers/faalis/application_controller.rb +9 -10
- data/app/controllers/faalis/dashboard_controller.rb +2 -2
- data/app/models/faalis/user.rb +11 -11
- data/app/models/faalis/user/auth_definitions.rb +2 -14
- data/app/models/faalis/user/mongoid_fields.rb +0 -1
- data/app/views/angularjs_templates/fields/datetime/datetime.html +7 -1
- data/app/views/angularjs_templates/fields/image/image.html +1 -1
- data/app/views/angularjs_templates/index.html +1 -6
- data/app/views/angularjs_templates/modules.html +1 -1
- data/app/views/devise/registrations/new.html.erb +5 -1
- data/app/views/devise/sessions/new.html.erb +17 -16
- data/app/views/devise/shared/_links.erb +8 -6
- data/app/views/layouts/faalis/application.html.erb +0 -4
- data/app/views/layouts/faalis/dashboard.html.erb +2 -2
- data/app/views/layouts/faalis/simple.html.erb +18 -20
- data/config/locales/fa/LC_MESSAGES/faalis.mo +0 -0
- data/config/locales/fa/faalis.edit.mo +0 -0
- data/config/locales/fa/faalis.edit.po +104 -0
- data/config/locales/fa/faalis.mo +0 -0
- data/config/locales/fa/faalis.po +29 -108
- data/{app/controllers/faalis/#1.sh# → config/locales/fa/faalis.po.time_stamp} +0 -0
- data/config/locales/faalis.pot +10 -88
- data/config/routes.rb +16 -3
- data/lib/faalis.rb +1 -0
- data/lib/faalis/discovery/permissions.rb +10 -3
- data/lib/faalis/engine.rb +21 -0
- data/lib/faalis/generators/concerns.rb +2 -0
- data/lib/faalis/generators/concerns/allow_query_on.rb +8 -12
- data/lib/faalis/generators/concerns/angular.rb +4 -5
- data/lib/faalis/generators/concerns/child.rb +31 -0
- data/lib/faalis/generators/concerns/fieldset.rb +2 -2
- data/lib/faalis/generators/concerns/globalize.rb +14 -0
- data/lib/faalis/generators/concerns/hstore.rb +19 -0
- data/lib/faalis/generators/concerns/model.rb +3 -3
- data/lib/faalis/generators/concerns/parent.rb +4 -6
- data/lib/faalis/generators/concerns/required.rb +2 -1
- data/lib/faalis/generators/concerns/resource_name.rb +1 -0
- data/lib/faalis/generators/concerns/tabs.rb +4 -7
- data/lib/faalis/generators/concerns/where.rb +1 -3
- data/lib/faalis/generators/dashboard_scaffold.rb +2 -0
- data/lib/faalis/generators/fields/#relation.rb# +61 -0
- data/lib/faalis/i18n.rb +6 -1
- data/lib/faalis/middlewares.rb +1 -0
- data/lib/faalis/middlewares/locale.rb +29 -0
- data/lib/faalis/route.rb +12 -19
- data/lib/faalis/version.rb +1 -1
- data/lib/generators/faalis/install_all_generator.rb +5 -3
- data/lib/generators/faalis/install_generator.rb +4 -0
- data/lib/generators/faalis/js/install_i18n_generator.rb +1 -1
- data/lib/generators/faalis/scaffold_generator.rb +72 -25
- data/lib/generators/faalis/templates/i18n/Gruntfile.js.erb +2 -2
- data/lib/generators/faalis/templates/i18n/fa.js +2 -2
- data/lib/generators/faalis/templates/js/list_view/details.html.erb +26 -3
- data/lib/generators/faalis/templates/views/create.json.jbuilder.erb +2 -1
- data/lib/generators/faalis/templates/views/index.json.jbuilder.erb +4 -2
- data/lib/generators/faalis/templates/views/show.json.jbuilder.erb +2 -1
- data/lib/generators/faalis/templates/views/update.json.jbuilder.erb +2 -1
- data/lib/tasks/faalis_tasks.rake +25 -27
- data/lib/tasks/grunt/Gruntfile.js +2 -2
- data/lib/tasks/sync.rake +3 -4
- metadata +43 -90
- data/app/assets/javascripts/faalis/dashboard/modules/list-view.js +0 -341
- data/app/assets/javascripts/faalis/dashboard/modules/modules.js +0 -75
- data/app/assets/javascripts/faalis/dashboard/modules/nav.js.erb +0 -78
- data/app/assets/stylesheets/faalis/base.css.scss +0 -334
- data/app/assets/stylesheets/faalis/dashboard/dashboard.css.scss +0 -246
- data/app/assets/stylesheets/faalis/dashboard/list_view.css.scss +0 -169
- data/app/assets/stylesheets/faalis/dashboard/ltr/application.css +0 -29
- data/app/assets/stylesheets/faalis/dashboard/ltr/base.css.scss.erb +0 -33
- data/app/assets/stylesheets/faalis/dashboard/ltr/buttons.css.scss.erb +0 -55
- data/app/assets/stylesheets/faalis/dashboard/ltr/direction.css.scss +0 -38
- data/app/assets/stylesheets/faalis/dashboard/ltr/foundation_and_overrides.css.scss +0 -1261
- data/app/assets/stylesheets/faalis/dashboard/ltr/time.css.scss +0 -58
- data/app/assets/stylesheets/faalis/dashboard/rtl/application.css +0 -27
- data/app/assets/stylesheets/faalis/dashboard/rtl/base.css.scss.erb +0 -35
- data/app/assets/stylesheets/faalis/dashboard/rtl/buttons.css.scss.erb +0 -45
- data/app/assets/stylesheets/faalis/dashboard/rtl/direction.css.scss +0 -37
- data/app/assets/stylesheets/faalis/dashboard/rtl/foundation_and_overrides.css.scss +0 -1264
- data/app/assets/stylesheets/faalis/dashboard/share/time.css.scss +0 -57
- data/app/assets/stylesheets/faalis/dashboard/sidebar.css.scss +0 -93
- data/app/assets/stylesheets/faalis/devise.css.scss +0 -34
- data/app/assets/stylesheets/faalis/groups.css +0 -4
- data/app/assets/stylesheets/faalis/home.css.scss +0 -14
- data/app/assets/stylesheets/faalis/ltr/application.css +0 -20
- data/app/assets/stylesheets/faalis/ltr/buttons.css.scss.erb +0 -45
- data/app/assets/stylesheets/faalis/ltr/foundation_and_overrides.scss +0 -1258
- data/app/assets/stylesheets/faalis/mixins.css.scss +0 -15
- data/app/assets/stylesheets/faalis/rtl/application.css +0 -20
- data/app/assets/stylesheets/faalis/rtl/buttons.css.scss.erb +0 -50
- data/app/assets/stylesheets/faalis/rtl/foundation_and_overrides.css.scss +0 -1264
- data/app/assets/stylesheets/faalis/users.css +0 -4
- data/app/assets/stylesheets/faalis/variables.css.scss +0 -102
- data/app/controllers/faalis/api/v1/workflows_controller.rb +0 -18
- data/app/views/angularjs_templates/list-view/index.html +0 -82
- data/app/views/faalis/api/v1/workflows/index.json.jbuilder +0 -5
- data/app/workflows/faalis/administration_workflow.rb +0 -7
- data/spec/dummy/log/development.log +0 -0
- data/spec/dummy/log/test.log +0 -15
- data/spec/dummy/tmp/ember-rails/ember-data.js +0 -10204
- data/spec/dummy/tmp/ember-rails/ember.js +0 -36991
- data/spec/factories/faalis_workflows.rb +0 -7
- data/spec/models/faalis/workflow_spec.rb +0 -7
data/config/routes.rb
CHANGED
|
@@ -3,8 +3,9 @@ Faalis::Engine.routes.draw do
|
|
|
3
3
|
|
|
4
4
|
# Authentications
|
|
5
5
|
devise_config = {
|
|
6
|
-
:
|
|
7
|
-
:module =>
|
|
6
|
+
class_name: 'Faalis::User',
|
|
7
|
+
:module => :devise,
|
|
8
|
+
skip: :omniauth_callbacks
|
|
8
9
|
}
|
|
9
10
|
|
|
10
11
|
# Add omniauth callback if there was any provider
|
|
@@ -14,7 +15,6 @@ Faalis::Engine.routes.draw do
|
|
|
14
15
|
}
|
|
15
16
|
end
|
|
16
17
|
|
|
17
|
-
devise_for :users, devise_config
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
scope '(:locale)', :locale => Regexp.new(::I18n.available_locales.join('|')) do
|
|
@@ -23,10 +23,23 @@ Faalis::Engine.routes.draw do
|
|
|
23
23
|
get 'modules' => 'dashboard#modules'
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
+
devise_for :users, devise_config
|
|
27
|
+
|
|
26
28
|
|
|
27
29
|
# Root URL
|
|
28
30
|
root :to => 'home#index'
|
|
29
31
|
end
|
|
30
32
|
|
|
33
|
+
match('/users/auth/:provider',
|
|
34
|
+
constraints: { provider: /#{Devise.omniauth_configs.keys.join("|")}/ },
|
|
35
|
+
to: "devise/omniauth_callbacks#passthru",
|
|
36
|
+
as: :user_omniauth_authorize,
|
|
37
|
+
via: [:get, :post])
|
|
38
|
+
|
|
39
|
+
match('/users/auth/:action/callback',
|
|
40
|
+
constraints: { action: /#{Devise.omniauth_configs.keys.join("|")}/ },
|
|
41
|
+
to: 'devise/omniauth_callbacks',
|
|
42
|
+
as: :user_omniauth_callback,
|
|
43
|
+
via: [:get, :post])
|
|
31
44
|
|
|
32
45
|
end
|
data/lib/faalis.rb
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
module Faalis
|
|
2
2
|
module Discovery
|
|
3
|
+
# This class is responsible to discoering all Permissions
|
|
4
|
+
# classes and provide a list of available permissions
|
|
3
5
|
class Permissions
|
|
4
6
|
|
|
5
|
-
# Run the given block
|
|
7
|
+
# Run the given block for each object with permissions
|
|
6
8
|
def self.permission_objects(&block)
|
|
7
9
|
objects = []
|
|
8
10
|
|
|
@@ -12,6 +14,9 @@ module Faalis
|
|
|
12
14
|
# model it has the permission_strings). And concat the
|
|
13
15
|
# permissions to `@permissions` instance method.
|
|
14
16
|
::ApplicationModels.to_adapter.find_all.each do |m|
|
|
17
|
+
# `m` is a string contains name of a model and
|
|
18
|
+
# we use contstantize to get the model class with
|
|
19
|
+
# such name
|
|
15
20
|
model = m.model.constantize
|
|
16
21
|
if model.respond_to? :permission_strings
|
|
17
22
|
block.call(model)
|
|
@@ -37,12 +42,14 @@ module Faalis
|
|
|
37
42
|
permissions.uniq
|
|
38
43
|
end
|
|
39
44
|
|
|
45
|
+
# Creating all possible permissions in database using
|
|
46
|
+
# `Faalis::Permission` model
|
|
40
47
|
def self.create_all_permissions
|
|
41
48
|
|
|
42
49
|
permission_objects do |object|
|
|
43
50
|
object.possible_permissions.each do |perm|
|
|
44
|
-
Faalis::Permission.
|
|
45
|
-
|
|
51
|
+
Faalis::Permission.where(model: object.to_s,
|
|
52
|
+
permission_type: perm).first_or_create
|
|
46
53
|
end
|
|
47
54
|
end
|
|
48
55
|
end
|
data/lib/faalis/engine.rb
CHANGED
|
@@ -25,6 +25,11 @@ require 'model_discovery'
|
|
|
25
25
|
require 'angularjs-rails'
|
|
26
26
|
require 'lodash-rails'
|
|
27
27
|
|
|
28
|
+
# required gettext related gem only in developement
|
|
29
|
+
if Rails.env.development?
|
|
30
|
+
require 'gettext_i18n_rails'
|
|
31
|
+
end
|
|
32
|
+
|
|
28
33
|
module Faalis
|
|
29
34
|
# `Engine` class of **Faalis**.
|
|
30
35
|
class Engine < ::Rails::Engine
|
|
@@ -140,5 +145,21 @@ module Faalis
|
|
|
140
145
|
mattr_accessor :dashboard_js_manifest
|
|
141
146
|
@@dashboard_js_manifest = "controlpanel/application.js"
|
|
142
147
|
|
|
148
|
+
# Devise options
|
|
149
|
+
# Include default devise modules. Others available are:
|
|
150
|
+
# :token_authenticatable, :confirmable,
|
|
151
|
+
# :lockable, :timeoutable and :omniauthable
|
|
152
|
+
mattr_accessor :devise_options
|
|
153
|
+
@@devise_options = [:database_authenticatable,
|
|
154
|
+
:registerable,
|
|
155
|
+
:recoverable,
|
|
156
|
+
:rememberable,
|
|
157
|
+
:trackable,
|
|
158
|
+
:lockable,
|
|
159
|
+
:timeoutable,
|
|
160
|
+
:validatable]
|
|
161
|
+
|
|
162
|
+
middleware.use Faalis::Middlewares::Locale
|
|
163
|
+
|
|
143
164
|
end
|
|
144
165
|
end
|
|
@@ -3,6 +3,7 @@ require 'faalis/generators/concerns/dependency'
|
|
|
3
3
|
require 'faalis/generators/concerns/bulk'
|
|
4
4
|
require 'faalis/generators/concerns/required'
|
|
5
5
|
require 'faalis/generators/concerns/parent'
|
|
6
|
+
require 'faalis/generators/concerns/child'
|
|
6
7
|
require 'faalis/generators/concerns/resource_fields'
|
|
7
8
|
require 'faalis/generators/concerns/resource_name'
|
|
8
9
|
require 'faalis/generators/concerns/angular'
|
|
@@ -13,3 +14,4 @@ require 'faalis/generators/concerns/allow_query_on'
|
|
|
13
14
|
require 'faalis/generators/concerns/render'
|
|
14
15
|
require 'faalis/generators/concerns/where'
|
|
15
16
|
require 'faalis/generators/concerns/fieldset'
|
|
17
|
+
require 'faalis/generators/concerns/globalize'
|
|
@@ -7,16 +7,15 @@ module Faalis
|
|
|
7
7
|
|
|
8
8
|
private
|
|
9
9
|
|
|
10
|
-
|
|
11
10
|
def allowed_fields
|
|
12
11
|
if allowed_fields_provided?
|
|
13
|
-
unless resource_data[
|
|
14
|
-
|
|
15
|
-
end
|
|
16
|
-
fields = resource_data["allow_query_on"].collect do |f|
|
|
17
|
-
":#{f}"
|
|
12
|
+
unless resource_data['allow_query_on'].is_a? Array
|
|
13
|
+
fail Exception.new 'value of `allow_query_on` key should be an Array. '
|
|
18
14
|
end
|
|
19
|
-
|
|
15
|
+
# :#{something} is a trick to convert the field name to sym on
|
|
16
|
+
# controller
|
|
17
|
+
fields = resource_data['allow_query_on'].collect { |f| ":#{f}" }
|
|
18
|
+
fields.join(' ,')
|
|
20
19
|
else
|
|
21
20
|
[]
|
|
22
21
|
end
|
|
@@ -24,14 +23,11 @@ module Faalis
|
|
|
24
23
|
|
|
25
24
|
# Check for any allowed fields in json
|
|
26
25
|
def allowed_fields_provided?
|
|
27
|
-
if resource_data.include?
|
|
28
|
-
unless resource_data[
|
|
29
|
-
return true
|
|
30
|
-
end
|
|
26
|
+
if resource_data.include? 'allow_query_on'
|
|
27
|
+
return true unless resource_data['allow_query_on'].nil?
|
|
31
28
|
end
|
|
32
29
|
false
|
|
33
30
|
end
|
|
34
|
-
|
|
35
31
|
end
|
|
36
32
|
end
|
|
37
33
|
end
|
|
@@ -13,16 +13,15 @@ module Faalis
|
|
|
13
13
|
|
|
14
14
|
# return the relative path to place where scaffold shoud be created.
|
|
15
15
|
def angularjs_app_path
|
|
16
|
-
if
|
|
17
|
-
resource_data[
|
|
18
|
-
elsif
|
|
16
|
+
if !resource_data['raw_path'].blank?
|
|
17
|
+
resource_data['raw_path']
|
|
18
|
+
elsif !resource_data['path'].blank?
|
|
19
19
|
"app/assets/javascripts/#{resource_data['path']}/"
|
|
20
20
|
else
|
|
21
|
-
path = Faalis::Engine.dashboard_js_manifest.split(
|
|
21
|
+
path = Faalis::Engine.dashboard_js_manifest.split('/')[0..-2].join('/')
|
|
22
22
|
"app/assets/javascripts/#{path}/"
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
|
-
|
|
26
25
|
end
|
|
27
26
|
end
|
|
28
27
|
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Faalis
|
|
2
|
+
module Generators
|
|
3
|
+
module Concerns
|
|
4
|
+
|
|
5
|
+
module Child
|
|
6
|
+
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
# check for child
|
|
10
|
+
def child?
|
|
11
|
+
if resource_data.include? 'childs'
|
|
12
|
+
return true unless resource_data['childs'].nil?
|
|
13
|
+
end
|
|
14
|
+
false
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# Return an array of resource childs
|
|
19
|
+
def childs
|
|
20
|
+
if child?
|
|
21
|
+
resource_data['childs']
|
|
22
|
+
else
|
|
23
|
+
[]
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -10,11 +10,11 @@ module Faalis
|
|
|
10
10
|
|
|
11
11
|
# Returns fields which is needed to be in bulk edit
|
|
12
12
|
def fieldset?
|
|
13
|
-
!fields_with_attribute(
|
|
13
|
+
!fields_with_attribute('fieldset').empty?
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def fieldset_less_fields
|
|
17
|
-
fields = Set.new(raw_fields_data) - Set.new(fields_with_attribute(
|
|
17
|
+
fields = Set.new(raw_fields_data) - Set.new(fields_with_attribute('fieldset'))
|
|
18
18
|
fields.to_a
|
|
19
19
|
end
|
|
20
20
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Faalis
|
|
2
|
+
module Generators
|
|
3
|
+
module Concerns
|
|
4
|
+
# This concern adds support for `PostgreSQL` Hstore
|
|
5
|
+
# type to generators. So `hstore` fields will not work
|
|
6
|
+
# on other databases or work differently. For example
|
|
7
|
+
# We try to create a json from the key/values of `hstore`
|
|
8
|
+
# field and store that to the corresponding field.
|
|
9
|
+
module Hstore
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
def hstore_fields
|
|
14
|
+
fields_with('type', 'hstore')
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -10,15 +10,15 @@ module Faalis
|
|
|
10
10
|
|
|
11
11
|
# Does an alternative `model` is specified ?
|
|
12
12
|
def model_specified?
|
|
13
|
-
resource_data.include?
|
|
13
|
+
resource_data.include? 'model'
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
# Name of alternative `model`
|
|
17
17
|
def model
|
|
18
18
|
if model_specified?
|
|
19
|
-
resource_data[
|
|
19
|
+
resource_data['model']
|
|
20
20
|
else
|
|
21
|
-
|
|
21
|
+
''
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
|
|
@@ -33,23 +33,21 @@ module Faalis
|
|
|
33
33
|
|
|
34
34
|
# check for parent
|
|
35
35
|
def parent?
|
|
36
|
-
if resource_data.include?
|
|
37
|
-
unless resource_data[
|
|
38
|
-
return true
|
|
39
|
-
end
|
|
36
|
+
if resource_data.include? 'parents'
|
|
37
|
+
return true unless resource_data['parents'].nil?
|
|
40
38
|
end
|
|
41
39
|
false
|
|
42
40
|
end
|
|
43
41
|
|
|
44
42
|
# Remove the starting slash from the given parent path
|
|
45
43
|
def trim_parent_path(path)
|
|
46
|
-
path.gsub(/^\//,
|
|
44
|
+
path.gsub(/^\//, '')
|
|
47
45
|
end
|
|
48
46
|
|
|
49
47
|
# Return an array of resource parents
|
|
50
48
|
def parents
|
|
51
49
|
if parent?
|
|
52
|
-
_parents = resource_data[
|
|
50
|
+
_parents = resource_data['parents']
|
|
53
51
|
_parents.collect do |p|
|
|
54
52
|
trim_parent_path(p)
|
|
55
53
|
end
|
|
@@ -22,10 +22,10 @@ module Faalis
|
|
|
22
22
|
result = {}
|
|
23
23
|
tabs.each do |tab|
|
|
24
24
|
name = tab['name']
|
|
25
|
+
|
|
25
26
|
fields_list = fields_with('tab', tab['id'])
|
|
26
|
-
fields_list.each
|
|
27
|
-
|
|
28
|
-
end
|
|
27
|
+
fields_list.each { |f| tabbed_fields << f }
|
|
28
|
+
|
|
29
29
|
result[name] = fields_list
|
|
30
30
|
end
|
|
31
31
|
all_fields = Set.new resource_data['fields']
|
|
@@ -43,16 +43,13 @@ module Faalis
|
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
def tab_has_field?(tab_name, field_name)
|
|
46
|
-
it_does = tabs[tab_name].select
|
|
47
|
-
f['name'] == field_name
|
|
48
|
-
end
|
|
46
|
+
it_does = tabs[tab_name].select { |f| f['name'] == field_name }
|
|
49
47
|
!it_does.empty?
|
|
50
48
|
end
|
|
51
49
|
|
|
52
50
|
def any_tabs?
|
|
53
51
|
resource_data.include? 'tabs'
|
|
54
52
|
end
|
|
55
|
-
|
|
56
53
|
end
|
|
57
54
|
end
|
|
58
55
|
end
|
|
@@ -4,7 +4,7 @@ module Faalis
|
|
|
4
4
|
|
|
5
5
|
# This module is dedicated to filter resource object based
|
|
6
6
|
# on a condition or query. For example if you want to filter
|
|
7
|
-
# resource objects to those which belongs to current logged
|
|
7
|
+
# a resource objects to those which belongs to current logged
|
|
8
8
|
# in user you can do like:
|
|
9
9
|
#
|
|
10
10
|
# ```javascript
|
|
@@ -38,8 +38,6 @@ module Faalis
|
|
|
38
38
|
end
|
|
39
39
|
{}
|
|
40
40
|
end
|
|
41
|
-
|
|
42
|
-
|
|
43
41
|
end
|
|
44
42
|
end
|
|
45
43
|
end
|
|
@@ -14,6 +14,7 @@ module Faalis
|
|
|
14
14
|
include Faalis::Generators::Concerns::Bulk
|
|
15
15
|
include Faalis::Generators::Concerns::RequireFields
|
|
16
16
|
include Faalis::Generators::Concerns::Parent
|
|
17
|
+
include Faalis::Generators::Concerns::Child
|
|
17
18
|
include Faalis::Generators::Concerns::Angular
|
|
18
19
|
include Faalis::Generators::Concerns::Tabs
|
|
19
20
|
include Faalis::Generators::Concerns::Model
|
|
@@ -28,6 +29,7 @@ module Faalis
|
|
|
28
29
|
# Generate only spec files
|
|
29
30
|
class_option :only_specs, type: :boolean, default: false, desc: 'Generate only spec files'
|
|
30
31
|
|
|
32
|
+
# TODO: Move it to listview generator
|
|
31
33
|
# Generate only controller
|
|
32
34
|
class_option :only_controller, type: :boolean, default: false, desc: 'Generate only controller'
|
|
33
35
|
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
module Faalis
|
|
2
|
+
module Generators
|
|
3
|
+
class Relation < String
|
|
4
|
+
attr_accessor :to
|
|
5
|
+
|
|
6
|
+
def initialize(value, to, options = "")
|
|
7
|
+
super(value)
|
|
8
|
+
@options = options
|
|
9
|
+
@to = to
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def resource_name
|
|
13
|
+
to.split("/").last
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def to
|
|
17
|
+
result = "'"
|
|
18
|
+
if options.include? "parents"
|
|
19
|
+
field_parents.each do |parent|
|
|
20
|
+
result = "#{result}/#{parent}/' + $scope.#{parent}_id + '"
|
|
21
|
+
end
|
|
22
|
+
result = "#{result}/"
|
|
23
|
+
end
|
|
24
|
+
"#{result}#{@to}'"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def options
|
|
28
|
+
unless @options.empty?
|
|
29
|
+
Hash[@options.split(',').map {|pair| pair.strip.split(':').map(&:strip) }]
|
|
30
|
+
else
|
|
31
|
+
{}
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def field_parents
|
|
36
|
+
if options.include? "parents"
|
|
37
|
+
options["parents"].split(";")
|
|
38
|
+
else
|
|
39
|
+
[]
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def restangular
|
|
44
|
+
result = "API"
|
|
45
|
+
if options.include? "parents"
|
|
46
|
+
field_parents.each do |parent|
|
|
47
|
+
result = "#{result}.one('#{parent}', #{}_id)"
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
to.split("/").each do |resource|
|
|
51
|
+
result = "#{result}.all(\"#{resource}\")"
|
|
52
|
+
end
|
|
53
|
+
result
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def get_list
|
|
57
|
+
"#{restangular}.getList()"
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|