mumukit-platform 0.4.1 → 0.5.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4c72aaf0df3a750a42c8d51496d5673e14342499
4
- data.tar.gz: 6a0a2697279d86075ae027fc21da28c13afbc07d
3
+ metadata.gz: 10368247414796a853826e10a8362828f3ed4be1
4
+ data.tar.gz: ec28378596c2698e07bd6733b1ae1a4c83ec0641
5
5
  SHA512:
6
- metadata.gz: 03c86b6a1cbffb9d845999b1945c393e3a889e9785d87b4fdc9bedba1a423dd23ec948f79a6ac2fe2bad4afdd4c2684b33303975925c1fac17edd3cf8ea30a57
7
- data.tar.gz: be7bfd6146f45661f074816f5ed367c179c0c3e94a25559204fe0825008fdf7f19caae4c1244f7424d45a1a0876ce1f63307258754c180488aae6d49864b275e
6
+ metadata.gz: 4109f60e2317643854be646257eac93dcafe727e0ff02a90de14e96d9f1655dbd45b23aef90bc62df19456bfec66ca286ec8a7e1aa1f840e66796d4f8f0782eb
7
+ data.tar.gz: a2399e374a6d92a0796ae8752378b7255c85d7c637056da6797194564f2e5670b747da218e2125d486cca3a77191af9d3518ef36cea656b809cf1422a8e4a1dc
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2017 Mumuki Project, Franco Leonardo Bulgarelli
3
+ Copyright (c) 2017 Franco Leonardo Bulgarelli
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,20 @@
1
+ require 'active_model'
2
+
3
+ class Mumukit::Platform::Model
4
+ include ActiveModel::Model
5
+
6
+ def self.model_attr_accessor(*keys)
7
+ attr_accessor(*keys)
8
+ define_singleton_method :parse do |json|
9
+ new json.slice(*keys)
10
+ end
11
+ end
12
+
13
+ def self.dump(obj)
14
+ obj.to_json
15
+ end
16
+
17
+ def self.load(json)
18
+ new JSON.parse(json)
19
+ end
20
+ end
@@ -0,0 +1,74 @@
1
+
2
+ module Mumukit::Platform::Organization::Helpers
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ delegate :theme_stylesheet_url,
7
+ :extension_javascript_url, to: :theme
8
+
9
+ delegate :login_methods,
10
+ :login_methods=,
11
+ :login_settings,
12
+ :raise_hand_enabled?,
13
+ :raise_hand_enabled=,
14
+ :public?,
15
+ :public=,
16
+ :private?, to: :settings
17
+
18
+ delegate :logo_url,
19
+ :logo_url=,
20
+ :locale,
21
+ :locale=,
22
+ :locale_json,
23
+ :description,
24
+ :description=,
25
+ :community_link,
26
+ :terms_of_service,
27
+ :terms_of_service=,
28
+ :contact_email,
29
+ :contact_email=, to: :profile
30
+
31
+ end
32
+
33
+ def slug
34
+ Mumukit::Auth::Slug.join_s name
35
+ end
36
+
37
+ def central?
38
+ name == 'central'
39
+ end
40
+
41
+ def test?
42
+ name == 'test'
43
+ end
44
+
45
+ def switch!
46
+ Mumukit::Platform::Organization.switch! self
47
+ end
48
+
49
+ def to_s
50
+ name
51
+ end
52
+
53
+ def url_for(path)
54
+ Mumukit::Platform.application.organic_url_for(name, path)
55
+ end
56
+
57
+ def domain
58
+ Mumukit::Platform.application.organic_domain(name)
59
+ end
60
+
61
+ module ClassMethods
62
+ def current
63
+ Mumukit::Platform::Organization.current
64
+ end
65
+
66
+ def parse(json)
67
+ json
68
+ .slice(:name)
69
+ .merge(theme: Mumukit::Platform::Organization::Theme.parse(json))
70
+ .merge(settings: Mumukit::Platform::Organization::Settings.parse(json))
71
+ .merge(profile: Mumukit::Platform::Organization::Profile.parse(json))
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,21 @@
1
+ class Mumukit::Platform::Organization::Profile < Mumukit::Platform::Model
2
+ LOCALES = {
3
+ en: { facebook_code: :en_US, name: 'English' },
4
+ es: { facebook_code: :es_LA, name: 'Español' }
5
+ }.with_indifferent_access
6
+
7
+ model_attr_accessor :logo_url,
8
+ :locale,
9
+ :description,
10
+ :contact_email,
11
+ :terms_of_service,
12
+ :community_link
13
+
14
+ def locale_json
15
+ LOCALES[locale].to_json
16
+ end
17
+
18
+ def logo_url
19
+ @logo_url ||= 'https://mumuki.io/logo-alt-large.png'
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ class Mumukit::Platform::Organization::Settings < Mumukit::Platform::Model
2
+ model_attr_accessor :login_methods,
3
+ :raise_hand_enabled,
4
+ :public
5
+
6
+ def raise_hand_enabled?
7
+ !!raise_hand_enabled
8
+ end
9
+
10
+ def public?
11
+ !!public
12
+ end
13
+
14
+ def private?
15
+ !public?
16
+ end
17
+
18
+ def login_methods
19
+ @login_methods ||= ['user_pass']
20
+ end
21
+ end
@@ -0,0 +1,4 @@
1
+ class Mumukit::Platform::Organization::Theme < Mumukit::Platform::Model
2
+ model_attr_accessor :theme_stylesheet_url,
3
+ :extension_javascript_url
4
+ end
@@ -11,4 +11,9 @@ module Mumukit::Platform::Organization
11
11
  def self.current
