mumukit-platform 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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