@@ -1,7 +1,7 @@
|
|||||||
stages:
|
stages:
|
||||||
- build
|
- build
|
||||||
# - test
|
# - test
|
||||||
- review
|
- deploy
|
||||||
|
|
||||||
build_ui:
|
build_ui:
|
||||||
image: node
|
image: node
|
||||||
@@ -31,7 +31,7 @@ start_review:
|
|||||||
- docker
|
- docker
|
||||||
dependencies:
|
dependencies:
|
||||||
- build_ui
|
- build_ui
|
||||||
stage: review
|
stage: deploy
|
||||||
script:
|
script:
|
||||||
- cat index.html
|
- cat index.html
|
||||||
- mkdir _for_upload
|
- mkdir _for_upload
|
||||||
@@ -46,7 +46,7 @@ stop_review:
|
|||||||
image: mwienk/docker-lftp
|
image: mwienk/docker-lftp
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- docker
|
||||||
stage: review
|
stage: deploy
|
||||||
variables:
|
variables:
|
||||||
GIT_STRATEGY: none
|
GIT_STRATEGY: none
|
||||||
script:
|
script:
|
||||||
@@ -58,16 +58,27 @@ stop_review:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
review_fullsync:
|
fullsync_review:
|
||||||
image: mwienk/docker-lftp
|
image: mwienk/docker-lftp
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- docker
|
||||||
dependencies:
|
dependencies:
|
||||||
- build_ui
|
- build_ui
|
||||||
stage: review
|
stage: deploy
|
||||||
script:
|
script:
|
||||||
- mkdir _for_upload
|
- mkdir _for_upload
|
||||||
- mv assets build conf index.html _for_upload
|
- mv assets build conf index.html _for_upload
|
||||||
- lftp -c "set sftp:auto-confirm yes; open -u intern_basispanel_ui,$FTP_PASSWORD sftp://ftp.basehosts.de;mkdir -f /$CI_COMMIT_REF_NAME; mirror -v --transfer-all -e -R -L _for_upload/ /$CI_COMMIT_REF_NAME"
|
- lftp -c "set sftp:auto-confirm yes; open -u intern_basispanel_ui,$FTP_PASSWORD sftp://ftp.basehosts.de;mkdir -f /$CI_COMMIT_REF_NAME; mirror -v --transfer-all -e -R -L _for_upload/ /$CI_COMMIT_REF_NAME"
|
||||||
when: manual
|
when: manual
|
||||||
|
|
||||||
|
|
||||||
|
docker_test:
|
||||||
|
tags:
|
||||||
|
- shell
|
||||||
|
dependencies:
|
||||||
|
- build_ui
|
||||||
|
stage: deploy
|
||||||
|
script:
|
||||||
|
- mkdir _for_docker
|
||||||
|
- mv assets build conf index.html _for_docker
|
||||||
|
- docker-compose up -d --build
|
||||||
|
|||||||
3
Dockerfile
Normal file
3
Dockerfile
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
FROM larsks/thttpd
|
||||||
|
|
||||||
|
ADD _for_docker/ /
|
||||||
@@ -22,9 +22,9 @@
|
|||||||
"icon": "icon-contacts"
|
"icon": "icon-contacts"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "FormDemo",
|
"name": "Settings",
|
||||||
"to": "/formdemo",
|
"to": "/settings",
|
||||||
"icon": "icon-contacts"
|
"icon": "icon-cog"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"profile": [
|
"profile": [
|
||||||
@@ -63,9 +63,9 @@
|
|||||||
"content": "<domainlist></domainlist>"
|
"content": "<domainlist></domainlist>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "FormDemo",
|
"name": "Settings",
|
||||||
"to": "/formdemo",
|
"to": "/settings",
|
||||||
"content": "<form-demo></form-demo>"
|
"content": "<settings></settings>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Logout",
|
"name": "Logout",
|
||||||
|
|||||||
23
docker-compose.yml
Normal file
23
docker-compose.yml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
version: "2.1"
|
||||||
|
|
||||||
|
services:
|
||||||
|
frontend:
|
||||||
|
build: .
|
||||||
|
image: ${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME}
|
||||||
|
container_name: ${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- web
|
||||||
|
- default
|
||||||
|
expose:
|
||||||
|
- "80"
|
||||||
|
labels:
|
||||||
|
- "traefik.backend=${CI_PROJECT_NAME}.${CI_COMMIT_REF_NAME}"
|
||||||
|
- "traefik.docker.network=web"
|
||||||
|
- "traefik.frontend.rule=Host:${CI_COMMIT_REF_NAME}.${CI_PROJECT_NAME}.dev.basehosts.de"
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.port=80"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
web:
|
||||||
|
external: true
|
||||||
30
src/app.less
30
src/app.less
@@ -89,7 +89,7 @@ a:hover {color:#901624;}
|
|||||||
--------------------------------------------------------------*/
|
--------------------------------------------------------------*/
|
||||||
.input_holder {margin-bottom:20px; display:block;}
|
.input_holder {margin-bottom:20px; display:block;}
|
||||||
.input_header {margin-bottom:10px;}
|
.input_header {margin-bottom:10px;}
|
||||||
.input_description {font-size:13px; color: @text_color;}
|
.input_description {font-size:13px; color: lighten(@text_color, 20%);}
|
||||||
input, textarea, select {
|
input, textarea, select {
|
||||||
font-family: @font_family;
|
font-family: @font_family;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -101,17 +101,38 @@ input, textarea, select {
|
|||||||
border: solid 1px #CCC;
|
border: solid 1px #CCC;
|
||||||
outline: none;
|
outline: none;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
transition: all 0.3s;
|
transition: background 0.3s, color 0.3s, border 0.3s;
|
||||||
}
|
}
|
||||||
textarea {padding:10px; height:auto;}
|
textarea {padding:10px; height:auto;}
|
||||||
input:focus, textarea:focus, select:focus {background:#FFF; border-color: @cms_brand_primary;}
|
input:focus, textarea:focus, select:focus {background:#FFF; border-color: @cms_brand_primary;}
|
||||||
label {font-weight:600; color: @text_color;}
|
label {font-weight:600; color: @text_color;}
|
||||||
|
|
||||||
|
.checkbox_holder {
|
||||||
|
position: relative;
|
||||||
|
height: 100%;
|
||||||
|
min-height: 18px;
|
||||||
|
|
||||||
|
&:hover .check_checkbox {
|
||||||
|
border: 1px solid @cms_brand_primary;
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
margin-top: -9px;
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
cursor: pointer;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
input[type="checkbox"] {
|
input[type="checkbox"] {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: -10px;
|
top: -10px;
|
||||||
left: -10px;
|
left: -10px;
|
||||||
line-height:50px;
|
line-height: 50px;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
@@ -119,7 +140,6 @@ input[type="checkbox"] {
|
|||||||
width: auto;
|
width: auto;
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
.checkbox_holder {position:absolute; top:0px; bottom:0px;}
|
|
||||||
.check_checkbox {
|
.check_checkbox {
|
||||||
background: #FFF;
|
background: #FFF;
|
||||||
display: block;
|
display: block;
|
||||||
@@ -167,8 +187,6 @@ button{
|
|||||||
padding: 0px 30px;
|
padding: 0px 30px;
|
||||||
border-radius: 20px;
|
border-radius: 20px;
|
||||||
}
|
}
|
||||||
.cell_checkbox label {width:18px; height:18px; display:block; cursor:pointer; z-index:10; position: absolute; top:50%; margin-top:-9px;}
|
|
||||||
.checkbox_holder:hover .check_checkbox {border: 1px solid @cms_brand_primary;}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------
|
/*--------------------------------------------------------------
|
||||||
# CMS CONTENT FORM
|
# CMS CONTENT FORM
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
<template>
|
<template>
|
||||||
<form @submit.prevent="submit()">
|
<form @submit.prevent="submit()">
|
||||||
<div v-for="(item, key) in elements" :key="key">
|
<div v-for="(item, key) in elements" :key="key">
|
||||||
<my-input
|
<component
|
||||||
:description="item.description"
|
:is="item.element"
|
||||||
:label="item.label"
|
|
||||||
:name="key"
|
:name="key"
|
||||||
:placeholder="item.placeholder"
|
:label="item.label"
|
||||||
:type="item.type"
|
:description="item.description"
|
||||||
|
:props="item.props"
|
||||||
v-model="formData[key]"
|
v-model="formData[key]"
|
||||||
@validate="validateData(key)"
|
@validate="validateData(key)"
|
||||||
:invalid="formErrors[key]"
|
:invalid="formErrors[key]"
|
||||||
:validatorMessage="formErrors[key] ? formErrors[key].message : ''"
|
:validatorMessage="formErrors[key] ? formErrors[key].message : ''"
|
||||||
>
|
>
|
||||||
</my-input>
|
</component>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<button class="button" v-for="(b, i) in buttons" :key="i" @click.prevent="buttonClick(b.type)">{{ b.label }}</button>
|
<button class="button" v-for="(b, i) in buttons" :key="i" @click.prevent="buttonClick(b.type)">{{ b.label }}</button>
|
||||||
@@ -21,13 +21,9 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import MyInput from './my-input.vue';
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "MyForm",
|
name: "MyForm",
|
||||||
components: {
|
components: {},
|
||||||
MyInput
|
|
||||||
},
|
|
||||||
props: {
|
props: {
|
||||||
elements: {
|
elements: {
|
||||||
type: Object,
|
type: Object,
|
||||||
|
|||||||
@@ -5,44 +5,54 @@
|
|||||||
<div class="input_description" v-if="description">{{ description }}</div>
|
<div class="input_description" v-if="description">{{ description }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<input type="text" v-if="type == 'text'"
|
<!-- -->
|
||||||
|
<input type="text" v-if="props && props.type == 'text'"
|
||||||
v-model="currentValue"
|
v-model="currentValue"
|
||||||
:name="name"
|
|
||||||
:placeholder="placeholder"
|
|
||||||
@blur="validate()"
|
|
||||||
@change="() => $emit('change', currentValue)"
|
|
||||||
:class="{invalid}"
|
:class="{invalid}"
|
||||||
|
:id="name"
|
||||||
|
:name="name"
|
||||||
|
:placeholder="props.placeholder"
|
||||||
|
@blur="validate"
|
||||||
|
@change="handleChange"
|
||||||
>
|
>
|
||||||
<input type="password" v-else-if="type == 'password'"
|
<input type="password" v-else-if="props && props.type == 'password'"
|
||||||
v-model="currentValue"
|
v-model="currentValue"
|
||||||
:name="name"
|
|
||||||
:placeholder="placeholder"
|
|
||||||
@blur="validate()"
|
|
||||||
@change="() => $emit('change', currentValue)"
|
|
||||||
:class="{invalid}"
|
:class="{invalid}"
|
||||||
|
:id="name"
|
||||||
|
:name="name"
|
||||||
|
:placeholder="props.placeholder"
|
||||||
|
@blur="validate"
|
||||||
|
@change="handleChange"
|
||||||
>
|
>
|
||||||
|
<div class="checkbox_holder" v-else-if="props && props.type == 'checkbox'">
|
||||||
|
<label :for="name"></label>
|
||||||
|
<input type="checkbox"
|
||||||
|
v-model="currentValue"
|
||||||
|
:id="name"
|
||||||
|
:name="name"
|
||||||
|
@change="handleChange"
|
||||||
|
>
|
||||||
|
<div class="check_checkbox"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div v-if="invalid && validatorMessage">{{ validatorMessage }}</div>
|
<div v-if="invalid && validatorMessage">{{ validatorMessage }}</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.invalid {
|
.invalid {
|
||||||
background-color: #fcc;
|
background-color: #fcc;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: "MyInput",
|
name: "BasicInput",
|
||||||
props: [
|
props: [
|
||||||
'description',
|
'description',
|
||||||
'label',
|
'label',
|
||||||
'name',
|
'name',
|
||||||
'placeholder',
|
'props',
|
||||||
'type',
|
|
||||||
'value',
|
'value',
|
||||||
'invalid',
|
'invalid',
|
||||||
'validatorMessage'
|
'validatorMessage'
|
||||||
@@ -55,6 +65,9 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
validate() {
|
validate() {
|
||||||
this.$emit('validate', this.currentValue);
|
this.$emit('validate', this.currentValue);
|
||||||
|
},
|
||||||
|
handleChange() {
|
||||||
|
this.$emit('change', this.currentValue);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="Scroll-Table">
|
<div class="Scroll-Table">
|
||||||
<my-input placeholder="Suche" type="text" @change="searchChanged" v-model="currentSearch"></my-input>
|
<my-input :props="{type: 'text', placeholder: 'Suche'}" @change="searchChanged" v-model="currentSearch"></my-input>
|
||||||
<my-table :actions="actions" :columns="columns" :rows="rows"
|
<my-table :actions="actions" :columns="columns" :rows="rows"
|
||||||
:currentOrderBy="currentOrderBy"
|
:currentOrderBy="currentOrderBy"
|
||||||
:currentOrderDesc="currentOrderDesc"
|
:currentOrderDesc="currentOrderDesc"
|
||||||
@@ -14,8 +14,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import MyTable from './my-table.vue';
|
import MyTable from 'components/my-table';
|
||||||
import MyInput from './my-input.vue';
|
import MyInput from 'components/my-input';
|
||||||
|
|
||||||
import { ObserveVisibility } from 'vue-observe-visibility/dist/vue-observe-visibility';
|
import { ObserveVisibility } from 'vue-observe-visibility/dist/vue-observe-visibility';
|
||||||
|
|
||||||
|
|||||||
61
src/components/textarea-input.vue
Normal file
61
src/components/textarea-input.vue
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
<template>
|
||||||
|
<div class="input_holder">
|
||||||
|
<div class="input_header" v-if="label || description">
|
||||||
|
<label :for="name" v-if="label">{{ label }}</label>
|
||||||
|
<div class="input_description" v-if="description">{{ description }}</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<textarea v-model="currentValue"
|
||||||
|
:id="name"
|
||||||
|
:name="name"
|
||||||
|
:class="{invalid}"
|
||||||
|
:placeholder="props ? props.placeholder : ''"
|
||||||
|
@blur="validate"
|
||||||
|
@change="handleChange"
|
||||||
|
>
|
||||||
|
</textarea>
|
||||||
|
|
||||||
|
<div v-if="invalid && validatorMessage">{{ validatorMessage }}</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.invalid {
|
||||||
|
background-color: #fcc;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "TextareaInput",
|
||||||
|
props: [
|
||||||
|
'description',
|
||||||
|
'label',
|
||||||
|
'name',
|
||||||
|
'props',
|
||||||
|
'value',
|
||||||
|
'invalid',
|
||||||
|
'validatorMessage'
|
||||||
|
],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
currentValue: this.value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
validate() {
|
||||||
|
this.$emit('validate', this.currentValue);
|
||||||
|
},
|
||||||
|
handleChange() {
|
||||||
|
this.$emit('change', this.currentValue);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
currentValue(val) {
|
||||||
|
this.$emit('input', val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -162,6 +162,7 @@ export default {
|
|||||||
padding: 4px 10px;
|
padding: 4px 10px;
|
||||||
font-size: 0;
|
font-size: 0;
|
||||||
color: white;
|
color: white;
|
||||||
|
user-select: none;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
@font_family: "Open Sans", sans-serif;
|
@font_family: "Open Sans", sans-serif;
|
||||||
@text_color: #333;
|
@text_color: #333;
|
||||||
@font_size: 14px;
|
@font_size: 15px;
|
||||||
|
|
||||||
@line_height_base: 1.4;
|
@line_height_base: 1.4;
|
||||||
@line_height_heading: 1.2;
|
@line_height_heading: 1.2;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="Dashboard">
|
<div class="Dashboard">
|
||||||
<h2>Dashboard</h2>
|
<h1>Dashboard</h1>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -1,98 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="cms_content_form">
|
|
||||||
<form action="">
|
|
||||||
<div class="row">
|
|
||||||
<div class="tab8">
|
|
||||||
<my-input type="text" value="" v-model="titel" placeholder="Titel hier eintragen" label="Titel" description="Text .."></my-input>
|
|
||||||
<div class="input_holder">
|
|
||||||
<header class="input_header">
|
|
||||||
<label for="">Permalink</label>
|
|
||||||
<div class="input_description">Hier steht ein Beschreibungstext für etwas begriffsstutzige Menschen, die eine Beschreibung zum Befüllen des Feldes brauchen.</div>
|
|
||||||
</header>
|
|
||||||
<input type="text" value="" name="" placeholder="Permalink">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input_holder">
|
|
||||||
<header class="input_header">
|
|
||||||
<label for="">Inhalt</label>
|
|
||||||
<div class="input_description">Hier steht ein Beschreibungstext für etwas begriffsstutzige Menschen, die eine Beschreibung zum Befüllen des Feldes brauchen.</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<textarea name="" id="" rows="10" placeholder="Dies ist ein normales Textfeld"></textarea>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Fieldgroup -->
|
|
||||||
<div class="cms_fieldgroup fieldgroup_open">
|
|
||||||
<header class="cms_fieldgroup_header">Feldergruppe <div class="cms_fieldgroup_trigger"><i class="ion-chevron-down"></i></div></header>
|
|
||||||
<div class="cms_fieldgroup_content">
|
|
||||||
<div class="input_holder">
|
|
||||||
<header class="input_header">
|
|
||||||
<label for="">Noch ein Feld</label>
|
|
||||||
<!-- <div class="input_description">Hier steht ein Beschreibungstext für etwas begriffsstutzige Menschen, die eine Beschreibung zum Befüllen des Feldes brauchen.</div> -->
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<input type="text" value="" name="" placeholder="Noch ein Feld">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input_holder">
|
|
||||||
<header class="input_header">
|
|
||||||
<label for="">Noch ein Feld</label>
|
|
||||||
<!-- <div class="input_description">Hier steht ein Beschreibungstext für etwas begriffsstutzige Menschen, die eine Beschreibung zum Befüllen des Feldes brauchen.</div> -->
|
|
||||||
</header>
|
|
||||||
<textarea name="" id="" rows="10" placeholder="Dies ist ein normales Textfeld"></textarea>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Fieldgroup -->
|
|
||||||
<div class="cms_fieldgroup">
|
|
||||||
<header class="cms_fieldgroup_header">Feldergruppe <div class="cms_fieldgroup_trigger"><i class="ion-chevron-down"></i></div></header>
|
|
||||||
<div class="cms_fieldgroup_content">
|
|
||||||
<div class="input_holder">
|
|
||||||
<header class="input_header">
|
|
||||||
<label for="">Noch ein Feld</label>
|
|
||||||
<!-- <div class="input_description">Hier steht ein Beschreibungstext für etwas begriffsstutzige Menschen, die eine Beschreibung zum Befüllen des Feldes brauchen.</div> -->
|
|
||||||
</header>
|
|
||||||
<input type="text" value="" name="" placeholder="Noch ein Feld">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input_holder">
|
|
||||||
<header class="input_header">
|
|
||||||
<label for="">Noch ein Feld</label>
|
|
||||||
<!-- <div class="input_description">Hier steht ein Beschreibungstext für etwas begriffsstutzige Menschen, die eine Beschreibung zum Befüllen des Feldes brauchen.</div> -->
|
|
||||||
</header>
|
|
||||||
<textarea name="" id="" rows="10" placeholder="Dies ist ein normales Textfeld"></textarea>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="tab4">
|
|
||||||
<div class="cms_content_form_sidebar">
|
|
||||||
Sidebar
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</template>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import MyInput from "components/my-input.vue";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: "DemoForm",
|
|
||||||
components: {
|
|
||||||
MyInput
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
titel: "plapla"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
@@ -7,14 +7,10 @@
|
|||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<p class="intro_text">Bitte melde dich mit deinen Benutzerdaten an.</p>
|
<p class="intro_text">Bitte melde dich mit deinen Benutzerdaten an.</p>
|
||||||
|
|
||||||
<my-form :elements="elements" :buttons="buttons" :submitHandler="login"></my-form>
|
<my-form :elements="elements" :buttons="buttons" :submitHandler="login"></my-form>
|
||||||
|
|
||||||
<transition name="component-fade">
|
<transition name="component-fade">
|
||||||
<div class="loginerror" v-show="loginError">{{ loginError }}</div>
|
<div class="loginerror" v-show="loginError">{{ loginError }}</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<div style="clear:both;"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -22,11 +18,13 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import MyForm from "components/my-form";
|
import MyForm from "components/my-form";
|
||||||
|
import MyInput from "components/my-input";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "LoginForm",
|
name: "LoginForm",
|
||||||
components: {
|
components: {
|
||||||
MyForm
|
MyForm,
|
||||||
|
MyInput
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -34,18 +32,24 @@ export default {
|
|||||||
password: "",
|
password: "",
|
||||||
elements: {
|
elements: {
|
||||||
username: {
|
username: {
|
||||||
placeholder: "Benutzername",
|
element: MyInput,
|
||||||
icon: "icon-user",
|
icon: "icon-user",
|
||||||
type: "text",
|
|
||||||
required: true,
|
required: true,
|
||||||
requiredMessage: "Der Benutzername wird benötigt!"
|
requiredMessage: "Der Benutzername wird benötigt!",
|
||||||
|
props: {
|
||||||
|
type: "text",
|
||||||
|
placeholder: "Benutzername"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
password: {
|
password: {
|
||||||
placeholder: "Passwort",
|
element: MyInput,
|
||||||
icon: "icon-key",
|
icon: "icon-key",
|
||||||
type: "password",
|
|
||||||
required: true,
|
required: true,
|
||||||
requiredMessage: "Das Passwort wird benötigt!"
|
requiredMessage: "Das Passwort wird benötigt!",
|
||||||
|
props: {
|
||||||
|
type: "password",
|
||||||
|
placeholder: "Passwort"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
buttons: [{
|
buttons: [{
|
||||||
@@ -119,12 +123,12 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.logo{
|
.logo{
|
||||||
.clearfix();
|
|
||||||
line-height:0; margin-bottom:15px; text-align:center;
|
line-height:0; margin-bottom:15px; text-align:center;
|
||||||
img {width:100%; max-width:72px;}
|
img {width:100%; max-width:72px;}
|
||||||
}
|
}
|
||||||
|
|
||||||
.content{
|
.content{
|
||||||
|
.clearfix();
|
||||||
p {text-align:center; color: white; font-size:15px; line-height:1.2;}
|
p {text-align:center; color: white; font-size:15px; line-height:1.2;}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
188
src/views/forms/settings.vue
Normal file
188
src/views/forms/settings.vue
Normal file
@@ -0,0 +1,188 @@
|
|||||||
|
<template>
|
||||||
|
|
||||||
|
<div class="cms_content_form">
|
||||||
|
<div class="row">
|
||||||
|
<div class="tab8">
|
||||||
|
<my-form :elements="elements" :buttons="buttons" :submitHandler="submit"></my-form>
|
||||||
|
</div>
|
||||||
|
<div class="tab4">
|
||||||
|
<div class="cms_content_form_sidebar">
|
||||||
|
Sidebar
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- <form action="">
|
||||||
|
<div class="row">
|
||||||
|
<div class="tab8">
|
||||||
|
<div class="input_holder">
|
||||||
|
<header class="input_header">
|
||||||
|
<label for="">Titel</label>
|
||||||
|
</header>
|
||||||
|
<input type="text" value="" name="" placeholder="Titel hier eintragen">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="input_holder">
|
||||||
|
<header class="input_header">
|
||||||
|
<label for="">Permalink</label>
|
||||||
|
<div class="input_description">Hier steht ein Beschreibungstext für etwas begriffsstutzige Menschen, die eine Beschreibung zum Befüllen des Feldes brauchen.</div>
|
||||||
|
</header>
|
||||||
|
<input type="text" value="" name="" placeholder="Permalink">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="input_holder">
|
||||||
|
<header class="input_header">
|
||||||
|
<label for="">Inhalt</label>
|
||||||
|
<div class="input_description">Hier steht ein Beschreibungstext für etwas begriffsstutzige Menschen, die eine Beschreibung zum Befüllen des Feldes brauchen.</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<textarea name="" id="" rows="10" placeholder="Dies ist ein normales Textfeld"></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="cms_fieldgroup fieldgroup_open">
|
||||||
|
<header class="cms_fieldgroup_header">Feldergruppe <div class="cms_fieldgroup_trigger"><i class="ion-chevron-down"></i></div></header>
|
||||||
|
<div class="cms_fieldgroup_content">
|
||||||
|
<div class="input_holder">
|
||||||
|
<header class="input_header">
|
||||||
|
<label for="">Noch ein Feld</label>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<input type="text" value="" name="" placeholder="Noch ein Feld">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="input_holder">
|
||||||
|
<header class="input_header">
|
||||||
|
<label for="">Noch ein Feld</label>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<textarea name="" id="" rows="10" placeholder="Dies ist ein normales Textfeld"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="cms_fieldgroup">
|
||||||
|
<header class="cms_fieldgroup_header">Feldergruppe <div class="cms_fieldgroup_trigger"><i class="ion-chevron-down"></i></div></header>
|
||||||
|
<div class="cms_fieldgroup_content">
|
||||||
|
<div class="input_holder">
|
||||||
|
<header class="input_header">
|
||||||
|
<label for="">Noch ein Feld</label>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<input type="text" value="" name="" placeholder="Noch ein Feld">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="input_holder">
|
||||||
|
<header class="input_header">
|
||||||
|
<label for="">Noch ein Feld</label>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<textarea name="" id="" rows="10" placeholder="Dies ist ein normales Textfeld"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</div> -->
|
||||||
|
<!-- <div id="login_form">
|
||||||
|
<div class="holder">
|
||||||
|
<div class="logo">
|
||||||
|
<img src="assets/images/cms_logo_white.png" alt="">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content">
|
||||||
|
<p class="intro_text">Bitte melde dich mit deinen Benutzerdaten an.</p>
|
||||||
|
|
||||||
|
<my-form :elements="elements" :buttons="buttons" :submitHandler="login"></my-form>
|
||||||
|
|
||||||
|
<div style="clear:both;"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> -->
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import MyForm from "components/my-form";
|
||||||
|
import MyInput from "components/my-input";
|
||||||
|
import TextareaInput from "components/textarea-input";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "FormDemo",
|
||||||
|
components: {
|
||||||
|
MyForm,
|
||||||
|
MyInput,
|
||||||
|
TextareaInput
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
username: "",
|
||||||
|
password: "",
|
||||||
|
elements: {
|
||||||
|
title: {
|
||||||
|
label: "Titel",
|
||||||
|
required: true,
|
||||||
|
element: MyInput,
|
||||||
|
props: {
|
||||||
|
type: "text",
|
||||||
|
placeholder: "Titel hier eintragen"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
permalink: {
|
||||||
|
label: "Permalink",
|
||||||
|
description: "Hier steht ein Beschreibungstext für etwas begriffsstutzige Menschen, die eine Beschreibung zum Befüllen des Feldes brauchen.",
|
||||||
|
required: true,
|
||||||
|
element: MyInput,
|
||||||
|
props: {
|
||||||
|
type: "text",
|
||||||
|
placeholder: "Permalink"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
label: "Inhalt",
|
||||||
|
description: "Hier steht ein Beschreibungstext für etwas begriffsstutzige Menschen, die eine Beschreibung zum Befüllen des Feldes brauchen.",
|
||||||
|
required: true,
|
||||||
|
element: TextareaInput,
|
||||||
|
props: {
|
||||||
|
placeholder: "Inhalt"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
public: {
|
||||||
|
label: "Is Public",
|
||||||
|
required: true,
|
||||||
|
element: MyInput,
|
||||||
|
props: {
|
||||||
|
type: "checkbox"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
buttons: [{
|
||||||
|
label: "login",
|
||||||
|
type: "submit"
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
submit(formData) {
|
||||||
|
console.log("submit", JSON.stringify(formData));
|
||||||
|
// this.$store.dispatch("login", formData)
|
||||||
|
// .then(user => {
|
||||||
|
// console.log("---- user login --------");
|
||||||
|
// console.log(user);
|
||||||
|
// this.$router.go(-1);
|
||||||
|
// })
|
||||||
|
// .catch(error => {
|
||||||
|
// console.log("---- login error -------");
|
||||||
|
// console.log(error);
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
@import "~mixins";
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="Domainlist">
|
<div class="Domainlist">
|
||||||
<h2>Domainlist</h2>
|
<h1>Domainlist</h1>
|
||||||
<scroll-table :actions="actions" :columns="columns" :new-rows="newRows" :has-more="hasMore" :loading="loading" :handler="more" orderBy="Name" :orderDesc="false" :limit="50"></scroll-table>
|
<scroll-table :actions="actions" :columns="columns" :new-rows="newRows" :has-more="hasMore" :loading="loading" :handler="more" orderBy="Name" :orderDesc="false" :limit="50"></scroll-table>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import ScrollTable from '../../components/scroll-table.vue';
|
import ScrollTable from 'components/scroll-table.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Domainlist",
|
name: "Domainlist",
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="Userlist">
|
<div class="Userlist">
|
||||||
<h2>Userlist</h2>
|
<h1>Userlist</h1>
|
||||||
<scroll-table :actions="actions" :columns="columns" :new-rows="newRows" :has-more="hasMore" :loading="loading" :handler="more" orderBy="username" :orderDesc="false" :limit="50"></scroll-table>
|
<scroll-table :actions="actions" :columns="columns" :new-rows="newRows" :has-more="hasMore" :loading="loading" :handler="more" orderBy="username" :orderDesc="false" :limit="50"></scroll-table>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import ScrollTable from '../../components/scroll-table.vue';
|
import ScrollTable from 'components/scroll-table.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Userlist",
|
name: "Userlist",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import LoginForm from './forms/login.vue';
|
|||||||
import Logout from './forms/logout.vue';
|
import Logout from './forms/logout.vue';
|
||||||
import Userlist from './lists/userlist.vue';
|
import Userlist from './lists/userlist.vue';
|
||||||
import Domainlist from './lists/domainlist.vue';
|
import Domainlist from './lists/domainlist.vue';
|
||||||
import FormDemo from './forms/form-demo.vue';
|
import Settings from 'views/forms/settings.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
Dashboard,
|
Dashboard,
|
||||||
@@ -11,5 +11,5 @@ export default {
|
|||||||
Logout,
|
Logout,
|
||||||
Userlist,
|
Userlist,
|
||||||
Domainlist,
|
Domainlist,
|
||||||
FormDemo
|
Settings
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user