weeler 0.0.3 → 0.0.4

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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.DS_Store +0 -0
  3. data/CHANGELOG.md +68 -0
  4. data/README.md +1 -0
  5. data/app/.DS_Store +0 -0
  6. data/app/assets/.DS_Store +0 -0
  7. data/app/assets/javascripts/.DS_Store +0 -0
  8. data/app/assets/javascripts/weeler/.DS_Store +0 -0
  9. data/app/assets/javascripts/weeler/app/index.js +0 -0
  10. data/app/assets/javascripts/weeler/init.js.coffee +8 -0
  11. data/app/assets/javascripts/weeler/vendor/.DS_Store +0 -0
  12. data/app/assets/javascripts/weeler/vendor/bootstrap.file-input.js +122 -0
  13. data/app/assets/javascripts/weeler/{bootstrap.js → vendor/bootstrap.js} +0 -0
  14. data/app/assets/javascripts/weeler/{bootstrap.rowlink.js → vendor/bootstrap.rowlink.js} +0 -0
  15. data/app/assets/javascripts/weeler/{bootstrap.switch.js → vendor/bootstrap.switch.js} +0 -0
  16. data/app/assets/javascripts/weeler/{jquery.pnotify.js → vendor/jquery.pnotify.js} +0 -0
  17. data/app/assets/stylesheets/.DS_Store +0 -0
  18. data/app/assets/stylesheets/weeler/.DS_Store +0 -0
  19. data/app/assets/stylesheets/weeler/app/index.css +0 -0
  20. data/app/assets/stylesheets/weeler/init.css.erb +5 -0
  21. data/app/assets/stylesheets/weeler/{style.css.scss.erb → style.css.scss} +11 -0
  22. data/app/assets/stylesheets/weeler/{bootstrap.css → vendor/bootstrap.css} +0 -0
  23. data/app/assets/stylesheets/weeler/{bootstrap.min.css → vendor/bootstrap.min.css} +0 -0
  24. data/app/assets/stylesheets/weeler/{bootstrap.rowlink.css → vendor/bootstrap.rowlink.css} +0 -0
  25. data/app/assets/stylesheets/weeler/{bootstrap.spinner.css → vendor/bootstrap.spinner.css} +0 -0
  26. data/app/assets/stylesheets/weeler/{bootstrap.switch.css → vendor/bootstrap.switch.css} +0 -0
  27. data/app/assets/stylesheets/weeler/{jquery.pnotify.css → vendor/jquery.pnotify.css} +0 -0
  28. data/app/controllers/weeler/translations_controller.rb +5 -78
  29. data/app/views/layouts/weeler/base.html.erb +27 -73
  30. data/app/views/weeler/shared/_flash.html.erb +17 -0
  31. data/app/views/weeler/shared/_footer.html.erb +3 -0
  32. data/app/views/weeler/shared/_header_navbar.html.erb +18 -0
  33. data/app/views/weeler/shared/_side_navbar.html.erb +14 -0
  34. data/app/views/weeler/translations/index.html.erb +2 -5
  35. data/lib/.DS_Store +0 -0
  36. data/lib/generators/weeler/install_generator.rb +15 -6
  37. data/lib/generators/weeler/templates/controllers/weeler/example_controller.rb.example +7 -0
  38. data/lib/generators/weeler/templates/views/weeler/example/index.html.erb +0 -0
  39. data/lib/i18n/backend/weeler/exporter/active_record.rb +37 -0
  40. data/lib/i18n/backend/weeler/exporter/active_record_relation.rb +38 -0
  41. data/lib/i18n/backend/weeler/exporter.rb +18 -0
  42. data/lib/i18n/backend/weeler/importer.rb +85 -0
  43. data/lib/i18n/backend/weeler.rb +4 -0
  44. data/lib/weeler/.DS_Store +0 -0
  45. data/lib/weeler/route_mapper.rb +1 -1
  46. data/lib/weeler/version.rb +1 -1
  47. data/rspec.html +176 -98
  48. data/spec/.DS_Store +0 -0
  49. data/spec/controllers/translations_controller_spec.rb +8 -3
  50. data/spec/dummy/db/test.sqlite3 +0 -0
  51. data/spec/dummy/log/test.log +49556 -0
  52. data/spec/fixtures/.DS_Store +0 -0
  53. data/spec/fixtures/test.xlsx +0 -0
  54. data/spec/spec_helper.rb +0 -1
  55. data/spec/weeler/.DS_Store +0 -0
  56. data/spec/weeler/i18n/.DS_Store +0 -0
  57. data/spec/weeler/i18n/backend/.DS_Store +0 -0
  58. data/spec/weeler/i18n/backend/weeler/exporter_spec.rb +72 -0
  59. data/spec/weeler/i18n/backend/weeler/importer_spec.rb +47 -0
  60. data/spec/weeler/{i18n_backend_weeler_spec.rb → i18n/backend/weeler_spec.rb} +9 -9
  61. data/spec/weeler/{i18n_humanize_missing_translations_spec.rb → i18n/humanize_missing_translations_spec.rb} +0 -0
  62. metadata +46 -21
  63. data/app/assets/javascripts/weeler/bootstrap-fileupload.js +0 -169
  64. data/app/assets/javascripts/weeler.js.coffee +0 -8
  65. data/app/assets/stylesheets/weeler/bootstrap-fileupload.css +0 -132
  66. data/app/assets/stylesheets/weeler.css +0 -9
