admin_data 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +221 -0
- data/README.textile +21 -0
- data/Rakefile +46 -0
- data/app/controllers/admin_data/base_controller.rb +114 -0
- data/app/controllers/admin_data/diagnostic_controller.rb +28 -0
- data/app/controllers/admin_data/feed_controller.rb +17 -0
- data/app/controllers/admin_data/main_controller.rb +132 -0
- data/app/controllers/admin_data/migration_controller.rb +19 -0
- data/app/controllers/admin_data/search_controller.rb +125 -0
- data/app/controllers/admin_data/validate_model_controller.rb +106 -0
- data/app/views/admin_data/diagnostic/index.html.erb +17 -0
- data/app/views/admin_data/diagnostic/missing_index.html.erb +26 -0
- data/app/views/admin_data/feed/index.rss.builder +24 -0
- data/app/views/admin_data/main/all_models.html.erb +22 -0
- data/app/views/admin_data/main/association/_association_info.html.erb +10 -0
- data/app/views/admin_data/main/association/_belongs_to_info.html.erb +7 -0
- data/app/views/admin_data/main/association/_has_many_info.html.erb +7 -0
- data/app/views/admin_data/main/association/_has_one_info.html.erb +6 -0
- data/app/views/admin_data/main/edit.html.erb +38 -0
- data/app/views/admin_data/main/misc/_form.html.erb +25 -0
- data/app/views/admin_data/main/misc/_modify_record.html.erb +22 -0
- data/app/views/admin_data/main/new.html.erb +23 -0
- data/app/views/admin_data/main/show.html.erb +41 -0
- data/app/views/admin_data/main/table_structure.html.erb +55 -0
- data/app/views/admin_data/migration/index.html.erb +18 -0
- data/app/views/admin_data/migration/jstest.html.erb +51 -0
- data/app/views/admin_data/search/_search_base.html.erb +34 -0
- data/app/views/admin_data/search/advance_search.html.erb +3 -0
- data/app/views/admin_data/search/quick_search.html.erb +6 -0
- data/app/views/admin_data/search/search/_advance_search_form.html.erb +48 -0
- data/app/views/admin_data/search/search/_errors.html.erb +5 -0
- data/app/views/admin_data/search/search/_listing.html.erb +40 -0
- data/app/views/admin_data/search/search/_search_form.html.erb +28 -0
- data/app/views/admin_data/search/search/_sortby.html.erb +18 -0
- data/app/views/admin_data/search/search/_title.html.erb +34 -0
- data/app/views/admin_data/shared/_breadcrum.html.erb +10 -0
- data/app/views/admin_data/shared/_drop_down_klasses.html.erb +4 -0
- data/app/views/admin_data/shared/_flash_message.html.erb +13 -0
- data/app/views/admin_data/shared/_header.html.erb +23 -0
- data/app/views/admin_data/shared/_powered_by.html.erb +23 -0
- data/app/views/admin_data/shared/_secondary_navigation.html.erb +28 -0
- data/app/views/admin_data/validate_model/_bad.html.erb +1 -0
- data/app/views/admin_data/validate_model/tid.html.erb +2 -0
- data/app/views/admin_data/validate_model/validate.html.erb +67 -0
- data/app/views/layouts/admin_data.html.erb +60 -0
- data/config/routes.rb +34 -0
- data/init.rb +1 -0
- data/lib/admin_data.rb +34 -0
- data/lib/admin_data/chelper.rb +37 -0
- data/lib/admin_data/compatibility.rb +7 -0
- data/lib/admin_data/helpers.rb +222 -0
- data/lib/admin_data/railtie.rb +21 -0
- data/lib/admin_data/search.rb +186 -0
- data/lib/admin_data/settings.rb +72 -0
- data/lib/admin_data/util.rb +237 -0
- data/lib/admin_data/version.rb +3 -0
- data/lib/admin_data_date_validation.rb +79 -0
- data/lib/css/app.css +224 -0
- data/lib/css/base.css +1071 -0
- data/lib/css/header.css +65 -0
- data/lib/css/rounded.css +18 -0
- data/lib/css/themes/drastic-dark/style.css +374 -0
- data/lib/css/umbrella.css +34 -0
- data/lib/css/vendor/images/ui-bg_diagonals-thick_75_f3d8d8_40x40.png +0 -0
- data/lib/css/vendor/images/ui-bg_dots-small_65_a6a6a6_2x2.png +0 -0
- data/lib/css/vendor/images/ui-bg_flat_0_333333_40x100.png +0 -0
- data/lib/css/vendor/images/ui-bg_flat_65_ffffff_40x100.png +0 -0
- data/lib/css/vendor/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/lib/css/vendor/images/ui-bg_glass_55_fbf8ee_1x400.png +0 -0
- data/lib/css/vendor/images/ui-bg_highlight-hard_100_eeeeee_1x100.png +0 -0
- data/lib/css/vendor/images/ui-bg_highlight-hard_100_f6f6f6_1x100.png +0 -0
- data/lib/css/vendor/images/ui-bg_highlight-soft_15_cc0000_1x100.png +0 -0
- data/lib/css/vendor/images/ui-icons_004276_256x240.png +0 -0
- data/lib/css/vendor/images/ui-icons_cc0000_256x240.png +0 -0
- data/lib/css/vendor/images/ui-icons_ffffff_256x240.png +0 -0
- data/lib/css/vendor/jquery-ui-1.7.2.custom.css +406 -0
- data/lib/css/vendor/qunit.css +119 -0
- data/lib/js/advance_search/act_on_result.js +47 -0
- data/lib/js/advance_search/adv_search.js +46 -0
- data/lib/js/advance_search/advance_search.js +60 -0
- data/lib/js/advance_search/advance_search_structure.js +79 -0
- data/lib/js/advance_search/ajaxify_advance_search.js +28 -0
- data/lib/js/advance_search/build_first_row.js +12 -0
- data/lib/js/advance_search/event_bindings.js +87 -0
- data/lib/js/advance_search/global_ajax_setting.js +10 -0
- data/lib/js/advance_search/trigger_submit_on_domready.js +6 -0
- data/lib/js/misc/drop_down_change.js +8 -0
- data/lib/js/misc/js_util.js +42 -0
- data/lib/js/misc/quick_search_input_focus.js +6 -0
- data/lib/js/test/act_on_result.js +120 -0
- data/lib/js/test/advance_search.js +80 -0
- data/lib/js/test/ajaxify_advance_search.js +29 -0
- data/lib/js/test/build_first_row.js +10 -0
- data/lib/js/test/event_bindings.js +100 -0
- data/lib/js/validate_model/ajaxify_form.js +66 -0
- data/lib/js/validate_model/select_all.js +15 -0
- data/lib/js/vendor/jack.js +903 -0
- data/lib/js/vendor/jquery-1.4.1.js +6078 -0
- data/lib/js/vendor/jquery-ui-1.7.2.custom.min.js +298 -0
- data/lib/js/vendor/jquery.ba-isjquery.js +21 -0
- data/lib/js/vendor/jquery.form.js +814 -0
- data/lib/js/vendor/jquery.lint.js +604 -0
- data/lib/js/vendor/log.js +9 -0
- data/lib/js/vendor/qunit.js +1043 -0
- data/lib/tasks/admin_data_tasks.rake +7 -0
- data/lib/tasks/validate_models_bg.rake +23 -0
- data/test/factories/article.rb +9 -0
- data/test/factories/car.rb +4 -0
- data/test/factories/city.rb +4 -0
- data/test/factories/comment.rb +6 -0
- data/test/factories/door.rb +4 -0
- data/test/factories/engine.rb +4 -0
- data/test/functional/base_controller_test.rb +5 -0
- data/test/functional/feed_controller_test.rb +34 -0
- data/test/functional/main_controller_test.rb +421 -0
- data/test/functional/migration_controller_test.rb +30 -0
- data/test/functional/routes_test.rb +61 -0
- data/test/functional/search_controller_test.rb +814 -0
- data/test/helper/view_helper_test.rb +177 -0
- data/test/misc_tests/date_validation_test.rb +32 -0
- data/test/misc_tests/settings_test.rb +29 -0
- data/test/misc_tests/util_test.rb +83 -0
- data/test/rails_root/Gemfile +22 -0
- data/test/rails_root/Gemfile.lock +101 -0
- data/test/rails_root/Rakefile +7 -0
- data/test/rails_root/app/controllers/application_controller.rb +3 -0
- data/test/rails_root/app/helpers/application_helper.rb +2 -0
- data/test/rails_root/app/models/article.rb +25 -0
- data/test/rails_root/app/models/city.rb +15 -0
- data/test/rails_root/app/models/comment.rb +13 -0
- data/test/rails_root/app/models/tech_magazine.rb +2 -0
- data/test/rails_root/app/models/vehicle/car.rb +4 -0
- data/test/rails_root/app/models/vehicle/door.rb +3 -0
- data/test/rails_root/app/models/vehicle/engine.rb +3 -0
- data/test/rails_root/app/views/layouts/application.html.erb +14 -0
- data/test/rails_root/config.ru +4 -0
- data/test/rails_root/config/application.rb +42 -0
- data/test/rails_root/config/boot.rb +13 -0
- data/test/rails_root/config/database.yml +22 -0
- data/test/rails_root/config/environment.rb +5 -0
- data/test/rails_root/config/environments/development.rb +22 -0
- data/test/rails_root/config/environments/production.rb +49 -0
- data/test/rails_root/config/environments/test.rb +35 -0
- data/test/rails_root/config/initializers/backtrace_silencers.rb +7 -0
- data/test/rails_root/config/initializers/inflections.rb +10 -0
- data/test/rails_root/config/initializers/mime_types.rb +5 -0
- data/test/rails_root/config/initializers/secret_token.rb +7 -0
- data/test/rails_root/config/initializers/session_store.rb +8 -0
- data/test/rails_root/config/locales/en.yml +5 -0
- data/test/rails_root/config/routes.rb +58 -0
- data/test/rails_root/db/migrate/20090809061114_create_tables.rb +70 -0
- data/test/rails_root/db/schema.rb +74 -0
- data/test/rails_root/db/seeds.rb +7 -0
- data/test/rails_root/script/rails +6 -0
- data/test/rails_root/test/performance/browsing_test.rb +0 -0
- data/test/rails_root/test/test_helper.rb +13 -0
- data/test/support/assertions.rb +20 -0
- data/test/test_helper.rb +74 -0
- metadata +321 -0
data/History.txt
ADDED
@@ -0,0 +1,221 @@
|
|
1
|
+
=== 2010-04-14
|
2
|
+
|
3
|
+
* JavaScript code refactoring
|
4
|
+
* More JavaScript code test
|
5
|
+
* Moved functionalities from layout to helper
|
6
|
+
|
7
|
+
=== 0.0.37 2010-01-28
|
8
|
+
|
9
|
+
* refactored the code to take inline style out to style section
|
10
|
+
* moves a lot of ruby code from view to helpers and controllers
|
11
|
+
* better indentation
|
12
|
+
|
13
|
+
=== 0.0.36 2010-01-05
|
14
|
+
|
15
|
+
* Fixing the online validation of models that have primary key not id
|
16
|
+
|
17
|
+
=== 0.0.35 2010-01-05
|
18
|
+
|
19
|
+
* If invalid children value is passed in apply rescue
|
20
|
+
|
21
|
+
=== 0.0.34 2010-01-04
|
22
|
+
|
23
|
+
* updated README
|
24
|
+
|
25
|
+
=== 0.0.33 2009-12-27
|
26
|
+
|
27
|
+
* added authentication for feed
|
28
|
+
|
29
|
+
=== 0.0.32 2009-12-23
|
30
|
+
|
31
|
+
* the default search result for advance search should be primary key des
|
32
|
+
* changed the layout for quick search
|
33
|
+
|
34
|
+
=== 0.0.31 2009-12-15
|
35
|
+
|
36
|
+
* association information is rescued so that show method works even if association info throws error
|
37
|
+
* association info is displayed with belongs_to or has_many name instead of class name
|
38
|
+
* debugging variable $debug_admin_data
|
39
|
+
|
40
|
+
=== 0.0.30 2009-12-02
|
41
|
+
|
42
|
+
* RSS feed for all the models
|
43
|
+
|
44
|
+
=== 0.0.29 2009-11-18
|
45
|
+
|
46
|
+
* rake task to validate all the models
|
47
|
+
* ability to validate all the models using browser
|
48
|
+
* increased the font size of overall app
|
49
|
+
|
50
|
+
=== 0.0.28 2009-11-12
|
51
|
+
|
52
|
+
* has_many association_info were too close to each other
|
53
|
+
* fixing the issue where a class is used as a hash key. It breaks in development
|
54
|
+
|
55
|
+
=== 0.0.28 2009-11-11
|
56
|
+
|
57
|
+
* better link color
|
58
|
+
|
59
|
+
=== 0.0.28 2009-11-11
|
60
|
+
|
61
|
+
* refactored the way advance search JavaScript code
|
62
|
+
* for pretty urls like /42-SEO-friendly-title the show method should pickup 42 as id
|
63
|
+
|
64
|
+
=== 0.0.27 2009-11-04
|
65
|
+
|
66
|
+
* test for has_one association
|
67
|
+
|
68
|
+
=== 0.0.26 2009-11-04
|
69
|
+
|
70
|
+
* cleaning up History.txt file
|
71
|
+
|
72
|
+
=== 0.0.25 2009-11-03
|
73
|
+
|
74
|
+
* fix for issue #14 so that not like will also include records which are null
|
75
|
+
|
76
|
+
=== 0.0.24 2009-11-03
|
77
|
+
|
78
|
+
* advance search refactoring
|
79
|
+
|
80
|
+
=== 0.0.23 2009-10-29
|
81
|
+
|
82
|
+
* advance search bug fix
|
83
|
+
|
84
|
+
=== 0.0.22 2009-10-26
|
85
|
+
|
86
|
+
* fixed adding rows on advanced search
|
87
|
+
* consistenly use model_id for search and association parent objects
|
88
|
+
* datetime/date/time fixes on edit and advanced search pages
|
89
|
+
* added configuration to not use admin_data layout and use application one instead
|
90
|
+
|
91
|
+
=== 0.0.21 2009-10-26
|
92
|
+
|
93
|
+
* fixed the formatting issue while displaying missing index in diagnostic section
|
94
|
+
* by passing additional parameter called 'attr' editing of a record would display
|
95
|
+
only one field to avoid any accidental change.
|
96
|
+
|
97
|
+
=== 0.0.20 2009-10-22
|
98
|
+
|
99
|
+
* warning message if JavaScript is disabled
|
100
|
+
|
101
|
+
=== 0.0.19 2009-10-20
|
102
|
+
|
103
|
+
* ability to pass :find_conditions to settings so that models with to_param method could
|
104
|
+
override the sql that is built by admin_data
|
105
|
+
|
106
|
+
=== 0.0.18 2009-10-16
|
107
|
+
|
108
|
+
* changed theme from warehouse to dark because the association info on the right
|
109
|
+
hand side was not appearing correctly
|
110
|
+
* homepage should have main tab selected
|
111
|
+
* changed urls to support models that override to_param to other than id
|
112
|
+
* fixed the sorting order. model a, model B and model A/Q was being sorted
|
113
|
+
as A,Q,B instead of A,B,Q.
|
114
|
+
|
115
|
+
=== 0.0.17 2009-10-08
|
116
|
+
|
117
|
+
* drop down of klasses is now available at the center of home page
|
118
|
+
* current model will be selected in the drop down
|
119
|
+
|
120
|
+
=== 0.0.16 2009-10-07
|
121
|
+
|
122
|
+
* form UI foreign keys are dropdown (display name attribute if it exists and id otherwise)
|
123
|
+
* form UI date fields use date_select (with free text year since we cannot guess a good range)
|
124
|
+
* form UI refactored to use form_for instead of form_tag and hadcoded html
|
125
|
+
|
126
|
+
=== 0.0.15 2009-10-06
|
127
|
+
|
128
|
+
* cache the list of models
|
129
|
+
* advance search refactoring
|
130
|
+
* jQuery UI datepicker for date field
|
131
|
+
* advance search now shows validation error for integer and date fields
|
132
|
+
* log.js for easy logging in JavaScript
|
133
|
+
|
134
|
+
=== 0.0.14 2009-10-05
|
135
|
+
|
136
|
+
* while editing match was being done for hard coded value id. Now it looks for klass.primary_key
|
137
|
+
|
138
|
+
=== 0.0.13 2009-10-04
|
139
|
+
|
140
|
+
* fixed IE7 bug
|
141
|
+
|
142
|
+
=== 0.0.12 2009-10-04
|
143
|
+
|
144
|
+
* fixed bug regarding integer values not appearning in listing
|
145
|
+
* better indentation
|
146
|
+
|
147
|
+
=== 0.0.11 2009-10-01
|
148
|
+
|
149
|
+
* Major contribution in this release by Alex Rothenberg. http://github.com/alexrothenberg
|
150
|
+
* this plugin now treats each model as a restful resource.
|
151
|
+
* security fix and test for it
|
152
|
+
* commented out offending code for has_one relationship
|
153
|
+
* has_one and habtm relationships along with test would be taken up in next release
|
154
|
+
|
155
|
+
=== 0.0.11 2009-09-28
|
156
|
+
|
157
|
+
* renamed quick search to search
|
158
|
+
* using jQuery theme to make drop down boxes jazzier
|
159
|
+
* more tests
|
160
|
+
* moved some inline css to external css file
|
161
|
+
|
162
|
+
=== 0.0.10 2009-09-18
|
163
|
+
|
164
|
+
* fixed listing and has_many association info for namespaced model
|
165
|
+
|
166
|
+
=== 0.0.9 2009-09-18
|
167
|
+
|
168
|
+
* fixed security issue
|
169
|
+
|
170
|
+
=== 0.0.8 2009-09-18
|
171
|
+
|
172
|
+
* do not assume that primary key is 'id' . Respect the primary key set by model.
|
173
|
+
|
174
|
+
* test for alternate primary key
|
175
|
+
|
176
|
+
=== 0.0.7 2009-09-17
|
177
|
+
|
178
|
+
* fixed test for Vehicle::Car
|
179
|
+
|
180
|
+
=== 0.0.6 2009-09-09
|
181
|
+
|
182
|
+
* more tests for the plugin. Now 151 tests and 229 assertions
|
183
|
+
|
184
|
+
* support for name spaced models like Vehicle::Car and Vehicle::Engine
|
185
|
+
|
186
|
+
* fixed a bug related to advance search
|
187
|
+
|
188
|
+
* refactored JavaScript code for advance search
|
189
|
+
|
190
|
+
=== 0.0.5 2009-09-04
|
191
|
+
|
192
|
+
* tests for the plugin
|
193
|
+
|
194
|
+
* changed the way security configiruation is passed to the plugin
|
195
|
+
|
196
|
+
* users can configure number of records in a page. Default is 50
|
197
|
+
|
198
|
+
* fixed bug associated with advance search
|
199
|
+
|
200
|
+
* added link to report bug in footer
|
201
|
+
|
202
|
+
* fixed bug in date parsing
|
203
|
+
|
204
|
+
=== 0.0.4 2009-08-28
|
205
|
+
|
206
|
+
* storing serialized array in string causing problem in truncate method. more at
|
207
|
+
http://github.com/neerajdotname/admin_data/issues#issue/3.
|
208
|
+
|
209
|
+
=== 0.0.3 2009-08-10
|
210
|
+
|
211
|
+
* not requiring rubygems
|
212
|
+
* if will_paginate is missing then not raising exception
|
213
|
+
|
214
|
+
=== 0.0.2 2009-07-06
|
215
|
+
|
216
|
+
* ability to sort records
|
217
|
+
* better visual clue that search is in progress
|
218
|
+
|
219
|
+
=== 0.0.1 2009-05-01
|
220
|
+
|
221
|
+
* Initial release
|
data/README.textile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
h1. This plugin works with rails3. "More information is available here":http://neerajdotname.github.com/admin_data/#howtousethispluginwithrails3
|
2
|
+
|
3
|
+
h1. Live Demo
|
4
|
+
|
5
|
+
"http://demo.neeraj.name/admin_data":http://demo.neeraj.name/admin_data
|
6
|
+
|
7
|
+
h1. Documentation
|
8
|
+
|
9
|
+
"http://neerajdotname.github.com/admin_data":http://neerajdotname.github.com/admin_data
|
10
|
+
|
11
|
+
h1. JavaScript Unit tests live result
|
12
|
+
|
13
|
+
"http://demo.neeraj.name/admin_data/jstest":http://demo.neeraj.name/admin_data/jstest
|
14
|
+
|
15
|
+
h1. Source code
|
16
|
+
|
17
|
+
"http://github.com/neerajdotname/admin_data":http://github.com/neerajdotname/admin_data
|
18
|
+
|
19
|
+
h2. License
|
20
|
+
|
21
|
+
Dual licensed under the "MIT":http://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt and "GPL version 2":http://github.com/jquery/jquery/blob/master/GPL-LICENSE.txt licenses.
|
data/Rakefile
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/rdoctask'
|
4
|
+
|
5
|
+
desc 'Default: run unit tests.'
|
6
|
+
task :default => :test
|
7
|
+
|
8
|
+
desc 'Test admin_data plugin.'
|
9
|
+
Rake::TestTask.new(:test) do |t|
|
10
|
+
t.libs << 'lib' << 'test'
|
11
|
+
t.pattern = 'test/**/*_test.rb'
|
12
|
+
t.verbose = true
|
13
|
+
end
|
14
|
+
|
15
|
+
desc 'Generate documentation for admin_data plugin.'
|
16
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
17
|
+
rdoc.rdoc_dir = 'rdoc'
|
18
|
+
rdoc.title = 'AdminData'
|
19
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
20
|
+
rdoc.rdoc_files.include('README.textile')
|
21
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
22
|
+
end
|
23
|
+
|
24
|
+
begin
|
25
|
+
require 'jeweler'
|
26
|
+
require './lib/admin_data/version'
|
27
|
+
Jeweler::Tasks.new do |s|
|
28
|
+
s.name = "admin_data"
|
29
|
+
s.version = AdminData::VERSION
|
30
|
+
s.summary = s.description = "Manage database using browser"
|
31
|
+
s.email = "neerajdotname@gmail.com"
|
32
|
+
s.homepage = "http://github.com/neerajdotname/admin_data"
|
33
|
+
s.authors = ['Neeraj Singh']
|
34
|
+
s.files = FileList["[A-Z]*", "{app,config,lib,test}/**/*", 'init.rb']
|
35
|
+
|
36
|
+
s.add_dependency 'will_paginate'
|
37
|
+
|
38
|
+
s.add_development_dependency 'flexmock'
|
39
|
+
s.add_development_dependency 'shoulda'
|
40
|
+
s.add_development_dependency 'factory_girl'
|
41
|
+
s.add_development_dependency 'nokogiri'
|
42
|
+
end
|
43
|
+
Jeweler::GemcutterTasks.new
|
44
|
+
rescue LoadError => le
|
45
|
+
puts "Jeweler not available. Install it for jeweler-related tasks with: gem install jeweler: #{le.message}"
|
46
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
class AdminData::BaseController < ApplicationController
|
2
|
+
|
3
|
+
unloadable
|
4
|
+
|
5
|
+
helper_method :admin_data_is_allowed_to_update?
|
6
|
+
|
7
|
+
layout 'admin_data'
|
8
|
+
|
9
|
+
include AdminData::Chelper
|
10
|
+
|
11
|
+
before_filter :rails3_hack, :build_klasses, :build_drop_down_for_klasses, :check_page_parameter, :prepare_drop_down_klasses
|
12
|
+
|
13
|
+
attr_reader :klass
|
14
|
+
attr_reader :model
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def prepare_drop_down_klasses
|
19
|
+
k = params[:klass] || ''
|
20
|
+
@drop_down_url = "http://#{request.host_with_port}/admin_data/quick_search/#{CGI.escape(k)}"
|
21
|
+
end
|
22
|
+
|
23
|
+
def ensure_is_allowed_to_view
|
24
|
+
render :text => '<h2>not authorized</h2>', :status => :unauthorized unless admin_data_is_allowed_to_view?
|
25
|
+
end
|
26
|
+
|
27
|
+
def ensure_is_allowed_to_view_model
|
28
|
+
render :text => 'not authorized', :status => :unauthorized unless admin_data_is_allowed_to_view_model?
|
29
|
+
end
|
30
|
+
|
31
|
+
def ensure_is_allowed_to_update
|
32
|
+
render :text => 'not authorized', :status => :unauthorized unless admin_data_is_allowed_to_update?
|
33
|
+
end
|
34
|
+
|
35
|
+
def ensure_is_allowed_to_update_model
|
36
|
+
render :text => 'not authorized', :status => :unauthorized unless admin_data_is_allowed_to_update_model?
|
37
|
+
end
|
38
|
+
|
39
|
+
def ensure_is_allowed_to_view_feed
|
40
|
+
render :text => 'not authorized', :status => :unauthorized unless AdminData::Util.is_allowed_to_view_feed?(self)
|
41
|
+
end
|
42
|
+
|
43
|
+
def get_class_from_params
|
44
|
+
begin
|
45
|
+
@klass = AdminData::Util.camelize_constantize(params[:klass])
|
46
|
+
rescue TypeError => e # in case no params[:klass] is supplied
|
47
|
+
Rails.logger.debug 'no params[:klass] was supplied'
|
48
|
+
redirect_to admin_data_index_path
|
49
|
+
rescue NameError # in case wrong params[:klass] is supplied
|
50
|
+
Rails.logger.debug 'wrong params[:klass] was supplied'
|
51
|
+
redirect_to admin_data_index_path
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def build_klasses
|
56
|
+
unless defined? $admin_data_klasses
|
57
|
+
model_dir = File.join(Rails.root, 'app', 'models')
|
58
|
+
model_names = Dir.chdir(model_dir) { Dir["**/*.rb"] }
|
59
|
+
klasses = get_klass_names(model_names)
|
60
|
+
filtered_klasses = remove_klasses_without_table(klasses).sort_by {|r| r.name.underscore}
|
61
|
+
klasses_with_security_clearance = filtered_klasses.select do |klass_local|
|
62
|
+
@klass = klass_local
|
63
|
+
admin_data_is_allowed_to_view_model?
|
64
|
+
end
|
65
|
+
#TODO remove global constant. it is not thread safe
|
66
|
+
$admin_data_klasses = klasses_with_security_clearance
|
67
|
+
puts $admin_data_klasses.inspect
|
68
|
+
end
|
69
|
+
@klasses = $admin_data_klasses
|
70
|
+
end
|
71
|
+
|
72
|
+
def remove_klasses_without_table(klasses)
|
73
|
+
klasses.select { |k| k.ancestors.include?(ActiveRecord::Base) &&
|
74
|
+
k.connection.table_exists?(k.table_name) }
|
75
|
+
end
|
76
|
+
|
77
|
+
def get_klass_names(model_names)
|
78
|
+
model_names.inject([]) do |output, model_name|
|
79
|
+
klass_name = model_name.sub(/\.rb$/,'').camelize
|
80
|
+
begin
|
81
|
+
output << AdminData::Util.constantize_klass(klass_name)
|
82
|
+
rescue Exception => e
|
83
|
+
Rails.logger.debug e.message
|
84
|
+
end
|
85
|
+
output
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def build_drop_down_for_klasses
|
90
|
+
@drop_down_for_klasses = @klasses.inject([]) do |result,klass|
|
91
|
+
#TODO FIXME for some weird reason tests fail if I don't do this
|
92
|
+
if Rails.env.test?
|
93
|
+
result
|
94
|
+
else
|
95
|
+
result << [klass.name.underscore, admin_data_search_url(:klass => klass.name.underscore)]
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def check_page_parameter
|
101
|
+
# Got hoptoad error because of url like http://localhost:3000/admin_data/User/advance_search?page=http://201.134.249.164/intranet/on.txt?
|
102
|
+
if params[:page].blank? || (params[:page] =~ /\A\d+\z/)
|
103
|
+
# proceed
|
104
|
+
else
|
105
|
+
render :text => 'Invalid params[:page]', :status => :unprocessable_entity
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def rails3_hack
|
110
|
+
#require_dependency File.join(Rails.root, 'vendor', 'plugins', 'admin_data', 'lib', 'admin_data', 'settings.rb')
|
111
|
+
#AdminData::Config.initialize_defaults
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class AdminData::DiagnosticController < AdminData::BaseController
|
2
|
+
|
3
|
+
unloadable
|
4
|
+
|
5
|
+
before_filter :ensure_is_allowed_to_view
|
6
|
+
|
7
|
+
def index
|
8
|
+
@page_title = 'diagnostic'
|
9
|
+
respond_to {|format| format.html}
|
10
|
+
end
|
11
|
+
|
12
|
+
def missing_index
|
13
|
+
@page_title = 'missing index'
|
14
|
+
@indexes = {}
|
15
|
+
conn = ActiveRecord::Base.connection
|
16
|
+
conn.tables.each do |table|
|
17
|
+
indexed_columns = conn.indexes(table).map { |i| i.columns }.flatten
|
18
|
+
conn.columns(table).each do |column|
|
19
|
+
if column.name.match(/_id/) && !indexed_columns.include?(column.name)
|
20
|
+
@indexes[table] ||= []
|
21
|
+
@indexes[table] << column.name
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
respond_to {|format| format.html}
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class AdminData::FeedController < AdminData::BaseController
|
2
|
+
|
3
|
+
unloadable
|
4
|
+
|
5
|
+
before_filter :ensure_is_allowed_to_view_feed
|
6
|
+
|
7
|
+
def index
|
8
|
+
render :text => "usage: http://localhost:3000/admin_data/feed/user" and return if params[:klasss].blank?
|
9
|
+
|
10
|
+
begin
|
11
|
+
@klass = AdminData::Util.camelize_constantize(params[:klasss])
|
12
|
+
rescue NameError => e
|
13
|
+
render :text => "No constant was found with name #{params[:klasss]}" and return
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|