tramway-sport_school 1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +28 -0
  4. data/Rakefile +36 -0
  5. data/app/assets/config/tramway_sport_school_manifest.js +2 -0
  6. data/app/assets/images/tramway/sport_school/1.jpg +0 -0
  7. data/app/assets/images/tramway/sport_school/11.jpg +0 -0
  8. data/app/assets/images/tramway/sport_school/12.jpg +0 -0
  9. data/app/assets/images/tramway/sport_school/13.jpg +0 -0
  10. data/app/assets/images/tramway/sport_school/6.jpg +0 -0
  11. data/app/assets/images/tramway/sport_school/7.jpg +0 -0
  12. data/app/assets/images/tramway/sport_school/9.jpg +0 -0
  13. data/app/assets/images/tramway/sport_school/admin.jpg +0 -0
  14. data/app/assets/images/tramway/sport_school/annvs73.jpg +0 -0
  15. data/app/assets/images/tramway/sport_school/default.jpg +0 -0
  16. data/app/assets/images/tramway/sport_school/director.jpg +0 -0
  17. data/app/assets/images/tramway/sport_school/gosuslugi.jpg +0 -0
  18. data/app/assets/images/tramway/sport_school/knnvs.png +0 -0
  19. data/app/assets/images/tramway/sport_school/min_sport.jpg +0 -0
  20. data/app/assets/images/tramway/sport_school/rule_sport.jpg +0 -0
  21. data/app/assets/javascripts/tramway/sport_school/application.js.coffee +13 -0
  22. data/app/assets/javascripts/tramway/sport_school/jquery.scrollTo.min.js +7 -0
  23. data/app/assets/javascripts/tramway/sport_school/tramway/sport_school/web/welcome.js +2 -0
  24. data/app/assets/javascripts/tramway/sport_school/web/welcome.js +2 -0
  25. data/app/assets/stylesheets/tramway/sport_school/application.css.sass +7 -0
  26. data/app/controllers/tramway/sport_school/application_controller.rb +13 -0
  27. data/app/controllers/tramway/sport_school/web/welcome_controller.rb +13 -0
  28. data/app/decorators/tramway/sport_school/cards/trainer_decorator.rb +11 -0
  29. data/app/decorators/tramway/sport_school/document_decorator.rb +24 -0
  30. data/app/decorators/tramway/sport_school/features/kind_sport_decorator.rb +11 -0
  31. data/app/decorators/tramway/sport_school/institution_decorator.rb +9 -0
  32. data/app/decorators/tramway/sport_school/kind_sport_decorator.rb +24 -0
  33. data/app/decorators/tramway/sport_school/organization_decorator.rb +24 -0
  34. data/app/decorators/tramway/sport_school/trainer_decorator.rb +38 -0
  35. data/app/forms/tramway/sport_school/document_form.rb +9 -0
  36. data/app/forms/tramway/sport_school/institution_form.rb +14 -0
  37. data/app/forms/tramway/sport_school/kind_sport_form.rb +9 -0
  38. data/app/forms/tramway/sport_school/organization_form.rb +13 -0
  39. data/app/forms/tramway/sport_school/trainer_form.rb +14 -0
  40. data/app/helpers/tramway/sport_school/application_helper.rb +7 -0
  41. data/app/helpers/tramway/sport_school/web/welcome_helper.rb +5 -0
  42. data/app/jobs/tramway/sport_school/application_job.rb +6 -0
  43. data/app/mailers/tramway/sport_school/application_mailer.rb +8 -0
  44. data/app/models/tramway/sport_school/document.rb +18 -0
  45. data/app/models/tramway/sport_school/institution.rb +5 -0
  46. data/app/models/tramway/sport_school/kind_sport.rb +21 -0
  47. data/app/models/tramway/sport_school/organization.rb +21 -0
  48. data/app/models/tramway/sport_school/trainer.rb +23 -0
  49. data/app/views/tramway/sport_school/web/welcome/_adults.html.haml +23 -0
  50. data/app/views/tramway/sport_school/web/welcome/_contacts.html.haml +3 -0
  51. data/app/views/tramway/sport_school/web/welcome/_directors_text.html.haml +18 -0
  52. data/app/views/tramway/sport_school/web/welcome/_footer.html.haml +28 -0
  53. data/app/views/tramway/sport_school/web/welcome/_header.html.haml +17 -0
  54. data/app/views/tramway/sport_school/web/welcome/_parents.html.haml +15 -0
  55. data/app/views/tramway/sport_school/web/welcome/_schoolkids.html.haml +3 -0
  56. data/app/views/tramway/sport_school/web/welcome/index.html.haml +43 -0
  57. data/app/views/tramway/sport_school/web/welcome/shared/_block.html.haml +5 -0
  58. data/app/views/tramway/sport_school/web/welcome/shared/_kind_sport.html.haml +4 -0
  59. data/app/views/tramway/sport_school/web/welcome/shared/_man_card.html.haml +5 -0
  60. data/config/initializers/simple_form.rb +22 -0
  61. data/config/initializers/simple_form_bootstrap.rb +133 -0
  62. data/config/initializers/tramway.rb +8 -0
  63. data/config/locales/models.yml +64 -0
  64. data/config/locales/ru.yml +16 -0
  65. data/config/locales/state_machines.yml +28 -0
  66. data/config/routes.rb +11 -0
  67. data/db/migrate/20180117222018_create_tramway_user_users.rb +18 -0
  68. data/db/migrate/20180117222019_create_tramway_sport_school_kind_sports.rb +9 -0
  69. data/db/migrate/20180117222020_add_state_to_tramway_sport_school_kind_sports.rb +6 -0
  70. data/db/migrate/20180117222021_add_image_to_tramway_sport_school_kind_sports.rb +5 -0
  71. data/db/migrate/20180117222022_create_tramway_sport_school_trainers.rb +13 -0
  72. data/db/migrate/20180117223438_install_audited.rb +30 -0
  73. data/lib/tasks/tramway/sport_school_tasks.rake +4 -0
  74. data/lib/tramway/sport_school.rb +8 -0
  75. data/lib/tramway/sport_school/engine.rb +9 -0
  76. data/lib/tramway/sport_school/generates/install_generator.rb +37 -0
  77. data/lib/tramway/sport_school/generates/templates/add_contacts_to_tramway_sport_school_institutions.rb +6 -0
  78. data/lib/tramway/sport_school/generates/templates/add_degree_to_tramway_sport_school_trainers.rb +6 -0
  79. data/lib/tramway/sport_school/generates/templates/add_description_to_tramway_sport_school_kind_sports.rb +5 -0
  80. data/lib/tramway/sport_school/generates/templates/add_description_to_tramway_sport_school_trainers.rb +5 -0
  81. data/lib/tramway/sport_school/generates/templates/add_image_to_tramway_sport_school_kind_sports.rb +5 -0
  82. data/lib/tramway/sport_school/generates/templates/add_ll_to_tramway_sport_school_institutions.rb +6 -0
  83. data/lib/tramway/sport_school/generates/templates/add_state_to_tramway_sport_school_kind_sports.rb +6 -0
  84. data/lib/tramway/sport_school/generates/templates/create_tramway_sport_school_documents.rb +12 -0
  85. data/lib/tramway/sport_school/generates/templates/create_tramway_sport_school_institutions.rb +12 -0
  86. data/lib/tramway/sport_school/generates/templates/create_tramway_sport_school_kind_sports.rb +9 -0
  87. data/lib/tramway/sport_school/generates/templates/create_tramway_sport_school_organizations.rb +15 -0
  88. data/lib/tramway/sport_school/generates/templates/create_tramway_sport_school_trainers.rb +13 -0
  89. data/lib/tramway/sport_school/version.rb +5 -0
  90. metadata +146 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0de897b3a211c18f8148a9a11fb9ae3c142e8e53569a33bda2a10cbc43a95a6f