Binary file
Binary file
data/spec/spec_helper.rb CHANGED
@@ -14,7 +14,6 @@ require 'shoulda-matchers'
14
14
  # require 'support/helpers'
15
15
  # require 'timecop'
16
16
 
17
-
18
17
  Rails.backtrace_cleaner.remove_silencers!
19
18
  # Load support files
20
19
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
Binary file
Binary file
Binary file
@@ -0,0 +1,72 @@
1
+ require "spec_helper"
2
+
3
+ describe I18n::Backend::Weeler::Exporter do
4
+
5
+ describe :as_xlsx_package do
6
+
7
+ context "all translations" do
8
+ before(:all) do
9
+ I18n::Backend::Weeler::Translation.delete_all
10
+ I18n.backend.store_translations(:en, foo: {one: 'test'})
11
+ I18n.backend.store_translations(:en, foo: {two: nil })
12
+ I18n.backend.store_translations(:lv, foo: {two: "some"})
13
+
14
+ @rows = I18n::Backend::Weeler::Translation.all.as_xlsx_package.workbook.worksheets[0].rows
15
+ end
16
+
17
+ it "should have 3 rows" do
18
+ expect(@rows.size).to be(3)
19
+ end
20
+
21
+ it "first row should be title" do
22
+ expect(@rows.first.cells[0].value).to eq("Key")
23
+ expect(@rows.first.cells[1].value).to eq("En")
24
+ expect(@rows.first.cells[2].value).to eq("Lv")
25
+ end
26
+
27
+ it "other row with one translation" do
28
+ expect(@rows[1].cells[0].value).to eq("foo.one")
29
+ expect(@rows[1].cells[1].value).to eq("test")
30
+ expect(@rows[1].cells[2].value).to eq("")
31
+ end
32
+
33
+ it "other row with two translation" do
34
+ expect(@rows[2].cells[0].value).to eq("foo.two")
35
+ expect(@rows[2].cells[1].value).to eq(nil)
36
+ expect(@rows[2].cells[2].value).to eq("some")
37
+ end
38
+ end
39
+
40
+ context "selected translations" do
41
+ before(:all) do
42
+ I18n::Backend::Weeler::Translation.delete_all
43
+ I18n.backend.store_translations(:en, foo: {one: 'test'})
44
+ I18n.backend.store_translations(:en, foo: {two: nil })
45
+ I18n.backend.store_translations(:lv, foo: {two: "some"})
46
+
47
+ translations = I18n::Backend::Weeler::Translation.where(key: "foo.one").load
48
+ translations.size
49
+ @other_rows = translations.as_xlsx_package.workbook.worksheets[0].rows
50
+
51
+ end
52
+
53
+ it "should have 2 rows" do
54
+ expect(@other_rows.size).to be(2)
55
+ end
56
+
57
+ it "first row should be title" do
58
+ expect(@other_rows.first.cells[0].value).to eq("Key")
59
+ expect(@other_rows.first.cells[1].value).to eq("En")
60
+ expect(@other_rows.first.cells[2].value).to eq("Lv")
61
+ end
62
+
63
+ it "other row with one translation" do
64
+ expect(@other_rows[1].cells[0].value).to eq("foo.one")
65
+ expect(@other_rows[1].cells[1].value).to eq("test")
66
+ expect(@other_rows[1].cells[2].value).to eq("")
67
+ end
68
+ end
69
+
70
+ end
71
+
72
+ end
@@ -0,0 +1,47 @@
1
+ require "spec_helper"
2
+
3
+ describe I18n::Backend::Weeler::Importer do
4
+
5
+ # This is file with 10 translations and 3 locales.
6
+ let(:file_path) {File.dirname(__FILE__) + '/../../../../fixtures/test.xlsx'}
7
+
8
+ describe :import do
9
+
10
+ context "empty db" do
11
+ before(:each) do
12
+ I18n::Backend::Weeler::Translation.delete_all
13
+ I18n::Backend::Weeler::Translation.import file_path
14
+ end
15
+
16
+ it "translation stores all translation in each locale" do
17
+ expect(I18n::Backend::Weeler::Translation.count).to eq(30)
18
+ end
19
+
20
+ it "returns value if value is in file" do
21
+ expect(I18n.t(:"welcome.title", :locale => :lv)).to eq("SveikI!")
22
+ end
23
+
24
+ it "returns nil if value is not file" do
25
+ expect(I18n.t(:"product.list.open", :locale => :en)).to eq("")
26
+ end
27
+
28
+ end
29
+
30
+
31
+ context "full db" do
32
+ before(:each) do
33
+ I18n::Backend::Weeler::Translation.delete_all
34
+ I18n.backend.store_translations(:en, welcome: {title: 'fooo'})
35
+ end
36
+
37
+ it "file import overrides value" do
38
+ expect(I18n.t(:"welcome.title", :locale => :en)).to eq("fooo")
39
+ I18n::Backend::Weeler::Translation.import file_path
40
+ expect(I18n.t(:"welcome.title", :locale => :en)).to eq("EN welcome")
41
+ end
42
+
43
+ end
44
+
45
+ end
46
+
47
+ end
@@ -36,21 +36,21 @@ describe I18n::Backend::Weeler do
36
36
 
