ab_admin 0.1.0 → 0.1.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.
- data/Gemfile +5 -2
- data/README.md +2 -4
- data/TODO +3 -0
- data/ab_admin.gemspec +1 -1
- data/app/assets/javascripts/ab_admin/application.js +4 -1
- data/app/assets/javascripts/ab_admin/components/in_place_edit.js.coffee +23 -0
- data/app/assets/javascripts/ab_admin/core/batch_actions.js.coffee +4 -1
- data/app/assets/javascripts/ab_admin/core/columns_hider.js.coffee +13 -5
- data/app/assets/javascripts/ab_admin/core/init.js.coffee +30 -15
- data/app/assets/javascripts/ab_admin/core/ui_utils.js.coffee +15 -7
- data/app/assets/javascripts/ab_admin/core/utils.js.coffee +3 -0
- data/app/assets/javascripts/ab_admin/inputs/datetime_input.js.coffee +1 -1
- data/app/assets/stylesheets/ab_admin/application.css.scss +2 -1
- data/app/assets/stylesheets/ab_admin/components/_table_view.css.scss +12 -0
- data/app/controllers/admin/base_controller.rb +20 -2
- data/app/controllers/admin/manager_controller.rb +0 -2
- data/app/views/admin/base/create.js.erb +6 -0
- data/app/views/admin/base/edit.js.erb +10 -0
- data/app/views/admin/base/index.html.slim +2 -3
- data/app/views/admin/base/new.js.erb +8 -0
- data/app/views/admin/base/update.js.erb +7 -0
- data/app/views/admin/manager/_search_form.html.slim +1 -1
- data/app/views/admin/manager/_show_table.html.slim +7 -0
- data/app/views/admin/manager/_table.html.slim +6 -2
- data/app/views/admin/shared/_save_buttons.html.slim +1 -1
- data/features/dsl/action_items.feature +4 -4
- data/features/dsl/in_place_edit.feature +26 -0
- data/features/dsl/list_edit.feature +46 -0
- data/features/dsl/show.feature +37 -0
- data/features/step_definitions/dsl/in_place_edit_steps.rb +7 -0
- data/features/step_definitions/dsl/show_steps.rb +8 -0
- data/features/step_definitions/dsl/table_steps.rb +2 -2
- data/features/step_definitions/web_steps/browsing_steps.rb +13 -0
- data/features/support/paths.rb +1 -1
- data/lib/ab_admin/abstract_resource.rb +5 -1
- data/lib/ab_admin/config/base.rb +14 -0
- data/lib/ab_admin/version.rb +1 -1
- data/lib/ab_admin/views/admin_helpers.rb +22 -0
- data/lib/ab_admin/views/admin_navigation_helpers.rb +6 -7
- data/lib/ab_admin/views/form_builder.rb +1 -1
- data/lib/ab_admin/views/manager_helpers.rb +4 -0
- data/lib/ab_admin/views/search_form_builder.rb +5 -1
- data/lib/generators/template.rb +4 -3
- data/spec/dummy/app/helpers/application_helper.rb +1 -0
- data/spec/dummy/app/models/ab_admin/ab_admin_product.rb +33 -70
- data/spec/dummy/app/models/product.rb +2 -0
- data/vendor/assets/javascripts/jquery.hotkeys.js +106 -0
- metadata +26 -15
- data/NOTES +0 -16
- data/app/assets/images/admin/chosen-sprite.png +0 -0
- data/app/assets/stylesheets/ab_admin/chosen.css.scss +0 -368
- data/app/assets/stylesheets/ab_admin/components/_table_tools.css.scss +0 -94
- data/spec/dummy/app/models/.gitkeep +0 -0
- data/vendor/assets/javascripts/chosen.js.coffee +0 -780
|
@@ -93,3 +93,16 @@ end
|
|
|
93
93
|
Then /^I should not see an error$/ do
|
|
94
94
|
(200..399).should include(page.status_code)
|
|
95
95
|
end
|
|
96
|
+
|
|
97
|
+
When /^I reload the page$/ do
|
|
98
|
+
case Capybara::current_driver
|
|
99
|
+
when :selenium
|
|
100
|
+
visit page.driver.browser.current_url
|
|
101
|
+
when :racktest
|
|
102
|
+
visit [current_path, page.driver.last_request.env['QUERY_STRING']].reject(&:blank?).join('?')
|
|
103
|
+
when :culerity
|
|
104
|
+
page.driver.browser.refresh
|
|
105
|
+
else
|
|
106
|
+
raise 'unsupported driver, use rack::test or selenium/webdriver'
|
|
107
|
+
end
|
|
108
|
+
end
|
data/features/support/paths.rb
CHANGED
|
@@ -6,7 +6,7 @@ module AbAdmin
|
|
|
6
6
|
|
|
7
7
|
ACTIONS = [:index, :show, :new, :edit, :create, :update, :destroy, :preview, :batch, :rebuild] unless self.const_defined?(:ACTIONS)
|
|
8
8
|
|
|
9
|
-
attr_accessor :table, :search, :export, :form, :preview_path, :actions, :settings, :custom_settings,
|
|
9
|
+
attr_accessor :table, :search, :export, :form, :show, :preview_path, :actions, :settings, :custom_settings,
|
|
10
10
|
:batch_action_list, :action_items, :disabled_action_items, :resource_action_items, :tree_node_renderer
|
|
11
11
|
|
|
12
12
|
def initialize
|
|
@@ -42,6 +42,10 @@ module AbAdmin
|
|
|
42
42
|
instance.form = ::AbAdmin::Config::Form.new(options, &block)
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
+
def show(options={}, &block)
|
|
46
|
+
instance.show = ::AbAdmin::Config::Show.new(options, &block)
|
|
47
|
+
end
|
|
48
|
+
|
|
45
49
|
def preview_path(value=nil, &block)
|
|
46
50
|
instance.preview_path = block_given? ? block : value
|
|
47
51
|
end
|
data/lib/ab_admin/config/base.rb
CHANGED
|
@@ -57,6 +57,20 @@ module AbAdmin
|
|
|
57
57
|
end
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
+
class Show < BaseBuilder
|
|
61
|
+
self.partial_name = 'show_table'
|
|
62
|
+
|
|
63
|
+
def self.default_for_model(model, options={})
|
|
64
|
+
new.tap do |builder|
|
|
65
|
+
model.new.attributes.each_key do |attr|
|
|
66
|
+
column_name = attr.to_sym
|
|
67
|
+
next if options[:skip].try(:include?, column_name)
|
|
68
|
+
builder.field(column_name)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
60
74
|
class FieldGroup < BaseBuilder
|
|
61
75
|
def title
|
|
62
76
|
options[:title].is_a?(Symbol) ? I18n.t(options[:title], :scope => [:admin, :form]) : options[:title]
|
data/lib/ab_admin/version.rb
CHANGED
|
@@ -4,6 +4,7 @@ module AbAdmin
|
|
|
4
4
|
|
|
5
5
|
def admin_form_for(object, *args, &block)
|
|
6
6
|
options = args.extract_options!
|
|
7
|
+
options[:remote] = true if request.xhr?
|
|
7
8
|
options[:html] ||= {}
|
|
8
9
|
options[:html][:class] ||= 'form-horizontal'
|
|
9
10
|
options[:builder] ||= ::AbAdmin::Views::FormBuilder
|
|
@@ -18,6 +19,27 @@ module AbAdmin
|
|
|
18
19
|
end
|
|
19
20
|
end
|
|
20
21
|
|
|
22
|
+
def admin_editable(item, attr, options=nil)
|
|
23
|
+
options = {} unless options.is_a?(Hash)
|
|
24
|
+
options[:type] ||= case attr.to_s
|
|
25
|
+
when /_at$/
|
|
26
|
+
'date'
|
|
27
|
+
when /^is_/
|
|
28
|
+
'select'
|
|
29
|
+
when /description|body|content/
|
|
30
|
+
'textarea'
|
|
31
|
+
else
|
|
32
|
+
'text'
|
|
33
|
+
end
|
|
34
|
+
options[:source] ||= {'true' => 'yes', 'false' => 'no'} if options[:type] == 'select'
|
|
35
|
+
data = {
|
|
36
|
+
:type => options[:type], :source => options[:source].try(:to_json),
|
|
37
|
+
:model => resource_class.model_name.singular, :url => resource_path(item),
|
|
38
|
+
:name => attr, :value => item[attr]
|
|
39
|
+
}
|
|
40
|
+
link_to admin_pretty_data(item[attr]).html_safe, '#', :class => 'editable', :data => data
|
|
41
|
+
end
|
|
42
|
+
|
|
21
43
|
def options_for_ckeditor(options = {})
|
|
22
44
|
{:width => 930, :height => 200, :toolbar => 'VeryEasy', :namespace => ''}.update(options)
|
|
23
45
|
end
|
|
@@ -14,6 +14,7 @@ module AbAdmin
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def sort_link(search, attribute, *args)
|
|
17
|
+
return unless search
|
|
17
18
|
options = args.first.is_a?(Hash) ? args.shift.dup : {}
|
|
18
19
|
search_params = params[:q] || {}.with_indifferent_access
|
|
19
20
|
attr_name = (options.delete(:column) || attribute).to_s
|
|
@@ -52,11 +53,8 @@ module AbAdmin
|
|
|
52
53
|
|
|
53
54
|
def short_action_link(action, item)
|
|
54
55
|
case action
|
|
55
|
-
when :new
|
|
56
|
-
item_link_to_can? :create, item, t('admin.actions.new.link'), new_resource_path,
|
|
57
|
-
:class => 'btn btn-primary'
|
|
58
56
|
when :edit
|
|
59
|
-
item_link_to_can? :update, item, icon('pencil', true), edit_resource_path(item),
|
|
57
|
+
item_link_to_can? :update, item, icon('pencil', true), edit_resource_path(item), :remote => settings[:list_edit],
|
|
60
58
|
:class => 'btn btn-primary', :title => t('admin.actions.edit.link')
|
|
61
59
|
when :destroy
|
|
62
60
|
item_link_to_can? :destroy, item, icon('trash', true), resource_path(item, :return_to => request.url),
|
|
@@ -80,7 +78,7 @@ module AbAdmin
|
|
|
80
78
|
def action_link(action)
|
|
81
79
|
case action
|
|
82
80
|
when :new
|
|
83
|
-
link_to_can? :create, t('admin.actions.new.link'), new_resource_path, :class => 'btn btn-primary'
|
|
81
|
+
link_to_can? :create, t('admin.actions.new.link'), new_resource_path, :class => 'btn btn-primary new_resource', :remote => settings[:list_edit]
|
|
84
82
|
when :edit
|
|
85
83
|
link_to_can? :update, t('admin.actions.edit.link'), edit_resource_path, :class => 'btn btn-primary'
|
|
86
84
|
when :destroy
|
|
@@ -167,10 +165,11 @@ module AbAdmin
|
|
|
167
165
|
end
|
|
168
166
|
|
|
169
167
|
def id_link(item)
|
|
168
|
+
opts = {:remote => settings[:list_edit], :class => 'resource_id_link'}
|
|
170
169
|
if can?(:edit, item)
|
|
171
|
-
link_to item.id, edit_resource_path(item),
|
|
170
|
+
link_to item.id, edit_resource_path(item), opts
|
|
172
171
|
elsif can?(:read, item)
|
|
173
|
-
link_to item.id, resource_path(item),
|
|
172
|
+
link_to item.id, resource_path(item), opts
|
|
174
173
|
else
|
|
175
174
|
item.id
|
|
176
175
|
end
|
|
@@ -18,7 +18,7 @@ module AbAdmin
|
|
|
18
18
|
def input(attribute_name, options = {}, &block)
|
|
19
19
|
if options[:fancy]
|
|
20
20
|
options[:input_html] ||= {}
|
|
21
|
-
options[:input_html][:class] = "#{options[:input_html][:class]}
|
|
21
|
+
options[:input_html][:class] = "#{options[:input_html][:class]} fancy_select"
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
case options[:as]
|
|
@@ -13,6 +13,10 @@ module AbAdmin
|
|
|
13
13
|
def form_builder
|
|
14
14
|
manager.form ||= ::AbAdmin::Config::Form.default_for_model(resource_class, :skip => [:id, :created_at, :updated_at, :lft, :rgt, :depth])
|
|
15
15
|
end
|
|
16
|
+
|
|
17
|
+
def show_builder
|
|
18
|
+
manager.show ||= ::AbAdmin::Config::Show.default_for_model(resource_class)
|
|
19
|
+
end
|
|
16
20
|
end
|
|
17
21
|
end
|
|
18
22
|
end
|
|
@@ -21,7 +21,11 @@ module AbAdmin
|
|
|
21
21
|
else
|
|
22
22
|
opts = options_for_select(options[:collection], params[:q][param])
|
|
23
23
|
end
|
|
24
|
-
|
|
24
|
+
options[:html_options] ||= {}
|
|
25
|
+
if options[:fancy] || !options.has_key?(:fancy)
|
|
26
|
+
options[:html_options][:class] = [options[:html_options][:class], 'fancy_select'].join(' ')
|
|
27
|
+
end
|
|
28
|
+
select_tag("q[#{param}]", opts, options[:html_options].merge(:include_blank => true, :id => "q_#{attr}"))
|
|
25
29
|
end
|
|
26
30
|
end
|
|
27
31
|
|
data/lib/generators/template.rb
CHANGED
|
@@ -24,15 +24,16 @@ gem 'simple_form'
|
|
|
24
24
|
gem 'bootstrap-sass', '2.0.4'
|
|
25
25
|
gem 'will_paginate', '>= 3.0.3'
|
|
26
26
|
gem 'bootstrap-wysihtml5-rails'
|
|
27
|
-
gem 'will_paginate-bootstrap'
|
|
27
|
+
gem 'will_paginate-bootstrap', '0.2.1'
|
|
28
|
+
gem 'select2-rails'
|
|
29
|
+
gem 'bootstrap-x-editable-rails'
|
|
28
30
|
gem 'gon'
|
|
29
31
|
gem 'i18n-js'
|
|
30
32
|
|
|
31
33
|
gem 'globalize3', :git => 'git://github.com/leschenko/globalize3.git', :ref => 'bcdf5eb'
|
|
32
34
|
gem 'sunrise-file-upload', :git => 'git://github.com/leschenko/sunrise-file-upload.git', :ref => '53da968'
|
|
33
35
|
gem 'turbo-sprockets-rails3', :group => :assets
|
|
34
|
-
gem 'ab_admin'
|
|
35
|
-
#gem 'ab_admin', :git => 'git://github.com/leschenko/ab_admin.git'
|
|
36
|
+
gem 'ab_admin'
|
|
36
37
|
|
|
37
38
|
ckeditor = yes?('Install ckeditor?')
|
|
38
39
|
|
|
@@ -1,10 +1,30 @@
|
|
|
1
1
|
class AbAdminProduct < AbAdmin::AbstractResource
|
|
2
|
-
preview_path :product_path
|
|
2
|
+
#preview_path :product_path
|
|
3
|
+
#preview_path { |product| product_path(product) }
|
|
3
4
|
|
|
4
|
-
|
|
5
|
+
#actions :except => :index
|
|
6
|
+
|
|
7
|
+
#settings :search => false, :batch => false
|
|
8
|
+
|
|
9
|
+
#batch_action(:un_publish) { |item| item.un_publish! }
|
|
10
|
+
#batch_action :destroy, false
|
|
11
|
+
#batch_action :un_publish!, :confirm => 'Un Publish?'
|
|
12
|
+
|
|
13
|
+
#action_item :destroy, false
|
|
14
|
+
#action_item :only => :show do
|
|
15
|
+
# link_to 'Main page', '/', :class => 'btn'
|
|
16
|
+
#end
|
|
17
|
+
|
|
18
|
+
#resource_action_items :show, :edit
|
|
19
|
+
#resource_action_item do
|
|
20
|
+
# link_to icon('arrow-down'), '/', :class => 'btn'
|
|
21
|
+
#end
|
|
22
|
+
|
|
23
|
+
#settings :comments => true
|
|
24
|
+
settings :list_edit => true
|
|
5
25
|
|
|
6
26
|
table do
|
|
7
|
-
field :sku
|
|
27
|
+
field :sku, :editable => true
|
|
8
28
|
field(:picture) { |item| item_image_link(item) }
|
|
9
29
|
field :name, :sortable => {:column => :id, :default_order => 'desc'}
|
|
10
30
|
field :is_visible
|
|
@@ -16,7 +36,7 @@ class AbAdminProduct < AbAdmin::AbstractResource
|
|
|
16
36
|
field :sku
|
|
17
37
|
field :name
|
|
18
38
|
field :is_visible
|
|
19
|
-
field :collection
|
|
39
|
+
field :collection, :fancy => true
|
|
20
40
|
field :created_at
|
|
21
41
|
end
|
|
22
42
|
|
|
@@ -35,75 +55,18 @@ class AbAdminProduct < AbAdmin::AbstractResource
|
|
|
35
55
|
field :price
|
|
36
56
|
end
|
|
37
57
|
field :is_visible
|
|
38
|
-
field :collection, :as => :association
|
|
58
|
+
field :collection, :as => :association, :fancy => true
|
|
39
59
|
locale_tabs do
|
|
40
60
|
field :name
|
|
41
61
|
field :description
|
|
42
62
|
end
|
|
43
|
-
field :picture, :as => :uploader
|
|
44
|
-
field :map, :as => :map
|
|
63
|
+
#field :picture, :as => :uploader
|
|
64
|
+
#field :map, :as => :map
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
show do
|
|
68
|
+
field :sku
|
|
69
|
+
field(:price) { |item| "$#{item.price}" }
|
|
45
70
|
end
|
|
46
|
-
end
|
|
47
71
|
|
|
48
|
-
|
|
49
|
-
#
|
|
50
|
-
# index_view :table
|
|
51
|
-
#
|
|
52
|
-
# batch_actions :destroy, :publish
|
|
53
|
-
#
|
|
54
|
-
# scopes :visible, :published
|
|
55
|
-
#
|
|
56
|
-
# preview :product_path
|
|
57
|
-
#
|
|
58
|
-
# index_actions :edit, :show, :destroy
|
|
59
|
-
#
|
|
60
|
-
# actions_on :edit => [:edit, :show, :destroy], :show => [:preview]
|
|
61
|
-
#
|
|
62
|
-
# table do
|
|
63
|
-
# field :id
|
|
64
|
-
# field :sku
|
|
65
|
-
# field :name, :sortable => false
|
|
66
|
-
# image :picture
|
|
67
|
-
# field :is_visible
|
|
68
|
-
# field :created_at
|
|
69
|
-
# end
|
|
70
|
-
#
|
|
71
|
-
# grid do
|
|
72
|
-
# title :name
|
|
73
|
-
# image :picture
|
|
74
|
-
# state :is_visible, :active => {:color => :green, :title => :published}, :inactive => {:color => :grey, :title => :un_published}
|
|
75
|
-
# end
|
|
76
|
-
#
|
|
77
|
-
# search do
|
|
78
|
-
# field :id
|
|
79
|
-
# field :sku
|
|
80
|
-
# field :name
|
|
81
|
-
# field :is_visible
|
|
82
|
-
# field :created_at
|
|
83
|
-
# end
|
|
84
|
-
#
|
|
85
|
-
# form do
|
|
86
|
-
# field :sku
|
|
87
|
-
# field :name
|
|
88
|
-
# field :description
|
|
89
|
-
# group :publish, :if => :admin? do
|
|
90
|
-
# field :is_visible
|
|
91
|
-
# end
|
|
92
|
-
# group :pictures do
|
|
93
|
-
# field :picture
|
|
94
|
-
# end
|
|
95
|
-
# has_many :modifications do
|
|
96
|
-
# field :sku
|
|
97
|
-
# field :name
|
|
98
|
-
# field :description
|
|
99
|
-
# end
|
|
100
|
-
# end
|
|
101
|
-
#
|
|
102
|
-
# export do
|
|
103
|
-
# field :id
|
|
104
|
-
# field :sku
|
|
105
|
-
# field :name
|
|
106
|
-
# field :is_visible
|
|
107
|
-
# field :created_at
|
|
108
|
-
# end
|
|
109
|
-
#end
|
|
72
|
+
end
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* jQuery Hotkeys Plugin
|
|
3
|
+
* Copyright 2010, John Resig
|
|
4
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
|
5
|
+
*
|
|
6
|
+
* Based upon the plugin by Tzury Bar Yochay:
|
|
7
|
+
* http://github.com/tzuryby/hotkeys
|
|
8
|
+
*
|
|
9
|
+
* Original idea by:
|
|
10
|
+
* Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
(function(jQuery){
|
|
14
|
+
|
|
15
|
+
jQuery.hotkeys = {
|
|
16
|
+
version: "0.8+",
|
|
17
|
+
|
|
18
|
+
specialKeys: {
|
|
19
|
+
8: "backspace", 9: "tab", 13: "return", 16: "shift", 17: "ctrl", 18: "alt", 19: "pause",
|
|
20
|
+
20: "capslock", 27: "esc", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home",
|
|
21
|
+
37: "left", 38: "up", 39: "right", 40: "down", 45: "insert", 46: "del",
|
|
22
|
+
96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7",
|
|
23
|
+
104: "8", 105: "9", 106: "*", 107: "+", 109: "-", 110: ".", 111 : "/",
|
|
24
|
+
112: "f1", 113: "f2", 114: "f3", 115: "f4", 116: "f5", 117: "f6", 118: "f7", 119: "f8",
|
|
25
|
+
120: "f9", 121: "f10", 122: "f11", 123: "f12", 144: "numlock", 145: "scroll", 188: ",", 190: ".",
|
|
26
|
+
191: "/", 224: "meta"
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
shiftNums: {
|
|
30
|
+
"`": "~", "1": "!", "2": "@", "3": "#", "4": "$", "5": "%", "6": "^", "7": "&",
|
|
31
|
+
"8": "*", "9": "(", "0": ")", "-": "_", "=": "+", ";": ": ", "'": "\"", ",": "<",
|
|
32
|
+
".": ">", "/": "?", "\\": "|"
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
function keyHandler( handleObj ) {
|
|
37
|
+
|
|
38
|
+
var origHandler = handleObj.handler,
|
|
39
|
+
//use namespace as keys so it works with event delegation as well
|
|
40
|
+
//will also allow removing listeners of a specific key combination
|
|
41
|
+
//and support data objects
|
|
42
|
+
keys = (handleObj.namespace || "").toLowerCase().split(" ");
|
|
43
|
+
keys = jQuery.map(keys, function(key) { return key.split("."); });
|
|
44
|
+
|
|
45
|
+
//no need to modify handler if no keys specified
|
|
46
|
+
if (keys.length === 1 && (keys[0] === "" || keys[0] === "autocomplete")) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
handleObj.handler = function( event ) {
|
|
51
|
+
// Don't fire in text-accepting inputs that we didn't directly bind to
|
|
52
|
+
// important to note that $.fn.prop is only available on jquery 1.6+
|
|
53
|
+
if ( this !== event.target && (/textarea|select/i.test( event.target.nodeName ) ||
|
|
54
|
+
event.target.type === "text" || $(event.target).prop('contenteditable') == 'true' )) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Keypress represents characters, not special keys
|
|
59
|
+
var special = event.type !== "keypress" && jQuery.hotkeys.specialKeys[ event.which ],
|
|
60
|
+
character = String.fromCharCode( event.which ).toLowerCase(),
|
|
61
|
+
key, modif = "", possible = {};
|
|
62
|
+
|
|
63
|
+
// check combinations (alt|ctrl|shift+anything)
|
|
64
|
+
if ( event.altKey && special !== "alt" ) {
|
|
65
|
+
modif += "alt_";
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if ( event.ctrlKey && special !== "ctrl" ) {
|
|
69
|
+
modif += "ctrl_";
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// TODO: Need to make sure this works consistently across platforms
|
|
73
|
+
if ( event.metaKey && !event.ctrlKey && special !== "meta" ) {
|
|
74
|
+
modif += "meta_";
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if ( event.shiftKey && special !== "shift" ) {
|
|
78
|
+
modif += "shift_";
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if ( special ) {
|
|
82
|
+
possible[ modif + special ] = true;
|
|
83
|
+
|
|
84
|
+
} else {
|
|
85
|
+
possible[ modif + character ] = true;
|
|
86
|
+
possible[ modif + jQuery.hotkeys.shiftNums[ character ] ] = true;
|
|
87
|
+
|
|
88
|
+
// "$" can be triggered as "Shift+4" or "Shift+$" or just "$"
|
|
89
|
+
if ( modif === "shift_" ) {
|
|
90
|
+
possible[ jQuery.hotkeys.shiftNums[ character ] ] = true;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
for ( var i = 0, l = keys.length; i < l; i++ ) {
|
|
95
|
+
if ( possible[ keys[i] ] ) {
|
|
96
|
+
return origHandler.apply( this, arguments );
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
jQuery.each([ "keydown", "keyup", "keypress" ], function() {
|
|
103
|
+
jQuery.event.special[ this ] = { add: keyHandler };
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
})( jQuery );
|
metadata
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
name: ab_admin
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease:
|
|
5
|
-
version: 0.1.
|
|
5
|
+
version: 0.1.1
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
8
8
|
- Alex Leschenko
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2013-02-
|
|
12
|
+
date: 2013-02-13 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -334,17 +334,17 @@ dependencies:
|
|
|
334
334
|
- !ruby/object:Gem::Dependency
|
|
335
335
|
version_requirements: !ruby/object:Gem::Requirement
|
|
336
336
|
requirements:
|
|
337
|
-
- -
|
|
337
|
+
- - '='
|
|
338
338
|
- !ruby/object:Gem::Version
|
|
339
|
-
version:
|
|
339
|
+
version: 0.2.1
|
|
340
340
|
none: false
|
|
341
341
|
prerelease: false
|
|
342
342
|
name: will_paginate-bootstrap
|
|
343
343
|
requirement: !ruby/object:Gem::Requirement
|
|
344
344
|
requirements:
|
|
345
|
-
- -
|
|
345
|
+
- - '='
|
|
346
346
|
- !ruby/object:Gem::Version
|
|
347
|
-
version:
|
|
347
|
+
version: 0.2.1
|
|
348
348
|
none: false
|
|
349
349
|
type: :runtime
|
|
350
350
|
- !ruby/object:Gem::Dependency
|
|
@@ -598,11 +598,10 @@ files:
|
|
|
598
598
|
- Gemfile
|
|
599
599
|
- Guardfile
|
|
600
600
|
- LICENSE.txt
|
|
601
|
-
- NOTES
|
|
602
601
|
- README.md
|
|
603
602
|
- Rakefile
|
|
603
|
+
- TODO
|
|
604
604
|
- ab_admin.gemspec
|
|
605
|
-
- app/assets/images/admin/chosen-sprite.png
|
|
606
605
|
- app/assets/images/admin/empty.gif
|
|
607
606
|
- app/assets/images/admin/flags/b_en.png
|
|
608
607
|
- app/assets/images/admin/flags/b_it.png
|
|
@@ -624,6 +623,7 @@ files:
|
|
|
624
623
|
- app/assets/javascripts/ab_admin/components/gmaps.js.coffee
|
|
625
624
|
- app/assets/javascripts/ab_admin/components/google_translate.js.coffee
|
|
626
625
|
- app/assets/javascripts/ab_admin/components/grid_input.js.coffee
|
|
626
|
+
- app/assets/javascripts/ab_admin/components/in_place_edit.js.coffee
|
|
627
627
|
- app/assets/javascripts/ab_admin/components/locator.js.coffee
|
|
628
628
|
- app/assets/javascripts/ab_admin/components/sortable_tree.js.coffee
|
|
629
629
|
- app/assets/javascripts/ab_admin/core/batch_actions.js.coffee
|
|
@@ -639,7 +639,6 @@ files:
|
|
|
639
639
|
- app/assets/javascripts/i18n/translations.js
|
|
640
640
|
- app/assets/stylesheets/ab_admin/application.css.scss
|
|
641
641
|
- app/assets/stylesheets/ab_admin/bootstrap_and_overrides.css.scss
|
|
642
|
-
- app/assets/stylesheets/ab_admin/chosen.css.scss
|
|
643
642
|
- app/assets/stylesheets/ab_admin/components/_admin_comments.css.scss
|
|
644
643
|
- app/assets/stylesheets/ab_admin/components/_base.css.scss
|
|
645
644
|
- app/assets/stylesheets/ab_admin/components/_colored_tabs.css.scss
|
|
@@ -650,7 +649,6 @@ files:
|
|
|
650
649
|
- app/assets/stylesheets/ab_admin/components/_navigation.css.scss
|
|
651
650
|
- app/assets/stylesheets/ab_admin/components/_perms.css.scss
|
|
652
651
|
- app/assets/stylesheets/ab_admin/components/_sortable_tree.css.scss
|
|
653
|
-
- app/assets/stylesheets/ab_admin/components/_table_tools.css.scss
|
|
654
652
|
- app/assets/stylesheets/ab_admin/components/_table_view.css.scss
|
|
655
653
|
- app/assets/stylesheets/ab_admin/components/_translations.css.scss
|
|
656
654
|
- app/assets/stylesheets/ab_admin/devise.css.scss
|
|
@@ -680,10 +678,14 @@ files:
|
|
|
680
678
|
- app/views/admin/base/_table.html.slim
|
|
681
679
|
- app/views/admin/base/_tree.html.slim
|
|
682
680
|
- app/views/admin/base/_tree_item.html.slim
|
|
681
|
+
- app/views/admin/base/create.js.erb
|
|
683
682
|
- app/views/admin/base/edit.html.slim
|
|
683
|
+
- app/views/admin/base/edit.js.erb
|
|
684
684
|
- app/views/admin/base/index.html.slim
|
|
685
685
|
- app/views/admin/base/new.html.slim
|
|
686
|
+
- app/views/admin/base/new.js.erb
|
|
686
687
|
- app/views/admin/base/show.html.slim
|
|
688
|
+
- app/views/admin/base/update.js.erb
|
|
687
689
|
- app/views/admin/dashboards/index.html.slim
|
|
688
690
|
- app/views/admin/fileupload/_asset.html.erb
|
|
689
691
|
- app/views/admin/fileupload/_container.html.erb
|
|
@@ -696,6 +698,7 @@ files:
|
|
|
696
698
|
- app/views/admin/locators/show.html.slim
|
|
697
699
|
- app/views/admin/manager/_form.html.slim
|
|
698
700
|
- app/views/admin/manager/_search_form.html.slim
|
|
701
|
+
- app/views/admin/manager/_show_table.html.slim
|
|
699
702
|
- app/views/admin/manager/_table.html.slim
|
|
700
703
|
- app/views/admin/settings/_form.html.slim
|
|
701
704
|
- app/views/admin/shared/_batch_actions.html.slim
|
|
@@ -735,8 +738,11 @@ files:
|
|
|
735
738
|
- features/dsl/config.feature
|
|
736
739
|
- features/dsl/export.feature
|
|
737
740
|
- features/dsl/form.feature
|
|
741
|
+
- features/dsl/in_place_edit.feature
|
|
742
|
+
- features/dsl/list_edit.feature
|
|
738
743
|
- features/dsl/resource_action_items.feature
|
|
739
744
|
- features/dsl/search.feature
|
|
745
|
+
- features/dsl/show.feature
|
|
740
746
|
- features/dsl/table.feature
|
|
741
747
|
- features/dsl/tree.feature
|
|
742
748
|
- features/index_views/table.feature
|
|
@@ -747,7 +753,9 @@ files:
|
|
|
747
753
|
- features/step_definitions/dsl/action_items_steps.rb
|
|
748
754
|
- features/step_definitions/dsl/admin_comments_steps.rb
|
|
749
755
|
- features/step_definitions/dsl/batch_actions_steps.rb
|
|
756
|
+
- features/step_definitions/dsl/in_place_edit_steps.rb
|
|
750
757
|
- features/step_definitions/dsl/resource_action_items_steps.rb
|
|
758
|
+
- features/step_definitions/dsl/show_steps.rb
|
|
751
759
|
- features/step_definitions/dsl/table_steps.rb
|
|
752
760
|
- features/step_definitions/dsl/tree_steps.rb
|
|
753
761
|
- features/step_definitions/menu_steps.rb
|
|
@@ -1300,7 +1308,6 @@ files:
|
|
|
1300
1308
|
- spec/dummy/app/helpers/application_helper.rb
|
|
1301
1309
|
- spec/dummy/app/helpers/welcome_helper.rb
|
|
1302
1310
|
- spec/dummy/app/mailers/.gitkeep
|
|
1303
|
-
- spec/dummy/app/models/.gitkeep
|
|
1304
1311
|
- spec/dummy/app/models/ab_admin/ab_admin_catalogue.rb
|
|
1305
1312
|
- spec/dummy/app/models/ab_admin/ab_admin_product.rb
|
|
1306
1313
|
- spec/dummy/app/models/admin_menu.rb
|
|
@@ -1812,8 +1819,8 @@ files:
|
|
|
1812
1819
|
- vendor/assets/javascripts/ab_admin/fileupload/admin-fileuploader.js.coffee
|
|
1813
1820
|
- vendor/assets/javascripts/ab_admin/fileupload/fileuploader.js
|
|
1814
1821
|
- vendor/assets/javascripts/bootstrap-wysihtml5/locales/ru.js
|
|
1815
|
-
- vendor/assets/javascripts/chosen.js.coffee
|
|
1816
1822
|
- vendor/assets/javascripts/jquery.cookie.js
|
|
1823
|
+
- vendor/assets/javascripts/jquery.hotkeys.js
|
|
1817
1824
|
- vendor/assets/javascripts/jquery.pjax.js
|
|
1818
1825
|
- vendor/assets/javascripts/jquery.tmpl.min.js
|
|
1819
1826
|
- vendor/assets/javascripts/jquery.ui.nestedSortable.js
|
|
@@ -1833,7 +1840,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
1833
1840
|
version: '0'
|
|
1834
1841
|
segments:
|
|
1835
1842
|
- 0
|
|
1836
|
-
hash:
|
|
1843
|
+
hash: 331065157025612522
|
|
1837
1844
|
none: false
|
|
1838
1845
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1839
1846
|
requirements:
|
|
@@ -1842,7 +1849,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
1842
1849
|
version: '0'
|
|
1843
1850
|
segments:
|
|
1844
1851
|
- 0
|
|
1845
|
-
hash:
|
|
1852
|
+
hash: 331065157025612522
|
|
1846
1853
|
none: false
|
|
1847
1854
|
requirements: []
|
|
1848
1855
|
rubyforge_project:
|
|
@@ -1858,8 +1865,11 @@ test_files:
|
|
|
1858
1865
|
- features/dsl/config.feature
|
|
1859
1866
|
- features/dsl/export.feature
|
|
1860
1867
|
- features/dsl/form.feature
|
|
1868
|
+
- features/dsl/in_place_edit.feature
|
|
1869
|
+
- features/dsl/list_edit.feature
|
|
1861
1870
|
- features/dsl/resource_action_items.feature
|
|
1862
1871
|
- features/dsl/search.feature
|
|
1872
|
+
- features/dsl/show.feature
|
|
1863
1873
|
- features/dsl/table.feature
|
|
1864
1874
|
- features/dsl/tree.feature
|
|
1865
1875
|
- features/index_views/table.feature
|
|
@@ -1870,7 +1880,9 @@ test_files:
|
|
|
1870
1880
|
- features/step_definitions/dsl/action_items_steps.rb
|
|
1871
1881
|
- features/step_definitions/dsl/admin_comments_steps.rb
|
|
1872
1882
|
- features/step_definitions/dsl/batch_actions_steps.rb
|
|
1883
|
+
- features/step_definitions/dsl/in_place_edit_steps.rb
|
|
1873
1884
|
- features/step_definitions/dsl/resource_action_items_steps.rb
|
|
1885
|
+
- features/step_definitions/dsl/show_steps.rb
|
|
1874
1886
|
- features/step_definitions/dsl/table_steps.rb
|
|
1875
1887
|
- features/step_definitions/dsl/tree_steps.rb
|
|
1876
1888
|
- features/step_definitions/menu_steps.rb
|
|
@@ -1906,7 +1918,6 @@ test_files:
|
|
|
1906
1918
|
- spec/dummy/app/helpers/application_helper.rb
|
|
1907
1919
|
- spec/dummy/app/helpers/welcome_helper.rb
|
|
1908
1920
|
- spec/dummy/app/mailers/.gitkeep
|
|
1909
|
-
- spec/dummy/app/models/.gitkeep
|
|
1910
1921
|
- spec/dummy/app/models/ab_admin/ab_admin_catalogue.rb
|
|
1911
1922
|
- spec/dummy/app/models/ab_admin/ab_admin_product.rb
|
|
1912
1923
|
- spec/dummy/app/models/admin_menu.rb
|
data/NOTES
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
- generate dummy with rake task
|
|
2
|
-
simple_form bootstrap
|
|
3
|
-
devise
|
|
4
|
-
+i18n-js
|
|
5
|
-
+default form render
|
|
6
|
-
+clean settings table
|
|
7
|
-
+fileupload
|
|
8
|
-
+fix pickers
|
|
9
|
-
-structure to dsl
|
|
10
|
-
|
|
11
|
-
route to resource gen
|
|
12
|
-
gen mkdir log tmp/pids tmp/sockets
|
|
13
|
-
form has_many has_one
|
|
14
|
-
|
|
15
|
-
settings and locales reloading
|
|
16
|
-
generate dummy settings
|
|
Binary file
|