graph_starter 0.8.2 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 45aeeb768a868dfa0b8cb6d65a4c3cfaf05415a6
4
- data.tar.gz: 407b4b579be11348a16f4c47f7efab0ae3050cb0
3
+ metadata.gz: cd1a89466936369ecfe1ef04d02e25c537e441ee
4
+ data.tar.gz: d17ce41642598fa8f2228a43163ca2ef59cdb969
5
5
  SHA512:
6
- metadata.gz: 6bfe075cdbabe38663dd5ecf653a2960bc8c999d791ee5bfed92fe9fccad50e9fba7674c4b54314e040ea3661c7209cbb5ca46556cb3ec9d0525b34214b275e6
7
- data.tar.gz: 778dfd381ed626d572f9f9c05497a0ef93cfa01840f4753d1a20cf78e89e1a4be64d331a943c681a3d29b1a3c5d9e9d3f879a133addac2e2d47749c92950f8c1
6
+ metadata.gz: 0ebae16750e98a0c9c7c28e2cec7b6e2ae314ee30ecde5ddbea043e1fb0543b4207cd40edfc39586d24e7c98342d4a6c66d600e744673ac16b5a93848bc25aba
7
+ data.tar.gz: e7331c09fd4db1f72e6f58f479d6257b216f09a1d8f08c8b0696be1456ec1723443bc93ea1f214a5f47145c612eb48e3b762b491745c21b6b6bbee6b30c9eac2
@@ -76,6 +76,28 @@ module GraphStarter
76
76
  redirect_to action: :edit
77
77
  end
78
78
 
79
+ def new
80
+ @asset = model_class.new
81
+ end
82
+
83
+ def create
84
+ @asset = model_class.create(params[params[:model_slug].singularize])
85
+
86
+ if @asset.persisted?
87
+ redirect_to action: :show, id: @asset.id
88
+ else
89
+ puts '@asset.errors.messages', @asset.errors.messages.inspect
90
+ flash[:error] = @asset.errors.messages.to_a.map {|pair| pair.join(' ') }.join(' / ')
91
+ redirect_to :back
92
+ end
93
+ end
94
+
95
+ def destroy
96
+ asset.destroy
97
+
98
+ redirect_to action: :index
99
+ end
100
+
79
101
  def rate
80
102
  if current_user
81
103
  rating = asset.rating_for(current_user)
@@ -6,8 +6,11 @@ module GraphStarter
6
6
  property :private, type: ActiveAttr::Typecasting::Boolean, default: false
7
7
  validates :private, inclusion: {in: [true, false]}
8
8
 
9
- has_many :in, :allowed_users, rel_class: :CanAccess, model_class: :User
10
- has_many :in, :allowed_groups, rel_class: :CanAccess, model_class: :Group
9
+ if GraphStarter.configuration.user_class
10
+ has_many :in, :allowed_users, rel_class: :CanAccess, model_class: GraphStarter.configuration.user_class
11
+ end
12
+
13
+ has_many :in, :allowed_groups, rel_class: :CanAccess, model_class: :'GraphStarter::Group'
11
14
  end
12
15
 
13
16
  def set_access_levels(model, access_levels)
@@ -8,3 +8,10 @@
8
8
  i.edit.icon
9
9
  | Edit
10
10
 
11
+ .ui.divider
12
+
13
+ a.ui.labeled.icon.red.button.right.floated href="#{destroy_asset_path(id: asset)}"
14
+ i.delete.icon
15
+ | Delete
16
+
17
+
@@ -0,0 +1,34 @@
1
+ = form_for @asset, url: url_for(action: action), html: {class: 'ui form'} do |f|
2
+ = image_tag @asset.first_image_source_url, class: 'ui medium image' if @asset.class.has_image? || @asset.class.has_images?
3
+ /.field
4
+ / label Image
5
+
6
+ / = f.file_field :image
7
+
8
+ - @asset.class.authorized_properties_and_levels(current_user).each do |property, level|
9
+ .field
10
+ - editable_properties = GraphStarter.configuration.editable_properties[@asset.class.name.to_sym]
11
+ - can_write = (level == 'write') && !f.nil? && (editable_properties.nil? || editable_properties.map(&:to_s).include?(property.name))
12
+
13
+ - if @asset.class.display_property?(property.name) || can_write
14
+ label = property.name.humanize
15
+
16
+ = render partial: 'graph_starter/properties/property', locals: {property: property, asset: @asset, form: f, can_write: can_write}
17
+
18
+ - @asset.class.authorized_associations.each do |name, association|
19
+ javascript:
20
+ var current_#{name} = [];
21
+
22
+ .field
23
+ label = name.to_s.humanize
24
+
25
+ - field_name = (association.type == :has_many ? "#{name.to_s.singularize}_ids" : "#{name}_id")
26
+ - target_class = association.target_class
27
+ - options = target_class.as(:n).pluck(target_class.name_property, target_class.id_property_name)
28
+ = f.select field_name, options, {}, class: 'ui fluid search dropdown', multiple: ''
29
+
30
+ javascript:
31
+ $('.ui.dropdown').dropdown()
32
+
33
+ = f.submit action.humanize, class: 'ui button'
34
+
@@ -0,0 +1,6 @@
1
+ .ui.search
2
+ .ui.icon.input
3
+ input.prompt type="text" placeholder="Search..." style="width: 400px"
4
+ i.search.icon
5
+ .results
6
+
@@ -4,23 +4,4 @@
4
4
 
5
5
  h1 = @asset.name
6
6
 