37
37
  expect(true_t.value).to be(true)
38
38
  expect(false_t.value).to be(false)
39
-
40
39
  end
41
40
 
42
- #it "runs kernel if translation is_proc" do
43
- # proc = I18n::Backend::Weeler::Translation.create(:key => 'valid', :value => "p 'This ir proc!'", :locale => :en, :is_proc => true)
44
-
45
- # expect(proc.value).to receive(:warn).with /Message/
46
- #end
41
+ it "runs kernel if translation is_proc" do
42
+ proc = I18n::Backend::Weeler::Translation.create(:key => 'valid', :value => "p 'This ir proc!'", :locale => :en, :is_proc => true)
43
+ Kernel.should_receive(:p).with("This ir proc!")
44
+ proc.value
45
+ end
47
46
 
48
47
  end
49
48
 
50
49
  describe "#lookup" do
51
- #it "show warning" do
52
- # expect(I18n::Backend::Weeler::Translation.lookup("foo", "|")).to receive(:warn).with /Message/
53
- #end
50
+ it "show warning" do
51
+ I18n::Backend::Weeler::Translation.should_receive(:warn).with("[DEPRECATION] Giving a separator to Translation.lookup is deprecated. You can change the internal separator by overwriting FLATTEN_SEPARATOR.")
52
+ I18n::Backend::Weeler::Translation.lookup("foo", "|")
53
+ end
54
54
  end
55
55
 
56
56
  describe "groups" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weeler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artūrs Braučs
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-10-23 00:00:00.000000000 Z
12
+ date: 2013-10-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -274,6 +274,7 @@ files:
274
274
  - .gitignore
275
275
  - .rspec
276
276
  - .travis.yml
277
+ - CHANGELOG.md
277
278
  - Gemfile
278
279
  - LICENSE.txt
279
280
  - README.md
@@ -281,24 +282,26 @@ files:
281
282
  - app/.DS_Store
282
283
  - app/assets/.DS_Store
283
284
  - app/assets/javascripts/.DS_Store
284
- - app/assets/javascripts/weeler.js.coffee
285
285
  - app/assets/javascripts/weeler/.DS_Store