4
+ data.tar.gz: 5cc54c55f4ac0f6bdf3027c4afe6948a8502c1820fe8bb0933f8f677a7a1091e
5
+ SHA512:
6
+ metadata.gz: 730ce4c0839af80f3e3b3f4811764c1c0233b8765d87e900316dcf0b3b31b1099eb8c0c830ac7d9a1d0c02299d739cf1d611ea0f88105bc27df71fea5845c2de
7
+ data.tar.gz: 21a5dd71ce1afbbd47bc9043a0fdbede7867d219bec115f769617793d94142d4cef08ae5b8edc14d7bcf4bee67d163586ce1d5c464f9d9dd7b788c074c4df86c
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2017 Pavel Kalashnikov
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,28 @@
1
+ # Tramway::SportSchool
2
+ Short description and motivation.
3
+
4
+ ## Usage
5
+ How to use my plugin.
6
+
7
+ ## Installation
8
+ Add this line to your application's Gemfile:
9
+
10
+ ```ruby
11
+ gem 'tramway-sport_school'
12
+ ```
13
+
14
+ And then execute:
15
+ ```bash
16
+ $ bundle
17
+ ```
18
+
19
+ Or install it yourself as:
20
+ ```bash
21
+ $ gem install tramway-sport_school
22
+ ```
23
+
24
+ ## Contributing
25
+ Contribution directions go here.
26
+
27
+ ## License
28
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,36 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'Tramway::SportSchool'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.md')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
18
+ load 'rails/tasks/engine.rake'
19
+
20
+
21
+ load 'rails/tasks/statistics.rake'
22
+
23
+
24
+
25
+ require 'bundler/gem_tasks'
26
+
27
+ require 'rake/testtask'
28
+
29
+ Rake::TestTask.new(:test) do |t|
30
+ t.libs << 'test'
31
+ t.pattern = 'test/**/*_test.rb'
32
+ t.verbose = false
33
+ end
34
+
35
+
36
+ task default: :test
@@ -0,0 +1,2 @@
1
+ //= link_directory ../javascripts/tramway/sport_school .js
2
+ //= link_directory ../stylesheets/tramway/sport_school .css
@@ -0,0 +1,13 @@
1
+ #= require jquery
2
+ #= require jquery_ujs
3
+ #= require tramway/sport_school/jquery.scrollTo.min
4
+ #= require_tree .
5
+
6
+ $.extend($.scrollTo.defaults, {
7
+ axis: 'y',
8
+ duration: 2000
9
+ })
10
+ $(document).ready ->
11
+ $('.scroll').click (e) ->
12
+ e.preventDefault()
13
+ $.scrollTo "##{$(@).data('id')}"
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Copyright (c) 2007-2015 Ariel Flesler - aflesler<a>gmail<d>com | http://flesler.blogspot.com
3
+ * Licensed under MIT
4
+ * @author Ariel Flesler
5
+ * @version 2.1.2
6
+ */
7
+ ;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case "number":case "string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e= h(e);break}e=l?$(e):$(e,q);case "object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&& "%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()}, set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});
@@ -0,0 +1,2 @@
1
+ // Place all the behaviors and hooks related to the matching controller here.
2
+ // All this logic will automatically be available in application.js.
@@ -0,0 +1,2 @@
1
+ // Place all the behaviors and hooks related to the matching controller here.
2
+ // All this logic will automatically be available in application.js.
@@ -0,0 +1,7 @@
1
+ /*
2
+ *= require_tree .
3
+ *= require_self
4
+ */
5
+
6
+ @import "bootstrap"
7
+ @import "tramway/admin/application"
@@ -0,0 +1,13 @@
1
+ module Tramway
2
+ module SportSchool
3
+ class ApplicationController < ActionController::Base
4
+ layout 'tramway/landing/application'
5
+ protect_from_forgery with: :exception
6
+ before_action :application
7
+
8
+ def application
9
+ @application = ::Tramway::Core.application.model_class.first
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ require_dependency "tramway/sport_school/application_controller"
2
+
3
+ class Tramway::SportSchool::Web::WelcomeController < ::Tramway::SportSchool::ApplicationController
4
+ def index
5
+ @kind_sports = ::Tramway::SportSchool::KindSport.active.published.map { |k| ::Tramway::SportSchool::Features::KindSportDecorator.new k }
6
+ @documents = ::Tramway::SportSchool::Document.active
7
+ @trainers = ::Tramway::SportSchool::Trainer.active.published.map { |t| ::Tramway::SportSchool::Cards::TrainerDecorator.new t }
8
+ @institution = ::Tramway::SportSchool::Institution.includes(:social_networks).first
9
+ @blocks = ::Tramway::Landing::Block.on_main_page
10
+ @organizations = ::Tramway::SportSchool::Organization.published
11
+ @news = ::Tramway::News::News.active.first(3).map { |t| ::Tramway::Landing::Cards::NewsDecorator.new t }
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ class Tramway::SportSchool::Cards::TrainerDecorator < ::Tramway::Landing::BlockTypes::CardsDecorator
2
+ def image
3
+ object.photo.card.url
4
+ end
5
+
6
+ def title
7
+ "#{object.last_name} #{object.first_name[0]}. #{object.patronymic[0]}."
8
+ end
9
+
10
+ delegate :description, to: :object
11
+ end
@@ -0,0 +1,24 @@
1
+ class Tramway::SportSchool::DocumentDecorator < ::Tramway::Core::ApplicationDecorator
2
+ class << self
3
+ def collections
4
+ [ :all ]
5
+ end
6
+
7
+ def list_attributes
8
+ [ :view_state ]
9
+ end
10
+ end
11
+
12
+ def view_state
13
+ object.human_view_state_name
14
+ end
15
+
16
+ def view_state_button_color(event)
17
+ case event
18
+ when :publish
19
+ :primary
20
+ when :hide
21
+ :secondary
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,11 @@
1
+ class Tramway::SportSchool::Features::KindSportDecorator < ::Tramway::Landing::BlockTypes::FeaturesDecorator
2
+ def image
3
+ object.image.small.url
4
+ end
5
+
6
+ delegate :title, to: :object
7
+
8
+ def text
9
+ object.description
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ class Tramway::SportSchool::InstitutionDecorator < ::Tramway::Core::ApplicationDecorator
2
+ class << self
3
+ def collections
4
+ [ :all ]
5
+ end
6
+ end
7
+
8
+ delegate :logo, to: :object
9
+ end
@@ -0,0 +1,24 @@
1
+ class Tramway::SportSchool::KindSportDecorator < ::Tramway::Core::ApplicationDecorator
2
+ class << self
3
+ def collections
4
+ [ :all, :published, :hidden ]
5
+ end
6
+
7
+ def list_attributes
8
+ [ :view_state ]
9
+ end
10
+ end
11
+
12
+ def view_state
13
+ object.human_view_state_name
14
+ end
15
+
16
+ def view_state_button_color(event)
17
+ case event
18
+ when :publish
19
+ :primary
20
+ when :hide
21
+ :secondary
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ class Tramway::SportSchool::OrganizationDecorator < ::Tramway::Core::ApplicationDecorator
2
+ class << self
3
+ def collections
4
+ [ :all ]
5
+ end
6
+
7
+ def list_attributes
8
+ [ :view_state ]
9
+ end
10
+ end
11
+
12
+ def view_state
13
+ object.human_view_state_name
14
+ end
15
+
16
+ def view_state_button_color(event)
17
+ case event
18
+ when :publish
19
+ :primary
20
+ when :hide
21
+ :secondary
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,38 @@
1
+ class Tramway::SportSchool::TrainerDecorator < ::Tramway::Core::ApplicationDecorator
2
+ class << self
3
+ def collections
4
+ [ :all ]
5
+ end
6
+
7
+ def list_attributes
8
+ [ :view_state ]
9
+ end
10
+ end
11
+
12
+ def full_name
13
+ "#{object.first_name} #{object.patronymic} #{object.last_name}"
14
+ end
15
+
16
+ def initial_short_name
17
+ "#{object.last_name} #{object.first_name[0]}. #{object.patronymic[0]}."
18
+ end
19
+
20
+ alias title full_name
21
+
22
+ delegate :photo, to: :object
23
+ delegate :degree, to: :object
24
+ delegate :description, to: :object
25
+
26
+ def view_state
27
+ object.human_view_state_name
28
+ end
29
+
30
+ def view_state_button_color(event)
31
+ case event
32
+ when :publish
33
+ :primary
34
+ when :hide
35
+ :secondary
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,9 @@
1
+ class Tramway::SportSchool::DocumentForm < ::Tramway::Core::ApplicationForm
2
+ properties :title, :file, :view_state
3
+
4
+ def initialize(object)
5
+ form_object = super object
6
+ form_properties title: :string, file: :file
7
+ form_object
8
+ end
9
+ end
@@ -0,0 +1,14 @@
1
+ class Tramway::SportSchool::InstitutionForm < ::Tramway::Core::ApplicationForm
2
+ properties :title, :tagline, :logo, :state, :phone, :address, :longtitude, :latitude
3
+
4
+ def initialize(object)
5
+ form_object = super object
6
+ form_properties title: :string,
7
+ tagline: :string,
8
+ phone: :string,
9
+ address: :string,
10
+ latitude: :string,
11
+ longtitude: :string
12
+ form_object
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ class Tramway::SportSchool::KindSportForm < ::Tramway::Core::ApplicationForm
2
+ properties :title, :view_state, :image, :description
3
+
4
+ def initialize(object)
5
+ form_object = super object
6
+ form_properties title: :string, image: :file, description: :default
7
+ form_object
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ class Tramway::SportSchool::OrganizationForm < ::Tramway::Core::ApplicationForm
2
+ properties :title, :description, :logo, :organization_type, :state, :view_state, :link
3
+
4
+ def initialize(object)
5
+ form_object = super object
6
+ form_properties title: :string,
7
+ description: :default,
8
+ organization_type: :default,
9
+ logo: :file,
10
+ link: :string
11
+ form_object
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ class Tramway::SportSchool::TrainerForm < ::Tramway::Core::ApplicationForm
2
+ properties :first_name, :last_name, :patronymic, :photo, :degree, :view_state, :description
3
+
4
+ def initialize(object)
5
+ form_object = super object
6
+ form_properties first_name: :string,
7
+ last_name: :string,
8
+ patronymic: :string,
9
+ photo: :file,
10
+ degree: :default,
11
+ description: :text
12
+ form_object
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ module Tramway
2
+ module SportSchool
3
+ module ApplicationHelper
4
+ include ::FontAwesome::Rails::IconHelper
5
+ end
6
+ end
7
+ end