All frontend related files are gone, since we have a separate frontend engine now.
このコミットが含まれているのは:
コミット
e907e57ab8
|
@ -17,24 +17,6 @@ window.Vue = require('vue');
|
||||||
|
|
||||||
// Vue.component('example', require('./components/Example.vue'));
|
// Vue.component('example', require('./components/Example.vue'));
|
||||||
|
|
||||||
// Global.
|
|
||||||
Vue.component('global-menu', require('./components/Global/Menu.vue'));
|
|
||||||
|
|
||||||
// Homepage.
|
|
||||||
Vue.component('new-items', require('./components/Home/New.vue'));
|
|
||||||
Vue.component('hot-items', require('./components/Home/Hot.vue'));
|
|
||||||
|
|
||||||
// Entry page.
|
|
||||||
Vue.component('entry-title', require('./components/Entry/Title.vue'));
|
|
||||||
Vue.component('entry-screenshots', require('./components/Entry/Screenshots.vue'));
|
|
||||||
Vue.component('entry-description', require('./components/Entry/Description.vue'));
|
|
||||||
Vue.component('entry-changelog', require('./components/Entry/Changelog.vue'));
|
|
||||||
|
|
||||||
// Category page.
|
|
||||||
Vue.component('category-entry', require('./components/Category/All.vue'));
|
|
||||||
Vue.component('category-entry-downloads', require('./components/Category/Downloads.vue'));
|
|
||||||
Vue.component('category-entry-views', require('./components/Category/Views.vue'));
|
|
||||||
|
|
||||||
new Vue({
|
new Vue({
|
||||||
el: '#app'
|
el: '#app'
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,131 +0,0 @@
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<div v-for="e in entries">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<a :href="'/entry/' + e.fid">{{ e.title }} {{ e.version }}</a> by
|
|
||||||
<span v-for="o in owners">
|
|
||||||
<span v-if="o.fid === e.fid">
|
|
||||||
<a :href="'/profile/' + o.uid"><span :style="o.name_colour">{{ o.showname }}</span></a>
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<img :src="'/assets/store/' + e.fid + '/screens/1.png'" height="100px" />
|
|
||||||
<br /><br />
|
|
||||||
Submitted on {{ e.submit_date }}
|
|
||||||
<span v-if="e.ld !== 0">
|
|
||||||
, last updated on {{ e.last_date }}
|
|
||||||
</span>
|
|
||||||
<br />
|
|
||||||
{{ e.downloads }} downloads
|
|
||||||
<br />
|
|
||||||
{{ e.views }} views
|
|
||||||
<br /><br />
|
|
||||||
{{ e.description }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import moment from 'moment';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'category-entry',
|
|
||||||
props: [
|
|
||||||
'cid',
|
|
||||||
'page',
|
|
||||||
'limit',
|
|
||||||
],
|
|
||||||
data: function () {
|
|
||||||
return {
|
|
||||||
id: this.cid,
|
|
||||||
from: this.page,
|
|
||||||
to: this.limit,
|
|
||||||
entries: [],
|
|
||||||
owners: [],
|
|
||||||
groupCol: [],
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created: function () {
|
|
||||||
// TODO: show all to users with approval permissions only.
|
|
||||||
// For other users, use /api/rpc/file/getfilespageapproved instead.
|
|
||||||
axios.get('/api/rpc/user/getgroupcolours').then(res => {
|
|
||||||
res.data.forEach(cb => {
|
|
||||||
this.groupCol.push({
|
|
||||||
'id': cb.id,
|
|
||||||
'name': cb.name,
|
|
||||||
'male': cb.colour_m,
|
|
||||||
'female': cb.colour_f,
|
|
||||||
'unknown': cb.colour_u,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
axios.get('/api/rpc/file/getfilespageall/' + this.id + '/' + this.from + '/' + this.to).then(res => {
|
|
||||||
res.data.forEach(cb => {
|
|
||||||
axios.get('/api/rpc/owner/getownersoffile/' + cb.id).then(res => {
|
|
||||||
res.data.forEach(db => {
|
|
||||||
var showName = '';
|
|
||||||
var showCol = '';
|
|
||||||
|
|
||||||
if (db.display_name !== '') {
|
|
||||||
showName = db.display_name;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
showName = db.username;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (db.name_colour !== '') {
|
|
||||||
showCol = db.name_colour;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this.groupCol.forEach(re => {
|
|
||||||
if (re.id === db.perm_id) {
|
|
||||||
if (db.gender === 1) {
|
|
||||||
showCol = re.male;
|
|
||||||
}
|
|
||||||
else if (db.gender === 2) {
|
|
||||||
showCol = re.female;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
showCol = re.unknown;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
this.owners.push({
|
|
||||||
'fid': cb.id,
|
|
||||||
'uid': db.user_id,
|
|
||||||
'showname': showName,
|
|
||||||
'username': db.username,
|
|
||||||
'display_name': db.display_name,
|
|
||||||
'avatar': db.avatar,
|
|
||||||
'gender': db.gender,
|
|
||||||
'name_colour': showCol,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
this.entries.push({
|
|
||||||
'fid': cb.id,
|
|
||||||
'title': cb.title,
|
|
||||||
'version': cb.version,
|
|
||||||
'description': cb.description,
|
|
||||||
'submit_date': moment.unix(cb.submit_date).format("YYYY/MM/DD"),
|
|
||||||
'ld': cb.last_date,
|
|
||||||
'last_date': moment.unix(cb.last_date).format("YYYY/MM/DD"),
|
|
||||||
'views': cb.views,
|
|
||||||
'downloads': cb.downloads,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
|
@ -1,129 +0,0 @@
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<div v-for="e in entries">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<a :href="'/entry/' + e.fid">{{ e.title }} {{ e.version }}</a> by
|
|
||||||
<span v-for="o in owners">
|
|
||||||
<span v-if="o.fid === e.fid">
|
|
||||||
<a :href="'/profile/' + o.uid"><span :style="o.name_colour">{{ o.showname }}</span></a>
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<img :src="'/assets/store/' + e.fid + '/screens/1.png'" height="100px" />
|
|
||||||
<br /><br />
|
|
||||||
Submitted on {{ e.submit_date }}
|
|
||||||
<span v-if="e.ld !== 0">
|
|
||||||
, last updated on {{ e.last_date }}
|
|
||||||
</span>
|
|
||||||
<br />
|
|
||||||
{{ e.downloads }} downloads
|
|
||||||
<br />
|
|
||||||
{{ e.views }} views
|
|
||||||
<br /><br />
|
|
||||||
{{ e.description }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import moment from 'moment';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'category-entry-downloads',
|
|
||||||
props: [
|
|
||||||
'cid',
|
|
||||||
'page',
|
|
||||||
'limit',
|
|
||||||
],
|
|
||||||
data: function () {
|
|
||||||
return {
|
|
||||||
id: this.cid,
|
|
||||||
from: this.page,
|
|
||||||
to: this.limit,
|
|
||||||
entries: [],
|
|
||||||
owners: [],
|
|
||||||
groupCol: [],
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created: function () {
|
|
||||||
axios.get('/api/rpc/user/getgroupcolours').then(res => {
|
|
||||||
res.data.forEach(cb => {
|
|
||||||
this.groupCol.push({
|
|
||||||
'id': cb.id,
|
|
||||||
'name': cb.name,
|
|
||||||
'male': cb.colour_m,
|
|
||||||
'female': cb.colour_f,
|
|
||||||
'unknown': cb.colour_u,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
axios.get('/api/rpc/file/getfilespagepopulardownload/' + this.id + '/' + this.from + '/' + this.to).then(res => {
|
|
||||||
res.data.forEach(cb => {
|
|
||||||
axios.get('/api/rpc/owner/getownersoffile/' + cb.id).then(res => {
|
|
||||||
res.data.forEach(db => {
|
|
||||||
var showName = '';
|
|
||||||
var showCol = '';
|
|
||||||
|
|
||||||
if (db.display_name !== '') {
|
|
||||||
showName = db.display_name;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
showName = db.username;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (db.name_colour !== '') {
|
|
||||||
showCol = db.name_colour;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this.groupCol.forEach(re => {
|
|
||||||
if (re.id === db.perm_id) {
|
|
||||||
if (db.gender === 1) {
|
|
||||||
showCol = re.male;
|
|
||||||
}
|
|
||||||
else if (db.gender === 2) {
|
|
||||||
showCol = re.female;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
showCol = re.unknown;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
this.owners.push({
|
|
||||||
'fid': cb.id,
|
|
||||||
'uid': db.user_id,
|
|
||||||
'showname': showName,
|
|
||||||
'username': db.username,
|
|
||||||
'display_name': db.display_name,
|
|
||||||
'avatar': db.avatar,
|
|
||||||
'gender': db.gender,
|
|
||||||
'name_colour': showCol,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
this.entries.push({
|
|
||||||
'fid': cb.id,
|
|
||||||
'title': cb.title,
|
|
||||||
'version': cb.version,
|
|
||||||
'description': cb.description,
|
|
||||||
'submit_date': moment.unix(cb.submit_date).format("YYYY/MM/DD"),
|
|
||||||
'ld': cb.last_date,
|
|
||||||
'last_date': moment.unix(cb.last_date).format("YYYY/MM/DD"),
|
|
||||||
'views': cb.views,
|
|
||||||
'downloads': cb.downloads,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
|
@ -1,129 +0,0 @@
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<div v-for="e in entries">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<a :href="'/entry/' + e.fid">{{ e.title }} {{ e.version }}</a> by
|
|
||||||
<span v-for="o in owners">
|
|
||||||
<span v-if="o.fid === e.fid">
|
|
||||||
<a :href="'/profile/' + o.uid"><span :style="o.name_colour">{{ o.showname }}</span></a>
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<img :src="'/assets/store/' + e.fid + '/screens/1.png'" height="100px" />
|
|
||||||
<br /><br />
|
|
||||||
Submitted on {{ e.submit_date }}
|
|
||||||
<span v-if="e.ld !== 0">
|
|
||||||
, last updated on {{ e.last_date }}
|
|
||||||
</span>
|
|
||||||
<br />
|
|
||||||
{{ e.downloads }} downloads
|
|
||||||
<br />
|
|
||||||
{{ e.views }} views
|
|
||||||
<br /><br />
|
|
||||||
{{ e.description }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import moment from 'moment';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'category-entry-views',
|
|
||||||
props: [
|
|
||||||
'cid',
|
|
||||||
'page',
|
|
||||||
'limit',
|
|
||||||
],
|
|
||||||
data: function () {
|
|
||||||
return {
|
|
||||||
id: this.cid,
|
|
||||||
from: this.page,
|
|
||||||
to: this.limit,
|
|
||||||
entries: [],
|
|
||||||
owners: [],
|
|
||||||
groupCol: [],
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created: function () {
|
|
||||||
axios.get('/api/rpc/user/getgroupcolours').then(res => {
|
|
||||||
res.data.forEach(cb => {
|
|
||||||
this.groupCol.push({
|
|
||||||
'id': cb.id,
|
|
||||||
'name': cb.name,
|
|
||||||
'male': cb.colour_m,
|
|
||||||
'female': cb.colour_f,
|
|
||||||
'unknown': cb.colour_u,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
axios.get('/api/rpc/file/getfilespagepopularview/' + this.id + '/' + this.from + '/' + this.to).then(res => {
|
|
||||||
res.data.forEach(cb => {
|
|
||||||
axios.get('/api/rpc/owner/getownersoffile/' + cb.id).then(res => {
|
|
||||||
res.data.forEach(db => {
|
|
||||||
var showName = '';
|
|
||||||
var showCol = '';
|
|
||||||
|
|
||||||
if (db.display_name !== '') {
|
|
||||||
showName = db.display_name;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
showName = db.username;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (db.name_colour !== '') {
|
|
||||||
showCol = db.name_colour;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this.groupCol.forEach(re => {
|
|
||||||
if (re.id === db.perm_id) {
|
|
||||||
if (db.gender === 1) {
|
|
||||||
showCol = re.male;
|
|
||||||
}
|
|
||||||
else if (db.gender === 2) {
|
|
||||||
showCol = re.female;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
showCol = re.unknown;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
this.owners.push({
|
|
||||||
'fid': cb.id,
|
|
||||||
'uid': db.user_id,
|
|
||||||
'showname': showName,
|
|
||||||
'username': db.username,
|
|
||||||
'display_name': db.display_name,
|
|
||||||
'avatar': db.avatar,
|
|
||||||
'gender': db.gender,
|
|
||||||
'name_colour': showCol,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
this.entries.push({
|
|
||||||
'fid': cb.id,
|
|
||||||
'title': cb.title,
|
|
||||||
'version': cb.version,
|
|
||||||
'description': cb.description,
|
|
||||||
'submit_date': moment.unix(cb.submit_date).format("YYYY/MM/DD"),
|
|
||||||
'ld': cb.last_date,
|
|
||||||
'last_date': moment.unix(cb.last_date).format("YYYY/MM/DD"),
|
|
||||||
'views': cb.views,
|
|
||||||
'downloads': cb.downloads,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
|
@ -1,44 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<!--@lang('entry.changelog', ['version' => '2.0'])-->
|
|
||||||
Changes in {{ version }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12">
|
|
||||||
{{ changelog }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
name: 'entry-changelog',
|
|
||||||
props: ['fid'],
|
|
||||||
data: function () {
|
|
||||||
return {
|
|
||||||
id: this.fid,
|
|
||||||
changelog: '',
|
|
||||||
version: ''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created: function () {
|
|
||||||
axios.get('/api/rpc/file/getfilechangelog/' + this.id).then(data => {
|
|
||||||
this.changelog = data.data[0].changelog;
|
|
||||||
this.version = data.data[0].version;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.col {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,45 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
@lang('entry.description')
|
|
||||||
Description
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12">
|
|
||||||
{{ description }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
name: 'entry-description',
|
|
||||||
props: [
|
|
||||||
'fid',
|
|
||||||
'translations'
|
|
||||||
],
|
|
||||||
data: function () {
|
|
||||||
return {
|
|
||||||
id: this.fid,
|
|
||||||
description: ''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created: function () {
|
|
||||||
axios.get('/api/rpc/file/getfiledescription/' + this.id).then(data => {
|
|
||||||
this.description = data.data[0].description;
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.col {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,73 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<!--@lang('entry.changelog', ['version' => '2.0'])-->
|
|
||||||
Changes in {{ version }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12">
|
|
||||||
{{ changelog }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
// https://adamwathan.me/2016/01/04/composing-reusable-modal-dialogs-with-vuejs/
|
|
||||||
export default {
|
|
||||||
name: 'entry-changelog',
|
|
||||||
props: [
|
|
||||||
'fid',
|
|
||||||
'show'
|
|
||||||
],
|
|
||||||
data: function () {
|
|
||||||
return {
|
|
||||||
id: this.fid,
|
|
||||||
title: '',
|
|
||||||
version: '',
|
|
||||||
notice: '',
|
|
||||||
files: []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created: function () {
|
|
||||||
axios.get('/api/rpc/file/getfile/' + this.id).then(res => {
|
|
||||||
this.title = res.data[0].title;
|
|
||||||
this.version = res.data[0].version;
|
|
||||||
if (res.data[0].warningnote !== '') this.notice = res.data[0].warningnote;
|
|
||||||
});
|
|
||||||
this.files.push(
|
|
||||||
{
|
|
||||||
'filename': 'test1.carc',
|
|
||||||
'filesize': '1000 TiB'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'filename': 'test2.carc',
|
|
||||||
'filesize': '20 GiB'
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
close: function () {
|
|
||||||
this.$emit('close');
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted: function () {
|
|
||||||
document.addEventListener("keydown", e => {
|
|
||||||
if (this.show && e.keyCode == 27) { // TODO: keyCode is deprecated; use alternative!
|
|
||||||
this.close();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.col {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,27 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<!--@lang('entry.screenshots')-->
|
|
||||||
Screenshots
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12">
|
|
||||||
(IMG)
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
name: 'entry-screenshots',
|
|
||||||
data: function () {
|
|
||||||
return {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
|
@ -1,176 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<!--@lang('entry.title', ['name' => 'Some Mod 2.0', 'user' => 'Someuser'])-->
|
|
||||||
{{ title }} {{ version }} by
|
|
||||||
<span v-for="(o, i) in owners">
|
|
||||||
<a :href="'/profile/' + o.uid"><span :style="o.name_colour">{{ o.showname }}</span></a>
|
|
||||||
<span v-if="i == owners.length - 2">
|
|
||||||
, and
|
|
||||||
</span>
|
|
||||||
<span v-else-if="i == owners.length - 1">
|
|
||||||
</span>
|
|
||||||
<span v-else>
|
|
||||||
,
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-2">
|
|
||||||
<button type="button" class="btn btn-primary btn-lg">
|
|
||||||
<!--@lang('entry.download')-->
|
|
||||||
Download
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-2">
|
|
||||||
<button type="button" class="btn btn-primary">
|
|
||||||
<!--@lang('entry.update')-->
|
|
||||||
Update
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-2">
|
|
||||||
<button type="button" class="btn btn-danger">
|
|
||||||
<!--@lang('entry.remove')-->
|
|
||||||
Remove/Restore
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-2">
|
|
||||||
<button type="button" class="btn btn-warning">
|
|
||||||
<!--@lang('entry.report')-->
|
|
||||||
Report
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-2">
|
|
||||||
<!--@lang('entry.views', ['count' => '1000'])-->
|
|
||||||
Views: {{ views }}
|
|
||||||
</div>
|
|
||||||
<div class="col-md-2">
|
|
||||||
<!--@lang('entry.downloads', ['count' => '1000'])-->
|
|
||||||
Downloads: {{ downloads }}
|
|
||||||
</div>
|
|
||||||
<div class="col-md-2">
|
|
||||||
<!--@lang('entry.submitted', ['datetime' => '1945/05/05'])-->
|
|
||||||
Submitted: {{ submit_date }}
|
|
||||||
</div>
|
|
||||||
<div v-if="last_date !== 0" class="col-md-2">
|
|
||||||
<!--@lang('entry.updated', ['datetime' => '2050/12/01'])-->
|
|
||||||
Updated: {{ last_date }}
|
|
||||||
</div>
|
|
||||||
<div class="col-md-2">
|
|
||||||
<!--@lang('entry.filesize', ['size' => '1 TB'])-->
|
|
||||||
Filesize: 1 TB
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import moment from 'moment';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'entry-title',
|
|
||||||
props: ['fid'],
|
|
||||||
data: function () {
|
|
||||||
return {
|
|
||||||
owners: [],
|
|
||||||
id: this.fid,
|
|
||||||
uid: 0,
|
|
||||||
title: '',
|
|
||||||
version: '',
|
|
||||||
username: '',
|
|
||||||
avatar: '',
|
|
||||||
gender: '',
|
|
||||||
perm_id: '',
|
|
||||||
display_name: '',
|
|
||||||
name_colour: '',
|
|
||||||
views: 0,
|
|
||||||
downloads: 0,
|
|
||||||
submit_date: 0,
|
|
||||||
last_date: 0,
|
|
||||||
showName: '',
|
|
||||||
showCol: '',
|
|
||||||
groupCol: [],
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created: function () {
|
|
||||||
axios.get('/api/rpc/user/getgroupcolours').then(res => {
|
|
||||||
res.data.forEach(cb => {
|
|
||||||
this.groupCol.push({
|
|
||||||
'id': cb.id,
|
|
||||||
'name': cb.name,
|
|
||||||
'male': cb.colour_m,
|
|
||||||
'female': cb.colour_f,
|
|
||||||
'unknown': cb.colour_u,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
})
|
|
||||||
axios.get('/api/rpc/file/getfiletitle/' + this.id).then(data => {
|
|
||||||
this.uid = data.data[0].user_id;
|
|
||||||
this.title = data.data[0].title;
|
|
||||||
this.version = data.data[0].version;
|
|
||||||
this.views = data.data[0].views;
|
|
||||||
this.downloads = data.data[0].downloads;
|
|
||||||
this.submit_date = moment.unix(data.data[0].submit_date).format("YYYY/MM/DD");
|
|
||||||
if (data.data[0].last_date !== 0) {
|
|
||||||
this.last_date = moment.unix(data.data[0].last_date).format("YYYY/MM/DD");
|
|
||||||
}
|
|
||||||
|
|
||||||
data.data.forEach(cb => {
|
|
||||||
if (cb.display_name !== '') {
|
|
||||||
this.showName = cb.display_name;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this.showName = cb.username;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cb.name_colour !== '') {
|
|
||||||
this.showCol = cb.name_colour;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this.groupCol.forEach(re => {
|
|
||||||
if (re.id === cb.perm_id) {
|
|
||||||
if (cb.gender === 1) {
|
|
||||||
this.showCol = re.male;
|
|
||||||
}
|
|
||||||
else if (cb.gender === 2) {
|
|
||||||
this.showCol = re.female;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this.showCol = re.unknown;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
this.owners.push({
|
|
||||||
'uid': cb.user_id,
|
|
||||||
'showname': this.showName,
|
|
||||||
'username': cb.username,
|
|
||||||
'display_name': cb.display_name,
|
|
||||||
'avatar': cb.avatar,
|
|
||||||
'gender': cb.gender,
|
|
||||||
'name_colour': this.showCol,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
this.username = data.data[0].username;
|
|
||||||
this.display_name = data.data[0].display_name;
|
|
||||||
this.gender = data.data[0].gender;
|
|
||||||
this.avatar = data.data[0].avatar;
|
|
||||||
this.name_colour = data.data[0].name_colour;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.col {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,67 +0,0 @@
|
||||||
<template>
|
|
||||||
<span>
|
|
||||||
<nav class="navbar navbar-default navbar-static-top">
|
|
||||||
<div class="container">
|
|
||||||
<div class="navbar-header">
|
|
||||||
<!-- Collapsed Hamburger -->
|
|
||||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#app-navbar-collapse" aria-expanded="false">
|
|
||||||
<span class="sr-only">Toggle Navigation</span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<!-- Branding Image -->
|
|
||||||
<a class="navbar-brand" href="/">
|
|
||||||
Hack Store
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="collapse navbar-collapse" id="app-navbar-collapse">
|
|
||||||
<!-- Left Side Of Navbar -->
|
|
||||||
<ul class="nav navbar-nav">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<!-- Right Side Of Navbar -->
|
|
||||||
<ul class="nav navbar-nav navbar-right">
|
|
||||||
<!-- Authentication Links -->
|
|
||||||
<!-- If logged out -->
|
|
||||||
<li><a href="/login">Login</a></li>
|
|
||||||
<li><a href="/register">Register</a></li>
|
|
||||||
<!-- Else -->
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false" aria-haspopup="true">
|
|
||||||
Username <span class="caret"></span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a href="/upload">Upload</a></li>
|
|
||||||
<li>
|
|
||||||
<a href="/logout"
|
|
||||||
onclick="event.preventDefault();
|
|
||||||
document.getElementById('logout-form').submit();">
|
|
||||||
Logout
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<form id="logout-form" action="/logout" method="POST" style="display: none;">
|
|
||||||
<!--{{ csrf_field() }}-->
|
|
||||||
</form>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
</span>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
name: 'global-menu',
|
|
||||||
mounted() {
|
|
||||||
console.log('Component mounted.')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
|
@ -1,23 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-8 col-md-offset-2">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">Example Component</div>
|
|
||||||
|
|
||||||
<div class="panel-body">
|
|
||||||
I'm an example component!
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
mounted() {
|
|
||||||
console.log('Component mounted.')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
|
@ -1,49 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<span v-for="item in items">
|
|
||||||
<div class="col-md-2">
|
|
||||||
<a :href="'/entry/' + item.id">
|
|
||||||
<img :src="'/assets/store/' + item.id + '/screens/1.png'" width="100px" height="100px" />
|
|
||||||
<br />
|
|
||||||
{{ item.title }}
|
|
||||||
</a>
|
|
||||||
<br />
|
|
||||||
<a href="/profile/0">
|
|
||||||
Name
|
|
||||||
</a>
|
|
||||||
<br />
|
|
||||||
Downloads: {{ item.downloads }}
|
|
||||||
</div>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
name: 'hot-items',
|
|
||||||
data: function () {
|
|
||||||
return {
|
|
||||||
items: []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created: function () {
|
|
||||||
axios.get('/api/rpc/file/gethotfiles').then(data => {
|
|
||||||
data.data.forEach(cb => {
|
|
||||||
this.items.push({
|
|
||||||
'id': cb.id,
|
|
||||||
'title': cb.title,
|
|
||||||
'downloads': cb.downloads
|
|
||||||
});
|
|
||||||
});
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.col {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,50 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<span v-for="item in items">
|
|
||||||
<div class="col-md-2">
|
|
||||||
<a :href="'/entry/' + item.id">
|
|
||||||
<img :src="'/assets/store/' + item.id + '/screens/1.png'" width="100px" height="100px" />
|
|
||||||
<br />
|
|
||||||
{{ item.title }}
|
|
||||||
</a>
|
|
||||||
<br />
|
|
||||||
<a href="/profile/0">
|
|
||||||
Name
|
|
||||||
</a>
|
|
||||||
<br />
|
|
||||||
{{ item.submit_date }}
|
|
||||||
</div>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import moment from 'moment';
|
|
||||||
export default {
|
|
||||||
name: 'new-items',
|
|
||||||
data: function () {
|
|
||||||
return {
|
|
||||||
items: []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created: function () {
|
|
||||||
axios.get('/api/rpc/file/getnewfiles').then(data => {
|
|
||||||
data.data.forEach(cb => {
|
|
||||||
this.items.push({
|
|
||||||
'id': cb.id,
|
|
||||||
'title': cb.title,
|
|
||||||
'submit_date': moment.unix(cb.submit_date).format("YYYY/MM/DD")
|
|
||||||
});
|
|
||||||
});
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.col {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,23 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-8 col-md-offset-2">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">Example Component</div>
|
|
||||||
|
|
||||||
<div class="panel-body">
|
|
||||||
I'm an example component!
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
mounted() {
|
|
||||||
console.log('Component mounted.')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
|
@ -1,19 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
'title' => ":name by :user",
|
|
||||||
'screenshots' => "Screenshots",
|
|
||||||
'download' => "Download",
|
|
||||||
'update' => "Update",
|
|
||||||
'remove' => "Remove",
|
|
||||||
'approve' => "Approve",
|
|
||||||
'disaprove' => "Disapprove",
|
|
||||||
'report' => "Report",
|
|
||||||
'views' => "Views: :count",
|
|
||||||
'downloads' => "Downloads: :count",
|
|
||||||
'submitted' => "Submitted :datetime",
|
|
||||||
'updated' => "Updated :datetime",
|
|
||||||
'filesize' => "Filesize: :size",
|
|
||||||
'description' => "Description",
|
|
||||||
'changelog' => "Changes in :version",
|
|
||||||
];
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
'newitems' => "Latest uploads",
|
|
||||||
'hotitems' => "Most popular",
|
|
||||||
'downloads' => "Downloads:",
|
|
||||||
];
|
|
|
@ -1,8 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
'login' => "Login",
|
|
||||||
'logout' => "Logout",
|
|
||||||
'register' => "Register",
|
|
||||||
'upload' => "Upload",
|
|
||||||
];
|
|
|
@ -1,5 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
'upload' => "Upload",
|
|
||||||
];
|
|
|
@ -1,19 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Authentication Language Lines
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| The following language lines are used during authentication for various
|
|
||||||
| messages that we need to display to the user. You are free to modify
|
|
||||||
| these language lines according to your application's requirements.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'failed' => 'These credentials do not match our records.',
|
|
||||||
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
|
|
||||||
|
|
||||||
];
|
|
|
@ -1,19 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
'title' => ":user の :name",
|
|
||||||
'screenshots' => "スクリーンショット",
|
|
||||||
'download' => "ダウンロード",
|
|
||||||
'update' => "アップデート",
|
|
||||||
'remove' => "削除",
|
|
||||||
'approve' => "認可",
|
|
||||||
'disaprove' => "不認可",
|
|
||||||
'report' => "報告",
|
|
||||||
'views' => "現職回数: :count 回",
|
|
||||||
'downloads' => "ダウンロード: :count 回",
|
|
||||||
'submitted' => ":datetime に公開",
|
|
||||||
'updated' => ":datetime に編集",
|
|
||||||
'filesize' => "ファイルの大きさ: :size",
|
|
||||||
'description' => "説明",
|
|
||||||
'changelog' => ":version の改正",
|
|
||||||
];
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
'newitems' => "最近のアップロード",
|
|
||||||
'hotitems' => "一番人気なファイル",
|
|
||||||
'downloads' => "ダウンロード",
|
|
||||||
];
|
|
|
@ -1,8 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
'login' => "ログイン",
|
|
||||||
'logout' => "ログアウト",
|
|
||||||
'register' => "登録",
|
|
||||||
'upload' => "アップロード",
|
|
||||||
];
|
|
|
@ -1,19 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Pagination Language Lines
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| The following language lines are used by the paginator library to build
|
|
||||||
| the simple pagination links. You are free to change them to anything
|
|
||||||
| you want to customize your views to better match your application.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'previous' => '« 戻り',
|
|
||||||
'next' => '次 »',
|
|
||||||
|
|
||||||
];
|
|
|
@ -1,22 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Password Reset Language Lines
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| The following language lines are the default lines which match reasons
|
|
||||||
| that are given by the password broker for a password update attempt
|
|
||||||
| has failed, such as for an invalid token or invalid new password.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'password' => 'Passwords must be at least six characters and match the confirmation.',
|
|
||||||
'reset' => 'Your password has been reset!',
|
|
||||||
'sent' => 'We have e-mailed your password reset link!',
|
|
||||||
'token' => 'This password reset token is invalid.',
|
|
||||||
'user' => "We can't find a user with that e-mail address.",
|
|
||||||
|
|
||||||
];
|
|
|
@ -1,5 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
'upload' => "アップロード",
|
|
||||||
];
|
|
|
@ -1,121 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Validation Language Lines
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| The following language lines contain the default error messages used by
|
|
||||||
| the validator class. Some of these rules have multiple versions such
|
|
||||||
| as the size rules. Feel free to tweak each of these messages here.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'accepted' => 'The :attribute must be accepted.',
|
|
||||||
'active_url' => 'The :attribute is not a valid URL.',
|
|
||||||
'after' => 'The :attribute must be a date after :date.',
|
|
||||||
'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
|
|
||||||
'alpha' => 'The :attribute may only contain letters.',
|
|
||||||
'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.',
|
|
||||||
'alpha_num' => 'The :attribute may only contain letters and numbers.',
|
|
||||||
'array' => 'The :attribute must be an array.',
|
|
||||||
'before' => 'The :attribute must be a date before :date.',
|
|
||||||
'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
|
|
||||||
'between' => [
|
|
||||||
'numeric' => 'The :attribute must be between :min and :max.',
|
|
||||||
'file' => 'The :attribute must be between :min and :max kilobytes.',
|
|
||||||
'string' => 'The :attribute must be between :min and :max characters.',
|
|
||||||
'array' => 'The :attribute must have between :min and :max items.',
|
|
||||||
],
|
|
||||||
'boolean' => 'The :attribute field must be true or false.',
|
|
||||||
'confirmed' => 'The :attribute confirmation does not match.',
|
|
||||||
'date' => 'The :attribute is not a valid date.',
|
|
||||||
'date_format' => 'The :attribute does not match the format :format.',
|
|
||||||
'different' => 'The :attribute and :other must be different.',
|
|
||||||
'digits' => 'The :attribute must be :digits digits.',
|
|
||||||
'digits_between' => 'The :attribute must be between :min and :max digits.',
|
|
||||||
'dimensions' => 'The :attribute has invalid image dimensions.',
|
|
||||||
'distinct' => 'The :attribute field has a duplicate value.',
|
|
||||||
'email' => 'The :attribute must be a valid email address.',
|
|
||||||
'exists' => 'The selected :attribute is invalid.',
|
|
||||||
'file' => 'The :attribute must be a file.',
|
|
||||||
'filled' => 'The :attribute field must have a value.',
|
|
||||||
'image' => 'The :attribute must be an image.',
|
|
||||||
'in' => 'The selected :attribute is invalid.',
|
|
||||||
'in_array' => 'The :attribute field does not exist in :other.',
|
|
||||||
'integer' => 'The :attribute must be an integer.',
|
|
||||||
'ip' => 'The :attribute must be a valid IP address.',
|
|
||||||
'ipv4' => 'The :attribute must be a valid IPv4 address.',
|
|
||||||
'ipv6' => 'The :attribute must be a valid IPv6 address.',
|
|
||||||
'json' => 'The :attribute must be a valid JSON string.',
|
|
||||||
'max' => [
|
|
||||||
'numeric' => 'The :attribute may not be greater than :max.',
|
|
||||||
'file' => 'The :attribute may not be greater than :max kilobytes.',
|
|
||||||
'string' => 'The :attribute may not be greater than :max characters.',
|
|
||||||
'array' => 'The :attribute may not have more than :max items.',
|
|
||||||
],
|
|
||||||
'mimes' => 'The :attribute must be a file of type: :values.',
|
|
||||||
'mimetypes' => 'The :attribute must be a file of type: :values.',
|
|
||||||
'min' => [
|
|
||||||
'numeric' => 'The :attribute must be at least :min.',
|
|
||||||
'file' => 'The :attribute must be at least :min kilobytes.',
|
|
||||||
'string' => 'The :attribute must be at least :min characters.',
|
|
||||||
'array' => 'The :attribute must have at least :min items.',
|
|
||||||
],
|
|
||||||
'not_in' => 'The selected :attribute is invalid.',
|
|
||||||
'numeric' => 'The :attribute must be a number.',
|
|
||||||
'present' => 'The :attribute field must be present.',
|
|
||||||
'regex' => 'The :attribute format is invalid.',
|
|
||||||
'required' => 'The :attribute field is required.',
|
|
||||||
'required_if' => 'The :attribute field is required when :other is :value.',
|
|
||||||
'required_unless' => 'The :attribute field is required unless :other is in :values.',
|
|
||||||
'required_with' => 'The :attribute field is required when :values is present.',
|
|
||||||
'required_with_all' => 'The :attribute field is required when :values is present.',
|
|
||||||
'required_without' => 'The :attribute field is required when :values is not present.',
|
|
||||||
'required_without_all' => 'The :attribute field is required when none of :values are present.',
|
|
||||||
'same' => 'The :attribute and :other must match.',
|
|
||||||
'size' => [
|
|
||||||
'numeric' => 'The :attribute must be :size.',
|
|
||||||
'file' => 'The :attribute must be :size kilobytes.',
|
|
||||||
'string' => 'The :attribute must be :size characters.',
|
|
||||||
'array' => 'The :attribute must contain :size items.',
|
|
||||||
],
|
|
||||||
'string' => 'The :attribute must be a string.',
|
|
||||||
'timezone' => 'The :attribute must be a valid zone.',
|
|
||||||
'unique' => 'The :attribute has already been taken.',
|
|
||||||
'uploaded' => 'The :attribute failed to upload.',
|
|
||||||
'url' => 'The :attribute format is invalid.',
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Custom Validation Language Lines
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| Here you may specify custom validation messages for attributes using the
|
|
||||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
|
||||||
| specify a specific custom language line for a given attribute rule.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'custom' => [
|
|
||||||
'attribute-name' => [
|
|
||||||
'rule-name' => 'custom-message',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Custom Validation Attributes
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| The following language lines are used to swap attribute place-holders
|
|
||||||
| with something more reader friendly such as E-Mail Address instead
|
|
||||||
| of "email". This simply helps us make messages a little cleaner.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'attributes' => [],
|
|
||||||
|
|
||||||
];
|
|
|
@ -1,11 +0,0 @@
|
||||||
@extends('layouts.app')
|
|
||||||
|
|
||||||
@section('content')
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12">
|
|
||||||
<div><category-entry cid="{{ $cat_id }}" page="0" limit="15" /></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@endsection
|
|
|
@ -1,14 +0,0 @@
|
||||||
@extends('layouts.app')
|
|
||||||
|
|
||||||
@section('content')
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12">
|
|
||||||
<div><entry-title fid="{{ $file_id }}" /></div>
|
|
||||||
<div><entry-screenshots fid="{{ $file_id }}" /></div>
|
|
||||||
<div><entry-description fid="{{ $file_id }}" /></div>
|
|
||||||
<div><entry-changelog fid="{{ $file_id }}" /></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@endsection
|
|
|
@ -1,24 +0,0 @@
|
||||||
@extends('layouts.app')
|
|
||||||
|
|
||||||
@section('content')
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">@lang('homepage.newitems')</div>
|
|
||||||
|
|
||||||
<div class="panel-body">
|
|
||||||
<new-items />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">@lang('homepage.hotitems')</div>
|
|
||||||
|
|
||||||
<div class="panel-body">
|
|
||||||
<hot-items />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@endsection
|
|
|
@ -1,28 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="{{ app()->getLocale() }}">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
|
|
||||||
<!-- CSRF Token -->
|
|
||||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
|
||||||
|
|
||||||
<title>{{ config('app.name', 'Laravel') }}</title>
|
|
||||||
|
|
||||||
<!-- Styles -->
|
|
||||||
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="app">
|
|
||||||
<div><global-menu /></div>
|
|
||||||
@yield('content')
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Scripts -->
|
|
||||||
<script src="/js/lang.js"></script>
|
|
||||||
<script src="{{ asset('js/app.js') }}"></script>
|
|
||||||
<script>console.log(i18n.entry)</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,23 +0,0 @@
|
||||||
@extends('layouts.app')
|
|
||||||
|
|
||||||
@section('content')
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-8 col-md-offset-2">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">Dashboard</div>
|
|
||||||
|
|
||||||
<div class="panel-body">
|
|
||||||
@if (session('status'))
|
|
||||||
<div class="alert alert-success">
|
|
||||||
{{ session('status') }}
|
|
||||||
</div>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
You are logged in!
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@endsection
|
|
|
@ -1,23 +0,0 @@
|
||||||
@extends('layouts.app')
|
|
||||||
|
|
||||||
@section('content')
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-8 col-md-offset-2">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">Dashboard</div>
|
|
||||||
|
|
||||||
<div class="panel-body">
|
|
||||||
@if (session('status'))
|
|
||||||
<div class="alert alert-success">
|
|
||||||
{{ session('status') }}
|
|
||||||
</div>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
You are logged in!
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@endsection
|
|
|
@ -1,22 +0,0 @@
|
||||||
@extends('layouts.app')
|
|
||||||
|
|
||||||
@section('content')
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">@lang('upload.upload')</div>
|
|
||||||
|
|
||||||
<div class="panel-body">
|
|
||||||
@if (session('status'))
|
|
||||||
<div class="alert alert-success">
|
|
||||||
{{ session('status') }}
|
|
||||||
</div>
|
|
||||||
@endif
|
|
||||||
Uploader.
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@endsection
|
|
新しいイシューから参照