Merge branch 'master' of ssh://git.shikiryu.com:2200/Shikiryu/journal-intime into e2e

This commit is contained in:
2020-03-16 17:01:39 +01:00
28 changed files with 960 additions and 178 deletions

38
resources/js/app.js vendored
View File

@@ -29,8 +29,8 @@ window.Vue = require('vue');
import Vue from 'vue';
import Autocomplete from './components/Autocomplete.vue';
import { Endcrypt } from 'endcrypt';
import { Vue2Storage } from 'vue2-storage'
import {Endcrypt} from 'endcrypt';
import {Vue2Storage} from 'vue2-storage';
const e = new Endcrypt();
@@ -49,6 +49,14 @@ Vue.component(
'messageform', {
name: 'MessageForm',
props: {
'imageLabel': {
type: String,
default: "Choisir une image"
},
'uploadClass': {
type: String,
default: "fe fe-upload"
},
'mustencrypt': {
type: Boolean,
default: true
@@ -64,11 +72,24 @@ Vue.component(
if (this.mustencrypt) {
// https://www.npmjs.com/package/endcrypt
let plain = document.querySelector("[name=message]").value;
let encryptedMessage = JSON.stringify(e.encryptWithKey(plain, this.$storage.get('passphrase')));
document.querySelector("[name=message]").value = encryptedMessage;
document.querySelector("[name=message]").value = JSON.stringify(e.encryptWithKey(plain, this.$storage.get('passphrase')));
}
document.getElementById('messageForm').submit();
return false;
},
fileNameChanged: function(inputName, inputFiles) {
let file = inputFiles[0];
let imageName = file["name"];
if (imageName !== "") {
imageName = imageName.split('\\').pop();
}
if (imageName !== "") {
this.uploadClass = "fe fe-check";
this.imageLabel = imageName;
} else {
this.uploadClass = "fe fe-upload";
this.imageLabel = "Choisir une image";
}
}
},
beforeMount: function() {
@@ -86,7 +107,6 @@ Vue.component(
cardBody.innerHTML = e.decryptWithKey(cardBodyDecrypted, $this.$storage.get('passphrase'));
} catch (e) {
console.log('can\'t decode '+ cardBody.innerHTML);
console.log(e);
}
card.addEventListener('click', function(evt) {
let $card = this.parentElement.parentElement.parentElement;
@@ -103,6 +123,8 @@ Vue.component(
}
);
new Vue({
el: '#store'
});
if (document.getElementById("store")) {
new Vue({
el: '#store'
});
}

View File

@@ -51,6 +51,13 @@
}
}
});
let collapse = document.getElementById("collapse");
let already = collapse && document.getElementById("collapse").classList.contains("collapse");
if (already) {
let post = document.querySelector(".already").innerText;
document.querySelector("textarea").innerHTML = post;
this.inputValue = post;
}
},
computed: {
listToSearch() {

View File

@@ -1,3 +1,47 @@
h1, h2, h3, h4 {
font-family: $font-family-base;
}
.card-options .btn-link {
color: #9aa0ac;
text-decoration: none;
min-width: 0;
padding: 0;
margin-left: 5px;
&:hover {
color: #6e7687;
}
}
.btn-tertiary {
color: #555;
padding: 0;
line-height: 40px;
width: 300px;
margin: auto;
display: block;
border: 2px solid #555;
&:hover,
&:focus {
color: lighten(#555, 20%);
border-color: lighten(#555, 20%);
}
}
/* input file style */
.input-file {
width: 0.1px;
height: 0.1px;
opacity: 0;
overflow: hidden;
position: absolute;
z-index: -1;
+ .js-labelFile {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
padding: 0 10px;
cursor: pointer;
}
}

View File

@@ -11,7 +11,7 @@
}
// Bootstrap
//@import '~bootstrap/scss/bootstrap';
@import '~bootstrap/scss/bootstrap';
@import '~tabler-ui/src/assets/scss/bundle.scss';
// Variables

View File

@@ -1,12 +1,19 @@
<MessageForm :mustencrypt="{{ $mustencrypt ? 'true' : 'false' }}" :possible="{{ $possible ? 'true' : 'false' }}" inline-template>
<form action="{{ url('store') }}" method="post" @submit="encrypt" id="messageForm" v-if="possible">
<form action="{{ url('store') }}" method="post" @submit="encrypt" id="messageForm" v-if="possible" enctype="multipart/form-data">
{{ $crsf }}
<div class="contact-form">
<div class="form-group">
<label class="control-label col-sm-5" for="message">Quoi de neuf aujourd'hui ?</label>
<div class="col-sm-10">
<Autocomplete hasLabel="false" id="message" name="message" rows="5" placeholder="Que s'est-il passé aujourd'hui ?" textarea="true" />
</div>
<div class="col-sm-10">
<span class="text-danger"></span>
<input type="file" name="file" id="file" class="input-file" v-on:change="fileNameChanged($event.target.name, $event.target.files)">
<label for="file" class="btn btn-tertiary js-labelFile">
<i v-bind:class="uploadClass"></i>
<span class="js-fileName" v-html:imageLabel="imageLabel"></span>
</label>
</div>
</div>
<div class="form-group">

View File

@@ -0,0 +1,33 @@
@extends('layouts.connected')
@section('content')
<div class="container">
<div class="page-header">
<h1 class="page-title">
{{ __('My gallery') }}
</h1>
</div>
<div class="row flex-fill">
@foreach($posts as $post)
<div class="col-md-6 col-xl-4">
<div class="card">
<div class="card-status bg-blue"></div>
<div class="card-header">
<h3 class="card-title">{{ ucfirst(\Carbon\Carbon::instance($post->date_post)->diffForHumans()) }}</h3>
<div class="card-options">
<a href="#" class="card-options-collapse" data-toggle="card-collapse"><i class="fe fe-chevron-up"></i></a>
</div>
</div>
<div class="card-body">
<p>
<a href="{{ route('display_image', ['post_id' => $post->id, 'options' => 'o:full', 'image_name' => $post->image]) }}">
<img src="{{ route('display_image', ['post_id' => $post->id, 'options' => 'w:300', 'image_name' => $post->image]) }}"/>
</a>
</p>
</div>
</div>
</div>
@endforeach
</div>
</div>
@endsection

View File

@@ -13,6 +13,16 @@
{{ session('status') }}
</div>
@endif
@if (session('success'))
<div class="alert alert-success" role="alert">
{{ session('success') }}
</div>
@endif
@if (session('errors'))
<div class="alert alert-danger" role="alert">
{{ session('errors') }}
</div>
@endif
</div>
<div class="row flex-fill">
<div class="col-sm-6 col-lg-3">
@@ -80,23 +90,19 @@
@endcomponent
</div>
@else
<div class="row">
<div class="col-sm-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">{{ strftime('%B %G', $today->format('U')) }}</h3>
</div>
<div class="card-body">
<div id="store">
@component('components/app', [
'route' => url('store'),
'crsf' => csrf_field(),
'mustencrypt' => $must_encrypt,
'possible' => !$already,
])
@endcomponent
</div>
</div>
<div class="card">
<div class="card-header">
<h3 class="card-title">{{ strftime('%B %G', $today->format('U')) }}</h3>
</div>
<div class="card-body">
<div id="store">
@component('components/app', [
'route' => url('store'),
'crsf' => csrf_field(),
'mustencrypt' => $must_encrypt,
'possible' => !$already,
])
@endcomponent
</div>
</div>
</div>
@@ -110,11 +116,18 @@
<h3 class="card-title">{{ ucfirst(\Carbon\Carbon::instance($post->date_post)->diffForHumans()) }}</h3>
<div class="card-options">
<a href="#" class="card-options-collapse" data-toggle="card-collapse"><i class="fe fe-chevron-up"></i></a>
<a href="#" class="card-options-remove" data-toggle="card-remove"><i class="fe fe-x"></i></a>
@if($today->format('Y-m-d') === \Carbon\Carbon::instance($post->date_post)->format('Y-m-d'))
<button class="btn btn-link" data-toggle="collapse" data-target="#collapse" aria-expanded="true" aria-controls="collapse"><i class="fe fe-edit-2"></i></button>
<form action="{{ url('delete') }}" method="post" accept-charset="utf-8">
@csrf
<button class="btn btn-link" data-toggle="card-remove"><i class="fe fe-x"></i></button>
</form>
@endif
</div>
</div>
<div class="card-body" data-encrypt>
{!! $tag_detector->linkTagFrom($post->content) !!}
<div class="card-body @if($today->format('Y-m-d') === \Carbon\Carbon::instance($post->date_post)->format('Y-m-d')) already @endif ">
@if($post->image != '')<p><img src="{{ route('display_image', ['post_id' => $post->id, 'options' => 'w:300', 'image_name' => $post->image]) }}"/></p>@endif
<p data-encrypt>{!! $tag_detector->linkTagFrom($post->content) !!}</p>
</div>
<div class="card-footer">
{{ \Carbon\Carbon::instance($post->date_post)->format('d F Y') }}

View File

@@ -101,15 +101,7 @@
</div>
<div class="col-lg order-lg-first">
<ul class="nav nav-tabs border-0 flex-column flex-lg-row">
<li class="nav-item">
<a href="./" class="nav-link active"><i class="fe fe-home"></i> {{ __('Accueil') }}</a>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link"><i class="fe fe-trending-up"></i> {{ __('Mes statistiques') }}</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link"><i class="fe fe-image"></i> {{ __('Ma gallerie') }}</a>
</li>
@include(config('laravel-menu.views.bootstrap-items'), ['items' => $menu->roots()])
</ul>
</div>
</div>

View File

@@ -0,0 +1,20 @@
@foreach($items as $item)
<li @lm_attrs($item) @if($item->hasChildren()) class="nav-item dropdown" @endif @lm_endattrs>
@if($item->link) <a @lm_attrs($item->link) @if($item->hasChildren()) class="nav-link dropdown-toggle" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" @else class="nav-link" @endif @lm_endattrs href="{!! $item->url() !!}">
{!! $item->title !!}
@if($item->hasChildren()) <b class="caret"></b> @endif
</a>
@else
<span class="navbar-text">{!! $item->title !!}</span>
@endif
@if($item->hasChildren())
<ul class="dropdown-menu">
@include(config('laravel-menu.views.bootstrap-items'),
array('items' => $item->children()))
</ul>
@endif
</li>
@if($item->divider)
<li{!! Lavary\Menu\Builder::attributes($item->divider) !!}></li>
@endif
@endforeach