12
12
  Thread.current[:organization] || raise('organization not selected')
13
13
  end
14
- end
14
+ end
15
+
16
+ require_relative './organization/settings'
17
+ require_relative './organization/profile'
18
+ require_relative './organization/theme'
19
+ require_relative './organization/helpers'
@@ -1,5 +1,5 @@
1
1
  module Mumukit
2
2
  module Platform
3
- VERSION = '0.4.1'
3
+ VERSION = '0.5.0'
4
4
  end
5
5
  end
@@ -30,6 +30,7 @@ module Mumukit::Platform
30
30
  end
31
31
 
32
32
  require_relative './platform/domain'
33
+ require_relative './platform/model'
33
34
  require_relative './platform/organization'
34
35
  require_relative './platform/organization_mapping'
35
36
  require_relative './platform/application'
@@ -45,4 +46,4 @@ module Mumukit::Platform
45
46
  extend Mumukit::Platform::WithOrganization
46
47
  extend Mumukit::Platform::WithOrganizationMapping
47
48
  extend Mumukit::Platform::WithWebFramework
48
- end
49
+ end
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.require_paths = ['lib']
23
23
 
24
24
  spec.add_dependency 'mumukit-core', '~> 1.0'
25
+ spec.add_dependency 'activemodel', '>= 4.0'
25
26
 
26
27
  spec.add_development_dependency 'bundler', '~> 1.14'
27
28
  spec.add_development_dependency 'rake', '~> 10.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mumukit-platform
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Franco Leonardo Bulgarelli
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-29 00:00:00.000000000 Z
11
+ date: 2017-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mumukit-core
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activemodel
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '4.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '4.0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -86,7 +100,12 @@ files:
86
100
  - lib/mumukit/platform.rb
87
101
  - lib/mumukit/platform/application.rb
88
102
  - lib/mumukit/platform/domain.rb
103
+ - lib/mumukit/platform/model.rb
89
104
  - lib/mumukit/platform/organization.rb
105
+ - lib/mumukit/platform/organization/helpers.rb
106
+ - lib/mumukit/platform/organization/profile.rb
107
+ - lib/mumukit/platform/organization/settings.rb
108
+ - lib/mumukit/platform/organization/theme.rb
90
109
  - lib/mumukit/platform/organization_mapping.rb
91
110
  - lib/mumukit/platform/uri.rb
92
111
  - lib/mumukit/platform/version.rb