diff --git a/.eslintrc.js b/.eslintrc.js index 4a47bcb5717..0de6fac902a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,7 +1,6 @@ module.exports = { globals: { __webpack_nonce__: true, - __webpack_public_path__: true, _: true, $: true, moment: true, diff --git a/apps/dashboard/lib/Controller/DashboardController.php b/apps/dashboard/lib/Controller/DashboardController.php index 88baa641b45..f79f8b992d1 100644 --- a/apps/dashboard/lib/Controller/DashboardController.php +++ b/apps/dashboard/lib/Controller/DashboardController.php @@ -94,6 +94,8 @@ class DashboardController extends Controller { */ public function index(): TemplateResponse { \OCP\Util::addStyle('dashboard', 'dashboard'); + \OCP\Util::addScript('dashboard', 'main'); + $this->eventDispatcher->dispatchTyped(new LoadSidebar()); if (class_exists(LoadViewer::class)) { $this->eventDispatcher->dispatchTyped(new LoadViewer()); diff --git a/apps/dashboard/src/main.js b/apps/dashboard/src/main.js index 54c68bf71ee..f209b00baf4 100644 --- a/apps/dashboard/src/main.js +++ b/apps/dashboard/src/main.js @@ -25,18 +25,19 @@ import App from './App.vue' import { translate as t } from '@nextcloud/l10n' import VTooltip from '@nextcloud/vue/dist/Directives/Tooltip' import { getRequestToken } from '@nextcloud/auth' -import { generateFilePath } from '@nextcloud/router' // eslint-disable-next-line camelcase __webpack_nonce__ = btoa(getRequestToken()) -// eslint-disable-next-line camelcase -__webpack_public_path__ = generateFilePath('dashboard', '', 'js/') Vue.directive('Tooltip', VTooltip) Vue.prototype.t = t // FIXME workaround to make the sidebar work +if (!window.OCA.Files) { + window.OCA.Files = {} +} + Object.assign(window.OCA.Files, { App: { fileList: { filesClient: OC.Files.getClient() } } }, window.OCA.Files) const Dashboard = Vue.extend(App) diff --git a/apps/dashboard/templates/index.php b/apps/dashboard/templates/index.php index 9e345cdd34a..33fb41d3b78 100644 --- a/apps/dashboard/templates/index.php +++ b/apps/dashboard/templates/index.php @@ -1,5 +1 @@ -
diff --git a/apps/files/src/main-personal-settings.js b/apps/files/src/main-personal-settings.js index 4a56e836ecd..af98d3bea49 100644 --- a/apps/files/src/main-personal-settings.js +++ b/apps/files/src/main-personal-settings.js @@ -22,39 +22,13 @@ * */ -// global t - -/* - * @copyright 2019 Christoph Wurst - * - * @author 2019 Christoph Wurst - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - import Vue from 'vue' import { getRequestToken } from '@nextcloud/auth' -import { generateFilePath } from '@nextcloud/router' import PersonalSettings from './components/PersonalSettings' // eslint-disable-next-line camelcase __webpack_nonce__ = btoa(getRequestToken()) -// eslint-disable-next-line camelcase -__webpack_public_path__ = generateFilePath('files', '', 'js/') Vue.prototype.t = t diff --git a/apps/files_sharing/src/additionalScripts.js b/apps/files_sharing/src/additionalScripts.js index 6f07f7170ca..a91a84b5f91 100644 --- a/apps/files_sharing/src/additionalScripts.js +++ b/apps/files_sharing/src/additionalScripts.js @@ -24,13 +24,9 @@ import './share' import './sharebreadcrumbview' - import './style/sharebreadcrumb.scss' - import './collaborationresourceshandler.js' -// eslint-disable-next-line camelcase -__webpack_public_path__ = OC.linkTo('files_sharing', 'js/dist/') // eslint-disable-next-line camelcase __webpack_nonce__ = btoa(OC.requestToken) diff --git a/apps/files_sharing/src/collaborationresourceshandler.js b/apps/files_sharing/src/collaborationresourceshandler.js index 91558add383..cdbd603d4c7 100644 --- a/apps/files_sharing/src/collaborationresourceshandler.js +++ b/apps/files_sharing/src/collaborationresourceshandler.js @@ -21,8 +21,6 @@ * */ -// eslint-disable-next-line camelcase -__webpack_public_path__ = OC.linkTo('files_sharing', 'js/dist/') // eslint-disable-next-line camelcase __webpack_nonce__ = btoa(OC.requestToken) diff --git a/apps/files_sharing/src/files_sharing.js b/apps/files_sharing/src/files_sharing.js index 1967006dd47..03ea2c739f7 100644 --- a/apps/files_sharing/src/files_sharing.js +++ b/apps/files_sharing/src/files_sharing.js @@ -23,9 +23,3 @@ import '../js/app' import '../js/sharedfilelist' - -// eslint-disable-next-line camelcase -__webpack_nonce__ = btoa(OC.requestToken) - -// eslint-disable-next-line camelcase -__webpack_public_path__ = OC.linkTo('files_sharing', 'js/dist/') diff --git a/apps/files_sharing/src/personal-settings.js b/apps/files_sharing/src/personal-settings.js index fb36e022c0d..9f27b7bf5a1 100644 --- a/apps/files_sharing/src/personal-settings.js +++ b/apps/files_sharing/src/personal-settings.js @@ -21,39 +21,13 @@ * */ -// global t - -/* - * @copyright 2019 Christoph Wurst - * - * @author 2019 Christoph Wurst - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - import Vue from 'vue' import { getRequestToken } from '@nextcloud/auth' -import { generateFilePath } from '@nextcloud/router' import PersonalSettings from './components/PersonalSettings' // eslint-disable-next-line camelcase __webpack_nonce__ = btoa(getRequestToken()) -// eslint-disable-next-line camelcase -__webpack_public_path__ = generateFilePath('files', '', 'js/') Vue.prototype.t = t diff --git a/apps/settings/src/main-apps-users-management.js b/apps/settings/src/main-apps-users-management.js index f50e98785d7..97f23c03f51 100644 --- a/apps/settings/src/main-apps-users-management.js +++ b/apps/settings/src/main-apps-users-management.js @@ -35,15 +35,9 @@ Vue.use(VTooltip, { defaultHtml: false }) sync(store, router) // CSP config for webpack dynamic chunk loading -// eslint-disable-next-line +// eslint-disable-next-line camelcase __webpack_nonce__ = btoa(OC.requestToken) -// Correct the root of the app for chunk loading -// OC.linkTo matches the apps folders -// OC.generateUrl ensure the index.php (or not) -// eslint-disable-next-line -__webpack_public_path__ = OC.linkTo('settings', 'js/') - // bind to window Vue.prototype.t = t Vue.prototype.n = n diff --git a/apps/theming/lib/Listener/BeforeTemplateRenderedListener.php b/apps/theming/lib/Listener/BeforeTemplateRenderedListener.php index 30ebcb89ac8..10a9434835c 100644 --- a/apps/theming/lib/Listener/BeforeTemplateRenderedListener.php +++ b/apps/theming/lib/Listener/BeforeTemplateRenderedListener.php @@ -77,6 +77,7 @@ class BeforeTemplateRenderedListener implements IEventListener { ] ); - \OCP\Util::addScript('theming', 'theming'); + // Making sure to inject just after core + \OCP\Util::addScript('theming', 'theming', 'core'); } } diff --git a/apps/user_status/src/dashboard.js b/apps/user_status/src/dashboard.js index 8b85b695f77..f419003f34d 100644 --- a/apps/user_status/src/dashboard.js +++ b/apps/user_status/src/dashboard.js @@ -21,17 +21,13 @@ */ import Vue from 'vue' -import { generateFilePath } from '@nextcloud/router' import { getRequestToken } from '@nextcloud/auth' import { translate, translatePlural } from '@nextcloud/l10n' import Dashboard from './views/Dashboard' -// eslint-disable-next-line +// eslint-disable-next-line camelcase __webpack_nonce__ = btoa(getRequestToken()) -// eslint-disable-next-line -__webpack_public_path__ = generateFilePath('user_status', '', 'js/') - Vue.prototype.t = translate Vue.prototype.n = translatePlural Vue.prototype.OC = OC diff --git a/apps/user_status/src/menu.js b/apps/user_status/src/menu.js index be10d700f08..3c29f61cc0c 100644 --- a/apps/user_status/src/menu.js +++ b/apps/user_status/src/menu.js @@ -31,12 +31,6 @@ import Avatar from '@nextcloud/vue/dist/Components/Avatar' // eslint-disable-next-line camelcase __webpack_nonce__ = btoa(getRequestToken()) -// Correct the root of the app for chunk loading -// OC.linkTo matches the apps folders -// OC.generateUrl ensure the index.php (or not) -// eslint-disable-next-line -__webpack_public_path__ = OC.linkTo('user_status', 'js/') - Vue.prototype.t = t Vue.prototype.$t = t diff --git a/apps/weather_status/src/weather-status.js b/apps/weather_status/src/weather-status.js index 0816f62e8dc..4b8b2ab79a4 100644 --- a/apps/weather_status/src/weather-status.js +++ b/apps/weather_status/src/weather-status.js @@ -22,16 +22,11 @@ import Vue from 'vue' import { getRequestToken } from '@nextcloud/auth' -import { generateUrl } from '@nextcloud/router' import App from './App' // eslint-disable-next-line camelcase __webpack_nonce__ = btoa(getRequestToken()) -// Correct the root of the app for chunk loading -// eslint-disable-next-line -__webpack_public_path__ = generateUrl('/apps/weather_status/js/') - Vue.prototype.t = t document.addEventListener('DOMContentLoaded', function() { diff --git a/core/src/profile.js b/core/src/profile.js index f0ff5923a61..4e99a11b0e2 100644 --- a/core/src/profile.js +++ b/core/src/profile.js @@ -21,7 +21,6 @@ */ import Vue from 'vue' -import { generateFilePath } from '@nextcloud/router' import { getRequestToken } from '@nextcloud/auth' import { translate as t } from '@nextcloud/l10n' import VTooltip from 'v-tooltip' @@ -31,7 +30,6 @@ import logger from './logger' import Profile from './views/Profile' __webpack_nonce__ = btoa(getRequestToken()) -__webpack_public_path__ = generateFilePath('core', '', 'js/') Vue.use(VTooltip) diff --git a/core/src/recommendedapps.js b/core/src/recommendedapps.js index 44c424989be..31d0e5c932c 100644 --- a/core/src/recommendedapps.js +++ b/core/src/recommendedapps.js @@ -21,7 +21,6 @@ */ import { getRequestToken } from '@nextcloud/auth' -import { generateFilePath } from '@nextcloud/router' import { translate as t } from '@nextcloud/l10n' import Vue from 'vue' @@ -30,8 +29,6 @@ import RecommendedApps from './components/setup/RecommendedApps' // eslint-disable-next-line camelcase __webpack_nonce__ = btoa(getRequestToken()) -// eslint-disable-next-line camelcase -__webpack_public_path__ = generateFilePath('core', '', 'js/') Vue.mixin({ methods: { diff --git a/core/src/unified-search.js b/core/src/unified-search.js index a799586017b..91db8b34dd0 100644 --- a/core/src/unified-search.js +++ b/core/src/unified-search.js @@ -20,7 +20,6 @@ * */ -import { generateFilePath } from '@nextcloud/router' import { getLoggerBuilder } from '@nextcloud/logger' import { getRequestToken } from '@nextcloud/auth' import { translate as t, translatePlural as n } from '@nextcloud/l10n' @@ -31,9 +30,6 @@ import UnifiedSearch from './views/UnifiedSearch.vue' // eslint-disable-next-line camelcase __webpack_nonce__ = btoa(getRequestToken()) -// eslint-disable-next-line camelcase -__webpack_public_path__ = generateFilePath('core', '', 'js/') - const logger = getLoggerBuilder() .setApp('unified-search') .detectUser() diff --git a/webpack.common.js b/webpack.common.js index b101456bd5d..456f971a3aa 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -42,7 +42,8 @@ module.exports = { output: { // Step away from the src folder and extract to the js folder path: path.join(__dirname, 'dist'), - publicPath: '/dist/', + // Let webpack determine automatically where it's located + publicPath: 'auto', filename: '[name].js?v=[contenthash]', chunkFilename: '[name]-[id].js?v=[contenthash]', // Make sure sourcemaps have a proper path and do not diff --git a/webpack.modules.js b/webpack.modules.js index e794acf067a..8ada088bab1 100644 --- a/webpack.modules.js +++ b/webpack.modules.js @@ -43,7 +43,7 @@ module.exports = { systemtags: path.resolve(__dirname, 'core/src', 'systemtags/merged-systemtags.js'), }, dashboard: { - 'dashboard-main': path.join(__dirname, 'apps/dashboard/src', 'main.js'), + main: path.join(__dirname, 'apps/dashboard/src', 'main.js'), }, dav: { 'settings-admin-caldav': path.join(__dirname, 'apps/dav/src', 'settings.js'),