@silexlabs/silex-dashboard 1.0.44 → 1.0.45
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/_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/favicon-32x32.png +0 -0
- package/_site/assets/logo-silex.svg +1 -0
- package/_site/assets/picto-silex@3x.png +0 -0
- package/_site/css/connectors-61bd21c2345101e48cc530cacf3afc0156ce7e089fcef3a34f853a537f0c55f2.css +1 -0
- package/_site/css/websites-4b9b2b0a0a907b33eca109d50c2a3eee97f1955c742cef487110d21a0bbf8f50.css +1 -0
- package/_site/en/connectors/index.html +371 -0
- package/_site/en/index.html +384 -0
- package/_site/fr/connectors/index.html +371 -0
- package/_site/fr/index.html +384 -0
- package/_site/js/main.js +362 -0
- package/_site/js/main.js.LICENSE.txt +38 -0
- package/_site/js/vue.cjs.js +89 -0
- package/_site/js/vue.cjs.prod.js +75 -0
- package/_site/js/vue.d.mts +7 -0
- package/_site/js/vue.d.ts +7 -0
- package/_site/js/vue.esm-browser.js +16740 -0
- package/_site/js/vue.esm-browser.prod.js +12 -0
- package/_site/js/vue.esm-bundler.js +80 -0
- package/_site/js/vue.global.js +16725 -0
- package/_site/js/vue.global.prod.js +12 -0
- package/_site/js/vue.runtime.esm-browser.js +11155 -0
- package/_site/js/vue.runtime.esm-browser.prod.js +12 -0
- package/_site/js/vue.runtime.esm-bundler.js +26 -0
- package/_site/js/vue.runtime.global.js +11302 -0
- package/_site/js/vue.runtime.global.prod.js +12 -0
- package/package.json +1 -1
- package/silex/server-config.js +0 -2
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<link rel="stylesheet" href="/css/connectors-61bd21c2345101e48cc530cacf3afc0156ce7e089fcef3a34f853a537f0c55f2.css" />
|
|
6
|
+
<!-- font google -->
|
|
7
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" />
|
|
8
|
+
<link href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;700&display=swap" rel="stylesheet">
|
|
9
|
+
|
|
10
|
+
<style>
|
|
11
|
+
.before-js > * {
|
|
12
|
+
visibility: hidden;
|
|
13
|
+
opacity: 0;
|
|
14
|
+
transition: opacity .5s ease;
|
|
15
|
+
}
|
|
16
|
+
.before-js[data-gjs-type] > *, /* This is only inside the editor, .before-js needs to be on the body */
|
|
17
|
+
.after-js > * {
|
|
18
|
+
visibility: visible;
|
|
19
|
+
opacity: 1;
|
|
20
|
+
}
|
|
21
|
+
.before-js:before {
|
|
22
|
+
content: 'Loading';
|
|
23
|
+
position: absolute;
|
|
24
|
+
top: 49%;
|
|
25
|
+
left: 49%;
|
|
26
|
+
}
|
|
27
|
+
.before-js[data-gjs-type]:before, /* This is only inside the editor, .before-js needs to be on the body */
|
|
28
|
+
.after-js:before {
|
|
29
|
+
content: none;
|
|
30
|
+
}
|
|
31
|
+
/*BTNS*/
|
|
32
|
+
.button, .pointer {
|
|
33
|
+
cursor: pointer!important}
|
|
34
|
+
.button{
|
|
35
|
+
min-width:110px;
|
|
36
|
+
}
|
|
37
|
+
/*BTNS*/
|
|
38
|
+
a {
|
|
39
|
+
text-decoration: none;
|
|
40
|
+
color:#8873FE;
|
|
41
|
+
}
|
|
42
|
+
a:hover {
|
|
43
|
+
text-decoration: underline;
|
|
44
|
+
}
|
|
45
|
+
.uppercase {
|
|
46
|
+
text-transform: uppercase;
|
|
47
|
+
}
|
|
48
|
+
.underline:hover{
|
|
49
|
+
text-decoration: underline;
|
|
50
|
+
text-decoration-thickness: from-font;
|
|
51
|
+
text-underline-position: under;
|
|
52
|
+
}
|
|
53
|
+
/*footer position*/
|
|
54
|
+
.main-min-height {
|
|
55
|
+
min-height: calc(100vh - 560px);
|
|
56
|
+
}
|
|
57
|
+
/*footer position*/
|
|
58
|
+
/*label*/
|
|
59
|
+
::placeholder {
|
|
60
|
+
color: #8873FE;
|
|
61
|
+
}
|
|
62
|
+
input:focus {
|
|
63
|
+
border: 2px solid #9977FE;
|
|
64
|
+
background-color:#ffffff;
|
|
65
|
+
}
|
|
66
|
+
:focus {
|
|
67
|
+
outline: none;
|
|
68
|
+
}
|
|
69
|
+
/*label*/
|
|
70
|
+
.skeleton-anim:after {
|
|
71
|
+
width: 100%;
|
|
72
|
+
height: 100%;
|
|
73
|
+
position: absolute;
|
|
74
|
+
top: 0;
|
|
75
|
+
left: 0;
|
|
76
|
+
content: "";
|
|
77
|
+
background:
|
|
78
|
+
linear-gradient(0.25turn, transparent, rgba(255,255,255,.75), transparent),
|
|
79
|
+
linear-gradient(transparent, transparent),
|
|
80
|
+
radial-gradient(38px circle at 19px 19px, transparent 50%, transparent 51%),
|
|
81
|
+
linear-gradient(transparent, transparent);
|
|
82
|
+
background-repeat: no-repeat;
|
|
83
|
+
background-size: 315px 250px, 315px 180px, 100px 100px, 225px 30px;
|
|
84
|
+
background-position: -315px 0, 0 0, 0px 190px, 50px 195px;
|
|
85
|
+
animation: loading 1.5s infinite;
|
|
86
|
+
}
|
|
87
|
+
@keyframes loading {
|
|
88
|
+
to {
|
|
89
|
+
background-position: 200% 0, 0 0, 0 190px, 50px 195px;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/*FX ANIMATIONS*/
|
|
93
|
+
/*scale-round-inside_pour-BTN*/
|
|
94
|
+
.fx-scale-round {
|
|
95
|
+
position:relative;
|
|
96
|
+
z-index: 10;
|
|
97
|
+
overflow: hidden;
|
|
98
|
+
}
|
|
99
|
+
.fx-scale-round::after {
|
|
100
|
+
content: "";
|
|
101
|
+
background: #ffffff;
|
|
102
|
+
position: absolute;
|
|
103
|
+
z-index: -1;
|
|
104
|
+
border-radius: 50%;
|
|
105
|
+
left: -50%;
|
|
106
|
+
right: -50%;
|
|
107
|
+
top: -100%;
|
|
108
|
+
bottom: -100%;
|
|
109
|
+
transform: scale(0, 0);
|
|
110
|
+
transform-origin: center bottom;
|
|
111
|
+
transition: all 0.3s ease-out;
|
|
112
|
+
}
|
|
113
|
+
.fx-scale-round:hover {
|
|
114
|
+
transform-origin: center bottom;
|
|
115
|
+
transform: scale(1.1);
|
|
116
|
+
transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
|
|
117
|
+
}
|
|
118
|
+
.fx-scale-round:hover::after {
|
|
119
|
+
transform: scale(1, 1);
|
|
120
|
+
transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
|
|
121
|
+
}
|
|
122
|
+
/*scale-round-inside_pour-BTN*/
|
|
123
|
+
/*scale*/
|
|
124
|
+
.fx-scale:hover {
|
|
125
|
+
transform-origin: center bottom;
|
|
126
|
+
transform: scale(1.1);
|
|
127
|
+
transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
|
|
128
|
+
}
|
|
129
|
+
/*flash*/
|
|
130
|
+
.fx-flash:hover {
|
|
131
|
+
animation: flash-in .25s ;
|
|
132
|
+
}
|
|
133
|
+
/*flash-in animation*/
|
|
134
|
+
@keyframes flash-in{
|
|
135
|
+
0% {
|
|
136
|
+
opacity:.25;
|
|
137
|
+
}
|
|
138
|
+
100% {
|
|
139
|
+
opacity:1;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/*flash-in animation*/
|
|
143
|
+
/*FX ANIMATIONS*/
|
|
144
|
+
</style>
|
|
145
|
+
<script src="/js/vue.global.prod.js"></script>
|
|
146
|
+
<script src="/js/main.js"></script>
|
|
147
|
+
<script type="module">
|
|
148
|
+
console.log('xxxxxx')
|
|
149
|
+
const CONNECTORS_PATH = '/connectors/'
|
|
150
|
+
window.addEventListener('load', function() {
|
|
151
|
+
console.log('xxxxxx')
|
|
152
|
+
const { createApp } = Vue;
|
|
153
|
+
const { api, constants, types } = silex;
|
|
154
|
+
const {
|
|
155
|
+
ConnectorType,
|
|
156
|
+
} = types
|
|
157
|
+
const {
|
|
158
|
+
setServerUrl,
|
|
159
|
+
getUser,
|
|
160
|
+
logout,
|
|
161
|
+
websiteDelete,
|
|
162
|
+
websiteDuplicate,
|
|
163
|
+
websiteList,
|
|
164
|
+
websiteCreate,
|
|
165
|
+
websiteMetaWrite,
|
|
166
|
+
} = api
|
|
167
|
+
function toSafeId(name) {
|
|
168
|
+
return name.replace(/[/\\?%*:|"<>]/g, '_')
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
const App = {
|
|
172
|
+
data() {
|
|
173
|
+
return {
|
|
174
|
+
websites: [],
|
|
175
|
+
newWebsiteName: '',
|
|
176
|
+
showCreationForm: false,
|
|
177
|
+
error: null,
|
|
178
|
+
message: null,
|
|
179
|
+
loggedIn: false,
|
|
180
|
+
loading: true,
|
|
181
|
+
storage: null,
|
|
182
|
+
user: null,
|
|
183
|
+
showMenu: false,
|
|
184
|
+
empty: false,
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
mounted() {
|
|
188
|
+
this.init()
|
|
189
|
+
},
|
|
190
|
+
|
|
191
|
+
methods: {
|
|
192
|
+
async init() {
|
|
193
|
+
try {
|
|
194
|
+
// Init Silex server path
|
|
195
|
+
// Go up one level because of the language prefix
|
|
196
|
+
setServerUrl(window.location.origin)
|
|
197
|
+
// Start
|
|
198
|
+
const user = await getUser({type: ConnectorType.STORAGE})
|
|
199
|
+
// Escape single quotes in the picture URL and decode the picture URL
|
|
200
|
+
user.picture = decodeURIComponent(user.picture).replace(/'/g, "\\'")
|
|
201
|
+
if(user) {
|
|
202
|
+
this.user = user
|
|
203
|
+
this.loggedIn = true
|
|
204
|
+
this.websites = await websiteList({connectorId: this.user.storage.connectorId})
|
|
205
|
+
this.empty = this.websites.length === 0
|
|
206
|
+
this.loading = false
|
|
207
|
+
} else {
|
|
208
|
+
this.openLogin()
|
|
209
|
+
}
|
|
210
|
+
} catch (error) {
|
|
211
|
+
console.error(error)
|
|
212
|
+
this.loading = false
|
|
213
|
+
if(error.code === 401 || error.httpStatusCode === 401) {
|
|
214
|
+
this.loggedIn = false
|
|
215
|
+
this.openLogin()
|
|
216
|
+
} else {
|
|
217
|
+
this.error = `Erreur, impossible de démarrer le tableau de bord - ${error.message}`
|
|
218
|
+
this.message = ''
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
},
|
|
222
|
+
|
|
223
|
+
openLogin(id, lang) {
|
|
224
|
+
//throw new Error('debug')
|
|
225
|
+
const path = `/fr${CONNECTORS_PATH}`
|
|
226
|
+
console.log(window.location.pathname, window.location.path, path)
|
|
227
|
+
if(window.location.pathname === path) return
|
|
228
|
+
window.open(path, '_self')
|
|
229
|
+
},
|
|
230
|
+
|
|
231
|
+
openEditor(id, lang) {
|
|
232
|
+
window.open(`/?id=${id}&lang=${lang}&connectorId=${this.user.storage.connectorId}`, '_self')
|
|
233
|
+
},
|
|
234
|
+
|
|
235
|
+
async logout() {
|
|
236
|
+
await logout({
|
|
237
|
+
type: ConnectorType.STORAGE,
|
|
238
|
+
connectorId: this.user.storage.connectorId,
|
|
239
|
+
})
|
|
240
|
+
window.location.reload()
|
|
241
|
+
},
|
|
242
|
+
|
|
243
|
+
async createWebsite() {
|
|
244
|
+
try {
|
|
245
|
+
if (!this.newWebsiteName) throw new Error('Vous n\'avez pas donné de nom à votre site')
|
|
246
|
+
this.loading = true
|
|
247
|
+
const websiteId = toSafeId(this.newWebsiteName)
|
|
248
|
+
const result = await websiteCreate({
|
|
249
|
+
websiteId,
|
|
250
|
+
data: {
|
|
251
|
+
name: this.newWebsiteName,
|
|
252
|
+
imageUrl: null,
|
|
253
|
+
},
|
|
254
|
+
connectorId: this.user.storage.connectorId
|
|
255
|
+
})
|
|
256
|
+
this.message = 'Le site a bien été créé'
|
|
257
|
+
this.error = ''
|
|
258
|
+
this.newWebsiteName = ''
|
|
259
|
+
this.showCreationForm = false;
|
|
260
|
+
this.websites = await websiteList({connectorId: this.user.storage.connectorId})
|
|
261
|
+
this.empty = this.websites.length === 0
|
|
262
|
+
this.loading = false
|
|
263
|
+
return result
|
|
264
|
+
} catch (error) {
|
|
265
|
+
this.loading = false
|
|
266
|
+
console.error(error)
|
|
267
|
+
this.error = `Erreur, le site n\'a pas été créé - ${error.message}`
|
|
268
|
+
this.message = ''
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
|
|
272
|
+
async deleteWebsite(websiteId) {
|
|
273
|
+
const ok = confirm('Etes vous sûr.e de vouloir supprimer définitivement ce site ?')
|
|
274
|
+
if (!ok) return
|
|
275
|
+
this.loading = true
|
|
276
|
+
try {
|
|
277
|
+
const result = await websiteDelete({websiteId, connectorId: this.user.storage.connectorId})
|
|
278
|
+
this.message = 'Le site a bien été effacé'
|
|
279
|
+
this.error = ''
|
|
280
|
+
this.websites = await websiteList({connectorId: this.user.storage.connectorId})
|
|
281
|
+
this.empty = this.websites.length === 0
|
|
282
|
+
this.loading = false
|
|
283
|
+
return result
|
|
284
|
+
} catch (error) {
|
|
285
|
+
this.loading = false
|
|
286
|
+
this.error = `Erreur, le site n\'a pas été effacé - ${error.message}`
|
|
287
|
+
this.message = ''
|
|
288
|
+
}
|
|
289
|
+
},
|
|
290
|
+
|
|
291
|
+
async duplicateWebsite(websiteId) {
|
|
292
|
+
this.loading = true
|
|
293
|
+
try {
|
|
294
|
+
await websiteDuplicate({websiteId, connectorId: this.user.storage.connectorId, data: { name }})
|
|
295
|
+
this.error = ''
|
|
296
|
+
this.websites = await websiteList({connectorId: this.user.storage.connectorId})
|
|
297
|
+
this.message = 'Le site a bien été dupliqué'
|
|
298
|
+
this.empty = this.websites.length === 0
|
|
299
|
+
this.loading = false
|
|
300
|
+
} catch (error) {
|
|
301
|
+
this.loading = false
|
|
302
|
+
this.error = `Erreur, le site n'a pas été dupliqué - ${error.message}`
|
|
303
|
+
this.message = ''
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
|
|
307
|
+
async renameWebsite(websiteId) {
|
|
308
|
+
const website = this.websites.find(w => w.websiteId === websiteId)
|
|
309
|
+
const name = prompt('Nouveau nom', website.name)
|
|
310
|
+
if (!name) return
|
|
311
|
+
this.loading = true
|
|
312
|
+
try {
|
|
313
|
+
const result = await websiteMetaWrite({websiteId, connectorId: this.user.storage.connectorId, data: { name }})
|
|
314
|
+
this.message = 'Changement de nom effectué'
|
|
315
|
+
this.error = ''
|
|
316
|
+
this.websites = await websiteList({connectorId: this.user.storage.connectorId})
|
|
317
|
+
this.empty = this.websites.length === 0
|
|
318
|
+
this.loading = false
|
|
319
|
+
return result
|
|
320
|
+
} catch (error) {
|
|
321
|
+
this.loading = false
|
|
322
|
+
this.error = `Erreur, le nom n\'a pas été changé - ${error.message}`
|
|
323
|
+
this.message = ''
|
|
324
|
+
}
|
|
325
|
+
},
|
|
326
|
+
},
|
|
327
|
+
};
|
|
328
|
+
// Prepare elements for vue
|
|
329
|
+
document.querySelectorAll('[v-text], [v-html]')
|
|
330
|
+
.forEach(el => el.innerText = '')
|
|
331
|
+
|
|
332
|
+
// Create the app
|
|
333
|
+
const app = createApp(App);
|
|
334
|
+
|
|
335
|
+
// Suppress "v-text will override element children" warning
|
|
336
|
+
app.config.compilerOptions.directiveTransforms = {
|
|
337
|
+
text: false,
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
// Mount the app
|
|
341
|
+
app.mount('.app');
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
// Remove loading
|
|
345
|
+
setTimeout(() => {
|
|
346
|
+
document.querySelector('.before-js').classList.add('after-js')
|
|
347
|
+
}, 100)
|
|
348
|
+
})
|
|
349
|
+
</script>
|
|
350
|
+
|
|
351
|
+
<title>Silex Dashboard</title>
|
|
352
|
+
<link rel="icon" href="/assets/favicon-32x32.png" />
|
|
353
|
+
<meta name="og:title" property="og:title" content="Silex Dashboard"/>
|
|
354
|
+
<link href="https://www.googleapis.com" rel="preconnect" ><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin ><link href="https://www.googleapis.com/css?family=Ubuntu&display=swap" rel="stylesheet" ></head>
|
|
355
|
+
<body id="i2hcfw" class="body app before-js"><A id="ixzhcr" href="/" class="button button-bar__item--secondary">< Retour</A><div id="imawg3" class="bg-silex-purpel"><div id="imgx81" class=""><div id="iikf0s" class="box box_login"><div id="ie0dxn" class="text-centered"><img id="ior0hl" src="/assets/logo-silex.svg"/><p id="it2175" class="subtitle-16">Connectez-vous pour continuer</p><div id="ilq8ui" class="text-centered">Avez-vous besoin d'aide ? Consultez <a href="https://docs.silex.me/fr/user/login" target="_blank">la documentation</a>.</div></div><h3 id="iqc1xf" class="margin-top">Recommandé et gratuit</h3><div id="in62y2">
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
<div id="isqe61" class="">
|
|
360
|
+
<a id="i0vhjr" href="/api/connector/login?connectorId=gitlab&type=STORAGE" class="connector__card" data-style="background: rgba(252, 109, 38, 0.2); color: #2B1B63;" title="Gitlab.com est le service que nous recommandons pour héberger votre site web Silex. Nous faisons confiance à l'entreprise derrière ce service, allez les voir."><div id="io3lid" class="button-bar__item__icon"><svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="100%" height="100%" viewBox="0 0 1000 963.197" version="1.1" id="svg85"> <sodipodi:namedview id="namedview87" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" showgrid="false" inkscape:zoom="1" inkscape:cx="991.5" inkscape:cy="964.5" inkscape:window-width="1126" inkscape:window-height="895" inkscape:window-x="774" inkscape:window-y="12" inkscape:window-maximized="0" inkscape:current-layer="svg85" /> <defs id="defs74"> <style id="style72"> .cls-1{fill:#e24329;} .cls-2{fill:#fc6d26;} .cls-3{fill:#fca326;} </style> </defs> <g id="LOGO" transform="matrix(5.2068817,0,0,5.2068817,-489.30756,-507.76085)"> <path class="cls-1" d="m 282.83,170.73 -0.27,-0.69 -26.14,-68.22 a 6.81,6.81 0 0 0 -2.69,-3.24 7,7 0 0 0 -8,0.43 7,7 0 0 0 -2.32,3.52 l -17.65,54 h -71.47 l -17.65,-54 a 6.86,6.86 0 0 0 -2.32,-3.53 7,7 0 0 0 -8,-0.43 6.87,6.87 0 0 0 -2.69,3.24 L 97.44,170 l -0.26,0.69 a 48.54,48.54 0 0 0 16.1,56.1 l 0.09,0.07 0.24,0.17 39.82,29.82 19.7,14.91 12,9.06 a 8.07,8.07 0 0 0 9.76,0 l 12,-9.06 19.7,-14.91 40.06,-30 0.1,-0.08 a 48.56,48.56 0 0 0 16.08,-56.04 z" id="path76" /> <path class="cls-2" d="m 282.83,170.73 -0.27,-0.69 a 88.3,88.3 0 0 0 -35.15,15.8 L 190,229.25 c 19.55,14.79 36.57,27.64 36.57,27.64 l 40.06,-30 0.1,-0.08 a 48.56,48.56 0 0 0 16.1,-56.08 z" id="path78" /> <path class="cls-3" d="m 153.43,256.89 19.7,14.91 12,9.06 a 8.07,8.07 0 0 0 9.76,0 l 12,-9.06 19.7,-14.91 c 0,0 -17.04,-12.89 -36.59,-27.64 -19.55,14.75 -36.57,27.64 -36.57,27.64 z" id="path80" /> <path class="cls-2" d="M 132.58,185.84 A 88.19,88.19 0 0 0 97.44,170 l -0.26,0.69 a 48.54,48.54 0 0 0 16.1,56.1 l 0.09,0.07 0.24,0.17 39.82,29.82 c 0,0 17,-12.85 36.57,-27.64 z" id="path82" /> </g> </svg></div><div id="i87asw" class="connector__description">Se connecter avec GitLab.com</div></a></div>
|
|
361
|
+
|
|
362
|
+
</div><h3 id="i8w75b" class="margin-30">Utilisateurs avancés</h3><div id="igp4xl">
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
<div id="id9k25" href="" class="">
|
|
369
|
+
<a href="/api/connector/login?connectorId=ftp&type=STORAGE" id="irgt6z" class="connector__card" data-style="background: #0066CC; color: #ffffff;" title="FTP est destiné aux utilisateurs professionnels qui souhaitent héberger leurs sites web avec une société d'hébergement de leur choix.
|
|
370
|
+
"><div class="button-bar__item__icon"><svg xmlns='http://www.w3.org/2000/svg' height='100%' viewBox='0 0 512 512'> <path d='M64 32C28.7 32 0 60.7 0 96v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm48 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V352c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z' /> </svg></div><div class="connector__description">Se connecter avec un FTP</div></a></div></div><div id="i3cney" class="button-bar"><a id="iacshy" class="button big-button connector__card" v-if="!loading" :key="index" :style="{ backgroundColor: connector.background, color: connector.color }" v-for="(connector, index) in connectors" v-on-click="openLogin(connector)"><div id="iiwn36"><div class="button-bar__item__icon" :style="`background: url('${connector.icon}'); background-repeat: no-repeat; background-size: contain;`"></div><div id="if4gvb" class="" v-text="connector.displayName">Name<br/></div></div><div id="isndui">This connector is about blablabla<br/></div></a></div></div><div id="i9msnk" class="text-white top-space-20" v-if="error" v-text="message" :test="message">Insert your text here</div><div id="i6akll" class="button button--tertiary text-centered" v-if="error" v-on:click="logout()">Déconnexion</div></div></div></body>
|
|
371
|
+
</html>
|