diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..36e3992a --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +/node_modules/ +/build/ +/vendor/ +.php_cs.cache +/tests/output/ + +/js/ +/css/ + +# @NOTE Remove on first release +package-lock.json \ No newline at end of file diff --git a/gruntfile.js b/gruntfile.js new file mode 100644 index 00000000..97fcc70d --- /dev/null +++ b/gruntfile.js @@ -0,0 +1,72 @@ +const sass = require('node-sass'); + +module.exports = function (grunt) { + grunt.initConfig({ + sass: { + options: { + implementation: sass, + sourcemap: false + }, + dist: { + files: { + 'css/files_mediaviewer.css': 'src/styles/default.scss' + } + } + }, + + browserify: { + dist: { + files: { + 'js/files_mediaviewer.js': 'src/scripts/default.js' + }, + options: { + transform: [ + ['babelify', { + presets: 'es2015' + }], + ['vueify'] + + ], + browserifyOptions: { + debug: true + } + } + } + }, + + watch: { + default: { + options: { + spawn: false + }, + files: [ + 'src/**/*.js', + 'src/**/*.scss', + 'src/**/*.vue' + ], + tasks: [ + 'force:on', + 'sass', + 'browserify', + 'force:off' + ] + } + } + }); //initConfig + // + grunt.loadNpmTasks('grunt-force'); + grunt.loadNpmTasks('grunt-sass'); + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-browserify'); + + grunt.registerTask('default', [ + 'sass', + 'browserify' + ]); + + grunt.registerTask('watcher', [ + 'sass', + 'browserify', + 'watch' + ]); +}; \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 00000000..3920be22 --- /dev/null +++ b/package.json @@ -0,0 +1,48 @@ +{ + "name": "files_mediaviewer", + "version": "0.1.0", + "description": "Viewer for pictures and videos integrated in the files app", + "dependencies": { + "purecss": "^1.0.0", + "vue": "^2.5.17", + "vue-router": "^3.0.2" + }, + "devDependencies": { + "babel-core": "^6.26.3", + "babel-plugin-transform-runtime": "^6.23.0", + "babel-preset-es2015": "^6.24.1", + "babelify": "^8.0.0", + "eslint": "^5.9.0", + "eslint-plugin-vue": "^4.7.1", + "grunt": "^1.0.3", + "grunt-browserify": "^5.3.0", + "grunt-contrib-watch": "^1.1.0", + "grunt-force": "^1.0.0", + "grunt-sass": "^3.0.2", + "node-sass": "^4.10.0", + "vueify": "^9.4.1" + }, + "browse": { + "vue": "vue/dist/vue.common.js" + }, + "scripts": { + "build": "grunt default", + "watch": "grunt watcher", + "lint": "eslint ./src/scripts/*.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/owncloud/files_mediaviewer.git" + }, + "keywords": [ + "owncloud", + "media", + "gallery" + ], + "author": "Felix Heidecke", + "license": "GPL-2.0", + "bugs": { + "url": "https://github.com/owncloud/files_mediaviewer/issues" + }, + "homepage": "https://github.com/owncloud/files_mediaviewer#readme" +} \ No newline at end of file diff --git a/src/scripts/default.js b/src/scripts/default.js new file mode 100644 index 00000000..3d1a3c39 --- /dev/null +++ b/src/scripts/default.js @@ -0,0 +1,40 @@ +// -------------------------- Lets remove some stuff we defenitly don't need --- + +// Components + +// Libs + +import Vue from 'vue/dist/vue.js'; +import VueRouter from 'vue-router'; + +Vue.use(VueRouter); + + +// --- Global Components + +import { + mixin as t_mixin, + directive +} from './translate.js'; + +Vue.mixin(t_mixin); +Vue.directive('translate', directive); + +const router = new VueRouter({ + routes: [] +}); + +// --------------------------------------------------------------- app setup --- + +const files_mediaviewer = new Vue({ + router, + template: '', + data: { + name: 'Mediaviewer' + } +}); + +// Japp … we need to wait for a ready DOM +$(document).ready(() => { + files_mediaviewer.$mount('#files_mediaviewer > div'); +}); \ No newline at end of file diff --git a/src/scripts/translate.js b/src/scripts/translate.js new file mode 100644 index 00000000..55f3d076 --- /dev/null +++ b/src/scripts/translate.js @@ -0,0 +1,20 @@ +const appName = require('../../package.json').name + +const mixin = { + methods: { + t(string, scope = appName) { + return t(scope, string); + } + } +}; + +const directive = { + bind(el, binding) { + el.innerText = t(binding.value, el.innerText.trim()); + } +}; + +export { + mixin, + directive +}; \ No newline at end of file diff --git a/src/styles/default.scss b/src/styles/default.scss new file mode 100644 index 00000000..801e0a5f --- /dev/null +++ b/src/styles/default.scss @@ -0,0 +1,26 @@ +$grid-gutter: 10px; + +// Colors + +$color-primary: #1d2d44; +$color-secondary: #567298; + +$color-gray: #DCDCDC; +$color-lightgray: #F1F1F1; + +$color-error : red; +$color-error-border : #FED6D6; +$color-error-background : #FFF0F0; + +$color-success :#3e5530; +$color-success-background :#def7de; +$color-success-border :#bbe2b7; + +$core-image-path : '../../../core/img'; +$app-image-path : '../img'; + +#files_mediaviewer { + @import "../../node_modules/purecss/build/base-min"; + @import "../../node_modules/purecss/build/grids-min"; + @import "../../node_modules/purecss/build/grids-responsive-min"; +} \ No newline at end of file diff --git a/templates/settings.php b/templates/settings.php new file mode 100644 index 00000000..f2957425 --- /dev/null +++ b/templates/settings.php @@ -0,0 +1,10 @@ + + +
+
+ +
+
\ No newline at end of file