@silexlabs/silex-dashboard 1.0.41 → 1.0.44
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.
- package/.gitmodules +2 -2
- package/11ty/eleventy.config.mjs +62 -0
- package/README.md +8 -2
- package/collections/connectors/en.md +70 -0
- package/collections/connectors/fr.md +72 -0
- package/collections/home/en.md +57 -0
- package/{pages/fr/index.md → collections/home/fr.md} +20 -21
- package/collections/languages/en.json +5 -0
- package/collections/languages/fr.json +5 -0
- package/collections/settings/en.json +127 -0
- package/collections/settings/fr.json +131 -0
- package/package.json +17 -8
- package/silex/client-config.js +24 -0
- package/{.silex.js → silex/server-config.js} +8 -16
- package/templates/connectors-en.11tydata.mjs +56 -0
- package/templates/connectors-en.html +440 -0
- package/templates/connectors-fr.11tydata.mjs +56 -0
- package/templates/connectors-fr.html +440 -0
- package/templates/css/connectors-61bd21c2345101e48cc530cacf3afc0156ce7e089fcef3a34f853a537f0c55f2.css +1 -0
- package/templates/css/websites-4b9b2b0a0a907b33eca109d50c2a3eee97f1955c742cef487110d21a0bbf8f50.css +1 -0
- package/templates/websites-en.11tydata.mjs +108 -0
- package/templates/websites-en.html +478 -0
- package/templates/websites-fr.11tydata.mjs +108 -0
- package/templates/websites-fr.html +478 -0
- package/tina/config.ts +258 -0
- package/tina/tina-lock.json +1 -0
- package/.eleventy.js +0 -11
- package/.silex-client.js +0 -22
- package/_data/languages.json +0 -7
- package/_includes/api-connectors.js.html +0 -96
- package/_includes/api-websites.js.html +0 -189
- package/_includes/connectors.html +0 -253
- package/_includes/websites.html +0 -548
- package/_silex/old/assets/alex-hoyau.jpg +0 -0
- package/_silex/old/assets/alex-small.jpg +0 -0
- package/_silex/old/assets/empty-projects.gif +0 -0
- package/_silex/old/assets/gitlab.svg +0 -13
- package/_silex/old/assets/picto-silex.png +0 -0
- package/_silex/old/assets/silex-icon-2018@200px.png +0 -0
- package/_silex/old/meta.json +0 -1
- package/_silex/old/website.json +0 -1
- package/_site/assets/alex-small.jpg +0 -0
- package/_site/assets/bg-purpel-silex.webp +0 -0
- package/_site/assets/bg-silex-purpel.webp +0 -0
- package/_site/assets/empty-projects-sos.gif +0 -0
- package/_site/assets/gitlab.svg +0 -13
- package/_site/assets/logo-silex.svg +0 -1
- package/_site/assets/picto-silex@3x.png +0 -0
- package/_site/assets/silex-dashboard.png +0 -0
- package/_site/assets/silex-icon-2018@200px.png +0 -0
- package/_site/css/connectors.css +0 -1
- package/_site/css/websites.css +0 -1
- package/_site/en/connectors/index.html +0 -376
- package/_site/en/index.html +0 -795
- package/_site/fr/connectors/index.html +0 -376
- package/_site/fr/index.html +0 -795
- package/assets/alex-small.jpg +0 -0
- package/assets/bg-purpel-silex.webp +0 -0
- package/assets/bg-silex-purpel.webp +0 -0
- package/assets/empty-projects-sos.gif +0 -0
- package/assets/favicon-32x32.png +0 -0
- package/assets/gitlab.svg +0 -13
- package/assets/logo-silex.svg +0 -1
- package/assets/picto-silex@3x.png +0 -0
- package/assets/silex-dashboard.png +0 -0
- package/assets/silex-icon-2018@200px.png +0 -0
- package/pages/connectors.css.liquid +0 -4
- package/pages/en/connectors.md +0 -4
- package/pages/en/en.json +0 -72
- package/pages/en/index.md +0 -28
- package/pages/fr/connectors.md +0 -5
- package/pages/fr/fr.json +0 -72
- package/pages/pages.11tydata.js +0 -5
- package/pages/websites.css.liquid +0 -4
- /package/{_data → 11ty/_data}/api-translations.json +0 -0
- /package/{_data → 11ty/_data}/site.js +0 -0
- /package/{_includes → 11ty/_includes}/alternate.liquid +0 -0
- /package/{_silex/old → templates}/assets/bg-purpel-silex.webp +0 -0
- /package/{_silex/old → templates}/assets/bg-silex-purpel.webp +0 -0
- /package/{_silex/old → templates}/assets/empty-projects-sos.gif +0 -0
- /package/{_site → templates}/assets/favicon-32x32.png +0 -0
- /package/{_silex/old → templates}/assets/logo-silex.svg +0 -0
- /package/{_silex/old → templates}/assets/picto-silex@3x.png +0 -0
package/_site/fr/index.html
DELETED
|
@@ -1,795 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="">
|
|
3
|
-
<head>
|
|
4
|
-
<link rel="stylesheet" href="/css/websites.css" />
|
|
5
|
-
<!-- font google -->
|
|
6
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" />
|
|
7
|
-
<link href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;700&display=swap" rel="stylesheet">
|
|
8
|
-
|
|
9
|
-
<link
|
|
10
|
-
rel="alternate"
|
|
11
|
-
hreflang="en"
|
|
12
|
-
href="/en/" />
|
|
13
|
-
<style>
|
|
14
|
-
.before-js > * {
|
|
15
|
-
visibility: hidden;
|
|
16
|
-
opacity: 0;
|
|
17
|
-
transition: opacity .5s ease;
|
|
18
|
-
}
|
|
19
|
-
.after-js > * {
|
|
20
|
-
visibility: visible;
|
|
21
|
-
opacity: 1;
|
|
22
|
-
}
|
|
23
|
-
.before-js:before {
|
|
24
|
-
content: 'Loading';
|
|
25
|
-
position: absolute;
|
|
26
|
-
top: 49%;
|
|
27
|
-
left: 49%;
|
|
28
|
-
}
|
|
29
|
-
.after-js:before {
|
|
30
|
-
content: none;
|
|
31
|
-
}
|
|
32
|
-
/*BTNS*/
|
|
33
|
-
.button, .pointer {
|
|
34
|
-
cursor: pointer!important}
|
|
35
|
-
.button{
|
|
36
|
-
min-width:110px;
|
|
37
|
-
}
|
|
38
|
-
/*BTNS*/
|
|
39
|
-
a {
|
|
40
|
-
text-decoration: none;
|
|
41
|
-
color:#8873FE;
|
|
42
|
-
}
|
|
43
|
-
a:hover {
|
|
44
|
-
text-decoration: underline;
|
|
45
|
-
}
|
|
46
|
-
.uppercase {
|
|
47
|
-
text-transform: uppercase;
|
|
48
|
-
}
|
|
49
|
-
.underline:hover{
|
|
50
|
-
text-decoration: underline;
|
|
51
|
-
text-decoration-thickness: from-font;
|
|
52
|
-
text-underline-position: under;
|
|
53
|
-
}
|
|
54
|
-
/*footer position*/
|
|
55
|
-
.main-min-height {
|
|
56
|
-
min-height: calc(100vh - 560px);
|
|
57
|
-
}
|
|
58
|
-
/*footer position*/
|
|
59
|
-
/*label*/
|
|
60
|
-
::placeholder {
|
|
61
|
-
color: #8873FE;
|
|
62
|
-
}
|
|
63
|
-
input:focus {
|
|
64
|
-
border: 2px solid ##9977FE;
|
|
65
|
-
background-color:#ffffff;
|
|
66
|
-
}
|
|
67
|
-
:focus {
|
|
68
|
-
outline: none;
|
|
69
|
-
}
|
|
70
|
-
/*label*/
|
|
71
|
-
.skeleton-anim:after {
|
|
72
|
-
width: 100%;
|
|
73
|
-
height: 100%;
|
|
74
|
-
position: absolute;
|
|
75
|
-
top: 0;
|
|
76
|
-
left: 0;
|
|
77
|
-
content: "";
|
|
78
|
-
background:
|
|
79
|
-
linear-gradient(0.25turn, transparent, rgba(255,255,255,.75), transparent),
|
|
80
|
-
linear-gradient(transparent, transparent),
|
|
81
|
-
radial-gradient(38px circle at 19px 19px, transparent 50%, transparent 51%),
|
|
82
|
-
linear-gradient(transparent, transparent);
|
|
83
|
-
background-repeat: no-repeat;
|
|
84
|
-
background-size: 315px 250px, 315px 180px, 100px 100px, 225px 30px;
|
|
85
|
-
background-position: -315px 0, 0 0, 0px 190px, 50px 195px;
|
|
86
|
-
animation: loading 1.5s infinite;
|
|
87
|
-
}
|
|
88
|
-
@keyframes loading {
|
|
89
|
-
to {
|
|
90
|
-
background-position: 200% 0, 0 0, 0 190px, 50px 195px;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
/*FX ANIMATIONS*/
|
|
94
|
-
/*scale-round-inside_pour-BTN*/
|
|
95
|
-
.fx-scale-round {
|
|
96
|
-
position:relative;
|
|
97
|
-
z-index: 10;
|
|
98
|
-
overflow: hidden;
|
|
99
|
-
}
|
|
100
|
-
.fx-scale-round::after {
|
|
101
|
-
content: "";
|
|
102
|
-
background: #ffffff;
|
|
103
|
-
position: absolute;
|
|
104
|
-
z-index: -1;
|
|
105
|
-
border-radius: 50%;
|
|
106
|
-
left: -50%;
|
|
107
|
-
right: -50%;
|
|
108
|
-
top: -100%;
|
|
109
|
-
bottom: -100%;
|
|
110
|
-
transform: scale(0, 0);
|
|
111
|
-
transform-origin: center bottom;
|
|
112
|
-
transition: all 0.3s ease-out;
|
|
113
|
-
}
|
|
114
|
-
.fx-scale-round:hover {
|
|
115
|
-
transform-origin: center bottom;
|
|
116
|
-
transform: scale(1.1);
|
|
117
|
-
transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
|
|
118
|
-
}
|
|
119
|
-
.fx-scale-round:hover::after {
|
|
120
|
-
transform: scale(1, 1);
|
|
121
|
-
transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
|
|
122
|
-
}
|
|
123
|
-
/*scale-round-inside_pour-BTN*/
|
|
124
|
-
/*scale*/
|
|
125
|
-
.fx-scale:hover {
|
|
126
|
-
transform-origin: center bottom;
|
|
127
|
-
transform: scale(1.1);
|
|
128
|
-
transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
|
|
129
|
-
}
|
|
130
|
-
/*flash*/
|
|
131
|
-
.fx-flash:hover {
|
|
132
|
-
animation: flash-in .5s ;
|
|
133
|
-
}
|
|
134
|
-
/*flash-in animation*/
|
|
135
|
-
@keyframes flash-in{
|
|
136
|
-
0% {
|
|
137
|
-
opacity:0;
|
|
138
|
-
}
|
|
139
|
-
100% {
|
|
140
|
-
opacity:1;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/*flash-in animation*/
|
|
144
|
-
/*FX ANIMATIONS*/
|
|
145
|
-
</style>
|
|
146
|
-
<script src="/js/vue.global.js"></script>
|
|
147
|
-
<script src="/js/main.js"></script>
|
|
148
|
-
<script type="module">
|
|
149
|
-
const CONNECTORS_PATH = '/connectors/'
|
|
150
|
-
window.addEventListener('load', function() {
|
|
151
|
-
const { createApp } = Vue;
|
|
152
|
-
const { api, constants, types } = silex;
|
|
153
|
-
const {
|
|
154
|
-
ConnectorType,
|
|
155
|
-
} = types
|
|
156
|
-
const {
|
|
157
|
-
setServerUrl,
|
|
158
|
-
getUser,
|
|
159
|
-
logout,
|
|
160
|
-
websiteDelete,
|
|
161
|
-
websiteDuplicate,
|
|
162
|
-
websiteList,
|
|
163
|
-
websiteCreate,
|
|
164
|
-
websiteMetaWrite,
|
|
165
|
-
} = api
|
|
166
|
-
function toSafeId(name) {
|
|
167
|
-
return name.replace(/[/\\?%*:|"<>]/g, '_')
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
const App = {
|
|
171
|
-
data() {
|
|
172
|
-
return {
|
|
173
|
-
websites: [],
|
|
174
|
-
newWebsiteName: '',
|
|
175
|
-
showCreationForm: false,
|
|
176
|
-
error: null,
|
|
177
|
-
message: null,
|
|
178
|
-
loggedIn: false,
|
|
179
|
-
loading: true,
|
|
180
|
-
storage: null,
|
|
181
|
-
user: null,
|
|
182
|
-
showMenu: false,
|
|
183
|
-
empty: false,
|
|
184
|
-
}
|
|
185
|
-
},
|
|
186
|
-
mounted() {
|
|
187
|
-
this.init()
|
|
188
|
-
},
|
|
189
|
-
|
|
190
|
-
methods: {
|
|
191
|
-
async init() {
|
|
192
|
-
try {
|
|
193
|
-
// Init Silex server path
|
|
194
|
-
// Go up one level because of the language prefix
|
|
195
|
-
setServerUrl((window.location.origin + window.location.pathname.replace(/\/$/, '')).replace(/\/[^/]+$/, ''))
|
|
196
|
-
// Start
|
|
197
|
-
const user = await getUser({type: ConnectorType.STORAGE})
|
|
198
|
-
if(user) {
|
|
199
|
-
this.user = user
|
|
200
|
-
this.loggedIn = true
|
|
201
|
-
this.websites = await websiteList({connectorId: this.user.storage.connectorId})
|
|
202
|
-
this.empty = this.websites.length === 0
|
|
203
|
-
this.loading = false
|
|
204
|
-
} else {
|
|
205
|
-
this.openLogin()
|
|
206
|
-
}
|
|
207
|
-
} catch (error) {
|
|
208
|
-
console.error(error)
|
|
209
|
-
this.loading = false
|
|
210
|
-
if(error.code === 401 || error.httpStatusCode === 401) {
|
|
211
|
-
this.loggedIn = false
|
|
212
|
-
this.openLogin()
|
|
213
|
-
} else {
|
|
214
|
-
this.error = `Erreur, impossible de démarrer le tableau de bord - ${error.message}`
|
|
215
|
-
this.message = ''
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
},
|
|
219
|
-
|
|
220
|
-
openLogin(id, lang) {
|
|
221
|
-
//throw new Error('debug')
|
|
222
|
-
const path = `/fr${CONNECTORS_PATH}`
|
|
223
|
-
console.log(window.location.pathname, window.location.path, path)
|
|
224
|
-
if(window.location.pathname === path) return
|
|
225
|
-
window.open(path, '_self')
|
|
226
|
-
},
|
|
227
|
-
|
|
228
|
-
openEditor(id, lang) {
|
|
229
|
-
window.open(`/?id=${id}&lang=${lang}&connectorId=${this.user.storage.connectorId}`, '_self')
|
|
230
|
-
},
|
|
231
|
-
|
|
232
|
-
async logout() {
|
|
233
|
-
await logout({
|
|
234
|
-
type: ConnectorType.STORAGE,
|
|
235
|
-
connectorId: this.user.storage.connectorId,
|
|
236
|
-
})
|
|
237
|
-
window.location.reload()
|
|
238
|
-
},
|
|
239
|
-
|
|
240
|
-
async createWebsite() {
|
|
241
|
-
try {
|
|
242
|
-
if (!this.newWebsiteName) throw new Error('Vous n\'avez pas donné de nom à votre site')
|
|
243
|
-
this.loading = true
|
|
244
|
-
const websiteId = toSafeId(this.newWebsiteName)
|
|
245
|
-
const result = await websiteCreate({
|
|
246
|
-
websiteId,
|
|
247
|
-
data: {
|
|
248
|
-
name: this.newWebsiteName,
|
|
249
|
-
imageUrl: null,
|
|
250
|
-
},
|
|
251
|
-
connectorId: this.user.storage.connectorId
|
|
252
|
-
})
|
|
253
|
-
this.message = 'Le site a bien été créé'
|
|
254
|
-
this.error = ''
|
|
255
|
-
this.newWebsiteName = ''
|
|
256
|
-
this.showCreationForm = false;
|
|
257
|
-
this.websites = await websiteList({connectorId: this.user.storage.connectorId})
|
|
258
|
-
this.empty = this.websites.length === 0
|
|
259
|
-
this.loading = false
|
|
260
|
-
return result
|
|
261
|
-
} catch (error) {
|
|
262
|
-
this.loading = false
|
|
263
|
-
console.error(error)
|
|
264
|
-
this.error = `Erreur, le site n\'a pas été créé - ${error.message}`
|
|
265
|
-
this.message = ''
|
|
266
|
-
}
|
|
267
|
-
},
|
|
268
|
-
|
|
269
|
-
async deleteWebsite(websiteId) {
|
|
270
|
-
const ok = confirm('Etes vous sûr.e de vouloir supprimer définitivement ce site ?')
|
|
271
|
-
if (!ok) return
|
|
272
|
-
this.loading = true
|
|
273
|
-
try {
|
|
274
|
-
const result = await websiteDelete({websiteId, connectorId: this.user.storage.connectorId})
|
|
275
|
-
this.message = 'Le site a bien été effacé'
|
|
276
|
-
this.error = ''
|
|
277
|
-
this.websites = await websiteList({connectorId: this.user.storage.connectorId})
|
|
278
|
-
this.empty = this.websites.length === 0
|
|
279
|
-
this.loading = false
|
|
280
|
-
return result
|
|
281
|
-
} catch (error) {
|
|
282
|
-
this.loading = false
|
|
283
|
-
this.error = `Erreur, le site n\'a pas été effacé - ${error.message}`
|
|
284
|
-
this.message = ''
|
|
285
|
-
}
|
|
286
|
-
},
|
|
287
|
-
|
|
288
|
-
async duplicateWebsite(websiteId) {
|
|
289
|
-
this.loading = true
|
|
290
|
-
try {
|
|
291
|
-
await websiteDuplicate({websiteId, connectorId: this.user.storage.connectorId, data: { name }})
|
|
292
|
-
this.error = ''
|
|
293
|
-
this.websites = await websiteList({connectorId: this.user.storage.connectorId})
|
|
294
|
-
this.message = 'Le site a bien été dupliqué'
|
|
295
|
-
this.empty = this.websites.length === 0
|
|
296
|
-
this.loading = false
|
|
297
|
-
} catch (error) {
|
|
298
|
-
this.loading = false
|
|
299
|
-
this.error = `Erreur, le site n'a pas été dupliqué - ${error.message}`
|
|
300
|
-
this.message = ''
|
|
301
|
-
}
|
|
302
|
-
},
|
|
303
|
-
|
|
304
|
-
async renameWebsite(websiteId) {
|
|
305
|
-
const website = this.websites.find(w => w.websiteId === websiteId)
|
|
306
|
-
const name = prompt('Nouveau nom', website.name)
|
|
307
|
-
if (!name) return
|
|
308
|
-
this.loading = true
|
|
309
|
-
try {
|
|
310
|
-
const result = await websiteMetaWrite({websiteId, connectorId: this.user.storage.connectorId, data: { name }})
|
|
311
|
-
this.message = 'Changement de nom effectué'
|
|
312
|
-
this.error = ''
|
|
313
|
-
this.websites = await websiteList({connectorId: this.user.storage.connectorId})
|
|
314
|
-
this.empty = this.websites.length === 0
|
|
315
|
-
this.loading = false
|
|
316
|
-
return result
|
|
317
|
-
} catch (error) {
|
|
318
|
-
this.loading = false
|
|
319
|
-
this.error = `Erreur, le nom n\'a pas été changé - ${error.message}`
|
|
320
|
-
this.message = ''
|
|
321
|
-
}
|
|
322
|
-
},
|
|
323
|
-
},
|
|
324
|
-
};
|
|
325
|
-
|
|
326
|
-
// Start vue app
|
|
327
|
-
createApp(App).mount('.app');
|
|
328
|
-
|
|
329
|
-
// Remove loading
|
|
330
|
-
setTimeout(() => {
|
|
331
|
-
document.querySelector('.before-js').classList.add('after-js')
|
|
332
|
-
}, 100)
|
|
333
|
-
})
|
|
334
|
-
</script>
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
<title>Dashboard Silex</title>
|
|
338
|
-
<link rel="icon" href="/assets/favicon-32x32.png" />
|
|
339
|
-
<meta name="description" property="description" content=""/>
|
|
340
|
-
<meta name="og:title" property="og:title" content=""/>
|
|
341
|
-
<meta name="og:description" property="og:description" content=""/>
|
|
342
|
-
<meta name="og:image" property="og:image" content=""/>
|
|
343
|
-
</head>
|
|
344
|
-
<body
|
|
345
|
-
id="ik0i"
|
|
346
|
-
class="body loading app before-js"
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
><HEADER
|
|
350
|
-
id="igrg"
|
|
351
|
-
class="menu-bar "
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
><A
|
|
355
|
-
id="igvu43" href="/"
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
><img
|
|
360
|
-
src="/assets/picto-silex@3x.png" id="iel80b-2"
|
|
361
|
-
class="nav__logo "
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
></img></A><NAV
|
|
365
|
-
id="i9jq"
|
|
366
|
-
class="nav "
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
><A
|
|
370
|
-
id="iels" href="/"
|
|
371
|
-
class="nav__item uppercase active"
|
|
372
|
-
target=""
|
|
373
|
-
|
|
374
|
-
>Sites</A><A
|
|
375
|
-
id="iels" href="http://docs.silex.me/"
|
|
376
|
-
class="nav__item uppercase "
|
|
377
|
-
target="_blank"
|
|
378
|
-
|
|
379
|
-
>Docs</A><A
|
|
380
|
-
id="iels" href="https://www.silex.me/"
|
|
381
|
-
class="nav__item uppercase "
|
|
382
|
-
target="_blank"
|
|
383
|
-
|
|
384
|
-
>A propos</A><A
|
|
385
|
-
id="iels" href="https://community.silex.me/"
|
|
386
|
-
class="nav__item uppercase "
|
|
387
|
-
target="_blank"
|
|
388
|
-
|
|
389
|
-
>Communauté</A><A
|
|
390
|
-
id="iels" href="https://mail-list.silexlabs.org/subscription/cemnfkaVrK?locale=fr-FR&source=silex-dashboard"
|
|
391
|
-
class="nav__item uppercase "
|
|
392
|
-
target="_blank"
|
|
393
|
-
|
|
394
|
-
>News</A></NAV><div
|
|
395
|
-
id="i2red7"
|
|
396
|
-
class="lang h-space "
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
><A
|
|
400
|
-
href="/en" id="iciz"
|
|
401
|
-
class="lang__item nav__item uppercase "
|
|
402
|
-
hreflang="en"
|
|
403
|
-
|
|
404
|
-
>en</A><A
|
|
405
|
-
href="/fr" id="iciz"
|
|
406
|
-
class="lang__item nav__item uppercase active"
|
|
407
|
-
hreflang="fr"
|
|
408
|
-
|
|
409
|
-
>fr</A></div><div
|
|
410
|
-
id="i24ew"
|
|
411
|
-
class="user__wrapper pointer "
|
|
412
|
-
v-if="user && !user.storage.disableLogout" @NOmouseover="showMenu = true" @NOmouseout="showMenu = false" @click="showMenu = !showMenu"
|
|
413
|
-
|
|
414
|
-
><div
|
|
415
|
-
id="i5xsbd"
|
|
416
|
-
class="user-icon__wrapper "
|
|
417
|
-
v-if="user" v-show="!showMenu || user.storage.disableLogout"
|
|
418
|
-
|
|
419
|
-
><div
|
|
420
|
-
id="i5wlbq"
|
|
421
|
-
class="user-icon__image "
|
|
422
|
-
v-if="user" v-show="!showMenu || user.storage.disableLogout" :style='`background: url("${user.picture}"); background-repeat: no-repeat; background-size: contain;`'
|
|
423
|
-
|
|
424
|
-
></div></div><div
|
|
425
|
-
id="ic9eoa"
|
|
426
|
-
|
|
427
|
-
v-show="showMenu && !user.storage.disableLogout"
|
|
428
|
-
|
|
429
|
-
><div
|
|
430
|
-
id="iksw4d"
|
|
431
|
-
class="button button--tertiary text-centered "
|
|
432
|
-
@click="logout()"
|
|
433
|
-
|
|
434
|
-
>Logout</div></div></div></HEADER><HEADER
|
|
435
|
-
id="iy8ax3"
|
|
436
|
-
class="bg-silex-purpel "
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
><div
|
|
440
|
-
id="iisz8f"
|
|
441
|
-
class="section-top text-centered text-white "
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
><H1
|
|
445
|
-
id="ic31o"
|
|
446
|
-
class="title-40 "
|
|
447
|
-
v-if="!empty"
|
|
448
|
-
|
|
449
|
-
>Bienvenue !</H1><P
|
|
450
|
-
id="iyex8"
|
|
451
|
-
class="subtitle-16 "
|
|
452
|
-
v-if="!empty"
|
|
453
|
-
|
|
454
|
-
>Plongez-vous dans un projet ou créez-en un nouveau</P><H1
|
|
455
|
-
id="i4ybc"
|
|
456
|
-
class="title-40 "
|
|
457
|
-
v-if="empty"
|
|
458
|
-
|
|
459
|
-
>Bienvenue !</H1><P
|
|
460
|
-
id="iino6r"
|
|
461
|
-
class="subtitle-16 "
|
|
462
|
-
v-if="empty"
|
|
463
|
-
|
|
464
|
-
>Créez votre premier projet, clickez sur le boutont "Créer un site"</P></div></HEADER><MAIN
|
|
465
|
-
id="iz63r"
|
|
466
|
-
class="padding-normal main-min-height website-max-width margin-80 "
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
><SECTION
|
|
470
|
-
id="iqmx38"
|
|
471
|
-
|
|
472
|
-
v-if="empty"
|
|
473
|
-
|
|
474
|
-
></SECTION><div
|
|
475
|
-
id="ickx4"
|
|
476
|
-
class="margin-20 "
|
|
477
|
-
v-if="!empty"
|
|
478
|
-
|
|
479
|
-
><BUTTON
|
|
480
|
-
id="ic92g"
|
|
481
|
-
class="button button--primary rounded top-space-40 fx-scale-round "
|
|
482
|
-
@click="showCreationForm = !showCreationForm" v-if="!showCreationForm"
|
|
483
|
-
|
|
484
|
-
><span
|
|
485
|
-
id="igsxoc"
|
|
486
|
-
class="icon-font "
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
>+</span> <span
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
>Créer un site</span></BUTTON><div
|
|
495
|
-
id="i0ro3"
|
|
496
|
-
class="button button--secondary rounded "
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
>Import</div></div><div
|
|
500
|
-
id="ihwwxz"
|
|
501
|
-
class="box top-space-40 padding-30 box_transp "
|
|
502
|
-
v-if="showCreationForm"
|
|
503
|
-
|
|
504
|
-
><H3
|
|
505
|
-
id="i3gd1b"
|
|
506
|
-
class="box__header text-centered "
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
>Créer un nouveau site internet</H3><form
|
|
510
|
-
method="get" id="i50acf"
|
|
511
|
-
class="form "
|
|
512
|
-
@submit.prevent="createWebsite"
|
|
513
|
-
|
|
514
|
-
><div
|
|
515
|
-
id="igtg1t"
|
|
516
|
-
class="v-space "
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
><label
|
|
520
|
-
id="i1nmbc"
|
|
521
|
-
class="v-space bold color-2B1B63-80 "
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
>Nom du site</label><input
|
|
525
|
-
type="text" id="ij5iwh" placeholder="Mon super projet"
|
|
526
|
-
class="input full-width "
|
|
527
|
-
v-model="newWebsiteName"
|
|
528
|
-
|
|
529
|
-
></input></div><div
|
|
530
|
-
id="ie0xes"
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
><button
|
|
535
|
-
type="submit" id="i021na"
|
|
536
|
-
class="button rounded button--primary right-space-20 fx-scale-round "
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
>Créer</button><button
|
|
540
|
-
type="reset"
|
|
541
|
-
class="button rounded button--secondary fx-scale-round "
|
|
542
|
-
@click="showCreationForm = !showCreationForm"
|
|
543
|
-
|
|
544
|
-
>Annuler</button></div></form></div><div
|
|
545
|
-
id="if80m"
|
|
546
|
-
class="margin-20 "
|
|
547
|
-
v-if="!empty"
|
|
548
|
-
|
|
549
|
-
><SECTION
|
|
550
|
-
id="idgvg"
|
|
551
|
-
class="button-bar loaded__item "
|
|
552
|
-
v-if="!loading" v-for="(website, index) in websites" :key="index"
|
|
553
|
-
|
|
554
|
-
><H3
|
|
555
|
-
id="i69a7"
|
|
556
|
-
class="right-space-40 color-2B1B63-80 uppercase pointer fx-flash full-width button-bar__title underline "
|
|
557
|
-
v-text="website.name || website.id" @click="openEditor(website.websiteId, 'fr')"
|
|
558
|
-
|
|
559
|
-
>My first website</H3><P
|
|
560
|
-
id="i65hn"
|
|
561
|
-
class="button-bar__item--secondary flex-no-shrink right-space-40 "
|
|
562
|
-
v-text="'Mis à jour le ' + new Date(website.updatedAt).toLocaleDateString(undefined, { day: 'numeric', month: 'long', year: 'numeric' })"
|
|
563
|
-
|
|
564
|
-
>Updated 1h ago by lexoyo</P><P
|
|
565
|
-
id="i64qa"
|
|
566
|
-
class="button-bar__item--secondary flex-no-shrink right-space-40 "
|
|
567
|
-
v-text="'Créé le ' + new Date(website.createdAt).toLocaleDateString(undefined, { day: 'numeric', month: 'long', year: 'numeric' })"
|
|
568
|
-
|
|
569
|
-
>Created 2023-02-16 by lexoyo</P><div
|
|
570
|
-
id="i3b4tr"
|
|
571
|
-
class="flex-no-shrink "
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
><BUTTON
|
|
575
|
-
id="ifyf6p" title="Editer"
|
|
576
|
-
class="button-bar__item--link pointer fx-scale fx-flash button-bar__item--icon "
|
|
577
|
-
@click="openEditor(website.websiteId, 'fr')"
|
|
578
|
-
|
|
579
|
-
><svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path fill="#8873fe" d="M368 80h32v32H368V80zM352 32c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32V160c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H352zM96 160c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32V160zM48 400H80v32H48V400zm320 32V400h32v32H368zM48 112V80H80v32H48z"/></svg></BUTTON><BUTTON
|
|
580
|
-
id="ihf6ew" title="Renommer"
|
|
581
|
-
class="button-bar__item--link pointer fx-scale fx-flash button-bar__item--icon "
|
|
582
|
-
@click="renameWebsite(website.websiteId, 'fr')"
|
|
583
|
-
|
|
584
|
-
><svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path fill="#8873fe" d="M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z"/></svg></BUTTON><BUTTON
|
|
585
|
-
id="iol4h" title="Dupliquer"
|
|
586
|
-
class="button-bar__item--link pointer fx-flash fx-scale button-bar__item--icon "
|
|
587
|
-
@click="duplicateWebsite(website.websiteId, 'fr')"
|
|
588
|
-
|
|
589
|
-
><svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 448 512"><path fill="#8873fe" d="M384 336H192c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16l140.1 0L400 115.9V320c0 8.8-7.2 16-16 16zM192 384H384c35.3 0 64-28.7 64-64V115.9c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1H192c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256c35.3 0 64-28.7 64-64V416H272v32c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16H96V128H64z"/></svg></BUTTON><BUTTON
|
|
590
|
-
|
|
591
|
-
class="button-bar__item--link pointer fx-flash fx-scale "
|
|
592
|
-
@click="deleteWebsite(website.websiteId)" title="Supprimer"
|
|
593
|
-
|
|
594
|
-
>X</BUTTON></div></SECTION><SECTION
|
|
595
|
-
id="i1fjn"
|
|
596
|
-
class="button-bar loading__item skeleton-anim skeleton-wrapper "
|
|
597
|
-
v-if="loading"
|
|
598
|
-
|
|
599
|
-
><H3
|
|
600
|
-
id="iwu6a"
|
|
601
|
-
class="skeleton-text skeleton right-space-40 "
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
>My first websiteMy first websiteMy first websiteMy first</H3><P
|
|
605
|
-
id="i26fn"
|
|
606
|
-
class="button-bar__item--secondary skeleton-text skeleton right-space-40 "
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
>Updated 1h ago by lexoyo</P><P
|
|
610
|
-
id="iywbk"
|
|
611
|
-
class="button-bar__item--secondary skeleton-text skeleton right-space-40 "
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
>Created 2023-02-16 by lexoyo</P><div
|
|
615
|
-
id="ixz6c"
|
|
616
|
-
class="skeleton skeleton-button "
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
>Edit</div></SECTION><SECTION
|
|
620
|
-
id="iwxxo5"
|
|
621
|
-
class="button-bar loading__item skeleton-anim skeleton-wrapper "
|
|
622
|
-
v-if="loading"
|
|
623
|
-
|
|
624
|
-
><H3
|
|
625
|
-
id="inmp3"
|
|
626
|
-
class="skeleton-text skeleton right-space-40 "
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
>My first websiteMy first websiteMy first websiteMy first</H3><P
|
|
630
|
-
id="icjz8"
|
|
631
|
-
class="button-bar__item--secondary skeleton-text skeleton right-space-40 "
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
>Updated 1h ago by lexoyo</P><P
|
|
635
|
-
id="illbe"
|
|
636
|
-
class="button-bar__item--secondary skeleton-text skeleton right-space-40 "
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
>Created 2023-02-16 by lexoyo</P><div
|
|
640
|
-
id="i9fx3l"
|
|
641
|
-
class="skeleton skeleton-button "
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
>Edit</div></SECTION><SECTION
|
|
645
|
-
id="isld3r"
|
|
646
|
-
class="button-bar loading__item skeleton-anim skeleton-wrapper "
|
|
647
|
-
v-if="loading"
|
|
648
|
-
|
|
649
|
-
><H3
|
|
650
|
-
|
|
651
|
-
class="button-bar_item button-bar__item--main skeleton-text skeleton right-space-40 "
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
>My first websiteMy first websiteMy first websiteMy first</H3><P
|
|
655
|
-
|
|
656
|
-
class="button-bar_item button-bar__item--secondary skeleton-text skeleton right-space-40 "
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
>Updated 1h ago by lexoyo</P><P
|
|
660
|
-
|
|
661
|
-
class="button-bar_item button-bar__item--secondary skeleton-text skeleton right-space-40 "
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
>Created 2023-02-16 by lexoyo</P><div
|
|
665
|
-
id="i8oes3"
|
|
666
|
-
class="button-bar_item skeleton skeleton-button "
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
>Edit</div></SECTION></div><div
|
|
670
|
-
id="ipccl7"
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
><div
|
|
675
|
-
id="i2fkm9"
|
|
676
|
-
class="margin-20 empty-image "
|
|
677
|
-
v-if="empty"
|
|
678
|
-
|
|
679
|
-
></div><div
|
|
680
|
-
id="i5ydxo"
|
|
681
|
-
class="box padding-50-30 box--centered "
|
|
682
|
-
v-if="empty"
|
|
683
|
-
|
|
684
|
-
><P
|
|
685
|
-
id="ikl1qu"
|
|
686
|
-
class="text-centered title-26 "
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
>C'est bien calme ici...</P><H3
|
|
690
|
-
id="iwzrqi"
|
|
691
|
-
class="text-centered title-26 "
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
>Prêt.e à démarrer une nouvelle aventure?</H3><BUTTON
|
|
695
|
-
id="i2x0l"
|
|
696
|
-
class="button button--primary rounded top-space-40 fx-scale-round "
|
|
697
|
-
@click="showCreationForm = !showCreationForm" v-if="!showCreationForm" v-if="empty"
|
|
698
|
-
|
|
699
|
-
><span
|
|
700
|
-
id="ibsgw"
|
|
701
|
-
class="icon-font "
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
>+</span> <span
|
|
705
|
-
id="itl2n8"
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
>Créer un site</span></BUTTON></div></div><div
|
|
710
|
-
id="i7ej6j"
|
|
711
|
-
class="flex-between box-message text-white "
|
|
712
|
-
v-if="error"
|
|
713
|
-
|
|
714
|
-
><H3
|
|
715
|
-
id="iv0eyi"
|
|
716
|
-
class="box-message-text "
|
|
717
|
-
v-text="error"
|
|
718
|
-
|
|
719
|
-
>Insert your text here</H3><div
|
|
720
|
-
id="i4656n"
|
|
721
|
-
class="pointer button-bar__item--link text-white "
|
|
722
|
-
@click="error = null"
|
|
723
|
-
|
|
724
|
-
>Fermer</div></div><div
|
|
725
|
-
id="ilteie"
|
|
726
|
-
class="flex-between box-message text-white "
|
|
727
|
-
v-if="message"
|
|
728
|
-
|
|
729
|
-
><H3
|
|
730
|
-
id="i2d31v"
|
|
731
|
-
class="box-message-text "
|
|
732
|
-
v-text="message"
|
|
733
|
-
|
|
734
|
-
>Insert your text here</H3><div
|
|
735
|
-
id="i2urco"
|
|
736
|
-
class="rounded pointer button-bar__item--link text-white "
|
|
737
|
-
@click="message = null"
|
|
738
|
-
|
|
739
|
-
>Fermer</div></div></MAIN><FOOTER
|
|
740
|
-
id="ilzpl"
|
|
741
|
-
class="footer "
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
><div
|
|
745
|
-
id="isucae"
|
|
746
|
-
class="footer__column "
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
><A
|
|
750
|
-
id="ipa5zg" href="http://docs.silex.me/"
|
|
751
|
-
class="footer__item "
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
>Documentation</A><A
|
|
755
|
-
id="ipa5zg" href="https://www.silex.me/"
|
|
756
|
-
class="footer__item "
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
>À propos de Silex, site officiel</A><A
|
|
760
|
-
id="ipa5zg" href="https://community.silex.me/"
|
|
761
|
-
class="footer__item "
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
>Forum communautaire</A><A
|
|
765
|
-
id="ipa5zg" href="http://www.silexlabs.org/"
|
|
766
|
-
class="footer__item "
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
>Silex Labs - l'organisation à but non lucratif derrière Silex</A></div><div
|
|
770
|
-
id="ie28kq"
|
|
771
|
-
class="footer__column "
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
><A
|
|
775
|
-
href="https://mail-list.silexlabs.org/subscription/cemnfkaVrK?locale=fr-FR&source=silex-dashboard" id="iahjww"
|
|
776
|
-
class="footer__item "
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
>Newsletter - tous les 3 mois</A><A
|
|
780
|
-
href="https://www.meetup.com/Silex-Labs-Aperopensource/" id="iahjww"
|
|
781
|
-
class="footer__item "
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
>Meetups, événements, ateliers</A><A
|
|
785
|
-
href="https://fosstodon.org/@silex" id="iahjww"
|
|
786
|
-
class="footer__item "
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
>Mastodon - suivez-nous sur le réseau social libre/gratuit</A><A
|
|
790
|
-
href="https://www.youtube.com/user/Silexlabs/" id="iahjww"
|
|
791
|
-
class="footer__item "
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
>Youtube - tutoriels et plus</A></div></FOOTER></body>
|
|
795
|
-
</html>
|