Provide list of images and folder for generation of publically available URL

This commit is contained in:
Torsten 2020-02-18 09:10:30 +01:00
parent 315c9dc0b8
commit bded5c06b2
9 changed files with 766 additions and 163 deletions

View file

@ -2,7 +2,15 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="eed7de89-f054-487c-bf59-36356758942b" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/resources/js/views/Gallery.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/FileController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/FileController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/composer.lock" beforeDir="false" afterPath="$PROJECT_DIR$/composer.lock" afterDir="false" />
<change beforePath="$PROJECT_DIR$/public/js/Icon.js" beforeDir="false" afterPath="$PROJECT_DIR$/public/js/Icon.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/public/js/app.js" beforeDir="false" afterPath="$PROJECT_DIR$/public/js/app.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/routes.js" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/routes.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/views/Main.vue" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/views/Main.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/routes/api.php" beforeDir="false" afterPath="$PROJECT_DIR$/routes/api.php" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -151,6 +159,10 @@
<property name="settings.editor.selected.configurable" value="preferences.general" />
</component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/resources/views" />
<recent name="$PROJECT_DIR$/public" />
</key>
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/resources/js/views" />
<recent name="D:\repos\motorradig\motorradig\resources\js\views" />
@ -158,10 +170,6 @@
<recent name="$PROJECT_DIR$/app/Http/Controllers" />
<recent name="$PROJECT_DIR$/resources/js" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/resources/views" />
<recent name="$PROJECT_DIR$/public" />
</key>
</component>
<component name="RunManager" selected="Node.js.app.js">
<configuration name="app.js" type="NodeJSConfigurationType" temporary="true" nameIsGenerated="true" path-to-js-file="$PROJECT_DIR$/public/js/app.js" working-dir="$PROJECT_DIR$/public/js">

View file

@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use App\Pagecontents;
use Illuminate\Http\Request;
use Log;
use DB;
use App\File;
use App\Folder;
@ -72,4 +73,23 @@ class FileController extends Controller
Log::info("Incoming deleteFile request");
}
public function getFoldersWithImages(Request $request) {
Log::info("Incoming getFoldersWithImages request");
$query = " SELECT
files.name as file_name,
folders.name as folder_name
FROM
files,
folders
WHERE
files.folder_id=folders.id
;";
$filelisting = DB::select($query);
Log::info("Result:");
Log::info($filelisting);
return response(['status'=>'success','folders'=>$filelisting],200);
}
}

View file

@ -1800,11 +1800,6 @@
"MIT"
],
"authors": [
{
"name": "Ben Ramsey",
"email": "ben@benramsey.com",
"homepage": "https://benramsey.com"
},
{
"name": "Marijn Huizendveld",
"email": "marijn.huizendveld@gmail.com"
@ -1812,6 +1807,11 @@
{
"name": "Thibaud Fabre",
"email": "thibaud@aztech.io"
},
{
"name": "Ben Ramsey",
"email": "ben@benramsey.com",
"homepage": "https://benramsey.com"
}
],
"description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).",

View file

@ -391,7 +391,7 @@ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterat
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! /mnt/d/dev/repos/motorradig/motorradig/resources/js/Icon.js */"./resources/js/Icon.js");
module.exports = __webpack_require__(/*! /Users/tschneider/dev/repo/motorradig/motorradig/resources/js/Icon.js */"./resources/js/Icon.js");
/***/ })

View file