286
- - app/assets/javascripts/weeler/bootstrap-fileupload.js
287
- - app/assets/javascripts/weeler/bootstrap.js
288
- - app/assets/javascripts/weeler/bootstrap.rowlink.js
289
- - app/assets/javascripts/weeler/bootstrap.switch.js
290
- - app/assets/javascripts/weeler/jquery.pnotify.js
286
+ - app/assets/javascripts/weeler/app/index.js
287
+ - app/assets/javascripts/weeler/init.js.coffee
288
+ - app/assets/javascripts/weeler/vendor/.DS_Store
289
+ - app/assets/javascripts/weeler/vendor/bootstrap.file-input.js
290
+ - app/assets/javascripts/weeler/vendor/bootstrap.js
291
+ - app/assets/javascripts/weeler/vendor/bootstrap.rowlink.js
292
+ - app/assets/javascripts/weeler/vendor/bootstrap.switch.js
293
+ - app/assets/javascripts/weeler/vendor/jquery.pnotify.js
291
294
  - app/assets/stylesheets/.DS_Store
292
- - app/assets/stylesheets/weeler.css
293
295
  - app/assets/stylesheets/weeler/.DS_Store
294
- - app/assets/stylesheets/weeler/bootstrap-fileupload.css
295
- - app/assets/stylesheets/weeler/bootstrap.css
296
- - app/assets/stylesheets/weeler/bootstrap.min.css
297
- - app/assets/stylesheets/weeler/bootstrap.rowlink.css
298
- - app/assets/stylesheets/weeler/bootstrap.spinner.css
299
- - app/assets/stylesheets/weeler/bootstrap.switch.css
300
- - app/assets/stylesheets/weeler/jquery.pnotify.css
301
- - app/assets/stylesheets/weeler/style.css.scss.erb
296
+ - app/assets/stylesheets/weeler/app/index.css
297
+ - app/assets/stylesheets/weeler/init.css.erb
298
+ - app/assets/stylesheets/weeler/style.css.scss
299
+ - app/assets/stylesheets/weeler/vendor/bootstrap.css
300
+ - app/assets/stylesheets/weeler/vendor/bootstrap.min.css
301
+ - app/assets/stylesheets/weeler/vendor/bootstrap.rowlink.css
302
+ - app/assets/stylesheets/weeler/vendor/bootstrap.spinner.css
303
+ - app/assets/stylesheets/weeler/vendor/bootstrap.switch.css
304
+ - app/assets/stylesheets/weeler/vendor/jquery.pnotify.css
302
305
  - app/controllers/weeler/base_controller.rb
303
306
  - app/controllers/weeler/home_controller.rb
304
307
  - app/controllers/weeler/translations_controller.rb
@@ -312,6 +315,10 @@ files:
312
315
  - app/views/layouts/weeler/base.html.erb
313
316
  - app/views/weeler/home/about.html.erb
314
317
  - app/views/weeler/home/index.html.erb
318
+ - app/views/weeler/shared/_flash.html.erb
319
+ - app/views/weeler/shared/_footer.html.erb
320
+ - app/views/weeler/shared/_header_navbar.html.erb
321
+ - app/views/weeler/shared/_side_navbar.html.erb
315
322
  - app/views/weeler/translations/_form.html.erb
316
323
  - app/views/weeler/translations/_translation.html.erb
317
324
  - app/views/weeler/translations/edit.html.erb
@@ -321,11 +328,17 @@ files:
321
328
  - lib/.DS_Store
322
329
  - lib/generators/weeler/.DS_Store
323
330
  - lib/generators/weeler/install_generator.rb
331
+ - lib/generators/weeler/templates/controllers/weeler/example_controller.rb.example
324
332
  - lib/generators/weeler/templates/initializers/weeler.rb
325
333
  - lib/generators/weeler/templates/migrations/create_weeler_translations.rb
334
+ - lib/generators/weeler/templates/views/weeler/example/index.html.erb
326
335
  - lib/i18n/.DS_Store
327
336
  - lib/i18n/backend/.DS_Store
328
337
  - lib/i18n/backend/weeler.rb
338
+ - lib/i18n/backend/weeler/exporter.rb
339
+ - lib/i18n/backend/weeler/exporter/active_record.rb
340
+ - lib/i18n/backend/weeler/exporter/active_record_relation.rb
341
+ - lib/i18n/backend/weeler/importer.rb
329
342
  - lib/i18n/backend/weeler/store_procs.rb
330
343
  - lib/i18n/backend/weeler/translation.rb
331
344
  - lib/i18n/humanize_missing_translations.rb
@@ -387,11 +400,17 @@ files:
387
400
  - spec/dummy/public/500.html
