@ -0,0 +1,2 @@
@@ -0,0 +1,2 @@
|
||||
Kara has been moved to luna-development core repository. |
||||
This repository is only for issues. |
@ -1,93 +0,0 @@
@@ -1,93 +0,0 @@
|
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<title> |
||||
Kara - Add reponses |
||||
</title> |
||||
<meta charset="utf8"> |
||||
<link rel="icon" href="/favicon.ico"> |
||||
<link rel="manifest" href="manifest/kara.json"> |
||||
<link href="https://bootswatch.com/4/slate/bootstrap.min.css" rel="stylesheet" type="text/css"/> |
||||
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, shrink-to-fit=no" |
||||
name="viewport"> |
||||
</head> |
||||
<body> |
||||
<div class="container-fluid" id="kara"> |
||||
<div id="kara-banner" class="bg-dark text-light"> |
||||
<img src="/img/logo/luna/icon.ico" class="header-logo" alt="logo-header"/> |
||||
{{ this.name }} |
||||
</div> |
||||
|
||||
<div class="row" id="addForm"> |
||||
<div class="col"> |
||||
<h5>Add Reaction</h5> |
||||
<div class="form-group"> |
||||
<label for="includeAll">Message must include all search-terms</label> |
||||
<input type="checkbox" id="includeALl" v-model="addModal.includeAll"> |
||||
</div> |
||||
<div class="form-group"> |
||||
<label for="keywords">Keywords (separated with comma)</label> |
||||
<input type="text" id="keywords" v-model="addModal.keywords" class="form-control"> |
||||
</div> |
||||
<div class="form-group"> |
||||
<label>Responses</label> |
||||
<small>(Wildcards: $username$, $botname$)</small> |
||||
<template v-for="(key, responseOption) in addModal.responses"> |
||||
<input type="text" v-model="addModal.responses[responseOption]" class="form-control response-input"> |
||||
</template> |
||||
<div class="float-right"> |
||||
<button class="btn-sm btn-success" @click="addResponseToInput">+</button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="row"> |
||||
<div class="col"> |
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button> |
||||
<button type="button" class="btn btn-primary" data-dismiss="modal" @click="addNewReaction">Add |
||||
</button> |
||||
</div> |
||||
</div> |
||||
|
||||
<link rel="stylesheet" |
||||
:href="'https://maxcdn.bootstrapcdn.com/bootswatch/4.3.1/' + activeTheme + '/bootstrap.min.css'"> |
||||
<link href="app.css" rel="stylesheet" type="text/css"/> |
||||
</div> |
||||
|
||||
|
||||
<script src="https://kit.fontawesome.com/b54a4cceff.js" crossorigin="anonymous"></script> |
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js" crossorigin="anonymous"></script> |
||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" crossorigin="anonymous"></script> |
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" |
||||
crossorigin="anonymous"></script> |
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" crossorigin="anonymous"></script> |
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> |
||||
<script src="https://code.jquery.com/jquery-3.5.1.js"></script> |
||||
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> |
||||
<script src="addReponse.js"></script> |
||||
|
||||
<!-- JavaScript --> |
||||
<script src="//cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/alertify.min.js"></script> |
||||
|
||||
<!-- CSS --> |
||||
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/css/alertify.min.css"/> |
||||
<!-- Default theme --> |
||||
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/css/themes/default.min.css"/> |
||||
<!-- Semantic UI theme --> |
||||
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/css/themes/semantic.min.css"/> |
||||
<!-- Bootstrap theme --> |
||||
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/css/themes/bootstrap.min.css"/> |
||||
|
||||
<!-- |
||||
RTL version |
||||
--> |
||||
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/css/alertify.rtl.min.css"/> |
||||
<!-- Default theme --> |
||||
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/css/themes/default.rtl.min.css"/> |
||||
<!-- Semantic UI theme --> |
||||
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/css/themes/semantic.rtl.min.css"/> |
||||
<!-- Bootstrap theme --> |
||||
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/css/themes/bootstrap.rtl.min.css"/> |
||||
|
||||
</body> |
||||
</html> |
@ -1,85 +0,0 @@
@@ -1,85 +0,0 @@
|
||||
let responses = new Vue({ |
||||
el: '#kara', |
||||
data: { |
||||
name: 'Kara', |
||||
activeTheme: 'slate', |
||||
addModal: { |
||||
includeAll: false, |
||||
keywords: 'keyword', |
||||
responses: [ |
||||
'Answer #1' |
||||
] |
||||
}, |
||||
defaultAddModal: { |
||||
includeAll: false, |
||||
keywords: 'keyword', |
||||
responses: [ |
||||
'Answer #1' |
||||
] |
||||
} |
||||
}, |
||||
mounted() { |
||||
this.addModal = this.defaultAddModal; |
||||
}, |
||||
methods: { |
||||
addMessage(body, bot, me = false) { |
||||
this.messages.push({ |
||||
body: body, |
||||
bot: bot, |
||||
command: body.search('/') === 0, |
||||
me: me, |
||||
time: Date.now() |
||||
}) |
||||
}, |
||||
addResponseToInput() { |
||||
this.addModal.responses.push(''); |
||||
}, |
||||
addNewReaction() { |
||||
let includeAll = this.addModal.includeAll; |
||||
let keywords = this.addModal.keywords.split(','); |
||||
let responses = this.addModal.responses; |
||||
|
||||
let newReaction = { |
||||
includeAll: includeAll, |
||||
keywords: keywords, |
||||
responses: responses |
||||
}; |
||||
|
||||
axios.post('/reactions/create', { |
||||
reaction: newReaction |
||||
}).then((response) => { |
||||
alertify.notify('Reaction saved!', 'success'); |
||||
this.addModal = this.defaultAddModal; |
||||
}).catch((error) => { |
||||
console.log(error); |
||||
alertify.notify(error, 'danger'); |
||||
}); |
||||
}, |
||||
cleanupMessage(message) { |
||||
message = message.toLowerCase(); |
||||
return message.replace('?', '') |
||||
.replace('!', '') |
||||
.replace('.', '') |
||||
.replace(',', '') |
||||
.replace('-', '') |
||||
.replace('_', '') |
||||
.replace('#', '') |
||||
.replace('\'', '') |
||||
.replace('"', '') |
||||
.replace('+', '') |
||||
.replace('*', '') |
||||
.replace('§', '') |
||||
.replace('$', '') |
||||
.replace('%', '') |
||||
.replace('&', '') |
||||
.replace('/', '') |
||||
.replace('(', '') |
||||
.replace(')', '') |
||||
.replace('=', '') |
||||
.replace('\\', '') |
||||
.replace('@', '') |
||||
.replace('~', '') |
||||
.replace('…', ''); |
||||
} |
||||
} |
||||
}); |
@ -1,119 +0,0 @@
@@ -1,119 +0,0 @@
|
||||
body { |
||||
margin: 15px; |
||||
padding: 0; |
||||
} |
||||
|
||||
#kara { |
||||
margin: 0; |
||||
padding: 0; |
||||
width: auto; |
||||
} |
||||
|
||||
@media (min-width: 40em) { |
||||
#kara, |
||||
#kara-banner, |
||||
#chatbox-wrapper { |
||||
margin-left: auto; |
||||
margin-right: auto; |
||||
padding: 0; |
||||
width: 40em; |
||||
} |
||||
} |
||||
|
||||
.message { |
||||
color: black; |
||||
padding: 10px; |
||||
margin-bottom: 5px; |
||||
min-width: 55%; |
||||
max-width: 80%; |
||||
} |
||||
|
||||
img.message-image { |
||||
max-width: 60%; |
||||
border-radius: 0 15px 15px 15px; |
||||
|
||||
margin-bottom: 5px; |
||||
clear: top; |
||||
} |
||||
|
||||
.bot-message { |
||||
border-radius: 0 15px 15px 15px; |
||||
background-color: lightgreen; |
||||
} |
||||
|
||||
.user-message { |
||||
border-radius: 15px 0 15px 15px; |
||||
background-color: lightblue; |
||||
} |
||||
|
||||
#chat-box { |
||||
margin-top: 4em; |
||||
padding-right: 15px; |
||||
overflow-y: scroll; |
||||
height: 65vh; |
||||
padding-bottom: 2em; |
||||
} |
||||
|
||||
#chatbox-wrapper { |
||||
position: fixed; |
||||
padding: 1em; |
||||
bottom: 0; |
||||
left: 0; |
||||
right: 0; |
||||
} |
||||
|
||||
#kara-banner { |
||||
position: fixed; |
||||
height: 3.2em; |
||||
top: 0; |
||||
left: 0; |
||||
right: 0; |
||||
text-align: center; |
||||
padding: 0.7em; |
||||
} |
||||
|
||||
#kara-banner .btn, .add-response-input-button { |
||||
margin-top: -0.3em; |
||||
} |
||||
|
||||
.response-input { |
||||
margin-bottom: 3px; |
||||
} |
||||
|
||||
.form-button { |
||||
width: 100%; |
||||
} |
||||
|
||||
.command-message { |
||||
color: grey; |
||||
} |
||||
|
||||
.command-message::before { |
||||
content: '$: '; |
||||
} |
||||
|
||||
.header-logo { |
||||
max-height: 32px; |
||||
max-width: 32px; |
||||
width: 32px; |
||||
height: 32px; |
||||
margin-right: 5px; |
||||
} |
||||
|
||||
.me-message { |
||||
background-color: orange; |
||||
} |
||||
|
||||
#addForm { |
||||
margin-top: 60px; |
||||
} |
||||
|
||||
.fa-check-circle { |
||||
color: green; |
||||
} |
||||
|
||||
.message-container { |
||||
overflow-y: auto; |
||||
overflow-x: hidden; |
||||
max-height: 300px |
||||
} |
@ -1 +0,0 @@
@@ -1 +0,0 @@
|
||||
.lb-loader,.lightbox{text-align:center;line-height:0;position:absolute;left:0}body.lb-disable-scrolling{overflow:hidden}.lightboxOverlay{position:absolute;top:0;left:0;z-index:9999;background-color:#000;filter:alpha(Opacity=80);opacity:.8;display:none}.lightbox{width:100%;z-index:10000;font-weight:400;outline:0}.lightbox .lb-image{display:block;height:auto;max-width:inherit;max-height:none;border-radius:3px;border:4px solid #fff}.lightbox a img{border:none}.lb-outerContainer{position:relative;width:250px;height:250px;margin:0 auto;border-radius:4px;background-color:#fff}.lb-outerContainer:after{content:"";display:table;clear:both}.lb-loader{top:43%;height:25%;width:100%}.lb-cancel{display:block;width:32px;height:32px;margin:0 auto;background:url(../../../../../Desktop/lightbox2-2.11.3/dist/images/loading.gif) no-repeat}.lb-nav{position:absolute;top:0;left:0;height:100%;width:100%;z-index:10}.lb-container>.nav{left:0}.lb-nav a{outline:0;background-image:url(data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==)}.lb-next,.lb-prev{height:100%;cursor:pointer;display:block}.lb-nav a.lb-prev{width:34%;left:0;float:left;background:url(../../../../../Desktop/lightbox2-2.11.3/dist/images/prev.png) left 48% no-repeat;filter:alpha(Opacity=0);opacity:0;-webkit-transition:opacity .6s;-moz-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s}.lb-nav a.lb-prev:hover{filter:alpha(Opacity=100);opacity:1}.lb-nav a.lb-next{width:64%;right:0;float:right;background:url(../../../../../Desktop/lightbox2-2.11.3/dist/images/next.png) right 48% no-repeat;filter:alpha(Opacity=0);opacity:0;-webkit-transition:opacity .6s;-moz-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s}.lb-nav a.lb-next:hover{filter:alpha(Opacity=100);opacity:1}.lb-dataContainer{margin:0 auto;padding-top:5px;width:100%;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.lb-dataContainer:after{content:"";display:table;clear:both}.lb-data{padding:0 4px;color:#ccc}.lb-data .lb-details{width:85%;float:left;text-align:left;line-height:1.1em}.lb-data .lb-caption{font-size:13px;font-weight:700;line-height:1em}.lb-data .lb-caption a{color:#4ae}.lb-data .lb-number{display:block;clear:left;padding-bottom:1em;font-size:12px;color:#999}.lb-data .lb-close{display:block;float:right;width:30px;height:30px;background:url(../../../../../Desktop/lightbox2-2.11.3/dist/images/close.png) top right no-repeat;text-align:right;outline:0;filter:alpha(Opacity=70);opacity:.7;-webkit-transition:opacity .2s;-moz-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.lb-data .lb-close:hover{cursor:pointer;filter:alpha(Opacity=100);opacity:1} |
@ -1,95 +0,0 @@
@@ -1,95 +0,0 @@
|
||||
#### Commands |
||||
|
||||
|
||||
##### ```/clear``` |
||||
Clears the chat. |
||||
|
||||
##### ```/say``` |
||||
Repeats your message. |
||||
|
||||
##### ```/todo``` |
||||
Adds a new todo to the list. Todos can be viewed, checked and cleared by clicking on the clipboard-icon (only visible once you have a least one todo) in the upper right. |
||||
|
||||
##### ```/weather``` |
||||
Tells you the weather in your location.\ |
||||
Your location can be set in the settings.\ |
||||
\ |
||||
Can be triggered by messages like: |
||||
- _How is the weather?_ |
||||
|
||||
##### ```/joke``` |
||||
Tells a joke with an opener and a delayed punchline.\ |
||||
Categories are: general (default), knock-knock, programming |
||||
\ |
||||
Can be triggered by messages like: |
||||
- _Tell me a joke_ |
||||
- _Tell me a knock knock joke_ |
||||
- _Tell me a programming joke_ |
||||
|
||||
##### ```/meme``` |
||||
Sends a random meme from reddit.\ |
||||
You can pass a subreddit of your choice (Yes, NSFW too..) |
||||
\ |
||||
Some predefined meme-categories can be triggerd by: |
||||
- _Send me a coding meme_ |
||||
- _Send me a dank meme_ |
||||
- _Send me a birb meme_ |
||||
|
||||
|
||||
##### ```/me``` |
||||
Sends a classical "_User farted_" message. |
||||
|
||||
##### ```/lyrics``` |
||||
Fetch lyrics for songs.\ |
||||
Usage: ```/lyrics songname```\ |
||||
(you can also search for things like ```songname artist```) |
||||
|
||||
##### ```/quiz``` |
||||
Get a quiz-question and guess the answer.\ |
||||
You can always give up by typing "i give up". |
||||
|
||||
##### ```/jeopardy``` |
||||
The opposite of ```/quiz```.\ |
||||
Guess the right question to the given answer. |
||||
|
||||
##### ```/dice``` |
||||
Roll the dice! |
||||
|
||||
##### Animal images & facts |
||||
There are a number of commands to receive random animal images & facts. |
||||
|
||||
Animals:\ |
||||
_birb, dog, cat, fox, panda, red_panda & koala_ |
||||
|
||||
To get a fact or an image, use: |
||||
```/youranimalImg``` or ```/youranimalFact``` |
||||
|
||||
|
||||
|
||||
--- |
||||
|
||||
#### Experimental |
||||
|
||||
##### ```/talk``` |
||||
Activate talking. Kara will now talk to you.\ |
||||
The voice-language heavily depends on the device used. |
||||
|
||||
--- |
||||
|
||||
#### Planned features |
||||
|
||||
- Timetracking for work with unlimited trackers |
||||
- Wikipedia lookup |
||||
- News integration |
||||
- Multilanguage (English, German) |
||||
- More natural conversations |
||||
- Chrome Extension (_WIP_) |
||||
- YouTube integration |
||||
- more fun stuff & games |
||||
- maybe some quick image-converting & editing in the future. |
||||
|
||||
--- |
||||
|
||||
#### Found a bug? |
||||
|
||||
Eat it! Or open an [issue](https://git.luna-development.net/neroignis/kara) 🐞 |
Before Width: | Height: | Size: 280 B |
Before Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1006 B |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 27 KiB |
@ -1,211 +0,0 @@
@@ -1,211 +0,0 @@
|
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<title> |
||||
Kara |
||||
</title> |
||||
<meta charset="utf8"> |
||||
<link rel="icon" href="/favicon.ico"> |
||||
<link rel="manifest" href="manifest/kara.json"> |
||||
<link href="https://bootswatch.com/4/slate/bootstrap.min.css" rel="stylesheet" type="text/css"/> |
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/css/alertify.min.css"/> |
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/css/themes/default.min.css"/> |
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/css/themes/bootstrap.min.css"/> |
||||
<link rel="stylesheet" href="css/lightbox.min.css"/> |
||||
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, shrink-to-fit=no" name="viewport"> |
||||
</head> |
||||
<body> |
||||
<div class="container-fluid" id="kara"> |
||||
<div id="kara-banner" class="bg-dark text-light"> |
||||
<img src="/img/logo/luna/icon.ico" class="header-logo" alt="logo-header"/> |
||||
<div class="float-right"> |
||||
<div class="btn btn-sm btn-secondary" data-toggle="modal" data-target="#settingsModal"> |
||||
<i class="fas fa-sliders-h"></i> |
||||
</div> |
||||
<div class="btn btn-sm btn-secondary" data-toggle="modal" data-target="#helpModal"> |
||||
<i class="fas fa-question-circle"></i> |
||||
</div> |
||||
<div class="btn btn-sm btn-secondary" data-toggle="modal" data-target="#todoModal" v-if="todos.length > 0"> |
||||
<i class="fas fa-clipboard"></i> |
||||
</div> |
||||
<div class="btn btn-sm btn-secondary" @click="scrollDown()"> |
||||
<i class="fas fa-chevron-down"></i> |
||||
</div> |
||||
</div> |
||||
{{ this.name }} |
||||
</div> |
||||
|
||||
<div id="chat-box"> |
||||
<template v-for="message in messages"> |
||||
<div :class="'message' + (message.bot === true ? ' bot-message float-left' : ' user-message float-right') + (message.command ? ' command-message' : '') + (message.me ? ' me-message' : '')" v-if="message.body"> |
||||
<template v-if="message.src"> |
||||
<a :href="message.src" data-lightbox="message-images" :data-title="message.body.length < 500 ? message.body : ''"> |
||||
<img :src="message.src" :alt="message.body" class="message-image"/><br/> |
||||
</a> |
||||
</template> |
||||
<div v-html="message.body.replace(/(?:\r\n|\r|\n)/g, '<br>')" class="message-container"></div> |
||||
</div> |
||||
</template> |
||||
<div class="message bot-message typing float-left" v-if="isTyping"> |
||||
<div class="spinner-grow text-secondary" role="status"> |
||||
<span class="sr-only"> |
||||
Loading... |
||||
</span> |
||||
</div> |
||||
<div class="spinner-grow text-secondary" role="status"> |
||||
<span class="sr-only"> |
||||
Loading... |
||||
</span> |
||||
</div> |
||||
<div class="spinner-grow text-secondary" role="status"> |
||||
<span class="sr-only"> |
||||
Loading... |
||||
</span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div id="chatbox-wrapper" class="bg-dark"> |
||||
<input class="form-control" |
||||
id="chatinput" |
||||
type="text" |
||||
v-model="chatbox" |
||||
v-on:keyup.enter="sendMessage()" |
||||
v-on:keyup.38="chatbox = lastMessage" |
||||
v-on:keyup.40="chatbox = ''" |
||||
required autofocus> |
||||
</div> |
||||
|
||||
<div class="modal fade" id="todoModal" tabindex="-1" role="dialog" aria-labelledby="todoModal" aria-hidden="true"> |
||||
<div class="modal-dialog" role="document"> |
||||
<div class="modal-content"> |
||||
<div class="modal-header"> |
||||
<h5 class="modal-title">Todos</h5> |
||||
<div class="float-right"> |
||||
<button class="btn btn-sm btn-secondary" @click="clearTodos"> |
||||
<i class="fas fa-trash"></i> |
||||
</button> |
||||
</div> |
||||
</div> |
||||
<div class="modal-body" style="max-height: 800px; overflow-y: scroll"> |
||||
<ul class="list-group"> |
||||
<li class="list-group-item" v-for="todo in todos" v-if="!todo.checked"> |
||||
<i class="far fa-circle" @click="todo.checked = !todo.checked"></i> {{ todo.body }} |
||||
</li> |
||||
</ul> |
||||
<hr/> |
||||
<ul class="list-group"> |
||||
<li class="list-group-item" v-for="todo in todos" v-if="todo.checked"> |
||||
<i class="fas fa-check-circle" @click="todo.checked = !todo.checked"></i> <span style="text-decoration: line-through;">{{ todo.body }}</span> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
<div class="modal-footer"> |
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="modal fade" id="settingsModal" tabindex="-1" role="dialog" aria-labelledby="settingsModal" aria-hidden="true"> |
||||
<div class="modal-dialog" role="document"> |
||||
<div class="modal-content"> |
||||
<div class="modal-header"> |
||||
<h5 class="modal-title">Settings</h5> |
||||
</div> |
||||
<div class="modal-body"> |
||||
<div class="form-group" v-if="features.changeName"> |
||||
<label for="name">What's my name?</label> |
||||
<input type="text" class="form-control" id="name" v-model="settingsModal.name"> |
||||
</div> |
||||
<div class="form-group" v-if="username !== null"> |
||||
<label for="username">What's your name?</label> |
||||
<input type="text" class="form-control" id="username" v-model="settingsModal.username"> |
||||
</div> |
||||
<div class="form-group"> |
||||
<label for="location">What city do you live in? <small class="text-muted">(for weather-reports only)</small> </label> |
||||
<input type="text" class="form-control" id="location" v-model="settingsModal.location"> |
||||
</div> |
||||
<div class="form-group" v-if="features.themes"> |
||||
<label for="theme">Pick a theme</label> |
||||
<select name="theme" class="form-control" id="theme" v-model="activeTheme" @change="updateStorage()"> |
||||
<option v-for="theme in themes" :value="theme.name.toLowerCase()" v-text="theme.name"></option> |
||||
</select> |
||||
</div> |
||||
<div class="form-group"> |
||||
<label>Data</label> |
||||
<div class="row"> |
||||
<div class="col-sm-6"> |
||||
<button @click="clearChat()" class="btn btn-warning form-button" data-dismiss="modal"> |
||||
Delete chat |
||||
</button> |
||||
</div> |
||||
<div class="col-sm-6"> |
||||
<button @click="clearStorage()" class="btn btn-warning form-button"> |
||||
Delete everything |
||||
</button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="form-group"> |
||||
<div class="float-right"> |
||||
<i class="fa fa-code" aria-hidden="true"></i> App by <a href="/" target="_blank">Luna Development</a> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="modal-footer"> |
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> |
||||
<button type="button" class="btn btn-primary" data-dismiss="modal" @click="saveSettings()">Save</button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="modal fade" id="helpModal" tabindex="-1" role="dialog" aria-labelledby="helpModal" aria-hidden="true"> |
||||
<div class="modal-dialog" role="document"> |
||||
<div class="modal-content"> |
||||
<div class="modal-header"> |
||||
<h5 class="modal-title">Documentation</h5> |
||||
</div> |
||||
<div class="modal-body" v-html="documentation"> |
||||
</div> |
||||
<div class="modal-footer justify-content-between"> |
||||
<div> |
||||
<i class="fa fa-code"></i> App by <a href="/" target="_blank">Luna Development</a> | |
||||
<i aria-hidden="true" class="fas fa-balance-scale"></i> <a href="/impressum" target="_blank">Imprint</a> |
||||
</div> |
||||
<div class="float-right"> |
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<link rel="stylesheet" :href="'https://maxcdn.bootstrapcdn.com/bootswatch/4.3.1/' + activeTheme + '/bootstrap.min.css'"> |
||||
<link href="app.css" rel="stylesheet" type="text/css"/> |
||||
</div> |
||||
|
||||
|
||||
<script src="https://kit.fontawesome.com/b54a4cceff.js" crossorigin="anonymous"></script> |
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js" crossorigin="anonymous"></script> |
||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" crossorigin="anonymous"></script> |
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" crossorigin="anonymous"></script> |
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" crossorigin="anonymous"></script> |
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> |
||||
<script src="https://code.jquery.com/jquery-3.5.1.js"></script> |
||||
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> |
||||
<script src="js/lightbox.min.js"></script> |
||||
<script src="https://cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/alertify.min.js"></script> |
||||
<script src="app.js"></script> |
||||
<!-- Global site tag (gtag.js) - Google Analytics --> |
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-80940725-2"></script> |
||||
<script> |
||||
window.dataLayer = window.dataLayer || []; |
||||
function gtag(){dataLayer.push(arguments);} |
||||
gtag('js', new Date()); |
||||
|
||||
gtag('config', 'UA-80940725-2'); |
||||
</script> |
||||
</body> |
||||
</html> |
@ -1,16 +0,0 @@
@@ -1,16 +0,0 @@
|
||||
{ |
||||
"short_name": "Kara", |
||||
"name": "Kara", |
||||
"icons": [ |
||||
{ |
||||
"src": "/img/logo/luna/256.png", |
||||
"type": "image/png", |
||||
"sizes": "256x256" |
||||
} |
||||
], |
||||
"start_url": "/kara/", |
||||
"background_color": "#383838", |
||||
"display": "standalone", |
||||
"scope": "/kara/", |
||||
"theme_color": "#383838" |
||||
} |