@ -110,7 +110,6 @@ module.exports = __webpack_require__(/*! ./lib/axios */ "./node_modules/axios/li
var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
var settle = __webpack_require__(/*! ./../core/settle */ "./node_modules/axios/lib/core/settle.js");
var buildURL = __webpack_require__(/*! ./../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js");
var buildFullPath = __webpack_require__(/*! ../core/buildFullPath */ "./node_modules/axios/lib/core/buildFullPath.js");
var parseHeaders = __webpack_require__(/*! ./../helpers/parseHeaders */ "./node_modules/axios/lib/helpers/parseHeaders.js");
var isURLSameOrigin = __webpack_require__(/*! ./../helpers/isURLSameOrigin */ "./node_modules/axios/lib/helpers/isURLSameOrigin.js");
var createError = __webpack_require__(/*! ../core/createError */ "./node_modules/axios/lib/core/createError.js");
@ -133,8 +132,7 @@ module.exports = function xhrAdapter(config) {
requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);
}
var fullPath = buildFullPath(config.baseURL, config.url);
request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);
request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);
// Set the request timeout in MS
request.timeout = config.timeout;
@ -195,11 +193,7 @@ module.exports = function xhrAdapter(config) {
// Handle timeout
request.ontimeout = function handleTimeout() {
var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';
if (config.timeoutErrorMessage) {
timeoutErrorMessage = config.timeoutErrorMessage;
}
reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',
reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',
request));
// Clean up request
@ -213,7 +207,7 @@ module.exports = function xhrAdapter(config) {
var cookies = __webpack_require__(/*! ./../helpers/cookies */ "./node_modules/axios/lib/helpers/cookies.js");
// Add xsrf header
var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?
var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?
cookies.read(config.xsrfCookieName) :
undefined;
@ -236,8 +230,8 @@ module.exports = function xhrAdapter(config) {
}
// Add withCredentials to request if needed
if (!utils.isUndefined(config.withCredentials)) {
request.withCredentials = !!config.withCredentials;
if (config.withCredentials) {
request.withCredentials = true;
}
// Add responseType to request if needed
@ -516,15 +510,7 @@ Axios.prototype.request = function request(config) {
}
config = mergeConfig(this.defaults, config);
// Set config.method
if (config.method) {
config.method = config.method.toLowerCase();
} else if (this.defaults.method) {
config.method = this.defaults.method.toLowerCase();
} else {
config.method = 'get';
}
config.method = config.method ? config.method.toLowerCase() : 'get';
// Hook up interceptors middleware
var chain = [dispatchRequest, undefined];
@ -639,38 +625,6 @@ InterceptorManager.prototype.forEach = function forEach(fn) {
module.exports = InterceptorManager;
/***/ }),
/***/ "./node_modules/axios/lib/core/buildFullPath.js":
/*!******************************************************!*\
!*** ./node_modules/axios/lib/core/buildFullPath.js ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var isAbsoluteURL = __webpack_require__(/*! ../helpers/isAbsoluteURL */ "./node_modules/axios/lib/helpers/isAbsoluteURL.js");
var combineURLs = __webpack_require__(/*! ../helpers/combineURLs */ "./node_modules/axios/lib/helpers/combineURLs.js");
/**
* Creates a new URL by combining the baseURL with the requestedURL,
* only when the requestedURL is not already an absolute URL.
* If the requestURL is absolute, this function returns the requestedURL untouched.
*
* @param {string} baseURL The base URL
* @param {string} requestedURL Absolute or relative URL to combine
* @returns {string} The combined full path
*/
module.exports = function buildFullPath(baseURL, requestedURL) {
if (baseURL && !isAbsoluteURL(requestedURL)) {
return combineURLs(baseURL, requestedURL);
}
return requestedURL;
};
/***/ }),
/***/ "./node_modules/axios/lib/core/createError.js":
@ -717,6 +671,8 @@ var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/util
var transformData = __webpack_require__(/*! ./transformData */ "./node_modules/axios/lib/core/transformData.js");
var isCancel = __webpack_require__(/*! ../cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js");
var defaults = __webpack_require__(/*! ../defaults */ "./node_modules/axios/lib/defaults.js");
var isAbsoluteURL = __webpack_require__(/*! ./../helpers/isAbsoluteURL */ "./node_modules/axios/lib/helpers/isAbsoluteURL.js");
var combineURLs = __webpack_require__(/*! ./../helpers/combineURLs */ "./node_modules/axios/lib/helpers/combineURLs.js");
/**
* Throws a `Cancel` if cancellation has been requested.
@ -736,6 +692,11 @@ function throwIfCancellationRequested(config) {
module.exports = function dispatchRequest(config) {
throwIfCancellationRequested(config);
// Support baseURL config
if (config.baseURL && !isAbsoluteURL(config.url)) {
config.url = combineURLs(config.baseURL, config.url);
}
// Ensure headers exist
config.headers = config.headers || {};
@ -750,7 +711,7 @@ module.exports = function dispatchRequest(config) {
config.headers = utils.merge(
config.headers.common || {},
config.headers[config.method] || {},
config.headers
config.headers || {}
);
utils.forEach(
@ -873,23 +834,13 @@ module.exports = function mergeConfig(config1, config2) {
config2 = config2 || {};
var config = {};
var valueFromConfig2Keys = ['url', 'method', 'params', 'data'];
var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy'];
var defaultToConfig2Keys = [
'baseURL', 'url', 'transformRequest', 'transformResponse', 'paramsSerializer',
'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',
'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress',
'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent',
'httpsAgent', 'cancelToken', 'socketPath'
];
utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {
utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {
if (typeof config2[prop] !== 'undefined') {
config[prop] = config2[prop];
}
});
utils.forEach(mergeDeepPropertiesKeys, function mergeDeepProperties(prop) {
utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {
if (utils.isObject(config2[prop])) {
config[prop] = utils.deepMerge(config1[prop], config2[prop]);
} else if (typeof config2[prop] !== 'undefined') {
@ -901,25 +852,13 @@ module.exports = function mergeConfig(config1, config2) {
}
});
utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {
if (typeof config2[prop] !== 'undefined') {
config[prop] = config2[prop];
} else if (typeof config1[prop] !== 'undefined') {
config[prop] = config1[prop];
}
});
var axiosKeys = valueFromConfig2Keys
.concat(mergeDeepPropertiesKeys)
.concat(defaultToConfig2Keys);
var otherKeys = Object
.keys(config2)
.filter(function filterAxiosKeys(key) {
return axiosKeys.indexOf(key) === -1;
});
utils.forEach(otherKeys, function otherKeysDefaultToConfig2(prop) {
utils.forEach([
'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',
'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',
'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength',
'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken',
'socketPath'
], function defaultToConfig2(prop) {
if (typeof config2[prop] !== 'undefined') {
config[prop] = config2[prop];
} else if (typeof config1[prop] !== 'undefined') {
@ -1027,12 +966,13 @@ function setContentTypeIfUnset(headers, value) {
function getDefaultAdapter() {
var adapter;
if (typeof XMLHttpRequest !== 'undefined') {
// For browsers use XHR adapter
adapter = __webpack_require__(/*! ./adapters/xhr */ "./node_modules/axios/lib/adapters/xhr.js");
} else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {
// Only Node.JS has a process variable that is of [[Class]] process
if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {
// For node use HTTP adapter
adapter = __webpack_require__(/*! ./adapters/http */ "./node_modules/axios/lib/adapters/xhr.js");
} else if (typeof XMLHttpRequest !== 'undefined') {
// For browsers use XHR adapter
adapter = __webpack_require__(/*! ./adapters/xhr */ "./node_modules/axios/lib/adapters/xhr.js");
}
return adapter;
}
@ -1554,6 +1494,7 @@ module.exports = function spread(callback) {
var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js");
var isBuffer = __webpack_require__(/*! is-buffer */ "./node_modules/is-buffer/index.js");
/*global toString:true*/
@ -1571,27 +1512,6 @@ function isArray(val) {
return toString.call(val) === '[object Array]';
}
/**
* Determine if a value is undefined
*
* @param {Object} val The value to test
* @returns {boolean} True if the value is undefined, otherwise false
*/
function isUndefined(val) {
return typeof val === 'undefined';
}
/**
* Determine if a value is a Buffer
*
* @param {Object} val The value to test
* @returns {boolean} True if value is a Buffer, otherwise false
*/
function isBuffer(val) {
return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)
&& typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);
}
/**
* Determine if a value is an ArrayBuffer
*
@ -1648,6 +1568,16 @@ function isNumber(val) {
return typeof val === 'number';
}
/**
* Determine if a value is undefined
*
* @param {Object} val The value to test
* @returns {boolean} True if the value is undefined, otherwise false
*/
function isUndefined(val) {
return typeof val === 'undefined';
}
/**
* Determine if a value is an Object
*
@ -2014,6 +1944,180 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Gallery.vue?vue&type=script&lang=js&":
/*!*************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/Gallery.vue?vue&type=script&lang=js& ***!
\*************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var tiptap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tiptap */ "./node_modules/tiptap/dist/tiptap.esm.js");
/* harmony import */ var tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tiptap-extensions */ "./node_modules/tiptap-extensions/dist/extensions.esm.js");
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
components: {
EditorContent: tiptap__WEBPACK_IMPORTED_MODULE_0__["EditorContent"],
EditorMenuBar: tiptap__WEBPACK_IMPORTED_MODULE_0__["EditorMenuBar"]
},
data: function data() {
return {
editor: new tiptap__WEBPACK_IMPORTED_MODULE_0__["Editor"]({
extensions: [new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Blockquote"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["BulletList"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["CodeBlock"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["HardBreak"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Heading"]({
levels: [1, 2, 3]
}), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["HorizontalRule"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["ListItem"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["OrderedList"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["TodoItem"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["TodoList"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Link"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Bold"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Code"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Italic"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Strike"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["Underline"](), new tiptap_extensions__WEBPACK_IMPORTED_MODULE_1__["History"]()]
}),
//folders: this.$store.state.folders
folders: ['Folder1', 'Folder2'],
selectedFolder: this.$store.state.selectedFolder
};
},
beforeDestroy: function beforeDestroy() {
this.editor.destroy();
},
created: function created() {
this.loadFoldersWithImages();
},
methods: {
showContent: function showContent() {
console.log(">>"); //console.log(this.editor.view.dom.innerText);
//console.log(this.editor.docView.dom.innerHTML);
console.log(this.editor.view.docView.dom.innerHTML);
},
savePage: function savePage() {
var _this = this;
console.log('Saving to page:' + this.$store.state.page_name);
axios.post('http://localhost:8000/api/v1/auth/save_page', {
page: this.$store.state.page_name,
body: this.editor.view.docView.dom.innerHTML
}, {
headers: {
'Authorization': 'Bearer ' + this.$store.state.user_token
}
}).then(function (res) {
console.log("savePage success: Wrote " + _this.$store.state.page_name);
console.log("Going back to main view");
_this.$router.push("/");
});
},
uploadFile: function uploadFile(event) {
console.log("File changed:");
console.log(event.target.files[0].name);
var selectedFile = event.target.files[0];
var selectedFolder = this.$store.state.selectedFolder;
var formData = new FormData(); //formData.append('image',selectedFile,selectedFile.name);
formData.append('image', selectedFile);
formData.append('folder', selectedFolder);
axios.post('http://localhost:8000/api/v1/auth/upload', formData, {
headers: {
'Authorization': 'Bearer ' + this.$store.state.user_token,
'Content-Type': 'multipart/form-data'
}
}).then(function (res) {
console.log(res);
});
},
createFolderRequest: function createFolderRequest(event) {
var _this2 = this;
var folderName = event.target.value;
console.log("Request creation of folder:" + folderName);
var formData = new FormData();
formData.append("folder", folderName);
axios.post('http://localhost:8000/api/v1/auth/create_folder', formData, {
headers: {
'Authorization': 'Bearer ' + this.$store.state.user_token,
'Content-Type': 'multipart/form-data'
}
}).then(function (res) {
console.log(res.data);
_this2.$store.state.folders.push(folderName);
_this2.$store.state.selectedFolder = folderName;
});
},
loadFoldersWithImages: function loadFoldersWithImages() {
var _this3 = this;
console.log("Requesting folders with images");
axios.post('http://localhost:8000/api/v1/auth/get_folders_with_images', {}, {
headers: {
'Authorization': 'Bearer ' + this.$store.state.user_token
}
}).then(function (res) {
console.log("Receiving folders");
console.log(res.data.folders);
_this3.$store.state.folders = res.data.folders;
console.log("Length:" + res.data.folders.length);
console.log("First entry:");
console.log(res.data.folders);
console.log("Received the following data:");
for (var i = 0; i < res.data.folders.length; i++) {
var folder = res.data.folders[i].folder_name;
var file = res.data.folders[i].file_name;
console.log('http://localhost:8000/upload/images/' + folder + "/" + file);
}
});
},
newFolderSelected: function newFolderSelected(event) {
console.log("New Folder selected:");
console.log(event.target.value);
this.$store.state.selectedFolder = event.target.value;
}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Main.vue?vue&type=script&lang=js&":
/*!**********************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/Main.vue?vue&type=script&lang=js& ***!
@ -2071,6 +2175,9 @@ __webpack_require__.r(__webpack_exports__);
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
data: function data() {
return {
@ -2129,6 +2236,10 @@ __webpack_require__.r(__webpack_exports__);
console.log(res.data.body);
_this2.$store.state.page_content = res.data.body;
});
},
galleryPage: function galleryPage() {
console.log("Pushing to Gallery Page");
this.$router.push('/gallery');
}
},
created: function created() {
@ -3935,6 +4046,28 @@ https://highlightjs.org/
}));
/***/ }),
/***/ "./node_modules/is-buffer/index.js":
/*!*****************************************!*\
!*** ./node_modules/is-buffer/index.js ***!
\*****************************************/
/*! no static exports found */
/***/ (function(module, exports) {
/*!
* Determine if an object is a Buffer
*
* @author Feross Aboukhadijeh <https://feross.org>
* @license MIT
*/
module.exports = function isBuffer (obj) {
return obj != null && obj.constructor != null &&
typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
}
/***/ }),
/***/ "./node_modules/lowlight/lib/core.js":
@ -31427,6 +31560,149 @@ render._withStripped = true
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Gallery.vue?vue&type=template&id=c9f3dafa&":
/*!*****************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/Gallery.vue?vue&type=template&id=c9f3dafa& ***!
\*****************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
var render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c("div", { attrs: { id: "root" } }, [
_c("div", { staticClass: "title level-item has-text-centered" }, [
_vm._v("Motorrad IG\n ")
]),
_vm._v(" "),
_c(
"div",
{ staticClass: "has-text-centered" },
[
_c(
"button",
{ staticClass: "button", on: { click: function($event) {} } },
[_vm._v("Über uns")]
),
_vm._v(" "),
_c(
"button",
{ staticClass: "button", on: { click: function($event) {} } },
[_vm._v("Aktuelles")]
),
_vm._v(" "),
_c(
"button",
{ staticClass: "button", on: { click: function($event) {} } },
[_vm._v("Mitgliedsantrag")]
),
_vm._v(" "),
!this.$store.state.user.hasOwnProperty("role")
? _c("span", [
_c(
"button",
{ staticClass: "button", on: { click: function($event) {} } },
[_vm._v("Tourplan (Beispiel)")]
)
])
: this.$store.state.user.role === "GUEST"
? _c("span", [
_c(
"button",
{ staticClass: "button", on: { click: function($event) {} } },
[_vm._v("Tourplan (Gast)")]
)
])
: this.$store.state.user.role === "MEMBER"
? _c("span", [
_c(
"button",
{ staticClass: "button", on: { click: function($event) {} } },
[_vm._v("Tourplan (komplett)")]
)
])
: this.$store.state.user.role === "ADMIN"
? _c("span", [
_c(
"button",
{ staticClass: "button", on: { click: function($event) {} } },
[_vm._v("Tourplan (komplett)")]
)
])
: _vm._e(),
_vm._v(" "),
_c(
"button",
{ staticClass: "button", on: { click: function($event) {} } },
[_vm._v("Wetter")]
),
_vm._v(" "),
_c(
"button",
{ staticClass: "button", on: { click: function($event) {} } },
[_vm._v("Links")]
),
_vm._v(" "),
_c(
"button",
{ staticClass: "button", on: { click: function($event) {} } },
[_vm._v("Impressum")]
),
_vm._v(" "),
_c(
"button",
{
staticClass: "button",
on: {
click: function($event) {
return _vm.showContent()
}
}
},
[_vm._v("Show content")]
),
_vm._v(" "),
_c(
"router-link",
{ staticClass: "button", attrs: { to: { name: "Login" } } },
[_vm._v("Log-In")]
),
_vm._v(" "),
_vm._m(0),
_vm._v(" "),
_vm._m(1)
],
1
)
])
}
var staticRenderFns = [
function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c("div", { staticStyle: { "background-color": "darkmagenta" } }, [
_c("p", [_vm._v("  ....."), _c("br")])
])
},
function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c("div", [_c("span", [_vm._v("GALLERY:")])])
}
]
render._withStripped = true
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Main.vue?vue&type=template&id=2ad93e50&":
@ -31550,6 +31826,40 @@ var render = function() {
])
: _vm._e(),
_vm._v(" "),
this.$store.state.user.role === "MEMBER"
? _c("span", [
_c(
"button",
{
staticClass: "button",
on: {
click: function($event) {
return _vm.galleryPage()
}
}
},
[_vm._v("Bilder-Uploads")]
)
])
: _vm._e(),
_vm._v(" "),
this.$store.state.user.role === "ADMIN"
? _c("span", [
_c(
"button",
{
staticClass: "button",
on: {
click: function($event) {
return _vm.galleryPage()
}
}
},
[_vm._v("Bilder-Uploads")]
)
])
: _vm._e(),
_vm._v(" "),
_c(
"button",
{ staticClass: "button", on: { click: function($event) {} } },
@ -35496,7 +35806,7 @@ if (inBrowser && window.Vue) {
"use strict";
/* WEBPACK VAR INJECTION */(function(global, setImmediate) {/*!
* Vue.js v2.6.11
* Vue.js v2.6.10
* (c) 2014-2019 Evan You
* Released under the MIT License.
*/
@ -37462,7 +37772,7 @@ if (typeof Promise !== 'undefined' && isNative(Promise)) {
isUsingMicroTask = true;
} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {
// Fallback to setImmediate.
// Technically it leverages the (macro) task queue,
// Techinically it leverages the (macro) task queue,
// but it is still a better choice than setTimeout.
timerFunc = function () {
setImmediate(flushCallbacks);
@ -37551,7 +37861,7 @@ var initProxy;
warn(
"Property \"" + key + "\" must be accessed with \"$data." + key + "\" because " +
'properties starting with "$" or "_" are not proxied in the Vue instance to ' +
'prevent conflicts with Vue internals. ' +
'prevent conflicts with Vue internals' +
'See: https://vuejs.org/v2/api/#data',
target
);
@ -38411,7 +38721,7 @@ function bindDynamicKeys (baseObj, values) {
if (typeof key === 'string' && key) {
baseObj[values[i]] = values[i + 1];
} else if (key !== '' && key !== null) {
// null is a special value for explicitly removing a binding
// null is a speical value for explicitly removing a binding
warn(
("Invalid value for dynamic directive argument (expected string or null): " + key),
this
@ -38906,12 +39216,6 @@ function _createElement (
ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);
if (config.isReservedTag(tag)) {
// platform built-in elements
if (isDef(data) && isDef(data.nativeOn)) {
warn(
("The .native modifier for v-on is only valid on components but it was used on <" + tag + ">."),
context
);
}
vnode = new VNode(
config.parsePlatformTagName(tag), data, children,
undefined, undefined, context
@ -39037,7 +39341,7 @@ function renderMixin (Vue) {
// render self
var vnode;
try {
// There's no need to maintain a stack because all render fns are called
// There's no need to maintain a stack becaues all render fns are called
// separately from one another. Nested component's render fns are called
// when parent component is patched.
currentRenderingInstance = vm;
@ -40936,7 +41240,7 @@ Object.defineProperty(Vue, 'FunctionalRenderContext', {
value: FunctionalRenderContext
});
Vue.version = '2.6.11';
Vue.version = '2.6.10';
/* */
@ -41609,7 +41913,7 @@ function createPatchFunction (backend) {
}
}
function removeVnodes (vnodes, startIdx, endIdx) {
function removeVnodes (parentElm, vnodes, startIdx, endIdx) {
for (; startIdx <= endIdx; ++startIdx) {
var ch = vnodes[startIdx];
if (isDef(ch)) {
@ -41720,7 +42024,7 @@ function createPatchFunction (backend) {
refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;
addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);
} else if (newStartIdx > newEndIdx) {
removeVnodes(oldCh, oldStartIdx, oldEndIdx);
removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);
}
}
@ -41812,7 +42116,7 @@ function createPatchFunction (backend) {
if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }
addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);
} else if (isDef(oldCh)) {
removeVnodes(oldCh, 0, oldCh.length - 1);
removeVnodes(elm, oldCh, 0, oldCh.length - 1);
} else if (isDef(oldVnode.text)) {
nodeOps.setTextContent(elm, '');
}
@ -42041,7 +42345,7 @@ function createPatchFunction (backend) {
// destroy old node
if (isDef(parentElm)) {
removeVnodes([oldVnode], 0, 0);
removeVnodes(parentElm, [oldVnode], 0, 0);
} else if (isDef(oldVnode.tag)) {
invokeDestroyHook(oldVnode);
}
@ -44747,7 +45051,7 @@ var startTagOpen = new RegExp(("^<" + qnameCapture));
var startTagClose = /^\s*(\/?)>/;
var endTag = new RegExp(("^<\\/" + qnameCapture + "[^>]*>"));
var doctype = /^<!DOCTYPE [^>]+>/i;
// #7298: escape - to avoid being passed as HTML comment when inlined in page
// #7298: escape - to avoid being pased as HTML comment when inlined in page
var comment = /^<!\--/;
var conditionalComment = /^<!\[/;
@ -45032,7 +45336,7 @@ function parseHTML (html, options) {
/* */
var onRE = /^@|^v-on:/;
var dirRE = /^v-|^@|^:|^#/;
var dirRE = /^v-|^@|^:/;
var forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/;
var forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
var stripParensRE = /^\(|\)$/g;
@ -45656,7 +45960,7 @@ function processSlotContent (el) {
if (el.parent && !maybeComponent(el.parent)) {
warn$2(
"<template v-slot> can only appear at the root level inside " +
"the receiving component",
"the receiving the component",
el
);
}
@ -46219,7 +46523,7 @@ function isDirectChildOfTemplateFor (node) {
/* */
var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/;
var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function\s*(?:[\w$]+)?\s*\(/;
var fnInvokeRE = /\([^)]*?\);*$/;
var simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/;
@ -46988,8 +47292,6 @@ function checkNode (node, warn) {
var range = node.rawAttrsMap[name];
if (name === 'v-for') {
checkFor(node, ("v-for=\"" + value + "\""), warn, range);
} else if (name === 'v-slot' || name[0] === '#') {
checkFunctionParameterExpression(value, (name + "=\"" + value + "\""), warn, range);
} else if (onRE.test(name)) {
checkEvent(value, (name + "=\"" + value + "\""), warn, range);
} else {
@ -47009,9 +47311,9 @@ function checkNode (node, warn) {
}
function checkEvent (exp, text, warn, range) {
var stripped = exp.replace(stripStringRE, '');
var keywordMatch = stripped.match(unaryOperatorsRE);
if (keywordMatch && stripped.charAt(keywordMatch.index - 1) !== '$') {
var stipped = exp.replace(stripStringRE, '');
var keywordMatch = stipped.match(unaryOperatorsRE);
if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {
warn(
"avoid using JavaScript unary operator as property name: " +
"\"" + (keywordMatch[0]) + "\" in expression " + (text.trim()),
@ -47066,19 +47368,6 @@ function checkExpression (exp, text, warn, range) {
}
}
function checkFunctionParameterExpression (exp, text, warn, range) {
try {
new Function(exp, '');
} catch (e) {
warn(
"invalid function parameter expression: " + (e.message) + " in\n\n" +
" " + exp + "\n\n" +
" Raw expression: " + (text.trim()) + "\n",
range
);
}
}
/* */
var range = 2;
@ -48784,9 +49073,11 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _views_EditPage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./views/EditPage */ "./resources/js/views/EditPage.vue");
/* harmony import */ var _views_UserList__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./views/UserList */ "./resources/js/views/UserList.vue");
/* harmony import */ var _views_Upload__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./views/Upload */ "./resources/js/views/Upload.vue");
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.common.js");
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var vue_router__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue-router */ "./node_modules/vue-router/dist/vue-router.esm.js");
/* harmony import */ var _views_Gallery__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./views/Gallery */ "./resources/js/views/Gallery.vue");
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.common.js");
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var vue_router__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vue-router */ "./node_modules/vue-router/dist/vue-router.esm.js");
@ -48819,8 +49110,12 @@ var routes = [{
path: '/upload',
name: 'upload',
component: _views_Upload__WEBPACK_IMPORTED_MODULE_5__["default"]
}, {
path: '/gallery',
name: 'galley',
component: _views_Gallery__WEBPACK_IMPORTED_MODULE_6__["default"]
}];
vue__WEBPACK_IMPORTED_MODULE_6___default.a.use(vue_router__WEBPACK_IMPORTED_MODULE_7__["default"]);
vue__WEBPACK_IMPORTED_MODULE_7___default.a.use(vue_router__WEBPACK_IMPORTED_MODULE_8__["default"]);
/***/ }),
@ -48921,6 +49216,75 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
/***/ "./resources/js/views/Gallery.vue":
/*!****************************************!*\
!*** ./resources/js/views/Gallery.vue ***!
\****************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _Gallery_vue_vue_type_template_id_c9f3dafa___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Gallery.vue?vue&type=template&id=c9f3dafa& */ "./resources/js/views/Gallery.vue?vue&type=template&id=c9f3dafa&");
/* harmony import */ var _Gallery_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Gallery.vue?vue&type=script&lang=js& */ "./resources/js/views/Gallery.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
/* normalize component */
var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
_Gallery_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
_Gallery_vue_vue_type_template_id_c9f3dafa___WEBPACK_IMPORTED_MODULE_0__["render"],
_Gallery_vue_vue_type_template_id_c9f3dafa___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
false,
null,
null,
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "resources/js/views/Gallery.vue"
/* harmony default export */ __webpack_exports__["default"] = (component.exports);
/***/ }),
/***/ "./resources/js/views/Gallery.vue?vue&type=script&lang=js&":
/*!*****************************************************************!*\
!*** ./resources/js/views/Gallery.vue?vue&type=script&lang=js& ***!
\*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Gallery_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib??ref--4-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Gallery.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Gallery.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Gallery_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
/***/ }),
/***/ "./resources/js/views/Gallery.vue?vue&type=template&id=c9f3dafa&":
/*!***********************************************************************!*\
!*** ./resources/js/views/Gallery.vue?vue&type=template&id=c9f3dafa& ***!
\***********************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Gallery_vue_vue_type_template_id_c9f3dafa___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./Gallery.vue?vue&type=template&id=c9f3dafa& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Gallery.vue?vue&type=template&id=c9f3dafa&");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Gallery_vue_vue_type_template_id_c9f3dafa___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Gallery_vue_vue_type_template_id_c9f3dafa___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/***/ }),
/***/ "./resources/js/views/Main.vue":
@ -49286,8 +49650,8 @@ __webpack_require__.r(__webpack_exports__);
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! /mnt/d/dev/repos/motorradig/motorradig/resources/js/app.js */"./resources/js/app.js");
module.exports = __webpack_require__(/*! /mnt/d/dev/repos/motorradig/motorradig/resources/sass/app.scss */"./resources/sass/app.scss");
__webpack_require__(/*! /Users/tschneider/dev/repo/motorradig/motorradig/resources/js/app.js */"./resources/js/app.js");
module.exports = __webpack_require__(/*! /Users/tschneider/dev/repo/motorradig/motorradig/resources/sass/app.scss */"./resources/sass/app.scss");
/***/ })

View file

@ -4,6 +4,7 @@ import Main from "./views/Main";
import EditPage from "./views/EditPage";
import UserList from "./views/UserList";
import Upload from "./views/Upload";
import Gallery from "./views/Gallery";
import Vue from 'vue';
import VueRouter from "vue-router";
@ -15,6 +16,7 @@ export const routes= [
{ path:'/edit_page', name : 'edit_page', component: EditPage },
{ path:'/userlist', name : 'userlist', component: UserList },
{ path:'/upload', name : 'upload', component: Upload },
{ path:'/gallery', name : 'galley', component: Gallery },
];

View file

@ -0,0 +1,200 @@
<template>
<div id="root">
<div class="title level-item has-text-centered">Motorrad IG
</div>
<div class="has-text-centered">
<button class="button" @click="" >Über uns</button>
<button class="button" @click="" >Aktuelles</button>
<button class="button" @click="">Mitgliedsantrag</button>
<span v-if="!this.$store.state.user.hasOwnProperty('role')"><button class="button" @click="" >Tourplan (Beispiel)</button></span>
<span v-else-if="this.$store.state.user.role==='GUEST'"><button class="button" @click="" >Tourplan (Gast)</button></span>
<span v-else-if="this.$store.state.user.role==='MEMBER'"><button class="button" @click="" >Tourplan (komplett)</button></span>
<span v-else-if="this.$store.state.user.role==='ADMIN'"><button class="button" @click="" >Tourplan (komplett)</button></span>
<button class="button" @click="" >Wetter</button>
<button class="button" @click="" >Links</button>
<button class="button" @click="" >Impressum</button>
<button class="button" @click="showContent()" >Show content</button>
<router-link class="button" :to="{ name: 'Login' }">Log-In</router-link>
<div style="background-color:darkmagenta;">
<p>&nbsp; .....<br/></p>
</div>
<div>
<span>GALLERY:</span>
</div>
</div>
</div>
</template>
<script>
import { Editor, EditorContent, EditorMenuBar } from 'tiptap'
import {
Blockquote,
CodeBlock,
HardBreak,
Heading,
HorizontalRule,
OrderedList,
BulletList,
ListItem,
TodoItem,
TodoList,
Bold,
Code,
Italic,
Link,
Strike,
Underline,
History,
} from 'tiptap-extensions'
export default {
components: {
EditorContent,
EditorMenuBar,
},
data() {
return {
editor: new Editor({
extensions: [
new Blockquote(),
new BulletList(),
new CodeBlock(),
new HardBreak(),
new Heading({ levels: [1, 2, 3] }),
new HorizontalRule(),
new ListItem(),
new OrderedList(),
new TodoItem(),
new TodoList(),
new Link(),
new Bold(),
new Code(),
new Italic(),
new Strike(),
new Underline(),
new History(),
]
}),
//folders: this.$store.state.folders
folders: ['Folder1','Folder2'],
selectedFolder:this.$store.state.selectedFolder
}
},
beforeDestroy() {
this.editor.destroy()
},
created() {
this.loadFoldersWithImages();
},
methods: {
showContent() {
console.log(">>" );
//console.log(this.editor.view.dom.innerText);
//console.log(this.editor.docView.dom.innerHTML);
console.log(this.editor.view.docView.dom.innerHTML);
},
savePage() {
console.log('Saving to page:'+this.$store.state.page_name);
axios.post('http://localhost:8000/api/v1/auth/save_page',{
page: this.$store.state.page_name,
body: this.editor.view.docView.dom.innerHTML
}, {
headers: {
'Authorization': 'Bearer ' + this.$store.state.user_token
}
})
.then(res => {
console.log("savePage success: Wrote "+this.$store.state.page_name);
console.log("Going back to main view");
this.$router.push("/");
}
)
},
uploadFile(event) {
console.log("File changed:");
console.log(event.target.files[0].name);
var selectedFile=event.target.files[0];
var selectedFolder = this.$store.state.selectedFolder;
const formData = new FormData();
//formData.append('image',selectedFile,selectedFile.name);
formData.append('image',selectedFile);
formData.append('folder',selectedFolder);
axios.post('http://localhost:8000/api/v1/auth/upload',formData,{
headers: {
'Authorization': 'Bearer ' + this.$store.state.user_token,
'Content-Type': 'multipart/form-data'
}
})
.then(res=>{
console.log(res);
})
},
createFolderRequest(event) {
var folderName=event.target.value;
console.log("Request creation of folder:"+folderName);
const formData = new FormData();
formData.append("folder", folderName);
axios.post('http://localhost:8000/api/v1/auth/create_folder',formData,{
headers: {
'Authorization': 'Bearer ' + this.$store.state.user_token,
'Content-Type': 'multipart/form-data'
}
})
.then(res=>{
console.log(res.data);
this.$store.state.folders.push(folderName);
this.$store.state.selectedFolder=folderName;
})
},
loadFoldersWithImages() {
console.log("Requesting folders with images");
axios.post('http://localhost:8000/api/v1/auth/get_folders_with_images',{},{
headers: {
'Authorization': 'Bearer ' + this.$store.state.user_token
}
})
.then(res=>{
console.log("Receiving folders");
console.log(res.data.folders);
this.$store.state.folders=res.data.folders;
console.log("Length:"+(res.data.folders.length));
console.log("First entry:");
console.log(res.data.folders);
console.log("Received the following data:");
for (var i=0; i<res.data.folders.length; i++) {
var folder=res.data.folders[i].folder_name;
var file =res.data.folders[i].file_name;
console.log('http://localhost:8000/upload/images/'+folder+"/"+file);
}
})
},
newFolderSelected(event) {
console.log("New Folder selected:");
console.log(event.target.value);
this.$store.state.selectedFolder=event.target.value;
}
}
}
</script>

View file

@ -17,6 +17,9 @@
<span v-if="this.$store.state.user.role==='ADMIN'"><button class="button" @click="userlistPage()" >Userverwaltung</button></span>
<span v-if="this.$store.state.user.role==='ADMIN'"><button class="button" @click="upload()" >Upload</button></span>
<span v-if="this.$store.state.user.role==='MEMBER'"><button class="button" @click="galleryPage()" >Bilder-Uploads</button></span>
<span v-if="this.$store.state.user.role==='ADMIN'"><button class="button" @click="galleryPage()" >Bilder-Uploads</button></span>
<button class="button" @click="" >Wetter</button>
<button class="button" @click="loadPage('links')" >Links</button>
<button class="button" @click="loadPage('Impressum')" >Impressum</button>
@ -110,6 +113,10 @@
}
)
},
galleryPage() {
console.log("Pushing to Gallery Page");
this.$router.push('/gallery');
}
}
,

View file

@ -54,6 +54,8 @@ Route::prefix('v1')->group(function () {
Route::post('create_folder','FileController@createFolder');
Route::post('get_folders','FileController@getFolders');
Route::post('get_folders_with_images','FileController@getFoldersWithImages');
});
});
});