388
401
  - spec/dummy/public/favicon.ico
389
402
  - spec/factories/translations.rb
403
+ - spec/fixtures/.DS_Store
404
+ - spec/fixtures/test.xlsx
390
405
  - spec/routing/routes_spec.rb
391
406
  - spec/spec_helper.rb
392
407
  - spec/weeler/.DS_Store
393
- - spec/weeler/i18n_backend_weeler_spec.rb
394
- - spec/weeler/i18n_humanize_missing_translations_spec.rb
408
+ - spec/weeler/i18n/.DS_Store
409
+ - spec/weeler/i18n/backend/.DS_Store
410
+ - spec/weeler/i18n/backend/weeler/exporter_spec.rb
411
+ - spec/weeler/i18n/backend/weeler/importer_spec.rb
412
+ - spec/weeler/i18n/backend/weeler_spec.rb
413
+ - spec/weeler/i18n/humanize_missing_translations_spec.rb
395
414
  - weeler.gemspec
396
415
  homepage: ''
397
416
  licenses:
@@ -469,8 +488,14 @@ test_files:
469
488
  - spec/dummy/public/500.html
470
489
  - spec/dummy/public/favicon.ico
471
490
  - spec/factories/translations.rb
491
+ - spec/fixtures/.DS_Store
492
+ - spec/fixtures/test.xlsx
472
493
  - spec/routing/routes_spec.rb
473
494
  - spec/spec_helper.rb
474
495
  - spec/weeler/.DS_Store
475
- - spec/weeler/i18n_backend_weeler_spec.rb
476
- - spec/weeler/i18n_humanize_missing_translations_spec.rb
496
+ - spec/weeler/i18n/.DS_Store
497
+ - spec/weeler/i18n/backend/.DS_Store
498
+ - spec/weeler/i18n/backend/weeler/exporter_spec.rb
499
+ - spec/weeler/i18n/backend/weeler/importer_spec.rb
500
+ - spec/weeler/i18n/backend/weeler_spec.rb
501
+ - spec/weeler/i18n/humanize_missing_translations_spec.rb
@@ -1,169 +0,0 @@
1
- /* ===========================================================
2
- * bootstrap-fileupload.js j2
3
- * http://jasny.github.com/bootstrap/javascript.html#fileupload
4
- * ===========================================================
5
- * Copyright 2012 Jasny BV, Netherlands.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the "License")
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- * ========================================================== */
19
-
20
- !function ($) {
21
-
22
- "use strict"; // jshint ;_
23
-
24
- /* FILEUPLOAD PUBLIC CLASS DEFINITION
25
- * ================================= */
26
-
27
- var Fileupload = function (element, options) {
28
- this.$element = $(element)
29
- this.type = this.$element.data('uploadtype') || (this.$element.find('.thumbnail').length > 0 ? "image" : "file")
30
-
31
- this.$input = this.$element.find(':file')
32
- if (this.$input.length === 0) return
33
-
34
- this.name = this.$input.attr('name') || options.name
35
-
36
- this.$hidden = this.$element.find('input[type=hidden][name="'+this.name+'"]')
37
- if (this.$hidden.length === 0) {
38
- this.$hidden = $('<input type="hidden" />')
39
- this.$element.prepend(this.$hidden)
40
- }
41
-
42
- this.$preview = this.$element.find('.fileupload-preview')
43
- var height = this.$preview.css('height')
44
- if (this.$preview.css('display') != 'inline' && height != '0px' && height != 'none') this.$preview.css('line-height', height)
45
-
46
- this.original = {
47
- 'exists': this.$element.hasClass('fileupload-exists'),
48
- 'preview': this.$preview.html(),
49
- 'hiddenVal': this.$hidden.val()
50
- }
51
-
52
- this.$remove = this.$element.find('[data-dismiss="fileupload"]')
53
-
54
- this.$element.find('[data-trigger="fileupload"]').on('click.fileupload', $.proxy(this.trigger, this))
55
-
56
- this.listen()
57
- }
58
-
59
- Fileupload.prototype = {
60
-
61
- listen: function() {
62
- this.$input.on('change.fileupload', $.proxy(this.change, this))
63
- $(this.$input[0].form).on('reset.fileupload', $.proxy(this.reset, this))
64
- if (this.$remove) this.$remove.on('click.fileupload', $.proxy(this.clear, this))
65
- },
66
-
67
- change: function(e, invoked) {
68
- if (invoked === 'clear') return
69
-
70
- var file = e.target.files !== undefined ? e.target.files[0] : (e.target.value ? { name: e.target.value.replace(/^.+\\/, '') } : null)
71
-
72
- if (!file) {
73
- this.clear()
74
- return
75
- }
76
-
77
- this.$hidden.val('')
78
- this.$hidden.attr('name', '')
79
- this.$input.attr('name', this.name)
80
-
81
- if (this.type === "image" && this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match('image.*') : file.name.match(/\.(gif|png|jpe?g)$/i)) && typeof FileReader !== "undefined") {
82
- var reader = new FileReader()
83
- var preview = this.$preview
84
- var element = this.$element
85
-
86
- reader.onload = function(e) {
87
- preview.html('<img src="' + e.target.result + '" ' + (preview.css('max-height') != 'none' ? 'style="max-height: ' + preview.css('max-height') + ';"' : '') + ' />')
88
- element.addClass('fileupload-exists').removeClass('fileupload-new')
89
- }
90
-
91
- reader.readAsDataURL(file)
92
- } else {
93
- this.$preview.text(file.name)
94
- this.$element.addClass('fileupload-exists').removeClass('fileupload-new')
95
- }
96
- },
97
-
98
- clear: function(e) {
99
- this.$hidden.val('')
100
- this.$hidden.attr('name', this.name)
101
- this.$input.attr('name', '')
102
-
103
- //ie8+ doesn't support changing the value of input with type=file so clone instead
104
- if (navigator.userAgent.match(/msie/i)){
105
- var inputClone = this.$input.clone(true);
106
- this.$input.after(inputClone);
107
- this.$input.remove();
108
- this.$input = inputClone;
109
- }else{
110
- this.$input.val('')
111
- }
112
-
113
- this.$preview.html('')
114
- this.$element.addClass('fileupload-new').removeClass('fileupload-exists')
115
-
116
- if (e) {
117
- this.$input.trigger('change', [ 'clear' ])
118
- e.preventDefault()
119
- }
120
- },
121
-
122
- reset: function(e) {
123
- this.clear()
124
-
125
- this.$hidden.val(this.original.hiddenVal)
126
- this.$preview.html(this.original.preview)
127
-
128
- if (this.original.exists) this.$element.addClass('fileupload-exists').removeClass('fileupload-new')
129
- else this.$element.addClass('fileupload-new').removeClass('fileupload-exists')
130
- },
131
-
132
- trigger: function(e) {
133
- this.$input.trigger('click')
134
- e.preventDefault()
135
- }
136
- }
137
-
138
-
139
- /* FILEUPLOAD PLUGIN DEFINITION
140
- * =========================== */
141
-
142
- $.fn.fileupload = function (options) {
143
- return this.each(function () {
144
- var $this = $(this)
145
- , data = $this.data('fileupload')
146
- if (!data) $this.data('fileupload', (data = new Fileupload(this, options)))
147
- if (typeof options == 'string') data[options]()
148
- })
149
- }
150
-
151
- $.fn.fileupload.Constructor = Fileupload
152
-
153
-
154
- /* FILEUPLOAD DATA-API
155
- * ================== */
156
-
157
- $(document).on('click.fileupload.data-api', '[data-provides="fileupload"]', function (e) {
158
- var $this = $(this)
159
- if ($this.data('fileupload')) return
160
- $this.fileupload($this.data())
161
-
162
- var $target = $(e.target).closest('[data-dismiss="fileupload"],[data-trigger="fileupload"]');
163
- if ($target.length > 0) {
164
- $target.trigger('click.fileupload')
165
- e.preventDefault()
166
- }
167
- })
168
-
169
- }(window.jQuery);
@@ -1,8 +0,0 @@
1
- #= require jquery
2
- #= require jquery_ujs
3
- #= require weeler/jquery.pnotify
4
- #= require weeler/bootstrap
5
- #= require weeler/bootstrap.rowlink
6
- #= require weeler/bootstrap.switch
7
- #= require weeler/bootstrap-fileupload
8
- #= require_self
@@ -1,132 +0,0 @@
1
- /*!
2
- * Bootstrap v2.3.1-j6
3
- *
4
- * Copyright 2012 Twitter, Inc
5
- * Licensed under the Apache License v2.0
6
- * http://www.apache.org/licenses/LICENSE-2.0
7
- *
8
- * Designed and built with all the love in the world by @mdo and @fat, extended by @ArnoldDaniels.
9
- */
10
- .clearfix {
11
- *zoom: 1;
12
- }
13
- .clearfix:before,
14
- .clearfix:after {
15
- display: table;
16
- content: "";
17
- line-height: 0;
18
- }
19
- .clearfix:after {
20
- clear: both;
21
- }
22
- .hide-text {
23
- font: 0/0 a;
24
- color: transparent;
25
- text-shadow: none;
26
- background-color: transparent;
27
- border: 0;
28
- }
29
- .input-block-level {
30
- display: block;
31
- width: 100%;
32
- min-height: 30px;
33
- -webkit-box-sizing: border-box;
34
- -moz-box-sizing: border-box;
35
- box-sizing: border-box;
36
- }
37
- .btn-file {
38
- overflow: hidden;
39
- position: relative;
40
- vertical-align: middle;
41
- }
42
- .btn-file > input {
43
- position: absolute;
44
- top: 0;
45
- right: 0;
46
- margin: 0;
47
- opacity: 0;
48
- filter: alpha(opacity=0);
49
- transform: translate(-300px, 0) scale(4);
50
- font-size: 23px;
51
- direction: ltr;
52
- cursor: pointer;
53
- }
54
- .fileupload {
55
- margin-bottom: 9px;
56
- }
57
- .fileupload .uneditable-input {
58
- display: inline-block;
59
- margin-bottom: 0px;
60
- vertical-align: middle;
61
- cursor: text;
62
- }
63
- .fileupload .thumbnail {
64
- overflow: hidden;
65
- display: inline-block;
66
- margin-bottom: 5px;
67
- vertical-align: middle;
68
- text-align: center;
69
- }
70
- .fileupload .thumbnail > img {
71
- display: inline-block;
72
- vertical-align: middle;
73
- max-height: 100%;
74
- }
75
- .fileupload .btn {
76
- vertical-align: middle;
77
- }
78
- .fileupload-exists .fileupload-new,
79
- .fileupload-new .fileupload-exists {
80
- display: none;
81
- }
82
- .fileupload-inline .fileupload-controls {
83
- display: inline;
84
- }
85
- .fileupload-new .input-append .btn-file {
86
- -webkit-border-radius: 0 3px 3px 0;
87
- -moz-border-radius: 0 3px 3px 0;
88
- border-radius: 0 3px 3px 0;
89
- }
90
- .thumbnail-borderless .thumbnail {
91
- border: none;
92
- padding: 0;
93
- -webkit-border-radius: 0;
94
- -moz-border-radius: 0;
95
- border-radius: 0;
96
- -webkit-box-shadow: none;
97
- -moz-box-shadow: none;
98
- box-shadow: none;
99
- }
100
- .fileupload-new.thumbnail-borderless .thumbnail {
101
- border: 1px solid #ddd;
102
- }
103
- .control-group.warning .fileupload .uneditable-input {
104
- color: #a47e3c;
105
- border-color: #a47e3c;
106
- }
107
- .control-group.warning .fileupload .fileupload-preview {
108
- color: #a47e3c;
109
- }
110
- .control-group.warning .fileupload .thumbnail {
111
- border-color: #a47e3c;
112
- }
113
- .control-group.error .fileupload .uneditable-input {
114
- color: #b94a48;
115
- border-color: #b94a48;
116
- }
117
- .control-group.error .fileupload .fileupload-preview {
118
- color: #b94a48;
119
- }
120
- .control-group.error .fileupload .thumbnail {
121
- border-color: #b94a48;
122
- }
123
- .control-group.success .fileupload .uneditable-input {
124
- color: #468847;
125
- border-color: #468847;
126
- }
127
- .control-group.success .fileupload .fileupload-preview {
128
- color: #468847;
129
- }
130
- .control-group.success .fileupload .thumbnail {
131
- border-color: #468847;
132
- }
@@ -1,9 +0,0 @@
1
- /*
2
- *= require weeler/jquery.pnotify
3
- *= require weeler/bootstrap
4
- *= require weeler/bootstrap.rowlink
5
- *= require weeler/bootstrap.switch
6
- *= require weeler/bootstrap.spinner
7
- *= require weeler/bootstrap-fileupload
8
- *= require weeler/style
9
- */