hyde_admin 0.0.1
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/.idea/.gitignore +8 -0
- data/.idea/hyde_admin.iml +19 -0
- data/.idea/misc.xml +4 -0
- data/.idea/modules.xml +8 -0
- data/bin/admin_views/admin_layout.html.erb +131 -0
- data/bin/admin_views/dashboard.erb +1 -0
- data/bin/admin_views/edit.erb +57 -0
- data/bin/admin_views/listing.erb +32 -0
- data/bin/hyde_admin.ru +143 -0
- data/bin/hyde_admin.sh +3 -0
- data/bin/hyde_admin.yml +8 -0
- data/bin/i18n/en.yml +27 -0
- data/bin/i18n/fr.yml +27 -0
- data/hyde_admin.gemspec +28 -0
- data/lib/hyde_admin/version.rb +3 -0
- metadata +62 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 86a33a78224ec1d89dfeeff5a08fe950a70239c86619da735ec6334077e09a70
|
|
4
|
+
data.tar.gz: 6e2e187ee97382f101be3cc47de763dd0d2b9d8afc5856d546d9c02b60a088c1
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 1591e20b85a070ea7d992233c0e63b1f92283392b1f713f1754be3fdc5669dc7cd2476404c4a266ac1ab2f3d9a5dfb805e23a1c5f63c5ab8b8374d17818f9318
|
|
7
|
+
data.tar.gz: 0f99763e3a04d7829c4768da18cfc0fab9b6d6a0ee80a2fb47faf0f08aecd214be58dd12c1897e44572adeed602b04d9c467d6fcbbd17509a2a51fd12059673b
|
data/.idea/.gitignore
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<module type="RUBY_MODULE" version="4">
|
|
3
|
+
<component name="ModuleRunConfigurationManager">
|
|
4
|
+
<shared />
|
|
5
|
+
</component>
|
|
6
|
+
<component name="NewModuleRootManager">
|
|
7
|
+
<content url="file://$MODULE_DIR$">
|
|
8
|
+
<sourceFolder url="file://$MODULE_DIR$/features" isTestSource="true" />
|
|
9
|
+
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
|
|
10
|
+
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
|
|
11
|
+
</content>
|
|
12
|
+
<orderEntry type="inheritedJdk" />
|
|
13
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
|
14
|
+
</component>
|
|
15
|
+
<component name="RModuleSettingsStorage">
|
|
16
|
+
<LOAD_PATH number="0" />
|
|
17
|
+
<I18N_FOLDERS number="1" string0="$MODULE_DIR$/i18n" />
|
|
18
|
+
</component>
|
|
19
|
+
</module>
|
data/.idea/misc.xml
ADDED
data/.idea/modules.xml
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="ProjectModuleManager">
|
|
4
|
+
<modules>
|
|
5
|
+
<module fileurl="file://$PROJECT_DIR$/.idea/hyde_admin.iml" filepath="$PROJECT_DIR$/.idea/hyde_admin.iml" />
|
|
6
|
+
</modules>
|
|
7
|
+
</component>
|
|
8
|
+
</project>
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Hyde for Jekyll</title>
|
|
6
|
+
|
|
7
|
+
<meta name="description" content="Hyde for Jekyll">
|
|
8
|
+
<meta name="author" content="Sylvain Claudel (https://blog.rivsc.ovh)">
|
|
9
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
10
|
+
|
|
11
|
+
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous">
|
|
12
|
+
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-/bQdsTh/da6pkI1MST/rWKFNjaCP5gBSY4sEBT38Q/9RBh9AH40zEOg7Hlq2THRZ" crossorigin="anonymous"></script>
|
|
13
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" integrity="sha512-1ycn6IcaQQ40/MKBW2W4Rhis/DbILU74C1vSrLJxCq57o941Ym01SwNsOMqvEBFlcgUa6xLiPY/NS5R+E6ztJQ==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
|
14
|
+
|
|
15
|
+
</head>
|
|
16
|
+
<body>
|
|
17
|
+
|
|
18
|
+
<div class="container-fluid">
|
|
19
|
+
<div class="row">
|
|
20
|
+
<nav id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block bg-light sidebar collapse">
|
|
21
|
+
<div class="position-sticky pt-3">
|
|
22
|
+
<ul class="nav flex-column">
|
|
23
|
+
<li class="nav-item">
|
|
24
|
+
<a class="nav-link active" aria-current="page" href="/">
|
|
25
|
+
<span data-feather="home"></span>
|
|
26
|
+
Site
|
|
27
|
+
</a>
|
|
28
|
+
</li>
|
|
29
|
+
<li class="nav-item">
|
|
30
|
+
<a class="nav-link active" aria-current="page" href="/dashboard">
|
|
31
|
+
<span data-feather="home"></span>
|
|
32
|
+
<%= t.dashboard %>
|
|
33
|
+
</a>
|
|
34
|
+
</li>
|
|
35
|
+
<li class="nav-item">
|
|
36
|
+
<a class="nav-link active" aria-current="page" href="/deploy">
|
|
37
|
+
<span data-feather="home"></span>
|
|
38
|
+
<%= t.deploy %>
|
|
39
|
+
</a>
|
|
40
|
+
</li>
|
|
41
|
+
<li class="nav-item">
|
|
42
|
+
<a class="nav-link active" aria-current="page" href="/rebuild">
|
|
43
|
+
<span data-feather="home"></span>
|
|
44
|
+
<%= t.rebuild %>
|
|
45
|
+
</a>
|
|
46
|
+
</li>
|
|
47
|
+
<li class="nav-item">
|
|
48
|
+
<a class="nav-link" href="/pages/index">
|
|
49
|
+
<span data-feather="file"></span>
|
|
50
|
+
<%= t.pages %>
|
|
51
|
+
</a>
|
|
52
|
+
</li>
|
|
53
|
+
<li class="nav-item">
|
|
54
|
+
<a class="nav-link" href="/drafts/index">
|
|
55
|
+
<span data-feather="shopping-cart"></span>
|
|
56
|
+
<%= t.drafts %>
|
|
57
|
+
</a>
|
|
58
|
+
</li>
|
|
59
|
+
<li class="nav-item">
|
|
60
|
+
<a class="nav-link" href="/posts/index">
|
|
61
|
+
<span data-feather="users"></span>
|
|
62
|
+
<%= t.posts %>
|
|
63
|
+
</a>
|
|
64
|
+
</li>
|
|
65
|
+
<li class="nav-item">
|
|
66
|
+
<a class="nav-link" href="/configuration">
|
|
67
|
+
<span data-feather="layers"></span>
|
|
68
|
+
<%= t.configuration %>
|
|
69
|
+
</a>
|
|
70
|
+
</li>
|
|
71
|
+
</ul>
|
|
72
|
+
|
|
73
|
+
<!--
|
|
74
|
+
<h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted">
|
|
75
|
+
<span>Saved reports</span>
|
|
76
|
+
<a class="link-secondary" href="#" aria-label="Add a new report">
|
|
77
|
+
<span data-feather="plus-circle"></span>
|
|
78
|
+
</a>
|
|
79
|
+
</h6>
|
|
80
|
+
<ul class="nav flex-column mb-2">
|
|
81
|
+
<li class="nav-item">
|
|
82
|
+
<a class="nav-link" href="#">
|
|
83
|
+
<span data-feather="file-text"></span>
|
|
84
|
+
Current month
|
|
85
|
+
</a>
|
|
86
|
+
</li>
|
|
87
|
+
<li class="nav-item">
|
|
88
|
+
<a class="nav-link" href="#">
|
|
89
|
+
<span data-feather="file-text"></span>
|
|
90
|
+
Last quarter
|
|
91
|
+
</a>
|
|
92
|
+
</li>
|
|
93
|
+
<li class="nav-item">
|
|
94
|
+
<a class="nav-link" href="#">
|
|
95
|
+
<span data-feather="file-text"></span>
|
|
96
|
+
Social engagement
|
|
97
|
+
</a>
|
|
98
|
+
</li>
|
|
99
|
+
<li class="nav-item">
|
|
100
|
+
<a class="nav-link" href="#">
|
|
101
|
+
<span data-feather="file-text"></span>
|
|
102
|
+
Year-end sale
|
|
103
|
+
</a>
|
|
104
|
+
</li>
|
|
105
|
+
</ul>
|
|
106
|
+
-->
|
|
107
|
+
</div>
|
|
108
|
+
</nav>
|
|
109
|
+
|
|
110
|
+
<main class="col-md-9 ms-sm-auto col-lg-10 px-md-4">
|
|
111
|
+
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
|
|
112
|
+
<h1 class="h2">Dashboard</h1>
|
|
113
|
+
<div class="btn-toolbar mb-2 mb-md-0">
|
|
114
|
+
<div class="btn-group me-2">
|
|
115
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">Share</button>
|
|
116
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">Export</button>
|
|
117
|
+
</div>
|
|
118
|
+
<button type="button" class="btn btn-sm btn-outline-secondary dropdown-toggle">
|
|
119
|
+
<span data-feather="calendar"></span>
|
|
120
|
+
This week
|
|
121
|
+
</button>
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
<%= yield %>
|
|
125
|
+
|
|
126
|
+
</main>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
|
|
130
|
+
</body>
|
|
131
|
+
</html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
dashboard
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<h2><%= t.send(@type_file) %></h2>
|
|
2
|
+
|
|
3
|
+
<form action="/<%= @type_file %>?file=<%= @file %>" method="post">
|
|
4
|
+
<div class="mb-3">
|
|
5
|
+
<label for="i-path" class="form-label"><%= t.path %></label>
|
|
6
|
+
<input type="text" class="form-control" value="<%= @file %>" name="new_file" id="i-path">
|
|
7
|
+
<!--<div id="emailHelp" class="form-text">Name of file</div>-->
|
|
8
|
+
</div>
|
|
9
|
+
<div class="mb-3">
|
|
10
|
+
<label for="i-title" class="form-label"><%= t.title %></label>
|
|
11
|
+
<input type="text" value="<%= @headers['title'] %>" class="form-control" name="title" id="i-title">
|
|
12
|
+
</div>
|
|
13
|
+
<div class="mb-3">
|
|
14
|
+
<label for="i-date" class="form-label"><%= t.date %></label>
|
|
15
|
+
<input type="text" value="<%= @headers['date'] %>" class="form-control" name="date" id="i-date">
|
|
16
|
+
</div>
|
|
17
|
+
<div class="mb-3">
|
|
18
|
+
<label for="i-tags" class="form-label"><%= t.tags %></label>
|
|
19
|
+
<input type="text" value="<%= @headers['tags'] %>" class="form-control" name="tags" id="i-tags">
|
|
20
|
+
</div>
|
|
21
|
+
<div class="mb-3 form-check">
|
|
22
|
+
<input type="checkbox" class="form-check-input" name="publish" id="i-publish">
|
|
23
|
+
<label class="form-check-label" for="i-publish"><%= t.publish %></label>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<div class="mb-3">
|
|
27
|
+
<label for="i-layout" class="form-label"><%= t.layout %></label>
|
|
28
|
+
<select class="form-select" aria-label="Choice layout" name="layout">
|
|
29
|
+
<% Dir.glob(File.join(@hyde_parameters['path_to_jekyll_src'], '_layouts', '*')).each do |f| %>
|
|
30
|
+
<% layout = File.basename(f, File.extname(f)) %>
|
|
31
|
+
<option <%= (@headers['layout'] == f ? 'selected' : '') %> value="<%= layout %>"><%= layout %></option>
|
|
32
|
+
<% end %>
|
|
33
|
+
</select>
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
<div class="mb-3">
|
|
37
|
+
<label for="i-content" class="form-label"><%= t.content %></label>
|
|
38
|
+
<textarea class="form-control" id="i-content" rows="3" name="content"><%#= %></textarea>
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<!--
|
|
42
|
+
<div class="form-check">
|
|
43
|
+
<input class="form-check-input" type="checkbox" value="" id="flexCheckDefault">
|
|
44
|
+
<label class="form-check-label" for="flexCheckDefault">
|
|
45
|
+
Default checkbox
|
|
46
|
+
</label>
|
|
47
|
+
</div>
|
|
48
|
+
<div class="form-check">
|
|
49
|
+
<input class="form-check-input" type="checkbox" value="" id="flexCheckChecked" checked>
|
|
50
|
+
<label class="form-check-label" for="flexCheckChecked">
|
|
51
|
+
Checked checkbox
|
|
52
|
+
</label>
|
|
53
|
+
</div>
|
|
54
|
+
-->
|
|
55
|
+
<button type="submit" class="btn btn-primary">Submit</button>
|
|
56
|
+
</form>
|
|
57
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<h2><%= t.send(@type_file) %></h2>
|
|
2
|
+
<div class="table-responsive">
|
|
3
|
+
<table class="table table-striped table-sm">
|
|
4
|
+
<tr>
|
|
5
|
+
<th>
|
|
6
|
+
<%= t.file %>
|
|
7
|
+
</th>
|
|
8
|
+
<th>
|
|
9
|
+
<%= t.edit %>
|
|
10
|
+
</th>
|
|
11
|
+
<th>
|
|
12
|
+
<%= t.delete %>
|
|
13
|
+
</th>
|
|
14
|
+
</tr>
|
|
15
|
+
<% @files.each do |f| %>
|
|
16
|
+
<tr>
|
|
17
|
+
<td>
|
|
18
|
+
<%= f %>
|
|
19
|
+
</td>
|
|
20
|
+
<td>
|
|
21
|
+
<a href="/<%= @type_file %>?file=<%= f %>" class="btn btn-default"><i class="fa fa-edit" title="<%= t.edit %>"></i></a>
|
|
22
|
+
</td>
|
|
23
|
+
<td>
|
|
24
|
+
<form method="post" action="/<%= @type_file %>/delete?file=<%= f %>" class="inline">
|
|
25
|
+
<button type="submit" class="btn btn-default"><i class="fa fa-trash" title="<%= t.delete %>"></i></button>
|
|
26
|
+
</form>
|
|
27
|
+
</td>
|
|
28
|
+
</tr>
|
|
29
|
+
<% end %>
|
|
30
|
+
</table>
|
|
31
|
+
</div>
|
|
32
|
+
|
data/bin/hyde_admin.ru
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# cat config.ru
|
|
2
|
+
# lancer avec rackup
|
|
3
|
+
require "roda"
|
|
4
|
+
require 'yaml'
|
|
5
|
+
|
|
6
|
+
class App < Roda
|
|
7
|
+
YML_FILE_NAME = "hyde_admin.yml"
|
|
8
|
+
|
|
9
|
+
plugin :render,
|
|
10
|
+
#escape: true, # Automatically escape output in erb templates using Erubi's escaping support
|
|
11
|
+
views: 'admin_views', # Default views directory
|
|
12
|
+
layout_opts: {template: 'admin_layout', engine: 'html.erb'}, # Default layout options
|
|
13
|
+
template_opts: {default_encoding: 'UTF-8'} # Default template options
|
|
14
|
+
|
|
15
|
+
plugin :i18n, translations: './i18n' # gem 'roda-i18n'
|
|
16
|
+
|
|
17
|
+
opts[:root] = Dir.pwd
|
|
18
|
+
|
|
19
|
+
plugin :public, root: "#{YAML.load(File.read(YML_FILE_NAME))['path_to_jekyll_src']}/_site" # permet de simuler le serveur jekyll
|
|
20
|
+
|
|
21
|
+
# TODO load option (default_layout, deploy_dest_address, deploy_dest_path, path_to_jekyll_src, rsync_fullpath)
|
|
22
|
+
# expliquer dans la doc le hyde.yml (voir une commande pour le prégénérer)
|
|
23
|
+
|
|
24
|
+
def initialize(param)
|
|
25
|
+
puts "============> #{Dir.pwd}"
|
|
26
|
+
yml_in_current_dir = File.join(Dir.pwd, YML_FILE_NAME)
|
|
27
|
+
yml_in_gem = File.expand_path(File.join(File.dirname(__FILE__), YML_FILE_NAME))
|
|
28
|
+
|
|
29
|
+
puts yml_in_current_dir
|
|
30
|
+
puts yml_in_gem
|
|
31
|
+
|
|
32
|
+
# Generate default YML for hyde_admin
|
|
33
|
+
if !File.exist?(yml_in_current_dir)
|
|
34
|
+
File.cp(yml_in_gem, yml_in_current_dir)
|
|
35
|
+
end
|
|
36
|
+
@hyde_parameters ||= YAML.load(File.read(yml_in_current_dir))
|
|
37
|
+
super(param)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
route do |r|
|
|
41
|
+
# GET serve static blog (chercher l'url index.html dans le navigateur
|
|
42
|
+
r.public
|
|
43
|
+
|
|
44
|
+
r.root do
|
|
45
|
+
r.redirect "/dashboard"
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
r.on "overview" do
|
|
49
|
+
r.redirect @hyde_parameters['site_index']
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# need to install jekyll (version bundlé avec le site
|
|
53
|
+
r.on "rebuild" do
|
|
54
|
+
puts @hyde_parameters['path_to_jekyll_src']
|
|
55
|
+
`cd #{@hyde_parameters['path_to_jekyll_src']} && jekyll b && sleep 10`
|
|
56
|
+
r.redirect "/dashboard"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
r.on "deploy" do
|
|
60
|
+
`#{@hyde_parameters['rsync_fullpath']} #{@hyde_parameters['path_to_jekyll_src']}/_site/ #{@hyde_parameters['deploy_dest_user']}@#{@hyde_parameters['deploy_dest_address']}:#{@hyde_parameters['deploy_dest_path']}`
|
|
61
|
+
r.redirect "/dashboard"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
r.on "configuration" do
|
|
65
|
+
File.open("hyde.yml","w+") do |f|
|
|
66
|
+
f.write(@hyde_parameters.to_yaml)
|
|
67
|
+
end
|
|
68
|
+
r.redirect "/dashboard"
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
r.on "dashboard" do
|
|
72
|
+
view("dashboard")
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# Posts/pages/drafts
|
|
76
|
+
r.on /posts|pages|drafts/ do
|
|
77
|
+
# Set variable for all routes in /hello branch
|
|
78
|
+
@type_file = r.matched_path.split('/').compact.select{ |elt| elt != '' }.first
|
|
79
|
+
|
|
80
|
+
# GET /posts/index request
|
|
81
|
+
# list all posts...
|
|
82
|
+
r.get "index" do
|
|
83
|
+
@files = Dir[File.join(@hyde_parameters['path_to_jekyll_src'], "_#{@type_file}", '*')].sort
|
|
84
|
+
view("listing")
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
r.is do
|
|
88
|
+
# GET /posts?file=truc request
|
|
89
|
+
# edit the truc post
|
|
90
|
+
r.get do
|
|
91
|
+
@file = r.params['file']
|
|
92
|
+
|
|
93
|
+
content_file = File.read(@file)
|
|
94
|
+
@headers = content_file.scan(/---(.*?)---/m).flatten.first.split("\n")
|
|
95
|
+
@headers = @headers.select{ |header| !header.empty? }.map{ |header| header.scan(/([a-zA-Z]*): (.*)/).flatten }
|
|
96
|
+
pp @headers
|
|
97
|
+
@headers = Hash[@headers]
|
|
98
|
+
|
|
99
|
+
view("edit")
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# POST /posts?file=truc request
|
|
103
|
+
# save the truc post
|
|
104
|
+
r.post do
|
|
105
|
+
@file = r.params['file']
|
|
106
|
+
@content = r.params['content']
|
|
107
|
+
@filename = r.params['filename']
|
|
108
|
+
@tags = r.params['tags']
|
|
109
|
+
@content = r.params['content']
|
|
110
|
+
@date = r.params['date']
|
|
111
|
+
@meta = r.params['meta']
|
|
112
|
+
@format = r.params['format']
|
|
113
|
+
@publish = r.params['publish']
|
|
114
|
+
@layout = r.params['layout']
|
|
115
|
+
|
|
116
|
+
@headers = ['---']
|
|
117
|
+
@headers << ['tags', @tags.join(',')].join(': ')
|
|
118
|
+
@headers << ['layout', @layout].join(': ')
|
|
119
|
+
@headers << ['date', @date.to_s].join(': ')
|
|
120
|
+
#@headers << ['meta', @tags.join(',')].join(': ')
|
|
121
|
+
@headers << ['---']
|
|
122
|
+
|
|
123
|
+
File.open(File.join(@hyde_parameters['path_to_jekyll_src'], "#{@file}.#{@format}"), "w+") do |f|
|
|
124
|
+
f.write(@headers.join("\n"))
|
|
125
|
+
f.write("")
|
|
126
|
+
f.write(content)
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
# POST /posts/delete?file=truc request
|
|
131
|
+
# save the truc post
|
|
132
|
+
r.post "delete" do
|
|
133
|
+
@file = r.params['file']
|
|
134
|
+
File.unlink(File.join(@hyde_parameters['path_to_jekyll_src'],@file))
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
# TODO faire un jekyll serve
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
run App.freeze.app
|
data/bin/hyde_admin.sh
ADDED
data/bin/hyde_admin.yml
ADDED
data/bin/i18n/en.yml
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
draft: draft
|
|
2
|
+
drafts: drafts
|
|
3
|
+
page: page
|
|
4
|
+
pages: pages
|
|
5
|
+
post: post
|
|
6
|
+
posts: posts
|
|
7
|
+
save: save
|
|
8
|
+
edit: edit
|
|
9
|
+
delete: delete
|
|
10
|
+
are_you_sure: are you sure
|
|
11
|
+
tag: tag
|
|
12
|
+
tags: tags
|
|
13
|
+
layout: layout
|
|
14
|
+
configuration: configuration
|
|
15
|
+
files: files
|
|
16
|
+
file: file
|
|
17
|
+
title: title
|
|
18
|
+
url: url
|
|
19
|
+
view: view
|
|
20
|
+
format: format
|
|
21
|
+
dashboard: dashboard
|
|
22
|
+
deploy: deploy
|
|
23
|
+
rebuild: rebuild
|
|
24
|
+
date: date
|
|
25
|
+
content: content
|
|
26
|
+
publish: publish
|
|
27
|
+
path: path
|
data/bin/i18n/fr.yml
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
draft: brouillon
|
|
2
|
+
drafts: brouillons
|
|
3
|
+
page: page
|
|
4
|
+
pages: pages
|
|
5
|
+
post: article
|
|
6
|
+
posts: articles
|
|
7
|
+
save: sauvegarder
|
|
8
|
+
edit: éditer
|
|
9
|
+
delete: supprimer
|
|
10
|
+
are_you_sure: êtes-vous sûr
|
|
11
|
+
tag: mot-clé
|
|
12
|
+
tags: mots-clés
|
|
13
|
+
layout: présentation
|
|
14
|
+
configuration: configuration
|
|
15
|
+
files: fichiers
|
|
16
|
+
file: fichier
|
|
17
|
+
title: titre
|
|
18
|
+
url: adresse
|
|
19
|
+
view: voir
|
|
20
|
+
format: format
|
|
21
|
+
dashboard: tableau de bord
|
|
22
|
+
deploy: déployer
|
|
23
|
+
rebuild: regénérer
|
|
24
|
+
date: date
|
|
25
|
+
content: contenu
|
|
26
|
+
publish: publier
|
|
27
|
+
path: chemin
|
data/hyde_admin.gemspec
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require_relative "lib/hyde_admin/version"
|
|
2
|
+
|
|
3
|
+
Gem::Specification.new do |s|
|
|
4
|
+
s.name = 'hyde_admin'
|
|
5
|
+
s.version = HydeAdmin::VERSION
|
|
6
|
+
s.summary = "Hyde for Jekyll site"
|
|
7
|
+
s.description = "A Jekyll admin interface"
|
|
8
|
+
s.authors = ["Sylvain Claudel"]
|
|
9
|
+
s.email = 'claudel.sylvain@gmail.com'
|
|
10
|
+
|
|
11
|
+
all_files = `git ls-files`.split("\n").reject{ |filepath| filepath.start_with? 'test/' }
|
|
12
|
+
s.files = all_files
|
|
13
|
+
|
|
14
|
+
s.executables = ['hyde_admin.sh']
|
|
15
|
+
s.bindir = "bin"
|
|
16
|
+
s.require_paths = ["lib"]
|
|
17
|
+
|
|
18
|
+
s.homepage = 'https://rubygems.org/gems/hyde_admin'
|
|
19
|
+
|
|
20
|
+
s.metadata = {
|
|
21
|
+
"source_code_uri" => "https://github.com/rivsc/hyde_admin",
|
|
22
|
+
"bug_tracker_uri" => "https://github.com/rivsc/hyde_admin/issues",
|
|
23
|
+
"changelog_uri" => "https://github.com/rivsc/hyde_admin/releases",
|
|
24
|
+
"homepage_uri" => s.homepage,
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
s.license = 'MIT'
|
|
28
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: hyde_admin
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Sylvain Claudel
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2021-09-23 00:00:00.000000000 Z
|
|
12
|
+
dependencies: []
|
|
13
|
+
description: A Jekyll admin interface
|
|
14
|
+
email: claudel.sylvain@gmail.com
|
|
15
|
+
executables:
|
|
16
|
+
- hyde_admin.sh
|
|
17
|
+
extensions: []
|
|
18
|
+
extra_rdoc_files: []
|
|
19
|
+
files:
|
|
20
|
+
- ".idea/.gitignore"
|
|
21
|
+
- ".idea/hyde_admin.iml"
|
|
22
|
+
- ".idea/misc.xml"
|
|
23
|
+
- ".idea/modules.xml"
|
|
24
|
+
- bin/admin_views/admin_layout.html.erb
|
|
25
|
+
- bin/admin_views/dashboard.erb
|
|
26
|
+
- bin/admin_views/edit.erb
|
|
27
|
+
- bin/admin_views/listing.erb
|
|
28
|
+
- bin/hyde_admin.ru
|
|
29
|
+
- bin/hyde_admin.sh
|
|
30
|
+
- bin/hyde_admin.yml
|
|
31
|
+
- bin/i18n/en.yml
|
|
32
|
+
- bin/i18n/fr.yml
|
|
33
|
+
- hyde_admin.gemspec
|
|
34
|
+
- lib/hyde_admin/version.rb
|
|
35
|
+
homepage: https://rubygems.org/gems/hyde_admin
|
|
36
|
+
licenses:
|
|
37
|
+
- MIT
|
|
38
|
+
metadata:
|
|
39
|
+
source_code_uri: https://github.com/rivsc/hyde_admin
|
|
40
|
+
bug_tracker_uri: https://github.com/rivsc/hyde_admin/issues
|
|
41
|
+
changelog_uri: https://github.com/rivsc/hyde_admin/releases
|
|
42
|
+
homepage_uri: https://rubygems.org/gems/hyde_admin
|
|
43
|
+
post_install_message:
|
|
44
|
+
rdoc_options: []
|
|
45
|
+
require_paths:
|
|
46
|
+
- lib
|
|
47
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
48
|
+
requirements:
|
|
49
|
+
- - ">="
|
|
50
|
+
- !ruby/object:Gem::Version
|
|
51
|
+
version: '0'
|
|
52
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
53
|
+
requirements:
|
|
54
|
+
- - ">="
|
|
55
|
+
- !ruby/object:Gem::Version
|
|
56
|
+
version: '0'
|
|
57
|
+
requirements: []
|
|
58
|
+
rubygems_version: 3.1.4
|
|
59
|
+
signing_key:
|
|
60
|
+
specification_version: 4
|
|
61
|
+
summary: Hyde for Jekyll site
|
|
62
|
+
test_files: []
|