cmor_core 0.0.1.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +28 -0
- data/Rakefile +19 -0
- data/app/assets/config/cmor_core_manifest.js +2 -0
- data/app/assets/javascripts/cmor/core/application.js +13 -0
- data/app/assets/javascripts/cmor/core/application/keep.js +0 -0
- data/app/assets/javascripts/cmor/core/backend/application.js +13 -0
- data/app/assets/javascripts/cmor/core/backend/application/keep.js +0 -0
- data/app/assets/javascripts/cmor_core.js +1 -0
- data/app/assets/javascripts/cmor_core_backend.js +1 -0
- data/app/assets/stylesheets/cmor/core/application.css +4 -0
- data/app/assets/stylesheets/cmor/core/application/bootstrap-flex-row.css +35 -0
- data/app/assets/stylesheets/cmor/core/application/bottom-margin.css +10 -0
- data/app/assets/stylesheets/cmor_core.css +3 -0
- data/app/concerns/controller/store_remote_ip_concern.rb +15 -0
- data/app/controllers/cmor/core/application_controller.rb +7 -0
- data/app/controllers/cmor/core/home_controller.rb +10 -0
- data/app/helpers/cmor/core/application_helper.rb +17 -0
- data/app/jobs/cmor/core/application_job.rb +6 -0
- data/app/mailers/cmor/core/application_mailer.rb +8 -0
- data/app/models/cmor/core/application_record.rb +7 -0
- data/app/view_helpers/cmor/core/application_view_helper.rb +40 -0
- data/app/view_helpers/cmor/core/markup_view_helper.rb +12 -0
- data/app/views/cmor/core/backend/active_storage/attachments/_index_table.haml +7 -0
- data/app/views/cmor/core/backend/active_storage/blobs/_index_table.haml +15 -0
- data/app/views/layouts/cmor/core/application.html.erb +14 -0
- data/config/initializers/assets.rb +2 -0
- data/config/locales/de.yml +101 -0
- data/config/locales/en.yml +102 -0
- data/config/routes.rb +5 -0
- data/lib/cmor/core.rb +22 -0
- data/lib/cmor/core/configuration.rb +16 -0
- data/lib/cmor/core/engine.rb +14 -0
- data/lib/cmor/core/gemspec.rb +37 -0
- data/lib/cmor/core/spec_helpers/feature.rb +30 -0
- data/lib/cmor/core/version.rb +7 -0
- data/lib/cmor_core.rb +8 -0
- data/lib/generators/cmor/core/install/install_generator.rb +30 -0
- data/lib/generators/cmor/core/install/templates/frontend_controller.rb +2 -0
- data/lib/generators/cmor/core/install/templates/initializer.rb +7 -0
- data/lib/generators/cmor/core/install/templates/routes.source +3 -0
- data/lib/tasks/cmor_core_tasks.rake +4 -0
- data/spec/dummy/app/controllers/frontend_controller.rb +2 -0
- data/spec/dummy/config/initializers/cmor_core.rb +7 -0
- data/spec/dummy/config/initializers/content_security_policy.rb +25 -0
- data/spec/dummy/config/initializers/i18n.rb +2 -0
- data/spec/dummy/config/storage.yml +34 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/20190325174253_create_active_storage_tables.active_storage.rb +27 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +0 -0
- data/spec/dummy/tmp/development_secret.txt +1 -0
- data/spec/rails_helper.rb +62 -0
- data/spec/spec_helper.rb +96 -0
- data/spec/support/capybara.rb +1 -0
- data/spec/support/factory_bot.rb +5 -0
- data/spec/support/rao-shoulda_matchers.rb +5 -0
- data/spec/support/shoulda_matchers.rb +8 -0
- metadata +395 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c0b099887221df695c0f73987dcda78debae38451ad3a8c56492125cc75d357a
|
4
|
+
data.tar.gz: 8c6cb06277888ff0630901552016a68ad361b3eb9f9cad09fcf0ea264505c175
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: cd69219d45ccd5c594b45829b72b8a776aae5cb99f0fd3ea84ef23f3bbaf310f8086eab2a5ca435af5f18a6b8cb4cdf5b5df70a84294518ed7b1d9cccc8e66d2
|
7
|
+
data.tar.gz: 6b4e400634e5d8e4ff971ca9dc616aaff5f6e8e3406426a4e7c9c0c425afe98480c87aba74140a41e4b17322457053f2dd38ff9e8db685f3439b5a31503a72a2
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2017 Roberto Vasquez Angel
|
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
|
+
# Cmor::Core
|
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 'cmor_core'
|
12
|
+
```
|
13
|
+
|
14
|
+
And then execute:
|
15
|
+
```bash
|
16
|
+
$ bundle
|
17
|
+
```
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
```bash
|
21
|
+
$ gem install cmor_core
|
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,19 @@
|
|
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 = 'Cmor::Core'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
Bundler::GemHelper.install_tasks
|
18
|
+
|
19
|
+
require 'rails/dummy/tasks'
|
@@ -0,0 +1,13 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// compiled file. JavaScript code in this file should be added after the last require_* statement.
|
9
|
+
//
|
10
|
+
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
|
11
|
+
// about supported directives.
|
12
|
+
//
|
13
|
+
//= require_tree ./application
|
File without changes
|
@@ -0,0 +1,13 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// compiled file. JavaScript code in this file should be added after the last require_* statement.
|
9
|
+
//
|
10
|
+
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
|
11
|
+
// about supported directives.
|
12
|
+
//
|
13
|
+
//= require_tree ./application
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require ./cmor/core/application
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require ./cmor/core/backend/application
|
@@ -0,0 +1,35 @@
|
|
1
|
+
.row.flex-row {
|
2
|
+
display: flex;
|
3
|
+
flex-wrap: wrap;
|
4
|
+
}
|
5
|
+
.row.flex-row > [class*='col-'] {
|
6
|
+
display: flex;
|
7
|
+
flex-direction: column;
|
8
|
+
}
|
9
|
+
|
10
|
+
/*
|
11
|
+
* And with max cross-browser enabled.
|
12
|
+
* Nobody should ever write this by hand.
|
13
|
+
* Use a preprocesser with autoprefixing.
|
14
|
+
*/
|
15
|
+
.row.flex-row {
|
16
|
+
display: -webkit-box;
|
17
|
+
display: -webkit-flex;
|
18
|
+
display: -ms-flexbox;
|
19
|
+
display: flex;
|
20
|
+
-webkit-flex-wrap: wrap;
|
21
|
+
-ms-flex-wrap: wrap;
|
22
|
+
flex-wrap: wrap;
|
23
|
+
}
|
24
|
+
|
25
|
+
.row.flex-row > [class*='col-'] {
|
26
|
+
display: -webkit-box;
|
27
|
+
display: -webkit-flex;
|
28
|
+
display: -ms-flexbox;
|
29
|
+
display: flex;
|
30
|
+
-webkit-box-orient: vertical;
|
31
|
+
-webkit-box-direction: normal;
|
32
|
+
-webkit-flex-direction: column;
|
33
|
+
-ms-flex-direction: column;
|
34
|
+
flex-direction: column;
|
35
|
+
}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
.bottom-margin-1 { margin-bottom: 10px; }
|
2
|
+
.bottom-margin-2 { margin-bottom: 20px; }
|
3
|
+
.bottom-margin-3 { margin-bottom: 30px; }
|
4
|
+
.bottom-margin-4 { margin-bottom: 40px; }
|
5
|
+
.bottom-margin-5 { margin-bottom: 50px; }
|
6
|
+
.bottom-margin-6 { margin-bottom: 60px; }
|
7
|
+
.bottom-margin-7 { margin-bottom: 70px; }
|
8
|
+
.bottom-margin-8 { margin-bottom: 80px; }
|
9
|
+
.bottom-margin-9 { margin-bottom: 90px; }
|
10
|
+
.bottom-margin-10 { margin-bottom: 100px; }
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Cmor
|
2
|
+
module Core
|
3
|
+
module ApplicationHelper
|
4
|
+
def bootstrap_paginate(objects, options = {})
|
5
|
+
options.reverse_merge!(theme: 'twitter-bootstrap-3')
|
6
|
+
|
7
|
+
paginate(objects, options)
|
8
|
+
end
|
9
|
+
|
10
|
+
# def mu(object, method)
|
11
|
+
# handler = object.send(method)
|
12
|
+
# erb_string = ::ERB.new(object[method.to_sym].to_s, 0).result(binding)
|
13
|
+
# handler.class.new(erb_string).to_html.html_safe
|
14
|
+
# end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Cmor
|
2
|
+
module Core
|
3
|
+
# Usage:
|
4
|
+
#
|
5
|
+
# class ApplicationController < ActionController::Base
|
6
|
+
# view_helper Cmor::Core::ApplicationViewHelper, as: :core_helper
|
7
|
+
# end
|
8
|
+
#
|
9
|
+
class ApplicationViewHelper < Rao::ViewHelper::Base
|
10
|
+
module FlashConcern
|
11
|
+
extend ActiveSupport::Concern
|
12
|
+
|
13
|
+
included do
|
14
|
+
def map_message_type_to_context(message_type)
|
15
|
+
{ success: "success", error: "danger", alert: "warning", notice: "info" }[message_type.to_sym] || message_type.to_s
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# Usage:
|
20
|
+
#
|
21
|
+
# # app/views/layouts/application.html.erb
|
22
|
+
# <%= core_helper(self).render_flash %>
|
23
|
+
#
|
24
|
+
def render_flash
|
25
|
+
c.flash.each_with_object({}) do |(key, value), memo|
|
26
|
+
memo[map_message_type_to_context(key)] = value
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def map_message_type_to_context(message_type)
|
33
|
+
self.class.map_message_type_to_context(message_type)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
include FlashConcern
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Cmor
|
2
|
+
module Core
|
3
|
+
class MarkupViewHelper < Rao::ViewHelper::Base
|
4
|
+
def render(object, method)
|
5
|
+
handler = object.send(method)
|
6
|
+
return if handler.nil?
|
7
|
+
erb_string = ::ERB.new(object[method.to_sym].to_s, 0).result(binding)
|
8
|
+
handler.class.new(erb_string).to_html.html_safe
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
= table.column :name
|
2
|
+
= table.column :record
|
3
|
+
= table.column :blob do |resource|
|
4
|
+
- link_to(resource.blob.filename, [:active_storage, resource.blob])
|
5
|
+
= table.column :created_at
|
6
|
+
= table.column :additional_actions do |resource|
|
7
|
+
- link_to(t('.download'), main_app.url_for(resource.blob), class: 'btn btn-primary btn-xs')
|
@@ -0,0 +1,15 @@
|
|
1
|
+
= table.column :key
|
2
|
+
= table.column :filename do |resource|
|
3
|
+
- resource.filename.to_s
|
4
|
+
= table.column :content_type
|
5
|
+
= table.column :metadata do |resource|
|
6
|
+
- capture_haml do
|
7
|
+
%ul
|
8
|
+
- resource.metadata.each do |key, value|
|
9
|
+
%li= "#{key}: #{value}"
|
10
|
+
= table.column :byte_size do |resource|
|
11
|
+
- number_to_human_size(resource.byte_size)
|
12
|
+
= table.column :checksum
|
13
|
+
= table.column :created_at
|
14
|
+
= table.column :additional_actions do |resource|
|
15
|
+
- link_to(t('.download'), main_app.url_for(resource), class: 'btn btn-primary btn-xs')
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Cmor core</title>
|
5
|
+
<%= stylesheet_link_tag "cmor/core/application", media: "all" %>
|
6
|
+
<%= javascript_include_tag "cmor/core/application" %>
|
7
|
+
<%= csrf_meta_tags %>
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
|
11
|
+
<%= yield %>
|
12
|
+
|
13
|
+
</body>
|
14
|
+
</html>
|
@@ -0,0 +1,101 @@
|
|
1
|
+
de:
|
2
|
+
classes:
|
3
|
+
cmor/core/backend/engine: Core
|
4
|
+
routes:
|
5
|
+
cmor-core-backend-engine: core
|
6
|
+
or: oder
|
7
|
+
activerecord:
|
8
|
+
models:
|
9
|
+
acts_as_taggable_on/tag:
|
10
|
+
one: Tag
|
11
|
+
other: Tag
|
12
|
+
acts_as_taggable_on/tagging:
|
13
|
+
one: Tagging
|
14
|
+
other: Tagging
|
15
|
+
delayed/backend/active_record/job:
|
16
|
+
one: Hintergrundjob
|
17
|
+
other: Hintergrundjobs
|
18
|
+
i18n/backend/active_record/translation:
|
19
|
+
one: Übersetzung
|
20
|
+
other: Übersetzungen
|
21
|
+
delayed/job:
|
22
|
+
one: Hintergrundjob
|
23
|
+
other: Hintergrundjobs
|
24
|
+
active_storage/attachment:
|
25
|
+
one: Datei
|
26
|
+
other: Dateien
|
27
|
+
active_storage/blob:
|
28
|
+
one: Dateiinhalt
|
29
|
+
other: Dateiinhalte
|
30
|
+
attributes:
|
31
|
+
acts_as_taggable_on/tag:
|
32
|
+
id: ID
|
33
|
+
name: Name
|
34
|
+
taggings_count: Taggings
|
35
|
+
color: Farbe
|
36
|
+
acts_as_taggable_on/tagging:
|
37
|
+
id: ID
|
38
|
+
tag: Tag
|
39
|
+
tag_id: Tag
|
40
|
+
taggable: Getaggtes Objekt
|
41
|
+
taggable_id: Getaggtes Objekt
|
42
|
+
taggable_type: Getaggtes Objekt-Typ
|
43
|
+
tagger: Erstellt durch
|
44
|
+
tagger_id: Erstellt durch
|
45
|
+
tagger_type: Ersteller Objekt-Typ
|
46
|
+
context: Kontext
|
47
|
+
created_at: Erstellt am
|
48
|
+
delayed/backend/active_record/job:
|
49
|
+
id: ID
|
50
|
+
priority: Priorität
|
51
|
+
attempts: Versuche
|
52
|
+
handler: handler
|
53
|
+
last_error: Letzter Fehler
|
54
|
+
run_at: Gestartet am
|
55
|
+
locked_at: Gesperrt am
|
56
|
+
failed_at: Gescheitert am
|
57
|
+
locked_by: Gesperrt durch
|
58
|
+
queue: Warteschlange
|
59
|
+
created_at: Erstellt am
|
60
|
+
updated_at: Aktualisiert am
|
61
|
+
i18n/backend/active_record/translation:
|
62
|
+
id: ID
|
63
|
+
locale: Sprache
|
64
|
+
key: Schlüssel
|
65
|
+
value: Wert
|
66
|
+
interpolations: Interpolierungen
|
67
|
+
is_proc: Ist Prozedur?
|
68
|
+
created_at: Erstellt am
|
69
|
+
updated_at: Aktualisiert am
|
70
|
+
delayed/job:
|
71
|
+
priority: Priorität
|
72
|
+
attempts: Versuche
|
73
|
+
handler: handler
|
74
|
+
last_error: Letzter Fehler
|
75
|
+
run_at: Gestartet am
|
76
|
+
locked_at: Gesperrt am
|
77
|
+
failed_at: Gescheitert am
|
78
|
+
locked_by: Gesperrt durch
|
79
|
+
queue: Warteschlange
|
80
|
+
created_at: Erstellt am
|
81
|
+
updated_at: Aktualisiert am
|
82
|
+
active_storage/attachment:
|
83
|
+
id: ID
|
84
|
+
additional_actions: Weitere Aktionen
|
85
|
+
name: Name
|
86
|
+
record: Angehängt an
|
87
|
+
record_id: Angehängt an
|
88
|
+
record_type: Objekt-Typ
|
89
|
+
blob: Datei
|
90
|
+
blob_id: Datei
|
91
|
+
created_at: Erstellt am
|
92
|
+
active_storage/blob:
|
93
|
+
id: ID
|
94
|
+
additional_actions: Weitere Aktionen
|
95
|
+
key: Schlüssel
|
96
|
+
filename: Dateiname
|
97
|
+
content_type: Dateityp
|
98
|
+
metadata: Metadaten
|
99
|
+
byte_size: Dateigröße
|
100
|
+
checksum: Checksumme
|
101
|
+
created_at: Erstellt am
|