diff --git a/.eslintrc.js b/.eslintrc.js
index 56f4da50..dabf8ae7 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -7,12 +7,12 @@ module.exports = {
parserOptions: {
parser: '@babel/eslint-parser',
ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features
- sourceType: 'module', // Allows for the use of imports
+ sourceType: 'module' // Allows for the use of imports
},
env: {
browser: true,
- 'vue/setup-compiler-macros': true,
+ 'vue/setup-compiler-macros': true
},
extends: [
@@ -26,7 +26,7 @@ module.exports = {
// 'plugin:vue/vue3-strongly-recommended', // Priority B: Strongly Recommended (Improving Readability)
// 'plugin:vue/vue3-recommended', // Priority C: Recommended (Minimizing Arbitrary Choices and Cognitive Overhead)
- 'standard',
+ 'standard'
],
plugins: ['vue', 'prettier'],
@@ -41,7 +41,7 @@ module.exports = {
__QUASAR_SSR_PWA__: 'readonly',
process: 'readonly',
Capacitor: 'readonly',
- chrome: 'readonly',
+ chrome: 'readonly'
},
// add your custom rules here
@@ -66,7 +66,7 @@ module.exports = {
'prefer-promise-reject-errors': 'off',
semi: 'off',
// allow debugger during development only
- 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
+ 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
},
overrides: [
{
@@ -75,8 +75,8 @@ module.exports = {
rules: {
semi: 'off',
indent: ['error', 4, { SwitchCase: 1 }],
- 'space-before-function-paren': 'off',
- },
- },
- ],
+ 'space-before-function-paren': 'off'
+ }
+ }
+ ]
};
diff --git a/README.md b/README.md
index fee55494..c5032e41 100644
--- a/README.md
+++ b/README.md
@@ -5,17 +5,26 @@ Hedera is the main web page for Verdnatura.
## Getting Started
Required dependencies.
- * PHP >= 7.0
- * Node.js >= 8.0
+
+- PHP >= 7.0
+- Node.js >= 8.0
Launch application for development.
+
```
-$ npm run dev
+$ npm run dev
```
+Launch project backend.
+
+```
+$ php -S 127.0.0.1:3002 -t . index.php
+
Run server side method from command line.
```
-$ php hedera-web.php -m method_path
+
+$ php hedera-web.php -m method_path
+
```
## Built with
@@ -23,3 +32,4 @@ $ php hedera-web.php -m method_path
* [Webpack](https://webpack.js.org/)
* [MooTools](https://mootools.net/)
* [TinyMCE](https://www.tinymce.com/)
+```
diff --git a/quasar.config.js b/quasar.config.js
index 1fb70d5e..226957ad 100644
--- a/quasar.config.js
+++ b/quasar.config.js
@@ -8,259 +8,249 @@
// Configuration for your app
// https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js
-const ESLintPlugin = require('eslint-webpack-plugin')
-const path = require('path')
+const ESLintPlugin = require('eslint-webpack-plugin');
+const path = require('path');
-const { configure } = require('quasar/wrappers')
+const { configure } = require('quasar/wrappers');
module.exports = configure(function (ctx) {
- return {
- // https://v2.quasar.dev/quasar-cli-webpack/supporting-ts
- supportTS: false,
+ return {
+ // https://v2.quasar.dev/quasar-cli-webpack/supporting-ts
+ supportTS: false,
- // https://v2.quasar.dev/quasar-cli-webpack/prefetch-feature
- // preFetch: true,
+ // https://v2.quasar.dev/quasar-cli-webpack/prefetch-feature
+ // preFetch: true,
- // app boot file (/src/boot)
- // --> boot files are part of "main.js"
- // https://v2.quasar.dev/quasar-cli-webpack/boot-files
- boot: [
- 'i18n',
- 'axios',
- 'error-handler',
- 'app'
- ],
+ // app boot file (/src/boot)
+ // --> boot files are part of "main.js"
+ // https://v2.quasar.dev/quasar-cli-webpack/boot-files
+ boot: ['i18n', 'axios', 'error-handler', 'app'],
- // https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-css
- css: [
- 'app.scss',
- 'width.scss',
- 'responsive.scss'
- ],
+ // https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-css
+ css: ['app.scss', 'width.scss', 'responsive.scss'],
- // https://github.com/quasarframework/quasar/tree/dev/extras
- extras: [
- // 'ionicons-v4',
- // 'mdi-v5',
- // 'fontawesome-v6',
- // 'eva-icons',
- // 'themify',
- // 'line-awesome',
- // 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both!
+ // https://github.com/quasarframework/quasar/tree/dev/extras
+ extras: [
+ // 'ionicons-v4',
+ // 'mdi-v5',
+ // 'fontawesome-v6',
+ // 'eva-icons',
+ // 'themify',
+ // 'line-awesome',
+ // 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both!
- 'roboto-font', // optional, you are not bound to it
- 'material-icons' // optional, you are not bound to it
- ],
+ 'roboto-font', // optional, you are not bound to it
+ 'material-icons' // optional, you are not bound to it
+ ],
- // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-build
- build: {
- vueRouterMode: 'hash', // available values: 'hash', 'history'
+ // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-build
+ build: {
+ vueRouterMode: 'hash', // available values: 'hash', 'history'
- // transpile: false,
- // publicPath: '/',
+ // transpile: false,
+ // publicPath: '/',
- // Add dependencies for transpiling with Babel (Array of string/regex)
- // (from node_modules, which are by default not transpiled).
- // Applies only if "transpile" is set to true.
- // transpileDependencies: [],
+ // Add dependencies for transpiling with Babel (Array of string/regex)
+ // (from node_modules, which are by default not transpiled).
+ // Applies only if "transpile" is set to true.
+ // transpileDependencies: [],
- // rtl: true, // https://quasar.dev/options/rtl-support
- // preloadChunks: true,
- // showProgress: false,
- // gzip: true,
- // analyze: true,
+ // rtl: true, // https://quasar.dev/options/rtl-support
+ // preloadChunks: true,
+ // showProgress: false,
+ // gzip: true,
+ // analyze: true,
- // Options below are automatically set depending on the env, set them if you want to override
- // extractCSS: false,
+ // Options below are automatically set depending on the env, set them if you want to override
+ // extractCSS: false,
- // https://v2.quasar.dev/quasar-cli-webpack/handling-webpack
- // "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
+ // https://v2.quasar.dev/quasar-cli-webpack/handling-webpack
+ // "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
- chainWebpack (chain) {
- chain.plugin('eslint-webpack-plugin')
- .use(ESLintPlugin, [{ extensions: ['js', 'vue'] }])
+ chainWebpack(chain) {
+ chain
+ .plugin('eslint-webpack-plugin')
+ .use(ESLintPlugin, [{ extensions: ['js', 'vue'] }]);
- chain.module
- .rule('i18n-resource')
- .test(/\.(json5?|ya?ml)$/)
- .include.add(path.resolve(__dirname, './src/i18n'))
- .end()
- .type('javascript/auto')
- .use('i18n-resource')
- .loader('@intlify/vue-i18n-loader')
- chain.module
- .rule('i18n')
- .resourceQuery(/blockType=i18n/)
- .type('javascript/auto')
- .use('i18n')
- .loader('@intlify/vue-i18n-loader')
- }
+ chain.module
+ .rule('i18n-resource')
+ .test(/\.(json5?|ya?ml)$/)
+ .include.add(path.resolve(__dirname, './src/i18n'))
+ .end()
+ .type('javascript/auto')
+ .use('i18n-resource')
+ .loader('@intlify/vue-i18n-loader');
+ chain.module
+ .rule('i18n')
+ .resourceQuery(/blockType=i18n/)
+ .type('javascript/auto')
+ .use('i18n')
+ .loader('@intlify/vue-i18n-loader');
+ }
+ },
- },
+ // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-devServer
+ devServer: {
+ server: {
+ type: 'http'
+ },
+ port: 8080,
+ open: false,
+ // static: __dirname,
+ headers: { 'Access-Control-Allow-Origin': '*' },
+ // stats: { chunks: false },
+ proxy: {
+ '/api': 'http://localhost:3000',
+ '/': {
+ target: 'http://localhost:3001',
+ bypass: req => (req.path !== '/' ? req.path : null)
+ }
+ }
+ },
- // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-devServer
- devServer: {
- server: {
- type: 'http'
- },
- port: 8080,
- open: false,
- // static: __dirname,
- headers: { 'Access-Control-Allow-Origin': '*' },
- // stats: { chunks: false },
- proxy: {
- '/api': 'http://localhost:3000',
- '/': {
- target: 'http://localhost:3001',
- bypass: (req) => req.path !== '/' ? req.path : null
+ // https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-framework
+ framework: {
+ config: {},
+ autoImportComponentCase: 'pascal',
+ // iconSet: 'material-icons', // Quasar icon set
+ // lang: 'en-US', // Quasar language pack
+
+ // For special cases outside of where the auto-import strategy can have an impact
+ // (like functional components as one of the examples),
+ // you can manually specify Quasar components/directives to be available everywhere:
+ //
+ // components: [],
+ // directives: [],
+
+ // Quasar plugins
+ plugins: ['Notify']
+ },
+
+ // animations: 'all', // --- includes all animations
+ // https://quasar.dev/options/animations
+ animations: [],
+
+ // https://v2.quasar.dev/quasar-cli-webpack/developing-ssr/configuring-ssr
+ ssr: {
+ pwa: false,
+
+ // manualStoreHydration: true,
+ // manualPostHydrationTrigger: true,
+
+ prodPort: 3000, // The default port that the production server should use
+ // (gets superseded if process.env.PORT is specified at runtime)
+
+ maxAge: 1000 * 60 * 60 * 24 * 30,
+ // Tell browser when a file from the server should expire from cache (in ms)
+
+ chainWebpackWebserver(chain) {
+ chain
+ .plugin('eslint-webpack-plugin')
+ .use(ESLintPlugin, [{ extensions: ['js'] }]);
+ },
+
+ middlewares: [
+ ctx.prod ? 'compression' : '',
+ 'render' // keep this as last one
+ ]
+ },
+
+ // https://v2.quasar.dev/quasar-cli-webpack/developing-pwa/configuring-pwa
+ pwa: {
+ workboxPluginMode: 'GenerateSW', // 'GenerateSW' or 'InjectManifest'
+ workboxOptions: {}, // only for GenerateSW
+
+ // for the custom service worker ONLY (/src-pwa/custom-service-worker.[js|ts])
+ // if using workbox in InjectManifest mode
+
+ chainWebpackCustomSW(chain) {
+ chain
+ .plugin('eslint-webpack-plugin')
+ .use(ESLintPlugin, [{ extensions: ['js'] }]);
+ },
+
+ manifest: {
+ name: 'Hedera',
+ short_name: 'Hedera',
+ description: "Verdnatura's webshop",
+ display: 'standalone',
+ orientation: 'portrait',
+ background_color: '#ffffff',
+ theme_color: '#027be3',
+ icons: [
+ {
+ src: 'icons/icon-128x128.png',
+ sizes: '128x128',
+ type: 'image/png'
+ },
+ {
+ src: 'icons/icon-192x192.png',
+ sizes: '192x192',
+ type: 'image/png'
+ },
+ {
+ src: 'icons/icon-256x256.png',
+ sizes: '256x256',
+ type: 'image/png'
+ },
+ {
+ src: 'icons/icon-384x384.png',
+ sizes: '384x384',
+ type: 'image/png'
+ },
+ {
+ src: 'icons/icon-512x512.png',
+ sizes: '512x512',
+ type: 'image/png'
+ }
+ ]
+ }
+ },
+
+ // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/developing-cordova-apps/configuring-cordova
+ cordova: {
+ // noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing
+ },
+
+ // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/developing-capacitor-apps/configuring-capacitor
+ capacitor: {
+ hideSplashscreen: true
+ },
+
+ // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/developing-electron-apps/configuring-electron
+ electron: {
+ bundler: 'packager', // 'packager' or 'builder'
+
+ packager: {
+ // https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options
+ // OS X / Mac App Store
+ // appBundleId: '',
+ // appCategoryType: '',
+ // osxSign: '',
+ // protocol: 'myapp://path',
+ // Windows only
+ // win32metadata: { ... }
+ },
+
+ builder: {
+ // https://www.electron.build/configuration/configuration
+
+ appId: 'hedera-web'
+ },
+
+ // "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
+
+ chainWebpackMain(chain) {
+ chain
+ .plugin('eslint-webpack-plugin')
+ .use(ESLintPlugin, [{ extensions: ['js'] }]);
+ },
+
+ chainWebpackPreload(chain) {
+ chain
+ .plugin('eslint-webpack-plugin')
+ .use(ESLintPlugin, [{ extensions: ['js'] }]);
+ }
}
- }
- },
-
- // https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-framework
- framework: {
- config: {},
- autoImportComponentCase: 'pascal',
- // iconSet: 'material-icons', // Quasar icon set
- // lang: 'en-US', // Quasar language pack
-
- // For special cases outside of where the auto-import strategy can have an impact
- // (like functional components as one of the examples),
- // you can manually specify Quasar components/directives to be available everywhere:
- //
- // components: [],
- // directives: [],
-
- // Quasar plugins
- plugins: [
- 'Notify'
- ]
- },
-
- // animations: 'all', // --- includes all animations
- // https://quasar.dev/options/animations
- animations: [],
-
- // https://v2.quasar.dev/quasar-cli-webpack/developing-ssr/configuring-ssr
- ssr: {
- pwa: false,
-
- // manualStoreHydration: true,
- // manualPostHydrationTrigger: true,
-
- prodPort: 3000, // The default port that the production server should use
- // (gets superseded if process.env.PORT is specified at runtime)
-
- maxAge: 1000 * 60 * 60 * 24 * 30,
- // Tell browser when a file from the server should expire from cache (in ms)
-
- chainWebpackWebserver (chain) {
- chain.plugin('eslint-webpack-plugin')
- .use(ESLintPlugin, [{ extensions: ['js'] }])
- },
-
- middlewares: [
- ctx.prod ? 'compression' : '',
- 'render' // keep this as last one
- ]
- },
-
- // https://v2.quasar.dev/quasar-cli-webpack/developing-pwa/configuring-pwa
- pwa: {
- workboxPluginMode: 'GenerateSW', // 'GenerateSW' or 'InjectManifest'
- workboxOptions: {}, // only for GenerateSW
-
- // for the custom service worker ONLY (/src-pwa/custom-service-worker.[js|ts])
- // if using workbox in InjectManifest mode
-
- chainWebpackCustomSW (chain) {
- chain.plugin('eslint-webpack-plugin')
- .use(ESLintPlugin, [{ extensions: ['js'] }])
- },
-
- manifest: {
- name: 'Hedera',
- short_name: 'Hedera',
- description: 'Verdnatura\'s webshop',
- display: 'standalone',
- orientation: 'portrait',
- background_color: '#ffffff',
- theme_color: '#027be3',
- icons: [
- {
- src: 'icons/icon-128x128.png',
- sizes: '128x128',
- type: 'image/png'
- },
- {
- src: 'icons/icon-192x192.png',
- sizes: '192x192',
- type: 'image/png'
- },
- {
- src: 'icons/icon-256x256.png',
- sizes: '256x256',
- type: 'image/png'
- },
- {
- src: 'icons/icon-384x384.png',
- sizes: '384x384',
- type: 'image/png'
- },
- {
- src: 'icons/icon-512x512.png',
- sizes: '512x512',
- type: 'image/png'
- }
- ]
- }
- },
-
- // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/developing-cordova-apps/configuring-cordova
- cordova: {
- // noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing
- },
-
- // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/developing-capacitor-apps/configuring-capacitor
- capacitor: {
- hideSplashscreen: true
- },
-
- // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/developing-electron-apps/configuring-electron
- electron: {
- bundler: 'packager', // 'packager' or 'builder'
-
- packager: {
- // https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options
-
- // OS X / Mac App Store
- // appBundleId: '',
- // appCategoryType: '',
- // osxSign: '',
- // protocol: 'myapp://path',
-
- // Windows only
- // win32metadata: { ... }
- },
-
- builder: {
- // https://www.electron.build/configuration/configuration
-
- appId: 'hedera-web'
- },
-
- // "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
-
- chainWebpackMain (chain) {
- chain.plugin('eslint-webpack-plugin')
- .use(ESLintPlugin, [{ extensions: ['js'] }])
- },
-
- chainWebpackPreload (chain) {
- chain.plugin('eslint-webpack-plugin')
- .use(ESLintPlugin, [{ extensions: ['js'] }])
- }
-
- }
- }
-})
+ };
+});
diff --git a/src/boot/axios.js b/src/boot/axios.js
index b09fccc0..b5758897 100644
--- a/src/boot/axios.js
+++ b/src/boot/axios.js
@@ -1,7 +1,7 @@
-import { boot } from 'quasar/wrappers'
-import { Connection } from '../js/db/connection'
-import { userStore } from 'stores/user'
-import axios from 'axios'
+import { boot } from 'quasar/wrappers';
+import { Connection } from '../js/db/connection';
+import { userStore } from 'stores/user';
+import axios from 'axios';
// Be careful when using SSR for cross-request state pollution
// due to creating a Singleton instance here;
@@ -11,32 +11,33 @@ import axios from 'axios'
// for each client)
const api = axios.create({
baseURL: `//${location.hostname}:${location.port}/api/`
-})
+});
-const jApi = new Connection()
+const jApi = new Connection();
export default boot(({ app }) => {
- const user = userStore()
- function addToken (config) {
+ const user = userStore();
+ function addToken(config) {
if (user.token) {
- config.headers.Authorization = user.token
+ config.headers.Authorization = user.token;
}
- return config
+ return config;
}
- api.interceptors.request.use(addToken)
- jApi.use(addToken)
+ api.interceptors.request.use(addToken);
+ jApi.use(addToken);
// for use inside Vue files (Options API) through this.$axios and this.$api
- app.config.globalProperties.$axios = axios
+ app.config.globalProperties.$axios = axios;
// ^ ^ ^ this will allow you to use this.$axios (for Vue Options API form)
// so you won't necessarily have to import axios in each vue file
- app.config.globalProperties.$api = api
+ app.config.globalProperties.$api = api;
// ^ ^ ^ this will allow you to use this.$api (for Vue Options API form)
// so you can easily perform requests against your app's API
- app.config.globalProperties.$jApi = jApi
-})
+ app.config.globalProperties.$jApi = jApi;
+ app.provide('jApi', jApi);
+});
-export { api, jApi }
+export { api, jApi };
diff --git a/src/components/ui/VnImg.vue b/src/components/ui/VnImg.vue
new file mode 100644
index 00000000..f4e8a36c
--- /dev/null
+++ b/src/components/ui/VnImg.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Cms/HomeView.vue b/src/pages/Cms/HomeView.vue
new file mode 100644
index 00000000..971e1544
--- /dev/null
+++ b/src/pages/Cms/HomeView.vue
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+ {{ myNew.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+en-US:
+ startOrder: Start order
+es-ES:
+ startOrder: Empezar pedido
+ca-ES:
+ startOrder: Començar comanda
+fr-FR:
+ startOrder: Lancer commande
+pt-PT:
+ startOrder: Comece uma encomenda
+
diff --git a/src/router/routes.js b/src/router/routes.js
index 0a8dd7fd..e593edfd 100644
--- a/src/router/routes.js
+++ b/src/router/routes.js
@@ -27,12 +27,12 @@ const routes = [
{
name: '',
path: '',
- component: () => import('src/pages/Cms/Home.vue')
+ component: () => import('src/pages/Cms/HomeView.vue')
},
{
name: 'home',
path: '/cms/home',
- component: () => import('src/pages/Cms/Home.vue')
+ component: () => import('src/pages/Cms/HomeView.vue')
},
{
name: 'orders',
@@ -63,6 +63,6 @@ const routes = [
path: '/:catchAll(.*)*',
component: () => import('pages/ErrorNotFound.vue')
}
-]
+];
-export default routes
+export default routes;