Merge branch 'master' of ssh://git.shikiryu.com:2200/Shikiryu/journal-intime into e2e
This commit is contained in:
38
resources/js/app.js
vendored
38
resources/js/app.js
vendored
@@ -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'
|
||||
});
|
||||
}
|
||||
|
@@ -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() {
|
||||
|
44
resources/sass/_general.scss
vendored
44
resources/sass/_general.scss
vendored
@@ -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;
|
||||
}
|
||||
}
|
||||
|
2
resources/sass/app.scss
vendored
2
resources/sass/app.scss
vendored
@@ -11,7 +11,7 @@
|
||||
}
|
||||
|
||||
// Bootstrap
|
||||
//@import '~bootstrap/scss/bootstrap';
|
||||
@import '~bootstrap/scss/bootstrap';
|
||||
@import '~tabler-ui/src/assets/scss/bundle.scss';
|
||||
|
||||
// Variables
|
||||
|
@@ -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">
|
||||
|
33
resources/views/gallery/my.blade.php
Normal file
33
resources/views/gallery/my.blade.php
Normal 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
|
@@ -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') }}
|
||||
|
@@ -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>
|
||||
|
20
resources/views/vendor/laravel-menu/bootstrap-navbar-items.blade.php
vendored
Normal file
20
resources/views/vendor/laravel-menu/bootstrap-navbar-items.blade.php
vendored
Normal 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
|
Reference in New Issue
Block a user