bravura_template_base 0.1.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 +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +60 -0
- data/Rakefile +8 -0
- data/app/assets/config/bravura_template_base_manifest.js +1 -0
- data/app/assets/stylesheets/bravura_template_base/application.css +15 -0
- data/app/controllers/bravura_template_base/application_controller.rb +4 -0
- data/app/helpers/bravura_template_base/application_helper.rb +4 -0
- data/app/jobs/bravura_template_base/application_job.rb +4 -0
- data/app/mailers/bravura_template_base/application_mailer.rb +6 -0
- data/app/models/bravura_template_base/application_record.rb +5 -0
- data/app/views/layouts/bravura_template_base/application.html.erb +15 -0
- data/config/routes.rb +2 -0
- data/lib/bravura_template_base/engine.rb +11 -0
- data/lib/bravura_template_base/version.rb +3 -0
- data/lib/bravura_template_base.rb +28 -0
- data/lib/tasks/bravura_template_base_tasks.rake +4 -0
- metadata +146 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 9ffbbc8ddafcfc768e0f7931aa3836319dd8b8766c10cc67f12221e95e338ded
|
4
|
+
data.tar.gz: 6d81f3eb5d57241104d7978682b0a61d94c8bd640565b97d067adb9070508c0b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: cbc602c95cf0e9d90aec2192bf197db082e56d5d39276d26ee2d9e140da42b40515ef8e629fad7ce83450c66ebb86080a867d8febfdc73841fe82050c5f4d48d
|
7
|
+
data.tar.gz: 7a7a833d6b477d24222c1c162803e26b6b1b8d7d7dfeeff666cea844f04dcd4b2a2b4d4bb0e950a0bc9d16bf8cc13eb88ecdafc7cd5e62544dd626761e649fb5
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright captproton
|
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,60 @@
|
|
1
|
+
# BravuraTemplateBase
|
2
|
+
What the `bravura_template_base` gem does:
|
3
|
+
|
4
|
+
1. Template Management:
|
5
|
+
- The gem provides a system for managing and loading different blog templates.
|
6
|
+
- It defines a set of available templates and a default template.
|
7
|
+
|
8
|
+
2. Dynamic Template Loading:
|
9
|
+
- The `load_template` method dynamically loads a template based on the account's settings.
|
10
|
+
- It handles the loading of template-specific assets (JavaScript and CSS) into the Rails asset pipeline.
|
11
|
+
|
12
|
+
3. Fallback Mechanism:
|
13
|
+
- If a specified template doesn't exist, it falls back to the default template.
|
14
|
+
- It logs a warning when falling back to the default template.
|
15
|
+
|
16
|
+
4. Error Handling:
|
17
|
+
- It raises an error if the default template is not found.
|
18
|
+
- It validates that the account object has the necessary attributes.
|
19
|
+
|
20
|
+
5. Flexible Configuration:
|
21
|
+
- The gem allows for different templates to be defined and used without modifying the main application code.
|
22
|
+
|
23
|
+
6. Asset Management:
|
24
|
+
- It adds template-specific asset paths to the Rails asset pipeline.
|
25
|
+
- It adds template-specific CSS to the precompile list.
|
26
|
+
|
27
|
+
In essence, this gem serves as a foundation for a multi-template blog system. It allows different accounts to use different blog templates, all managed through a central system. The main benefits are:
|
28
|
+
|
29
|
+
1. Modularity: Templates can be developed and managed separately from the main application.
|
30
|
+
2. Flexibility: Accounts can easily switch between different templates.
|
31
|
+
3. Consistency: It provides a standard way to handle different blog templates across the application.
|
32
|
+
4. Error Handling: It gracefully handles cases where a template might be missing or incorrectly specified.
|
33
|
+
|
34
|
+
The gem is designed to work within a larger Rails application, where it can be used to dynamically load and manage different blog templates based on account settings. It's a key component in creating a flexible, multi-tenant blogging platform where different users or accounts can have different looking blogs all running on the same underlying system.
|
35
|
+
|
36
|
+
## Usage
|
37
|
+
How to use my plugin.
|
38
|
+
|
39
|
+
## Installation
|
40
|
+
Add this line to your application's Gemfile:
|
41
|
+
|
42
|
+
```ruby
|
43
|
+
gem "bravura_template_base"
|
44
|
+
```
|
45
|
+
|
46
|
+
And then execute:
|
47
|
+
```bash
|
48
|
+
$ bundle
|
49
|
+
```
|
50
|
+
|
51
|
+
Or install it yourself as:
|
52
|
+
```bash
|
53
|
+
$ gem install bravura_template_base
|
54
|
+
```
|
55
|
+
|
56
|
+
## Contributing
|
57
|
+
Contribution directions go here.
|
58
|
+
|
59
|
+
## License
|
60
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
//= link_directory ../stylesheets/bravura_template_base .css
|
@@ -0,0 +1,15 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
+
* listed below.
|
4
|
+
*
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
6
|
+
* or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
|
7
|
+
*
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
|
9
|
+
* compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
|
10
|
+
* files in this directory. Styles in this file should be added after the last require_* statement.
|
11
|
+
* It is generally better to create a new file per style scope.
|
12
|
+
*
|
13
|
+
*= require_tree .
|
14
|
+
*= require_self
|
15
|
+
*/
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Bravura template base</title>
|
5
|
+
<%= csrf_meta_tags %>
|
6
|
+
<%= csp_meta_tag %>
|
7
|
+
|
8
|
+
<%= stylesheet_link_tag "bravura_template_base/application", media: "all" %>
|
9
|
+
</head>
|
10
|
+
<body>
|
11
|
+
|
12
|
+
<%= yield %>
|
13
|
+
|
14
|
+
</body>
|
15
|
+
</html>
|
data/config/routes.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
module BravuraTemplateBase
|
2
|
+
class Engine < ::Rails::Engine
|
3
|
+
isolate_namespace BravuraTemplateBase
|
4
|
+
|
5
|
+
initializer "bravura_template_base.assets" do |app|
|
6
|
+
BravuraTemplateBase::AVAILABLE_TEMPLATES.each do |template_name|
|
7
|
+
BravuraTemplateBase.load_template(app, template_name)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module BravuraTemplateBase
|
2
|
+
AVAILABLE_TEMPLATES = [ "bravura_template_normal", "bravura_template_product_updates" ]
|
3
|
+
DEFAULT_TEMPLATE = "bravura_template_normal"
|
4
|
+
|
5
|
+
def self.load_template(app, account)
|
6
|
+
raise ArgumentError, "account must respond to :settings and :id" unless account.respond_to?(:settings) && account.respond_to?(:id)
|
7
|
+
|
8
|
+
template_name = account.settings.design.blog_template_gem
|
9
|
+
|
10
|
+
begin
|
11
|
+
engine_class = "#{template_name.camelize}::Engine".constantize
|
12
|
+
app.config.assets.paths << engine_class.root.join("app/javascript")
|
13
|
+
app.config.assets.precompile << "#{template_name}/application.css"
|
14
|
+
rescue NameError => e
|
15
|
+
logger.warn "Template #{template_name} not found for account #{account.id}, falling back to default"
|
16
|
+
if template_name != DEFAULT_TEMPLATE
|
17
|
+
account.settings.design.blog_template_gem = DEFAULT_TEMPLATE
|
18
|
+
load_template(app, account)
|
19
|
+
else
|
20
|
+
raise "Default template #{DEFAULT_TEMPLATE} not found: #{e.message}"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.logger
|
26
|
+
Rails.logger || Logger.new(STDOUT)
|
27
|
+
end
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bravura_template_base
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Carl Tanner
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-07-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '7.0'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 7.0.0
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '7.0'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 7.0.0
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: rspec-rails
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '6.1'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 6.1.3
|
43
|
+
type: :development
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '6.1'
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 6.1.3
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: factory_bot_rails
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '6.4'
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 6.4.3
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '6.4'
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: 6.4.3
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: faker
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '3.4'
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 3.4.1
|
83
|
+
type: :development
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.4'
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 3.4.1
|
93
|
+
description: This gem is designed to work within a larger Rails application, where
|
94
|
+
it can be used to dynamically load and manage different blog templates based on
|
95
|
+
account settings. It's a key component in creating a flexible, multi-tenant blogging
|
96
|
+
platform where different users or accounts can have different looking blogs all
|
97
|
+
running on the same underlying system.
|
98
|
+
email:
|
99
|
+
- carl@wdwhub.net
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- MIT-LICENSE
|
105
|
+
- README.md
|
106
|
+
- Rakefile
|
107
|
+
- app/assets/config/bravura_template_base_manifest.js
|
108
|
+
- app/assets/stylesheets/bravura_template_base/application.css
|
109
|
+
- app/controllers/bravura_template_base/application_controller.rb
|
110
|
+
- app/helpers/bravura_template_base/application_helper.rb
|
111
|
+
- app/jobs/bravura_template_base/application_job.rb
|
112
|
+
- app/mailers/bravura_template_base/application_mailer.rb
|
113
|
+
- app/models/bravura_template_base/application_record.rb
|
114
|
+
- app/views/layouts/bravura_template_base/application.html.erb
|
115
|
+
- config/routes.rb
|
116
|
+
- lib/bravura_template_base.rb
|
117
|
+
- lib/bravura_template_base/engine.rb
|
118
|
+
- lib/bravura_template_base/version.rb
|
119
|
+
- lib/tasks/bravura_template_base_tasks.rake
|
120
|
+
homepage: https://github.com/yourusername/bravura_template_base
|
121
|
+
licenses:
|
122
|
+
- MIT
|
123
|
+
metadata:
|
124
|
+
homepage_uri: https://github.com/yourusername/bravura_template_base
|
125
|
+
source_code_uri: https://github.com/yourusername/bravura_template_base
|
126
|
+
changelog_uri: https://github.com/yourusername/bravura_template_base/blob/main/CHANGELOG.md
|
127
|
+
post_install_message:
|
128
|
+
rdoc_options: []
|
129
|
+
require_paths:
|
130
|
+
- lib
|
131
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - ">="
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
136
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0'
|
141
|
+
requirements: []
|
142
|
+
rubygems_version: 3.5.6
|
143
|
+
signing_key:
|
144
|
+
specification_version: 4
|
145
|
+
summary: Base gem for Bravura blog templates
|
146
|
+
test_files: []
|