hyde_admin 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitattributes +3 -0
- data/.idea/hyde_admin.iml +2 -0
- data/.idea/vcs.xml +6 -0
- data/CHANGELOG.md +11 -0
- data/README.md +23 -0
- data/TODO.md +1 -0
- data/bin/admin_views/admin_layout.html.erb +138 -109
- data/bin/admin_views/configuration.erb +13 -0
- data/bin/admin_views/dashboard.erb +1 -1
- data/bin/admin_views/editor_html.erb +24 -0
- data/bin/admin_views/editor_js.erb +120 -0
- data/bin/admin_views/files/edit.erb +30 -0
- data/bin/admin_views/files/listing.erb +111 -0
- data/bin/admin_views/posts/edit.erb +156 -0
- data/bin/admin_views/posts/listing.erb +34 -0
- data/bin/fslightbox/fslightbox.js +1 -0
- data/bin/hyde_admin +3 -0
- data/bin/hyde_admin.ru +243 -55
- data/bin/hyde_admin.yml +12 -5
- data/bin/hyde_assets/hyde_admin.css +18 -0
- data/bin/hyde_assets/hyde_admin.js +24 -0
- data/bin/i18n/en.yml +62 -1
- data/bin/i18n/fr.yml +62 -1
- data/bin/lib/codemirror.css +349 -0
- data/bin/lib/codemirror.js +9833 -0
- data/bin/mode/css/css.js +864 -0
- data/bin/mode/css/gss.html +104 -0
- data/bin/mode/css/gss_test.js +17 -0
- data/bin/mode/css/index.html +81 -0
- data/bin/mode/css/less.html +152 -0
- data/bin/mode/css/less_test.js +54 -0
- data/bin/mode/css/scss.html +158 -0
- data/bin/mode/css/scss_test.js +110 -0
- data/bin/mode/css/test.js +217 -0
- data/bin/mode/htmlembedded/htmlembedded.js +37 -0
- data/bin/mode/htmlembedded/index.html +60 -0
- data/bin/mode/htmlmixed/htmlmixed.js +153 -0
- data/bin/mode/htmlmixed/index.html +100 -0
- data/bin/mode/javascript/index.html +118 -0
- data/bin/mode/javascript/javascript.js +959 -0
- data/bin/mode/javascript/json-ld.html +72 -0
- data/bin/mode/javascript/test.js +521 -0
- data/bin/mode/javascript/typescript.html +62 -0
- data/bin/mode/markdown/index.html +418 -0
- data/bin/mode/markdown/markdown.js +886 -0
- data/bin/mode/markdown/test.js +1319 -0
- data/bin/mode/ruby/index.html +183 -0
- data/bin/mode/ruby/ruby.js +303 -0
- data/bin/mode/ruby/test.js +23 -0
- data/bin/mode/sass/index.html +68 -0
- data/bin/mode/sass/sass.js +459 -0
- data/bin/mode/sass/test.js +122 -0
- data/bin/mode/spreadsheet/index.html +42 -0
- data/bin/mode/spreadsheet/spreadsheet.js +112 -0
- data/bin/mode/xml/index.html +61 -0
- data/bin/mode/xml/test.js +51 -0
- data/bin/mode/xml/xml.js +417 -0
- data/bin/mode/yaml/index.html +80 -0
- data/bin/mode/yaml/yaml.js +120 -0
- data/bin/mode/yaml-frontmatter/index.html +121 -0
- data/bin/mode/yaml-frontmatter/yaml-frontmatter.js +72 -0
- data/hyde_admin.gemspec +6 -1
- data/lib/hyde_admin/version.rb +1 -1
- metadata +114 -7
- data/bin/admin_views/edit.erb +0 -57
- data/bin/admin_views/listing.erb +0 -32
- data/bin/hyde_admin.sh +0 -3
data/bin/hyde_admin.ru
CHANGED
@@ -2,86 +2,251 @@
|
|
2
2
|
# lancer avec rackup
|
3
3
|
require "roda"
|
4
4
|
require 'yaml'
|
5
|
+
require 'fileutils'
|
6
|
+
require 'i18n'
|
7
|
+
require 'date'
|
8
|
+
require_relative '../lib/hyde_admin/version'
|
9
|
+
|
10
|
+
# TODO détecter format nouveau post (pour codemirror)
|
5
11
|
|
6
12
|
class App < Roda
|
7
13
|
YML_FILE_NAME = "hyde_admin.yml"
|
8
14
|
|
9
15
|
plugin :render,
|
10
16
|
#escape: true, # Automatically escape output in erb templates using Erubi's escaping support
|
11
|
-
views: 'admin_views', # Default views directory
|
17
|
+
views: File.join(File.expand_path(File.dirname(__FILE__)),'admin_views'), # Default views directory
|
12
18
|
layout_opts: {template: 'admin_layout', engine: 'html.erb'}, # Default layout options
|
13
19
|
template_opts: {default_encoding: 'UTF-8'} # Default template options
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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)
|
20
|
+
plugin :i18n, translations: File.join(File.expand_path(File.dirname(__FILE__)), 'i18n') # gem 'roda-i18n'
|
21
|
+
opts[:root] = Dir.pwd
|
22
|
+
plugin :public, root: File.join(Dir.pwd, '_site') # simulate jekyll site
|
23
|
+
plugin :static, ['/mode', '/lib', '/fslightbox', '/hyde_assets'], :root => File.join(File.expand_path(File.dirname(__FILE__)))
|
24
|
+
plugin :http_auth
|
25
|
+
plugin :common_logger
|
23
26
|
|
24
27
|
def initialize(param)
|
25
|
-
puts "============> #{Dir.pwd}"
|
26
28
|
yml_in_current_dir = File.join(Dir.pwd, YML_FILE_NAME)
|
27
29
|
yml_in_gem = File.expand_path(File.join(File.dirname(__FILE__), YML_FILE_NAME))
|
28
30
|
|
29
|
-
puts yml_in_current_dir
|
30
|
-
puts yml_in_gem
|
31
|
-
|
32
31
|
# Generate default YML for hyde_admin
|
33
32
|
if !File.exist?(yml_in_current_dir)
|
34
|
-
|
33
|
+
FileUtils.cp(yml_in_gem, yml_in_current_dir)
|
35
34
|
end
|
36
35
|
@hyde_parameters ||= YAML.load(File.read(yml_in_current_dir))
|
37
36
|
super(param)
|
38
37
|
end
|
39
38
|
|
39
|
+
def self.transliterate_title_for_url(title)
|
40
|
+
I18n.config.available_locales = :en
|
41
|
+
I18n.transliterate(title).downcase.gsub(/[^a-zA-Z ]/,'').gsub(' ','-')
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.urlize(date_str, title, with_date = true)
|
45
|
+
url_str = ""
|
46
|
+
if with_date
|
47
|
+
url_str += "#{Date.parse(date_str).strftime('%Y-%m-%d')}-"
|
48
|
+
end
|
49
|
+
url_str += "#{self.transliterate_title_for_url(title)}"
|
50
|
+
url_str
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.extract_header_str(str)
|
54
|
+
str.scan(/---(.*?)---/m).flatten.first
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.extract_header(str)
|
58
|
+
headers = App.extract_header_str(str).to_s.split("\n")
|
59
|
+
headers = headers.select{ |header| !header.empty? }.map{ |header| header.scan(/([a-zA-Z0-9]*): (.*)/).flatten }.select{ |header| !header.empty? }
|
60
|
+
hsh_headers = {}
|
61
|
+
if !headers.flatten.empty?
|
62
|
+
#$stderr.puts "==============="
|
63
|
+
#$stderr.puts headers.inspect
|
64
|
+
hsh_headers = Hash[headers]
|
65
|
+
end
|
66
|
+
hsh_headers
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.remove_header(str)
|
70
|
+
str.gsub(/---(.*?)---/m, "")
|
71
|
+
end
|
72
|
+
|
73
|
+
FORMAT_DATE_FILENAME = '%Y-%m-%d'
|
74
|
+
FORMAT_DATE_INPUT_FILENAME = '%Y-%m-%d %H:%M:%S %z'
|
75
|
+
|
76
|
+
REGEXP_EXTRACT_DATE_FROM_FILENAME = /\d{4}-\d{2}-\d{2}-/
|
77
|
+
REGEXP_EXTRACT_DATE_TITLE_FROM_FILENAME = /(\d{4}-\d{2}-\d{2}-)(.*)(\.[^.]*)$/
|
78
|
+
|
40
79
|
route do |r|
|
41
|
-
|
80
|
+
@page = r.params['page']
|
81
|
+
|
82
|
+
if @hyde_parameters['hyde_admin_auth'].to_s == 'true'
|
83
|
+
http_auth {|u, p| [u, p] == [@hyde_parameters['hyde_admin_user'], @hyde_parameters['hyde_admin_password']] }
|
84
|
+
end
|
85
|
+
|
86
|
+
# GET serve jekyll site
|
42
87
|
r.public
|
43
88
|
|
89
|
+
r.i18n_set_locale(@hyde_parameters['hyde_admin_language']) do
|
90
|
+
|
44
91
|
r.root do
|
45
92
|
r.redirect "/dashboard"
|
46
93
|
end
|
47
94
|
|
95
|
+
# Redirect to jekyll index site
|
48
96
|
r.on "overview" do
|
49
97
|
r.redirect @hyde_parameters['site_index']
|
50
98
|
end
|
51
|
-
|
52
|
-
#
|
99
|
+
|
100
|
+
# Rebuild static files
|
53
101
|
r.on "rebuild" do
|
54
|
-
puts
|
55
|
-
`cd #{
|
102
|
+
puts Dir.pwd
|
103
|
+
`cd #{Dir.pwd} && jekyll b`
|
56
104
|
r.redirect "/dashboard"
|
57
105
|
end
|
58
106
|
|
59
107
|
r.on "deploy" do
|
60
|
-
`#{@hyde_parameters['rsync_fullpath']} #{
|
108
|
+
`#{@hyde_parameters['rsync_fullpath']} #{Dir.pwd}/_site/ #{@hyde_parameters['deploy_dest_user']}@#{@hyde_parameters['deploy_dest_address']}:#{@hyde_parameters['deploy_dest_path']}`
|
61
109
|
r.redirect "/dashboard"
|
62
110
|
end
|
63
111
|
|
64
|
-
r.
|
65
|
-
|
112
|
+
r.post "configuration" do
|
113
|
+
r.params.each_pair do |k,v|
|
114
|
+
@hyde_parameters[k] = v
|
115
|
+
end
|
116
|
+
File.open(File.join(Dir.pwd, YML_FILE_NAME),"w+") do |f|
|
66
117
|
f.write(@hyde_parameters.to_yaml)
|
67
118
|
end
|
68
|
-
r.redirect "/
|
119
|
+
r.redirect "/configuration"
|
120
|
+
end
|
121
|
+
|
122
|
+
r.get "configuration" do
|
123
|
+
view("configuration")
|
69
124
|
end
|
70
125
|
|
71
126
|
r.on "dashboard" do
|
72
127
|
view("dashboard")
|
73
128
|
end
|
74
129
|
|
130
|
+
r.on "files" do
|
131
|
+
@dir_path = r.params['dir_path'] || Dir.pwd
|
132
|
+
|
133
|
+
# List files
|
134
|
+
r.get "index" do
|
135
|
+
@files = Dir[File.join(@dir_path, '*')].sort(&:casecmp).reverse
|
136
|
+
@parent_dir = (@dir_path != Dir.pwd)
|
137
|
+
view("files/listing")
|
138
|
+
end
|
139
|
+
|
140
|
+
# Upload files
|
141
|
+
r.post "create" do
|
142
|
+
files = [r.params['files']].flatten # 1 or more files
|
143
|
+
files.each do |file|
|
144
|
+
File.open(File.join(@dir_path, file[:filename]), 'wb') do |f|
|
145
|
+
f.write(file[:tempfile].read)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
r.redirect "/files/index?dir_path=#{@dir_path}"
|
149
|
+
end
|
150
|
+
|
151
|
+
# Create directory
|
152
|
+
r.post "create_dir" do
|
153
|
+
Dir.mkdir(File.join(@dir_path, r.params['directory_name']))
|
154
|
+
r.redirect "/files/index?dir_path=#{@dir_path}"
|
155
|
+
end
|
156
|
+
|
157
|
+
# Create file
|
158
|
+
r.post "create_file" do
|
159
|
+
fullpath = File.join(@dir_path, r.params['file_name'])
|
160
|
+
File.open(fullpath, 'w+') do |f|
|
161
|
+
f.write("")
|
162
|
+
end
|
163
|
+
r.redirect "/files/edit?dir_path=#{@dir_path}&file=#{fullpath}"
|
164
|
+
end
|
165
|
+
|
166
|
+
# Edit text files
|
167
|
+
r.get "edit" do
|
168
|
+
@file = r.params['file']
|
169
|
+
@content = File.read(@file)
|
170
|
+
@header = App.extract_header_str(@content)
|
171
|
+
@content = App.remove_header(@content)
|
172
|
+
@has_header = (!@header.nil? && !@header.empty?)
|
173
|
+
@has_editor = ['.html','.md'].include?(File.extname(@file))
|
174
|
+
view("files/edit")
|
175
|
+
end
|
176
|
+
|
177
|
+
# Update file
|
178
|
+
r.post "update" do
|
179
|
+
@file = r.params['file']
|
180
|
+
@content = r.params['content']
|
181
|
+
@header = r.params['header']
|
182
|
+
File.open(@file,"w+") do |f|
|
183
|
+
if !@header.nil? and !@header.empty?
|
184
|
+
f.write("---")
|
185
|
+
f.write(@header)
|
186
|
+
f.write("---")
|
187
|
+
f.write("")
|
188
|
+
end
|
189
|
+
f.write(@content)
|
190
|
+
end
|
191
|
+
view("files/edit")
|
192
|
+
end
|
193
|
+
|
194
|
+
# Delete
|
195
|
+
r.post "delete" do
|
196
|
+
file = r.params['file']
|
197
|
+
File.unlink(file)
|
198
|
+
r.redirect "/files/index?dir_path=#{@dir_path}"
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
r.on "ajax" do
|
203
|
+
r.post "update_path_date" do
|
204
|
+
path = r.params['path']
|
205
|
+
date = Date.parse(r.params['date'])
|
206
|
+
new_path = path.gsub(REGEXP_EXTRACT_DATE_FROM_FILENAME, date.strftime("#{FORMAT_DATE_FILENAME}-"))
|
207
|
+
response.write(new_path)
|
208
|
+
end
|
209
|
+
r.post "update_path_title" do
|
210
|
+
path = r.params['path']
|
211
|
+
title = r.params['title']
|
212
|
+
I18n.config.available_locales = :en
|
213
|
+
new_path = path.gsub(REGEXP_EXTRACT_DATE_TITLE_FROM_FILENAME, "\\1#{App.transliterate_title_for_url(title)}\\3")
|
214
|
+
response.write(new_path)
|
215
|
+
end
|
216
|
+
r.post "update_date_today" do
|
217
|
+
date = Time.now.strftime(FORMAT_DATE_INPUT_FILENAME)
|
218
|
+
response.write(date)
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
75
222
|
# Posts/pages/drafts
|
76
223
|
r.on /posts|pages|drafts/ do
|
77
224
|
# Set variable for all routes in /hello branch
|
78
225
|
@type_file = r.matched_path.split('/').compact.select{ |elt| elt != '' }.first
|
79
226
|
|
227
|
+
# Mkdir _pages _drafts _posts if they not exist
|
228
|
+
FileUtils.mkdir_p(File.join(Dir.pwd, "_#{@type_file}"))
|
229
|
+
|
80
230
|
# GET /posts/index request
|
81
231
|
# list all posts...
|
82
232
|
r.get "index" do
|
83
|
-
@files = Dir[File.join(
|
84
|
-
view("listing")
|
233
|
+
@files = Dir[File.join(Dir.pwd, "_#{@type_file}", '*')].sort.reverse
|
234
|
+
view("posts/listing")
|
235
|
+
end
|
236
|
+
|
237
|
+
r.get "new" do
|
238
|
+
@file = ""
|
239
|
+
@headers = {}
|
240
|
+
@new_record = @file.empty?
|
241
|
+
view("posts/edit")
|
242
|
+
end
|
243
|
+
|
244
|
+
# POST /posts/delete?file=truc request
|
245
|
+
# save the truc post
|
246
|
+
r.post "delete" do
|
247
|
+
@file = r.params['file']
|
248
|
+
File.unlink(@file)
|
249
|
+
r.redirect "/#{@type_file}/index?dir_path=#{File.dirname(@file)}"
|
85
250
|
end
|
86
251
|
|
87
252
|
r.is do
|
@@ -91,52 +256,75 @@ class App < Roda
|
|
91
256
|
@file = r.params['file']
|
92
257
|
|
93
258
|
content_file = File.read(@file)
|
94
|
-
@headers =
|
95
|
-
@
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
259
|
+
@headers = App.extract_header(content_file)
|
260
|
+
@content = File.read(@file).gsub(/---(.*?)---/m, "")
|
261
|
+
|
262
|
+
# for page
|
263
|
+
if @headers.empty?
|
264
|
+
r.redirect "/files/edit?dir_path=#{r.params['dir_path']}&file=#{@file}"
|
265
|
+
else
|
266
|
+
@new_record = @file.empty?
|
267
|
+
view("posts/edit")
|
268
|
+
end
|
100
269
|
end
|
101
270
|
|
102
271
|
# POST /posts?file=truc request
|
103
272
|
# save the truc post
|
104
273
|
r.post do
|
105
|
-
@file = r.params
|
106
|
-
@content = r.params
|
107
|
-
@filename = r.params
|
108
|
-
@tags = r.params
|
109
|
-
@
|
110
|
-
@
|
111
|
-
@
|
112
|
-
@
|
113
|
-
@
|
114
|
-
@
|
274
|
+
@file = r.params.delete('file') # in a route (new record : empty ELSE old filename)
|
275
|
+
@content = r.params.delete('content')
|
276
|
+
@filename = r.params.delete('filename')
|
277
|
+
@tags = r.params.delete('tags')
|
278
|
+
@date = r.params.delete('date')
|
279
|
+
@meta = r.params.delete('meta')
|
280
|
+
@format = r.params.delete('format')
|
281
|
+
@publish = r.params.delete('publish')
|
282
|
+
@layout = r.params.delete('layout')
|
283
|
+
@title = r.params.delete('title')
|
284
|
+
@new_file = r.params.delete('new_file') # form (new record : empty ELSE new filename)
|
285
|
+
|
286
|
+
#$stderr.puts "---->"
|
287
|
+
|
288
|
+
if @new_file.nil? || @new_file.empty?
|
289
|
+
filename = App.urlize(@date, @title, (@type_file != 'pages'))
|
290
|
+
@new_file = File.join(Dir.pwd,"_#{@type_file}", "#{filename}.#{@format}")
|
291
|
+
end
|
115
292
|
|
116
293
|
@headers = ['---']
|
117
|
-
@headers << ['tags', @tags.join(',')].join(': ')
|
294
|
+
@headers << ['tags', @tags.split(',').map(&:strip).join(',')].join(': ')
|
118
295
|
@headers << ['layout', @layout].join(': ')
|
119
296
|
@headers << ['date', @date.to_s].join(': ')
|
120
|
-
|
297
|
+
@headers << ['title', @title.to_s].join(': ')
|
298
|
+
r.params.each do |k,v|
|
299
|
+
if k.start_with?('header')
|
300
|
+
@headers << [v.first, v.last.to_s].join(': ')
|
301
|
+
else
|
302
|
+
@headers << [k, v.to_s].join(': ')
|
303
|
+
end
|
304
|
+
end
|
121
305
|
@headers << ['---']
|
306
|
+
@headers << ['']
|
122
307
|
|
123
|
-
File.open(
|
308
|
+
File.open(@new_file, "w+") do |f|
|
124
309
|
f.write(@headers.join("\n"))
|
125
|
-
f.write(
|
126
|
-
f.write(content)
|
310
|
+
f.write(@content)
|
127
311
|
end
|
128
|
-
end
|
129
312
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
313
|
+
# Change path of file
|
314
|
+
if !@file.to_s.empty? && @new_file.to_s != @file.to_s
|
315
|
+
File.unlink(@file)
|
316
|
+
end
|
317
|
+
|
318
|
+
# publish : move draft to post
|
319
|
+
if @publish == 'publish' && @new_file.to_s.include?('_drafts')
|
320
|
+
FileUtils.mv(@new_file, @new_file.gsub('_drafts','_posts'))
|
321
|
+
end
|
322
|
+
|
323
|
+
r.redirect "/#{@type_file}/index?dir_path=#{File.dirname(@new_file)}"
|
135
324
|
end
|
136
325
|
end
|
137
326
|
end
|
138
|
-
|
139
|
-
# TODO faire un jekyll serve
|
327
|
+
end
|
140
328
|
end
|
141
329
|
end
|
142
330
|
|
data/bin/hyde_admin.yml
CHANGED
@@ -1,8 +1,15 @@
|
|
1
1
|
---
|
2
|
-
default_layout:
|
3
|
-
deploy_dest_user:
|
4
|
-
deploy_dest_address:
|
5
|
-
deploy_dest_path: "/
|
6
|
-
path_to_jekyll_src: "/Users/scl/blog/rivscblog-zolan"
|
2
|
+
default_layout: default
|
3
|
+
deploy_dest_user: root
|
4
|
+
deploy_dest_address: example.com
|
5
|
+
deploy_dest_path: "/absolute/remote/path/mysite"
|
7
6
|
rsync_fullpath: rsync
|
8
7
|
site_index: index.html
|
8
|
+
hyde_admin_language: en
|
9
|
+
hyde_admin_auth: false
|
10
|
+
hyde_admin_user: admin
|
11
|
+
hyde_admin_password: admin
|
12
|
+
default_format: html
|
13
|
+
display_layout: true
|
14
|
+
display_format: true
|
15
|
+
images_path: assets/images/
|
@@ -0,0 +1,18 @@
|
|
1
|
+
/* modal pictures */
|
2
|
+
.modal-body-image{
|
3
|
+
display: grid;
|
4
|
+
grid-template-columns: 1fr 1fr 1fr;
|
5
|
+
}
|
6
|
+
.modal-body-image .image-element{
|
7
|
+
width: 150px;
|
8
|
+
height: 150px;
|
9
|
+
}
|
10
|
+
.modal-body-image .image-element img{
|
11
|
+
width: 100%;
|
12
|
+
height: 100%;
|
13
|
+
object-fit: contain;
|
14
|
+
overflow: hidden;
|
15
|
+
}
|
16
|
+
.modal-body-image .image-element img:hover{
|
17
|
+
border:2px solid gray;
|
18
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
$(function(){
|
2
|
+
$(document).on('click','#btn-deploy,#btn-rebuild',function(elt){
|
3
|
+
let path = '';
|
4
|
+
|
5
|
+
if(elt.id === 'btn-deploy'){
|
6
|
+
path = '/deploy';
|
7
|
+
}else if(elt.id === 'btn-rebuild'){
|
8
|
+
path = '/rebuild';
|
9
|
+
}
|
10
|
+
|
11
|
+
$.post( path, {
|
12
|
+
beforeSend: function( xhr ) {
|
13
|
+
$('#waiting').show();
|
14
|
+
}
|
15
|
+
})
|
16
|
+
.done(function( data ) {
|
17
|
+
$('#waiting').hide();
|
18
|
+
return false;
|
19
|
+
});
|
20
|
+
});
|
21
|
+
$(document).on('click','.form-confirm',function(){
|
22
|
+
return window.confirm($(this).attr('data-confirm'));
|
23
|
+
});
|
24
|
+
});
|
data/bin/i18n/en.yml
CHANGED
@@ -5,11 +5,17 @@ pages: pages
|
|
5
5
|
post: post
|
6
6
|
posts: posts
|
7
7
|
save: save
|
8
|
+
new: new
|
8
9
|
edit: edit
|
9
10
|
delete: delete
|
10
|
-
|
11
|
+
create: create
|
12
|
+
upload: upload
|
13
|
+
header: header
|
14
|
+
add_header: add header
|
15
|
+
are_you_sure: are you sure ?
|
11
16
|
tag: tag
|
12
17
|
tags: tags
|
18
|
+
help_tags: set tags separate by comma
|
13
19
|
layout: layout
|
14
20
|
configuration: configuration
|
15
21
|
files: files
|
@@ -25,3 +31,58 @@ date: date
|
|
25
31
|
content: content
|
26
32
|
publish: publish
|
27
33
|
path: path
|
34
|
+
help_path: You can move the file by changing the path. Change the path can affect SEO or causing 404 errors. For a new file, this is automatically filled at submit.
|
35
|
+
overview: overview
|
36
|
+
submit: submit
|
37
|
+
default_layout: default layout
|
38
|
+
help_default_layout: default layout for jekyll posts/pages
|
39
|
+
deploy_dest_user: deploy remote user
|
40
|
+
help_deploy_dest_user: Ssh user for rsync
|
41
|
+
deploy_dest_address: deploy remote domain
|
42
|
+
help_deploy_dest_address: remote domain for ssh deployment
|
43
|
+
deploy_dest_path: deploy remote path
|
44
|
+
help_deploy_dest_path: remote path on disk for ssh deployment
|
45
|
+
rsync_fullpath: rsync path
|
46
|
+
help_rsync_fullpath: if rsync is not in PATH, othervise just let 'rsync'
|
47
|
+
site_index: index file name of site
|
48
|
+
help_site_index: link to open when we click on overview
|
49
|
+
hyde_admin_language: hyde admin language
|
50
|
+
help_hyde_admin_language: To change hyde admin language interface
|
51
|
+
set_date_today: set date at today
|
52
|
+
change_date_path: update date in path
|
53
|
+
change_title_path: update title in path
|
54
|
+
directory_input_placeholder: directory name to create
|
55
|
+
file_input_placeholder: file name to create
|
56
|
+
hyde_admin_auth: enable BasicAuth
|
57
|
+
help_hyde_admin_auth: enable BasicAuth
|
58
|
+
hyde_admin_user: BasicAuth user
|
59
|
+
help_hyde_admin_user: BasicAuth user
|
60
|
+
hyde_admin_password: BasicAuth password
|
61
|
+
help_hyde_admin_password: BasicAuth password
|
62
|
+
default_format: default format
|
63
|
+
help_default_format: default format
|
64
|
+
display_layout: display the layout input on edit form
|
65
|
+
help_display_layout: display the layout input on edit form
|
66
|
+
display_format: display the format input on edit form
|
67
|
+
help_display_format: display the format input on edit form
|
68
|
+
images_path: pictures path
|
69
|
+
help_images_path: relative local picture path
|
70
|
+
editor_undo: Undo
|
71
|
+
editor_redo: Redo
|
72
|
+
editor_file: Add picture
|
73
|
+
editor_list: List
|
74
|
+
editor_list_ol: Numbered List
|
75
|
+
editor_link: Add link
|
76
|
+
editor_quote: Quote
|
77
|
+
editor_title_h1: Title H1
|
78
|
+
editor_title_h2: Title H2
|
79
|
+
editor_title_h3: Title H3
|
80
|
+
editor_title_h4: Title H4
|
81
|
+
editor_title_h5: Title H5
|
82
|
+
editor_underline: Underline
|
83
|
+
editor_bold: Bold
|
84
|
+
editor_italic: Italic
|
85
|
+
editor_strikethrough: Strikethrough
|
86
|
+
default_alt_img: Alt text
|
87
|
+
default_title_img: Title text
|
88
|
+
parent_dir: dossier parent
|
data/bin/i18n/fr.yml
CHANGED
@@ -5,11 +5,17 @@ pages: pages
|
|
5
5
|
post: article
|
6
6
|
posts: articles
|
7
7
|
save: sauvegarder
|
8
|
+
new: nouveau
|
8
9
|
edit: éditer
|
9
10
|
delete: supprimer
|
10
|
-
|
11
|
+
create: créer
|
12
|
+
upload: uploader
|
13
|
+
header: Entête
|
14
|
+
are_you_sure: êtes-vous sûr ?
|
15
|
+
add_header: ajouter un entête
|
11
16
|
tag: mot-clé
|
12
17
|
tags: mots-clés
|
18
|
+
help_tags: Mettez les tags séparés par des virgules
|
13
19
|
layout: présentation
|
14
20
|
configuration: configuration
|
15
21
|
files: fichiers
|
@@ -25,3 +31,58 @@ date: date
|
|
25
31
|
content: contenu
|
26
32
|
publish: publier
|
27
33
|
path: chemin
|
34
|
+
help_path: Vous pouvez déplacer le fichier en changeant le chemin. Changer le chemin peut affecter le SEO et provoquer des erreurs 404. Pour un nouveau fichier, c'est automatiquement remplit à la sousmission du formulaire.
|
35
|
+
overview: aperçu
|
36
|
+
submit: valider
|
37
|
+
default_layout: présentation par défaut
|
38
|
+
help_default_layout: présentation par défaut pour les posts et pages
|
39
|
+
deploy_dest_user: Utilisateur pour déploiement
|
40
|
+
help_deploy_dest_user: Utilisateur pour déploiement par ssh
|
41
|
+
deploy_dest_address: Adresse pour déploiement
|
42
|
+
help_deploy_dest_address: Domaine ou adresse IP pour déploiement à travers ssh
|
43
|
+
deploy_dest_path: chemin distant pour déploiement
|
44
|
+
help_deploy_dest_path: chemin distant pour déploiement du site
|
45
|
+
rsync_fullpath: chemin rsync
|
46
|
+
help_rsync_fullpath: si rsync n'est pas dans le PATH, sinon laissez 'rsync'
|
47
|
+
site_index: nom du fichier index pour le site
|
48
|
+
help_site_index: Lien pour le lien aperçu, pensez à l'extention si nécessaire
|
49
|
+
hyde_admin_language: hyde admin langue
|
50
|
+
help_hyde_admin_language: Pour changer la langue d'interface de hyde admin
|
51
|
+
set_date_today: mets la date du jour
|
52
|
+
change_date_path: mets à jour la date dans le chemin de fichier
|
53
|
+
change_title_path: mets à jour le titre dans le chemin de fichier
|
54
|
+
directory_input_placeholder: nom du dossier à créer
|
55
|
+
file_input_placeholder: nom du fichier à créer
|
56
|
+
hyde_admin_auth: enable BasicAuth
|
57
|
+
help_hyde_admin_auth: enable BasicAuth
|
58
|
+
hyde_admin_user: BasicAuth user
|
59
|
+
help_hyde_admin_user: BasicAuth user
|
60
|
+
hyde_admin_password: BasicAuth password
|
61
|
+
help_hyde_admin_password: BasicAuth password
|
62
|
+
default_format: format par défaut
|
63
|
+
help_default_format: format par défaut pour les posts
|
64
|
+
display_layout: affiche le choix du layout sur le formulaire d'édition
|
65
|
+
help_display_layout: affiche le choix du layout sur le formulaire d'édition
|
66
|
+
display_format: affiche le choix du format sur le formulaire d'édition
|
67
|
+
help_display_format: affiche le choix du format sur le formulaire d'édition
|
68
|
+
images_path: chemin des images
|
69
|
+
help_images_path: chemin local relatif des images
|
70
|
+
editor_undo: Annuler
|
71
|
+
editor_redo: Refaire
|
72
|
+
editor_file: Ajouter image
|
73
|
+
editor_list: Liste
|
74
|
+
editor_list_ol: Liste numéroté
|
75
|
+
editor_link: Ajouter lien
|
76
|
+
editor_quote: Citation
|
77
|
+
editor_title_h1: Titre H1
|
78
|
+
editor_title_h2: Titre H2
|
79
|
+
editor_title_h3: Titre H3
|
80
|
+
editor_title_h4: Titre H4
|
81
|
+
editor_title_h5: Titre H5
|
82
|
+
editor_underline: Souligner
|
83
|
+
editor_bold: Gras
|
84
|
+
editor_italic: Italique
|
85
|
+
editor_strikethrough: Barré
|
86
|
+
default_alt_img: Texte alternatif
|
87
|
+
default_title_img: Titre image
|
88
|
+
parent_dir: dossier parent
|