7
- = form_for @asset, url: url_for(action: :update), html: {class: 'ui form'} do |f|
8
-
9
- = image_tag @asset.first_image_source_url, class: 'ui medium image'
10
- /.field
11
- / label Image
12
-
13
- / = f.file_field :image
14
-
15
- - @asset.class.authorized_properties_and_levels(current_user).each do |property, level|
16
- .field
17
- - editable_properties = GraphStarter.configuration.editable_properties[@asset.class.name.to_sym]
18
- - can_write = (level == 'write') && !f.nil? && (editable_properties.nil? || editable_properties.map(&:to_s).include?(property.name))
19
-
20
- - if @asset.class.display_property?(property.name) || can_write
21
- label = property.name.humanize
22
-
23
- = render partial: 'graph_starter/properties/property', locals: {property: property, asset: @asset, form: f, can_write: can_write}
24
-
25
-
26
- = f.submit 'Update', class: 'ui button'
7
+ = render partial: 'form', locals: {action: 'update'}
@@ -1,17 +1,14 @@
1
1
 
2
2
  - if @assets.present?
3
- .ui.search
4
- .ui.icon.input
5
- input.prompt type="text" placeholder="Search..." style="width: 400px"
6
- i.search.icon
7
- .results
8
-
9
- .ui.divider
3
+ = render partial: 'search'
10
4
 
11
5
  javascript:
12
- $('.ui.search').search({onSelect: function (result, response) { window.location.replace(result.url) }})
6
+ $('.ui.search').search({
7
+ onSelect: function (result, response) { window.location.replace(result.url) },
8
+ apiSettings: {url: "/#{@model_slug}/search/{query}.json"}
9
+ })
13
10
 
14
- $.fn.api.settings.api = {search: "/#{@model_slug}/search/{query}.json"}
11
+ .ui.divider
15
12
 
16
13
  - count = @assets.size
17
14
  - total_count = @all_assets.count
@@ -19,4 +16,9 @@
19
16
 
20
17
  .ui.divider
21
18
 
19
+ a.ui.labeled.icon.button.right.floated href="#{new_asset_path}"
20
+ i.write.icon
21
+ | New
22
+
23
+
22
24
  = render partial: 'graph_starter/assets/cards', locals: {assets: @assets}
@@ -0,0 +1,2 @@
1
+ = render partial: 'form', locals: {action: 'create'}
2
+
@@ -28,7 +28,7 @@
28
28
 
29
29
  - when /ActiveAttr::Typecasting::Boolean$/, /Boolean$/
30
30
  - if can_write
31
- = form.select property.name, [['True', true], ['False', false]], {}, class: 'ui dropdown'
31
+ = form.select property.name, [['False', false], ['True', true]], {}, class: 'ui dropdown'
32
32
  - else
33
33
  = value
34
34
  - else
@@ -2,7 +2,7 @@
2
2
  = link_to 'Home', '/', class: "item #{'active' if request.path == '/'}"
3
3
  - config = GraphStarter::CONFIG
4
4
  - menu_models = config.menu_models && config.menu_models.map(&:to_s)
5
- - GraphStarter::Asset.descendants.each do |model_class|
5
+ - GraphStarter::Asset.descendants.sort_by {|m| (menu_models || []).index(m.name) || 0 }.each do |model_class|
6
6
  - next if menu_models && !model_class.name.in?(menu_models)
7
7
  - path = graph_starter.assets_path(model_slug: model_class.model_slug)
8
8
  = link_to model_class.name.tableize.humanize, path, class: "item #{'active' if request.path.match(/^#{path}/)}"
data/config/routes.rb CHANGED
@@ -18,9 +18,16 @@ GraphStarter::Engine.routes.draw do
18
18
  put 'authorizables/:model_slug/:id.:format' => 'authorizables#update'
19
19
 
20
20
  get ':model_slug' => 'assets#index', as: :assets
21
+
22
+ get ':model_slug/new' => 'assets#new', as: :new_asset
23
+ post ':model_slug' => 'assets#create', as: :create_asset
24
+
21
25
  get ':model_slug/:id' => 'assets#show', as: :asset
22
26
  get ':model_slug/:id/edit' => 'assets#edit', as: :edit_asset
23
27
  put ':model_slug/:id/rate/:new_rating' => 'assets#rate', as: :rate_asset
24
28
  get ':model_slug/search/:query.json' => 'assets#search', as: :search_assets
29
+
30
+ get ':model_slug/:id/destroy' => 'assets#destroy', as: :destroy_asset
31
+
25
32
  patch ':model_slug/:id' => 'assets#update'
26
33
  end
@@ -1,3 +1,3 @@
1
1
  module GraphStarter
2
- VERSION = "0.8.2"
2
+ VERSION = "0.9.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graph_starter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Underwood
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-04 00:00:00.000000000 Z
11
+ date: 2015-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -138,10 +138,13 @@ files:
138
138
  - app/views/graph_starter/assets/_body.html.slim
139
139
  - app/views/graph_starter/assets/_cards.html.slim
140
140
  - app/views/graph_starter/assets/_dynamic_items.html.slim
141
+ - app/views/graph_starter/assets/_form.html.slim
141
142
  - app/views/graph_starter/assets/_property_items.html.slim
143
+ - app/views/graph_starter/assets/_search.html.slim
142
144
  - app/views/graph_starter/assets/edit.html.slim
143
145
  - app/views/graph_starter/assets/home.html.slim
144
146
  - app/views/graph_starter/assets/index.html.slim
147
+ - app/views/graph_starter/assets/new.html.slim
145
148
  - app/views/graph_starter/assets/show.html.slim
146
149
  - app/views/graph_starter/authorizables/show.json.jbuilder
147
150
  - app/views/graph_starter/authorizables/user_and_group_search.json.jbuilder