Merge branch 'develop' into trunk
This commit is contained in:
commit
ef798a07ae
12 changed files with 109154 additions and 4962 deletions
|
|
@ -47,11 +47,16 @@ class reindexElasticMedia extends Command
|
|||
} else {
|
||||
$startFrom = 1;
|
||||
}
|
||||
if (Media::indexExists() && !$bReprise)
|
||||
$this->info('Test Présence...');
|
||||
if (Media::indexExists() && !$bReprise) {
|
||||
$this->info('Suppression index...');
|
||||
Media::deleteIndex();
|
||||
}
|
||||
|
||||
if(!$bReprise)
|
||||
if(!$bReprise) {
|
||||
$this->info('Création...');
|
||||
Media::createIndex();
|
||||
}
|
||||
|
||||
$medias = Media::all();
|
||||
$bar = $this->output->createProgressBar(count($medias));
|
||||
|
|
|
|||
|
|
@ -94,12 +94,14 @@ class Media extends Model
|
|||
'fielddata' => true
|
||||
),
|
||||
'created_at' => array(
|
||||
'type' => 'text',
|
||||
'fielddata' => true
|
||||
'type' => 'date',
|
||||
"format" => "yyyy-MM-dd HH:mm:ss",
|
||||
//'fielddata' => true
|
||||
),
|
||||
'updated_at' => array(
|
||||
'type' => 'text',
|
||||
'fielddata' => true
|
||||
'type' => 'date',
|
||||
"format" => "yyyy-MM-dd HH:mm:ss",
|
||||
//'fielddata' => true
|
||||
),
|
||||
'version' => array(
|
||||
'type' => 'text',
|
||||
|
|
|
|||
10656
package-lock.json
generated
10656
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -17,6 +17,7 @@
|
|||
"jquery": "^3.2",
|
||||
"laravel-mix": "^4.0.7",
|
||||
"lodash": "^4.17.5",
|
||||
"moment": "^2.29.1",
|
||||
"popper.js": "^1.12",
|
||||
"resolve-url-loader": "^2.3.1",
|
||||
"sass": "^1.15.2",
|
||||
|
|
|
|||
15651
public/css/app.css
vendored
15651
public/css/app.css
vendored
File diff suppressed because one or more lines are too long
76317
public/js/app.js
vendored
76317
public/js/app.js
vendored
File diff suppressed because one or more lines are too long
67
resources/js/app.js
vendored
67
resources/js/app.js
vendored
|
|
@ -4,6 +4,73 @@ window.axios.defaults.headers.common = {
|
|||
'X-CSRF-TOKEN' : document.querySelector('meta[name="csrf-token"]').getAttribute('content')
|
||||
};
|
||||
let _ = require('lodash');
|
||||
|
||||
import moment from 'moment'
|
||||
// Configure moment
|
||||
moment.locale('fr', {
|
||||
months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
|
||||
monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
|
||||
monthsParseExact : true,
|
||||
weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
|
||||
weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
|
||||
weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
|
||||
weekdaysParseExact : true,
|
||||
longDateFormat : {
|
||||
LT : 'HH:mm',
|
||||
LTS : 'HH:mm:ss',
|
||||
L : 'DD/MM/YYYY',
|
||||
LL : 'D MMMM YYYY',
|
||||
LLL : 'D MMMM YYYY HH:mm',
|
||||
LLLL : 'dddd D MMMM YYYY HH:mm'
|
||||
},
|
||||
calendar : {
|
||||
sameDay : '[Aujourd’hui à] LT',
|
||||
nextDay : '[Demain à] LT',
|
||||
nextWeek : 'dddd [à] LT',
|
||||
lastDay : '[Hier à] LT',
|
||||
lastWeek : 'dddd [dernier à] LT',
|
||||
sameElse : 'L'
|
||||
},
|
||||
relativeTime : {
|
||||
future : 'dans %s',
|
||||
past : 'il y a %s',
|
||||
s : 'quelques secondes',
|
||||
m : 'une minute',
|
||||
mm : '%d minutes',
|
||||
h : 'une heure',
|
||||
hh : '%d heures',
|
||||
d : 'un jour',
|
||||
dd : '%d jours',
|
||||
M : 'un mois',
|
||||
MM : '%d mois',
|
||||
y : 'un an',
|
||||
yy : '%d ans'
|
||||
},
|
||||
dayOfMonthOrdinalParse : /\d{1,2}(er|e)/,
|
||||
ordinal : function (number) {
|
||||
return number + (number === 1 ? 'er' : 'e');
|
||||
},
|
||||
meridiemParse : /PD|MD/,
|
||||
isPM : function (input) {
|
||||
return input.charAt(0) === 'M';
|
||||
},
|
||||
// In case the meridiem units are not separated around 12, then implement
|
||||
// this function (look at locale/id.js for an example).
|
||||
// meridiemHour : function (hour, meridiem) {
|
||||
// return /* 0-23 hour, given meridiem token and hour 1-12 */ ;
|
||||
// },
|
||||
meridiem : function (hours, minutes, isLower) {
|
||||
return hours < 12 ? 'PD' : 'MD';
|
||||
},
|
||||
week : {
|
||||
dow : 1, // Monday is the first day of the week.
|
||||
doy : 4 // Used to determine first week of the year.
|
||||
}
|
||||
});
|
||||
|
||||
moment.locale('fr');
|
||||
Vue.prototype.moment = moment
|
||||
|
||||
// Vue
|
||||
import Vue from 'vue';
|
||||
// Vuex
|
||||
|
|
|
|||
|
|
@ -3,28 +3,31 @@
|
|||
<div v-show="scrollLoader" class="scrollLoader"><div class="animated slideInUp"><i class="fal fa-circle-notch fa-spin"></i> Chargements des médias</div></div>
|
||||
<div class="media_container">
|
||||
<div v-show="loader" class="loader"><i class="fal fa-circle-notch fa-spin"></i></div>
|
||||
<div class="wrapper">
|
||||
<div v-for="media in medias.data" @dragstart="dragStart(media, $event)" v-on:dblclick="edit(media)" @click="select(media)" :class=" isCAQuery && media.id !== lastVersion.id ? 'imageItem not-last-version' : 'imageItem'" :draggable="medias.draggable" :aria-grabbed="storeGrabbed.filter(e => e.id === media.id).length > 0">
|
||||
<div class="wrapper" v-if="medias.data">
|
||||
<div v-if="showDateSeparators()" class="date-separator">{{formatDate(medias.data[0].updated_at)}}</div>
|
||||
<template v-for="media,index in medias.data">
|
||||
<div v-if="showDateSeparators() && !isSameDay(media,medias.data[Math.max(index-1,0)])" class="date-separator">{{formatDate(media[dateSorted])}}</div>
|
||||
<div @dragstart="dragStart(media, $event)" v-on:dblclick="edit(media)" @click="select(media)" :class=" isCAQuery && media.id !== lastVersion.id ? 'imageItem not-last-version' : 'imageItem'" :draggable="medias.draggable" :aria-grabbed="storeGrabbed.filter(e => e.id === media.id).length > 0">
|
||||
<div class="etiquette" :style="'background-color:' + media.etiquette.color + '; border-color:' + media.etiquette.color + ';'" :data-id="media.etiquette.etiquette_id" >{{media.etiquette.libelle}}</div>
|
||||
|
||||
<div class="etiquette" :style="'background-color:' + media.etiquette.color + '; border-color:' + media.etiquette.color + ';'" :data-id="media.etiquette.etiquette_id" >{{media.etiquette.libelle}}</div>
|
||||
<div v-if="(media.typemedia_id === 1 || media.typemedia_id === 5) && media.extension !== 'pdf'" class="media" :style="'background-image:url('+ media.folder + media.uid +'_thumb.'+ media.extension +')'"></div>
|
||||
<div v-if="(media.typemedia_id === 1 || media.typemedia_id === 5) && media.extension === 'pdf'" class="media" :style="'background-image:url('+ media.folder + media.uid +'_thumb.png)'"></div>
|
||||
<div v-if="media.typemedia_id === 2" class="media" :style="'background-image:url('+ media.folder + media.uid + media.extension + ')'"></div>
|
||||
<div v-if="media.typemedia_id === 3" class="media video"></div>
|
||||
<div v-if="media.typemedia_id === 4" class="media son"></div>
|
||||
|
||||
<div v-if="(media.typemedia_id === 1 || media.typemedia_id === 5) && media.extension !== 'pdf'" class="media" :style="'background-image:url('+ media.folder + media.uid +'_thumb.'+ media.extension +')'"></div>
|
||||
<div v-if="(media.typemedia_id === 1 || media.typemedia_id === 5) && media.extension === 'pdf'" class="media" :style="'background-image:url('+ media.folder + media.uid +'_thumb.png)'"></div>
|
||||
<div v-if="media.typemedia_id === 2" class="media" :style="'background-image:url('+ media.folder + media.uid + media.extension + ')'"></div>
|
||||
<div v-if="media.typemedia_id === 3" class="media video"></div>
|
||||
<div v-if="media.typemedia_id === 4" class="media son"></div>
|
||||
<p class="libelle">{{media.libelle}}</p>
|
||||
|
||||
<p class="libelle">{{media.libelle}}</p>
|
||||
<div v-if="media.typemedia_id === 1 || media.typemedia_id === 5" class="info"><i class="fas fa-file-image"></i> {{media.extension}} - {{media.taille}} - {{media.largeur}}x{{media.hauteur}}px - v{{media.version}}</div>
|
||||
<div v-if="media.typemedia_id === 2" class="info"><i class="fas fa-file-image"></i> {{media.extension}} - {{media.taille}} - v{{media.version}}</div>
|
||||
<div v-if="media.typemedia_id === 3" class="info"><i class="fas fa-file-video"></i> {{media.extension}} - {{media.taille}} - durée {{media.duree}} - v{{media.version}}</div>
|
||||
<div v-if="media.typemedia_id === 4" class="info"><i class="fas fa-file-audio"></i> {{media.extension}} - {{media.taille}} - durée {{media.duree}} - v{{media.version}}</div>
|
||||
|
||||
<div v-if="media.typemedia_id === 1 || media.typemedia_id === 5" class="info"><i class="fas fa-file-image"></i> {{media.extension}} - {{media.taille}} - {{media.largeur}}x{{media.hauteur}}px - v{{media.version}}</div>
|
||||
<div v-if="media.typemedia_id === 2" class="info"><i class="fas fa-file-image"></i> {{media.extension}} - {{media.taille}} - v{{media.version}}</div>
|
||||
<div v-if="media.typemedia_id === 3" class="info"><i class="fas fa-file-video"></i> {{media.extension}} - {{media.taille}} - durée {{media.duree}} - v{{media.version}}</div>
|
||||
<div v-if="media.typemedia_id === 4" class="info"><i class="fas fa-file-audio"></i> {{media.extension}} - {{media.taille}} - durée {{media.duree}} - v{{media.version}}</div>
|
||||
|
||||
<div v-if="media.statut === 0" class="statut stat0">Brouillon</div>
|
||||
<div v-if="media.statut === 1" class="statut stat1">Public</div>
|
||||
<div v-if="media.statut === 2" class="statut stat2">Public étendu</div>
|
||||
</div>
|
||||
<div v-if="media.statut === 0" class="statut stat0">Brouillon</div>
|
||||
<div v-if="media.statut === 1" class="statut stat1">Public</div>
|
||||
<div v-if="media.statut === 2" class="statut stat2">Public étendu</div>
|
||||
</div>
|
||||
</template>
|
||||
<infinite-loading @infinite="infiniteScroll" :identifier="infiniteId">
|
||||
<div slot="spinner"></div>
|
||||
<div slot="no-more"></div>
|
||||
|
|
@ -59,6 +62,7 @@
|
|||
}
|
||||
},
|
||||
mounted() {
|
||||
console.log('DisplayComponent Mounted.');
|
||||
this.resetInfiniteScroll();
|
||||
},
|
||||
data: function () {
|
||||
|
|
@ -70,6 +74,7 @@
|
|||
loader: false,
|
||||
infiniteId: '',
|
||||
isCAQuery: false,
|
||||
dateSorted: false,
|
||||
lastVersion: {
|
||||
version: 0,
|
||||
id: 0
|
||||
|
|
@ -98,6 +103,24 @@
|
|||
this.offset = 0;
|
||||
this.resetInfiniteScroll();
|
||||
this.loadMedias(this.$store.state);
|
||||
//set dateSorted
|
||||
this.dateSorted = false;
|
||||
const _that = this;
|
||||
_.each(this.storeFilters, function (value) {
|
||||
if(value.type == "order") {
|
||||
if(value.value == "updated_at" || value.value == "created_at") {
|
||||
_that.dateSorted = value.value;
|
||||
}
|
||||
}
|
||||
});
|
||||
if(!this.dateSorted) {
|
||||
//show/hide date toggler
|
||||
$(".action_wrapper .display i.fa-calendar-check").hide();
|
||||
} else {
|
||||
//par défaut c'est selected
|
||||
$(".action_wrapper .display i.fa-calendar-check").addClass('selected');
|
||||
$(".action_wrapper .display i.fa-calendar-check").show();
|
||||
}
|
||||
},
|
||||
loadMedias($state) {
|
||||
this.$store.commit({
|
||||
|
|
@ -206,6 +229,19 @@
|
|||
}else{
|
||||
return false;
|
||||
}
|
||||
},
|
||||
showDateSeparators() {
|
||||
return this.dateSorted;
|
||||
},
|
||||
formatDate(str) {
|
||||
return this.moment(str).format('DD/MM/YYYY');
|
||||
},
|
||||
isSameDay(current,previous) {
|
||||
let currentdate = current[this.dateSorted];
|
||||
let previousdate = previous[this.dateSorted];
|
||||
let dateToCompare = this.moment(currentdate);
|
||||
let datePrevious = this.moment(previousdate);
|
||||
return dateToCompare.startOf('day').isSame(datePrevious.startOf('day'));
|
||||
}
|
||||
},
|
||||
}
|
||||
|
|
|
|||
38
resources/js/media.js
vendored
38
resources/js/media.js
vendored
|
|
@ -71,19 +71,31 @@ $(document).ready(function() {
|
|||
|
||||
// ---- Mode d'affichage
|
||||
$(".action_wrapper .display i").on("click", function(event) {
|
||||
if($(this).hasClass('fa-th')){ // mode mosaique
|
||||
if(!$(this).hasClass('selected')){
|
||||
$(".action_wrapper .display .fa-list").removeClass('selected');
|
||||
$(this).addClass('selected');
|
||||
$(".media_container .wrapper").removeClass('inline');
|
||||
}
|
||||
}else{ // mode liste
|
||||
if(!$(this).hasClass('selected')){
|
||||
$(".action_wrapper .display .fa-th").removeClass('selected');
|
||||
$(this).addClass('selected');
|
||||
$(".media_container .wrapper").addClass('inline');
|
||||
}
|
||||
}
|
||||
if($(this).hasClass('fa-calendar-check')){
|
||||
//toggle affichage des dates
|
||||
if(!$(this).hasClass('selected')){
|
||||
$(this).addClass('selected');
|
||||
$(".media_container .wrapper .date-separator").removeClass('hide');
|
||||
} else {
|
||||
$(this).removeClass('selected');
|
||||
$(".media_container .wrapper .date-separator").addClass('hide');
|
||||
}
|
||||
} else {
|
||||
if($(this).hasClass('fa-th')){ // mode mosaique
|
||||
if(!$(this).hasClass('selected')){
|
||||
$(".action_wrapper .display .fa-th-list").removeClass('selected');
|
||||
$(this).addClass('selected');
|
||||
$(".media_container .wrapper").removeClass('inline');
|
||||
}
|
||||
}else{ // mode liste
|
||||
if(!$(this).hasClass('selected')){
|
||||
$(".action_wrapper .display .fa-th").removeClass('selected');
|
||||
$(this).addClass('selected');
|
||||
$(".media_container .wrapper").addClass('inline');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
/******************************
|
||||
|
|
|
|||
13
resources/sass/partials/media.scss
vendored
13
resources/sass/partials/media.scss
vendored
|
|
@ -234,6 +234,19 @@
|
|||
flex-wrap: wrap;
|
||||
justify-content: space-evenly;
|
||||
|
||||
.date-separator{
|
||||
width: 100%;
|
||||
font-size: 19px;
|
||||
margin: 19px 0px;
|
||||
font-weight: 700;
|
||||
color: #FFF;
|
||||
padding: 0 0 0 10px;
|
||||
border-bottom: 2px solid;
|
||||
&.hide {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.imageItem{
|
||||
display: inline-block;
|
||||
border: 1px solid grey;
|
||||
|
|
|
|||
|
|
@ -13,8 +13,9 @@
|
|||
<div class="action_wrapper group">
|
||||
<mm-actions csrf="{{csrf_token()}}" etiquettes='@json($etiquettes)'></mm-actions>
|
||||
<div class="display">
|
||||
<i class="fas fa-th selected"></i>
|
||||
<i class="fal fa-list"></i>
|
||||
<i class="fal fa-calendar-check selected"></i>
|
||||
<i class="fal fa-th selected"></i>
|
||||
<i class="fal fa-th-list"></i>
|
||||
</div>
|
||||
<mm-sorter></mm-sorter>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue