• Altersprüfung

    Alt genug für Alpirsbacher?

    Bier ist ein Kulturgut, das verantwortungsvoll konsumiert werden sollte. Die Internetseite der Alpirsbacher Klosterbräu enthält Werbeinformationen zu alkoholischen Getränken. Wir tragen Verantwortung und setzen uns im Rahmen der gesetzlichen Bestimmungen für den verantwortungsbewussten Umgang mit alkoholischen Getränken ein.



  • ich bin mindestens 16 Jahre
ViisonCommonApp.addSnippetNamespaces({"backend\/viison_common_compatibility_check\/main":{"check\/notification\/additionalinformation":"Mehr Informationen","check\/notification\/message":"Das Plugin [0] erfordert Version >= [1] des Plugins [2]. Bitte aktualisieren Sie das Plugin.","check\/notification\/title":"Plugin Kompatibilit\u00e4t"}}); // Copyright (c) Pickware GmbH. All rights reserved. // This file is part of software that is released under a proprietary license. // You must not copy, modify, distribute, make publicly available, or execute // its contents or parts thereof without express permission by the copyright // holder, unless otherwise permitted by law. Ext.define('Shopware.apps.ViisonCommonCompatibilityCheck.view.Menu', { override: 'Shopware.apps.Index.view.Menu', /* @Override */ initComponent: function () { // Trigger the compatibility check 500 ms after the menu was created this.on('menu-created', function () { window.setTimeout(this.viisonCommonPerformCompatibilityCheck.bind(this), 500); }, this); return this.callParent(arguments); }, /** * Checks for any plugin compatibility issues and displays them * as growl messages. */ viisonCommonPerformCompatibilityCheck: function () { Ext.Ajax.request({ url: ViisonCommonApp.assembleBackendUrl('ViisonCommonCompatibilityCheck/getCompatibilityIssues'), scope: this, success: function (response) { var responseData = Ext.JSON.decode(response.responseText, true); if (!responseData.success) { return; } // Display compatibility issues as growl message. // Each issue is displayed in its own growl message var compatibilityIssues = responseData.data; if (compatibilityIssues !== null) { Ext.Array.forEach(compatibilityIssues, function (growl) { Shopware.Notification.createStickyGrowlMessage({ title: ViisonCommonApp.getSnippet('check/notification/title', 'backend/viison_common_compatibility_check/main'), text: growl.message, // Add additional button if link and title are given btnDetail: (growl.detailButton) ? { text: growl.detailButton.title, callback: function () { // Open the link window.open(growl.detailButton.link, '_blank'); }, } : '', }); }, this); } }, }); }, }); // Copyright (c) Pickware GmbH. All rights reserved. // This file is part of software that is released under a proprietary license. // You must not copy, modify, distribute, make publicly available, or execute // its contents or parts thereof without express permission by the copyright // holder, unless otherwise permitted by law. Ext.define('Shopware.apps.ViisonCommonCompatibilityCheck', { /** * Extends from the general sub-application controller, which handles * the sub-application behavior and the event bus. */ extend: 'Enlight.app.SubApplication', /** * The name of the module. */ name: 'Shopware.apps.ViisonCommonCompatibilityCheck', }); ViisonCommonApp.addSnippetNamespaces({"backend\/viison_common_migration\/main":{"dialog\/error\/body":"Folgender unerwarteter Fehler ist aufgetreten:","dialog\/error\/title":"Ein unerwarteter Fehler ist aufgetreten","errorWindow\/button\/disablePlugins\/confirmation\/text":"Wollen Sie wirklich die Migrationen \u00fcberspringen und damit die betroffenen Plugins deaktivieren?","errorWindow\/button\/disablePlugins\/confirmation\/title":"Plugins wirklich deaktivieren?","errorWindow\/button\/disablePlugins\/text":"Abbrechen und Plugins deaktivieren","errorWindow\/button\/reloadBackend\/text":"Backend neuladen","errorWindow\/button\/retry\/text":"Erneut versuchen","errorWindow\/description\/header":"Migrationsfehler aufgetreten!","errorWindow\/description\/paragraph":"F\u00fcr mindestens ein Plugin sind Migrationen fehlgeschlagen:","errorWindow\/migrationSetList\/actionColumn\/copyDetails\/growlMessage\/error\/text":"Kopieren der Fehlerdetails in diesem Browser nicht m\u00f6glich. Bitte klicken Sie auf die Lupe und kopieren Sie die Details manuell in die Zwischenablage.","errorWindow\/migrationSetList\/actionColumn\/copyDetails\/growlMessage\/error\/title":"Fehler","errorWindow\/migrationSetList\/actionColumn\/copyDetails\/growlMessage\/success\/text":"Fehlerdetails wurden in die Zwischenablage kopiert.","errorWindow\/migrationSetList\/actionColumn\/copyDetails\/growlMessage\/success\/title":"Details in Zwischenablage kopiert","errorWindow\/migrationSetList\/actionColumn\/copyDetails\/toolTip":"Fehlerdetails in die Zwischenablage kopieren","errorWindow\/migrationSetList\/actionColumn\/showDetails\/dialog\/title":"Fehlerdetails","errorWindow\/migrationSetList\/actionColumn\/showDetails\/toolTip":"Fehlerdetails anzeigen","errorWindow\/migrationSetList\/column\/errorMessage\/text":"Fehlermeldung","errorWindow\/migrationSetList\/column\/errorMessage\/value\/noError":"Kein Fehler aufgetreten<\/i>","errorWindow\/migrationSetList\/column\/pluginName\/text":"Plugin","errorWindow\/migrationSetList\/column\/remaining\/text":"Ausstehend","errorWindow\/migrationSetList\/column\/remaining\/toolTip":"Anzahl noch ausstehender Migrationen","errorWindow\/migrationSetList\/column\/successful\/text":"Erfolgreich","errorWindow\/migrationSetList\/column\/successful\/toolTip":"Anzahl erfolgreicher Migrationen","errorWindow\/migrationSetList\/header":"Hinweise zu den durchgef\u00fchrten Migrationen","errorWindow\/title":"Shopware-Update erkannt","growlMessage\/successfulMigration\/text":"Dadurch ergeben sich \u00c4nderungen an ihren Plugins","growlMessage\/successfulMigration\/title":"Shopware Update erkannt","loadMask\/disablingPlugins":"Deaktiviere betroffene Plugins ...","loadMask\/reloadingBackend":"Lade Backend neu ...","migrationLog\/clearedCaches":"Geleerte Caches:","migrationLog\/disabledPlugins":"Meldungen von deaktivierten Plugins:","successWindow\/button\/close\/text":"Schlie\u00dfen","successWindow\/description\/header":"Migrationen wurden erfolgreich durchgef\u00fchrt!","successWindow\/description\/paragraph":"Bitte beachten Sie dazu folgende Hinweise:","successWindow\/title":"Shopware-Update erkannt"}}); // Copyright (c) Pickware GmbH. All rights reserved. // This file is part of software that is released under a proprietary license. // You must not copy, modify, distribute, make publicly available, or execute // its contents or parts thereof without express permission by the copyright // holder, unless otherwise permitted by law. Ext.define('Shopware.apps.ViisonCommonMigration.component.MigrationLog', { extend: 'Ext.form.field.TextArea', mixins: [ 'Shopware.apps.ViisonCommonApp.Mixin', ], viisonSnippetNamespace: 'backend/viison_common_migration/main', readOnly: true, cls: 'is--viison-common--textarea viison_common_migration-component-migration_log', style: { fontFamily: 'Arial, Verdana, sans-serif', }, migrationExecutionResult: null, initComponent: function () { this.callParent(arguments); this.setValueFromMigrationExecutionResult(this.migrationExecutionResult); }, /** * Fills the content with the log for a MigrationExecutionResult * * @param {Shopware.apps.ViisonCommonMigration.model.MigrationExecutionResult} migrationExecutionResult */ setValueFromMigrationExecutionResult: function (migrationExecutionResult) { if (!migrationExecutionResult) { this.setValue(''); } var log = ''; log += migrationExecutionResult.getMessages().join('\n\n'); log += '\n\n' + this.getViisonSnippet('migrationLog/clearedCaches') + '\n'; log += migrationExecutionResult.getInvalidatedCaches().join(', '); this.setValue(log); }, /** * Extends the content with the log for a pluginDisablingResult * * @param {object} pluginDisablingResultData */ appendPluginDisablingResultData: function (pluginDisablingResultData) { var log = this.getValue(); log += '\n\n' + this.getViisonSnippet('migrationLog/disabledPlugins') + '\n'; log += pluginDisablingResultData.messages.join('\n'); log += '\n\n' + this.getViisonSnippet('migrationLog/clearedCaches') + '\n'; log += pluginDisablingResultData.invalidatedCaches.join(', '); this.setValue(log); }, }); // Copyright (c) Pickware GmbH. All rights reserved. // This file is part of software that is released under a proprietary license. // You must not copy, modify, distribute, make publicly available, or execute // its contents or parts thereof without express permission by the copyright // holder, unless otherwise permitted by law. Ext.define('Shopware.apps.ViisonCommonMigration.controller.Main', { extend: 'Ext.app.Controller', mixins: [ 'Shopware.apps.ViisonCommonApp.Mixin', ], viisonSnippetNamespace: 'backend/viison_common_migration/main', /** * @Override */ init: function () { this.callParent(arguments); this.control({ 'viison_common_migration-error_window': { clickDisablePluginsButton: this.onClickDisablePluginsButton, clickReloadBackendButton: this.onClickReloadBackendButton, retry: this.onRetry, }, }); this.executeMigrations(); }, /** * Sends a request to the server to execute all executable migrations */ executeMigrations: function () { var fiveMinutesInMilliseconds = 5 * 60 * 1000; var tenSecondsInMilliseconds = 10 * 1000; // The max execution time of the migration framework is 5 minutes. Therefore allow 5 minutes plus 10 seconds // (to handle the request/response boilerplate) for the request. var timeoutInMilliseconds = fiveMinutesInMilliseconds + tenSecondsInMilliseconds; Ext.Ajax.request({ url: ViisonCommonApp.assembleBackendUrl('ViisonCommonMigration/executeMigrations'), scope: this, timeout: timeoutInMilliseconds, success: function (response) { var responseData = Ext.JSON.decode(response.responseText, true); if (!responseData || !responseData.success) { this.showErrorDialogForFailedRequest(response); } var migrationExecutionResultStore = Ext.create('Shopware.apps.ViisonCommonMigration.store.MigrationExecutionResult'); migrationExecutionResultStore.loadData([responseData.data]); var migrationExecutionResult = migrationExecutionResultStore.first(); this.clearCaches(migrationExecutionResult.getInvalidatedCaches()); if (migrationExecutionResult.hasExecutableMigrations()) { // If the migration store has executable migrations AFTER the execution, it means there went s.th. // wrong this.showErrorWindow(migrationExecutionResult); return; } if (migrationExecutionResult.getMessages().length === 0) { // The sub app should be absolutely quiet if no migrations has a message to be shown to the user return; } Shopware.Notification.createStickyGrowlMessage({ title: this.getViisonSnippet('growlMessage/successfulMigration/title'), text: this.getViisonSnippet('growlMessage/successfulMigration/text'), btnDetail: { callback: function () { this.showSuccessWindow(migrationExecutionResult); }, scope: this, }, }); }, failure: function (response) { this.showErrorDialogForFailedRequest(response); }, }); }, /** * Sends a requests to the server to clear Shopware caches. * * @param {string[]} caches The names of the caches to clear */ clearCaches: function (caches) { if (caches.length === 0) { return; } var requestParams = {}; caches.forEach(function (cache) { requestParams[cache] = 'on'; }); Ext.Ajax.request({ url: ViisonCommonApp.assembleBackendUrl('Cache/clearCache'), method: 'post', params: caches, success: function (response) { var responseData = Ext.JSON.decode(response.responseText); if (!responseData.success) { this.showErrorDialogForFailedRequest(response); } if (caches.indexOf('theme') >= 0 || caches.indexOf('frontend') >= 0) { Shopware.app.Application.fireEvent('shopware-theme-cache-warm-up-request'); } }, failure: function (response) { this.showErrorDialogForFailedRequest(response); }, scope: this, }); }, /** * Shows the error window for a MigrationExecutionResult * * @param {Shopware.apps.ViisonCommonMigration.model.MigrationExecutionResult} migrationExecutionResult */ showErrorWindow: function (migrationExecutionResult) { Ext.create('Shopware.apps.ViisonCommonMigration.view.error.Window', { migrationExecutionResult: migrationExecutionResult, subApp: this.subApplication, }); }, /** * Shows the success window for a MigrationExecutionResult * * @param {Shopware.apps.ViisonCommonMigration.model.MigrationExecutionResult} migrationExecutionResult */ showSuccessWindow: function (migrationExecutionResult) { Ext.create('Shopware.apps.ViisonCommonMigration.view.success.Window', { migrationExecutionResult: migrationExecutionResult, }); }, /** * Handles event when the user clicks the 'disable plugins' button * * @param {Shopware.apps.ViisonCommonMigration.view.error.Window} migrationWindow */ onClickDisablePluginsButton: function (migrationWindow) { this.getViisonSnippet('loadMask/disablingPlugins'); Ext.Ajax.request({ url: ViisonCommonApp.assembleBackendUrl('ViisonCommonMigration/disablePluginsWithExecutableMigrations'), success: function (response) { var responseData = Ext.JSON.decode(response.responseText, true); if (!responseData.success) { this.showError(responseData.message); } this.clearCaches(responseData.data.invalidatedCaches); migrationWindow.migrationLog.appendPluginDisablingResultData(responseData.data); migrationWindow.reloadBackendButton.show(); migrationWindow.disablePluginsButton.hide(); migrationWindow.retryButton.hide(); }, failure: function (response) { this.showError(response.statusText); }, callback: function () { migrationWindow.setLoading(false); }, scope: this, }); }, /** * Handles event when the user clicks the 'reload backend' button * * @param {Shopware.apps.ViisonCommonMigration.view.error.Window} migrationWindow */ onClickReloadBackendButton: function (migrationWindow) { this.reloadBackend(migrationWindow); }, /** * Handles event when the user clicks the 'retry' button * * @param {Shopware.apps.ViisonCommonMigration.view.error.Window} migrationWindow */ onRetry: function (migrationWindow) { // When the backend is reloaded, all failed migrations will be retried this.reloadBackend(migrationWindow); }, /** * Reloads the backend and shows a loading mask about that in the given window. * * @param {Ext.window.Window} window */ reloadBackend: function (window) { window.setLoading(this.getViisonSnippet('loadMask/reloadingBackend')); // eslint-disable-next-line no-restricted-globals location.reload(); }, /** * @param {XMLHttpRequest} XMLHttpRequest */ showErrorDialogForFailedRequest: function (XMLHttpRequest) { var errorMessage = this.getErrorMessageFromXMLHttpRequest(XMLHttpRequest); var dialogMessage = this.getViisonSnippet('dialog/error/body') + '\n\n' + errorMessage; Ext.Msg.show({ title: this.getViisonSnippet('dialog/error/title'), msg: dialogMessage, buttons: Ext.Msg.OK, icon: Ext.Msg.ERROR, }); }, /** * @param {XMLHttpRequest} XMLHttpRequest */ getErrorMessageFromXMLHttpRequest: function (XMLHttpRequest) { var json = Ext.JSON.decode(XMLHttpRequest.responseText, true); if (json) { if (json.success) { return ''; } return json.message; } return XMLHttpRequest.statusText + '\n\n' + XMLHttpRequest.responseText; }, }); // Copyright (c) Pickware GmbH. All rights reserved. // This file is part of software that is released under a proprietary license. // You must not copy, modify, distribute, make publicly available, or execute // its contents or parts thereof without express permission by the copyright // holder, unless otherwise permitted by law. Ext.define('Shopware.apps.ViisonCommonMigration.model.ManifestedMigration', { extend: 'Ext.data.Model', alternateClassName: 'ViisonManifestedMigration', statics: { STATUS_COMPLETED: 'completed', STATUS_FAILED: 'failed', STATUS_PENDING: 'pending', }, fields: [ { name: 'migrationSetId', type: 'int' }, { name: 'name', type: 'string' }, { name: 'status', type: 'string' }, { name: 'canExecute', type: 'boolean' }, { name: 'exceptionMessage', type: 'string', useNull: true }, { name: 'exceptionDetails', type: 'string', useNull: true }, ], }); // Copyright (c) Pickware GmbH. All rights reserved. // This file is part of software that is released under a proprietary license. // You must not copy, modify, distribute, make publicly available, or execute // its contents or parts thereof without express permission by the copyright // holder, unless otherwise permitted by law. Ext.define('Shopware.apps.ViisonCommonMigration.model.MigrationExecutionResult', { extend: 'Ext.data.Model', fields: [ { name: 'id', type: 'int' }, { name: 'migrationTranscript', type: 'auto' }, ], associations: [{ type: 'hasMany', model: 'Shopware.apps.ViisonCommonMigration.model.MigrationSet', associationKey: 'migrationSets', name: 'getMigrationSets', foreignKey: 'migrationExecutionResultId', primaryKey: 'id', }], /** * @returns {string[]} */ getInvalidatedCaches: function () { return this.get('migrationTranscript').invalidatedCaches; }, /** * @returns {string[]} */ getMessages: function () { return this.get('migrationTranscript').messages; }, /** * @returns {boolean} */ hasExecutableMigrations: function () { var migrationSets = this.getMigrationSets(); for (var i = 0; i < migrationSets.count(); i += 1) { if (migrationSets.getAt(i).get('hasExecutableMigrations')) { return true; } } return false; }, }); // Copyright (c) Pickware GmbH. All rights reserved. // This file is part of software that is released under a proprietary license. // You must not copy, modify, distribute, make publicly available, or execute // its contents or parts thereof without express permission by the copyright // holder, unless otherwise permitted by law. Ext.define('Shopware.apps.ViisonCommonMigration.model.MigrationSet', { extend: 'Ext.data.Model', fields: [ { name: 'id', type: 'int' }, { name: 'migrationExecutionResultId', type: 'int', useNull: true, default: null }, { name: 'name', type: 'string' }, { name: 'hasExecutableMigrations', type: 'boolean' }, ], associations: [{ type: 'hasMany', model: 'Shopware.apps.ViisonCommonMigration.model.ManifestedMigration', associationKey: 'migrations', name: 'getMigrations', foreignKey: 'migrationSetId', primaryKey: 'id', }], /** * @returns {Shopware.apps.ViisonCommonMigration.model.ManifestedMigration[]} */ getExecutableMigrations: function () { return this.getMigrations().getRange().filter(function (migration) { return migration.get('canExecute'); }); }, /** * @returns {Shopware.apps.ViisonCommonMigration.model.ManifestedMigration} */ getFailedMigration: function () { var failedMigration = null; this.getMigrations().getRange().forEach(function (migration) { if (migration.get('status') === ViisonManifestedMigration.STATUS_FAILED) { failedMigration = migration; return false; } return true; }); return failedMigration; }, }); // Copyright (c) Pickware GmbH. All rights reserved. // This file is part of software that is released under a proprietary license. // You must not copy, modify, distribute, make publicly available, or execute // its contents or parts thereof without express permission by the copyright // holder, unless otherwise permitted by law. Ext.define('Shopware.apps.ViisonCommonMigration.store.MigrationExecutionResult', { extend: 'Ext.data.Store', model: 'Shopware.apps.ViisonCommonMigration.model.MigrationExecutionResult', /** * @override */ loadData: function (MigrationExecutionResultData, append) { if (!append) { this.removeAll(); } MigrationExecutionResultData.forEach(function (migrationExecutionResultData) { var migrationExecutionResult = Ext.create(this.model, migrationExecutionResultData); migrationExecutionResult.getMigrationSetsStore = Ext.create( 'Shopware.apps.ViisonCommonMigration.store.MigrationSet' ); migrationExecutionResult.getMigrationSets().loadData(migrationExecutionResultData.migrationSets); this.add(migrationExecutionResult); }, this); }, }); // Copyright (c) Pickware GmbH. All rights reserved. // This file is part of software that is released under a proprietary license. // You must not copy, modify, distribute, make publicly available, or execute // its contents or parts thereof without express permission by the copyright // holder, unless otherwise permitted by law. Ext.define('Shopware.apps.ViisonCommonMigration.store.MigrationSet', { extend: 'Ext.data.Store', model: 'Shopware.apps.ViisonCommonMigration.model.MigrationSet', sorters: [ { property: 'name' }, ], /** * @override */ loadData: function (migrationSetsData, append) { if (!append) { this.removeAll(); } migrationSetsData.forEach(function (migrationSetData) { var migrationSet = Ext.create(this.model, migrationSetData); migrationSet.getMigrations().loadData(migrationSetData.migrations); this.add(migrationSet); }, this); }, }); // Copyright (c) Pickware GmbH. All rights reserved. // This file is part of software that is released under a proprietary license. // You must not copy, modify, distribute, make publicly available, or execute // its contents or parts thereof without express permission by the copyright // holder, unless otherwise permitted by law. Ext.define('Shopware.apps.ViisonCommonMigration.view.error.List', { extend: 'Ext.grid.Panel', mixins: [ 'Shopware.apps.ViisonCommonApp.Mixin', ], viisonSnippetNamespace: 'backend/viison_common_migration/main', cls: 'viison-common--grid', /** * @override */ initComponent: function () { this.columns = this.createColumns(); this.callParent(arguments); }, /** * @returns {object[]} */ createColumns: function () { return [ { text: this.getViisonSnippet('errorWindow/migrationSetList/column/pluginName/text'), dataIndex: 'name', width: 150, sortable: false, }, { text: this.getViisonSnippet('errorWindow/migrationSetList/column/successful/text'), width: 75, tooltip: this.getViisonSnippet('errorWindow/migrationSetList/column/successful/toolTip'), sortable: false, renderer: function (value, meta, record) { return record.getMigrations().count() - record.getExecutableMigrations().length; }, }, { text: this.getViisonSnippet('errorWindow/migrationSetList/column/remaining/text'), width: 75, tooltip: this.getViisonSnippet('errorWindow/migrationSetList/column/remaining/toolTip'), sortable: false, renderer: function (value, meta, record) { return record.getExecutableMigrations().length; }, }, { text: this.getViisonSnippet('errorWindow/migrationSetList/column/errorMessage/text'), dataIndex: 'exceptionMessage', flex: 1, sortable: false, renderer: function (value, meta, record) { var failedMigration = record.getFailedMigration(); if (failedMigration) { return failedMigration.get('exceptionMessage'); } return this.getViisonSnippet('errorWindow/migrationSetList/column/errorMessage/value/noError'); }, scope: this, }, { xtype: 'actioncolumn', width: 48, items: this.createActionColumnItems(), }, ]; }, /** * @returns {object[]} */ createActionColumnItems: function () { var getClassFunction = function (value, metadata, record) { if (record.getFailedMigration()) { return ''; } return 'x-hidden'; }; return [{ iconCls: 'sprite-magnifier', tooltip: this.getViisonSnippet('errorWindow/migrationSetList/actionColumn/showDetails/toolTip'), getClass: getClassFunction, handler: function (view, rowIndex, colIndex, item, ops, record) { Ext.Msg.alert( this.getViisonSnippet('errorWindow/migrationSetList/actionColumn/showDetails/dialog/title'), record.getFailedMigration().get('exceptionDetails') ); }, scope: this, }, { iconCls: 'sprite-document-copy', tooltip: this.getViisonSnippet('errorWindow/migrationSetList/actionColumn/showDetails/toolTip'), getClass: getClassFunction, handler: function (view, rowIndex, colIndex, item, ops, record) { var textArea = document.createElement('textarea'); textArea.value = record.getFailedMigration().get('exceptionDetails'); document.body.appendChild(textArea); textArea.select(); try { document.execCommand('copy'); Shopware.Msg.createGrowlMessage( this.getViisonSnippet('errorWindow/migrationSetList/actionColumn/copyDetails/growlMessage/success/title'), this.getViisonSnippet('errorWindow/migrationSetList/actionColumn/copyDetails/growlMessage/success/text'), 'Pickware' ); } catch (err) { Shopware.Msg.createGrowlMessage( this.getViisonSnippet('errorWindow/migrationSetList/actionColumn/copyDetails/growlMessage/error/title'), this.getViisonSnippet('errorWindow/migrationSetList/actionColumn/copyDetails/growlMessage/error/text'), 'Pickware' ); } document.body.removeChild(textArea); }, scope: this, }]; }, }); // Copyright (c) Pickware GmbH. All rights reserved. // This file is part of software that is released under a proprietary license. // You must not copy, modify, distribute, make publicly available, or execute // its contents or parts thereof without express permission by the copyright // holder, unless otherwise permitted by law. Ext.define('Shopware.apps.ViisonCommonMigration.view.error.Window', { extend: 'Enlight.app.Window', alias: 'widget.viison_common_migration-error_window', mixins: [ 'Shopware.apps.ViisonCommonApp.Mixin', ], viisonSnippetNamespace: 'backend/viison_common_migration/main', autoShow: true, minimizable: false, layout: { type: 'vbox', align: 'stretch', pack: 'start', }, height: '70%', width: 900, modal: true, migrationExecutionResult: null, /** * @override */ initComponent: function () { this.title = this.getViisonSnippet('errorWindow/title'); this.items = [ this.createHelpContainer(), this.createMigrationsList(), this.createMigrationLogContainer(), ]; this.buttons = this.createButtons(); this.callParent(arguments); }, /** * @returns {(Ext.button.Button)[]} */ createButtons: function () { this.disablePluginsButton = Ext.create('Ext.button.Button', { text: this.getViisonSnippet('errorWindow/button/disablePlugins/text'), cls: 'secondary', handler: function () { Ext.Msg.confirm( this.getViisonSnippet('errorWindow/button/disablePlugins/confirmation/title'), this.getViisonSnippet('errorWindow/button/disablePlugins/confirmation/text'), function (selection) { if (selection === 'yes') { this.fireEvent('clickDisablePluginsButton', this); } }, this ); }, scope: this, }); this.reloadBackendButton = Ext.create('Ext.button.Button', { text: this.getViisonSnippet('errorWindow/button/reloadBackend/text'), cls: 'primary', hidden: true, handler: function () { this.fireEvent('clickReloadBackendButton', this); }, scope: this, }); this.retryButton = Ext.create('Ext.button.Button', { text: this.getViisonSnippet('errorWindow/button/retry/text'), cls: 'primary', handler: function () { this.fireEvent('retry', this); }, scope: this, }); return [ this.disablePluginsButton, this.reloadBackendButton, this.retryButton, ]; }, /** * @returns {object} */ createHelpContainer: function () { return { xtype: 'container', cls: 'viison-common--explanation-area', anchor: '100%', items: [ { xtype: 'container', cls: 'is--header', html: this.getViisonSnippet('errorWindow/description/header'), }, { xtype: 'container', cls: 'is--paragraph', html: this.getViisonSnippet('errorWindow/description/paragraph'), }, ], }; }, /** * @returns {Shopware.apps.ViisonCommonMigration.view.error.List} */ createMigrationsList: function () { this.migrationsList = Ext.create('Shopware.apps.ViisonCommonMigration.view.error.List', { store: this.migrationExecutionResult.getMigrationSets(), height: 100, anchor: '100%', }); return this.migrationsList; }, /** * @returns {object} */ createMigrationLogContainer: function () { return { xtype: 'container', flex: 1, anchor: '100%', layout: 'border', items: [ { xtype: 'container', region: 'north', cls: 'viison-common--explanation-area', items: [ { xtype: 'container', cls: 'is--header is--last', html: this.getViisonSnippet('errorWindow/migrationSetList/header'), }, ], }, this.createMigrationLog(), ], }; }, /** * @returns {Shopware.apps.ViisonCommonMigration.component.MigrationLog} */ createMigrationLog: function () { this.migrationLog = Ext.create('Shopware.apps.ViisonCommonMigration.component.MigrationLog', { region: 'center', migrationExecutionResult: this.migrationExecutionResult, }); return this.migrationLog; }, }); // Copyright (c) Pickware GmbH. All rights reserved. // This file is part of software that is released under a proprietary license. // You must not copy, modify, distribute, make publicly available, or execute // its contents or parts thereof without express permission by the copyright // holder, unless otherwise permitted by law. Ext.define('Shopware.apps.ViisonCommonMigration.view.success.Window', { extend: 'Enlight.app.Window', mixins: [ 'Shopware.apps.ViisonCommonApp.Mixin', ], viisonSnippetNamespace: 'backend/viison_common_migration/main', autoShow: true, layout: 'border', height: '60%', width: 900, migrationExecutionResult: null, /** * @Override */ initComponent: function () { this.title = this.getViisonSnippet('successWindow/title'); this.items = [ this.createHelpContainer(), this.createMigrationLog(), ]; this.buttons = this.createButtons(); this.callParent(arguments); }, /** * @returns {object} */ createHelpContainer: function () { return { xtype: 'container', cls: 'viison-common--explanation-area', region: 'north', items: [ { xtype: 'container', cls: 'is--header', html: this.getViisonSnippet('successWindow/description/header'), }, { xtype: 'container', cls: 'is--paragraph', html: this.getViisonSnippet('successWindow/description/paragraph'), }, ], }; }, /** * @returns {object[]} */ createButtons: function () { return [{ xtype: 'button', text: this.getViisonSnippet('successWindow/button/close/text'), cls: 'primary', handler: function () { this.close(); }, scope: this, }]; }, /** * @returns {Shopware.apps.ViisonCommonMigration.component.MigrationLog} */ createMigrationLog: function () { this.migrationLog = Ext.create('Shopware.apps.ViisonCommonMigration.component.MigrationLog', { region: 'center', width: '100%', migrationExecutionResult: this.migrationExecutionResult, }); return this.migrationLog; }, }); // Copyright (c) Pickware GmbH. All rights reserved. // This file is part of software that is released under a proprietary license. // You must not copy, modify, distribute, make publicly available, or execute // its contents or parts thereof without express permission by the copyright // holder, unless otherwise permitted by law. Ext.define('Shopware.apps.ViisonCommonMigration', { override: 'Shopware.apps.Index', /** * @Override */ init: function () { this.callParent(arguments); window.setTimeout(function () { this.addController({ name: 'Shopware.apps.ViisonCommonMigration.controller.Main', }); }.bind(this), 1000); }, }); ViisonCommonApp.addSnippetNamespaces({"backend\/viison_coupon_article_configuration_check\/main":{"message\/button\/openArticle":"Artikel aufrufen","message\/hidePrompt\/question\/tax":"M\u00f6chten Sie die Meldung \u00fcber die fehlerhafte Steuer-Konfigurationen von Geschenkgutschein-Artikeln dauerhaft deaktivieren?","message\/hidePrompt\/title":"Meldung ausblenden","message\/text\/missingVoucher":"Der zugeordnete Geschenkgutschein zu Artikel [0] existiert nicht mehr. Bitte ordnen Sie dem Artikel einen neuen Geschenkgutschein zu, da die automatische Gutscheinerzeugung bei Kauf des Artikels ansonsten fehlschl\u00e4gt.","message\/text\/tax":"Der MwSt.-Satz des Geschenkgutschein-Artikels [0] stimmt nicht mit der Steuer-Konfiguration des zugewiesenen Geschenkgutscheins \u00fcberein.","message\/title":"Fehlerhaft konfigurierter Geschenkgutschein"}}); // Copyright (c) Pickware GmbH. All rights reserved. // This file is part of software that is released under a proprietary license. // You must not copy, modify, distribute, make publicly available, or execute // its contents or parts thereof without express permission by the copyright // holder, unless otherwise permitted by law. Ext.define('Shopware.apps.ViisonCouponArticleConfigurationCheck.view.Menu', { override: 'Shopware.apps.Index.view.Menu', /** * @Override */ initComponent: function () { // Trigger the article configuration check 500 ms after the menu was created this.on('menu-created', function () { window.setTimeout(function () { this.viisonCouponPerformStockCheck(); }.bind(this), 500); }, this); this.callParent(arguments); }, /** * Checks if there are 'problem articles' and shows a Growl Messages when so. */ viisonCouponPerformStockCheck: function () { Ext.Ajax.request({ url: ViisonCommonApp.assembleBackendUrl('ViisonCoupon/getMisconfiguredArticleDetails'), success: function (response) { // Decode the response var responseData = Ext.JSON.decode(response.responseText, true); if (!responseData || !responseData.success || parseInt(responseData.data.numberOfMisconfiguredArticleDetails, 10) === 0) { return; } responseData.data.misconfiguredArticleDetails.forEach(function (misconfiguredArticleDetail) { var hidedWarnings = localStorage.getItem('viisonCouponHideMisconfiguredArticleDetailMessages') || []; // Hide all warnings that the user as hidden permanently if (hidedWarnings.indexOf(misconfiguredArticleDetail.problemKind) !== -1) { return; } var message = ''; switch (misconfiguredArticleDetail.problemKind) { case 'missingGiftVoucher': message = ViisonCommonApp.getSnippet('message/text/missingVoucher', 'backend/viison_coupon_article_configuration_check/main'); break; case 'taxConfigurationsDiffer': message = ViisonCommonApp.getSnippet('message/text/tax', 'backend/viison_coupon_article_configuration_check/main'); break; default: } Shopware.Notification.createStickyGrowlMessage({ title: ViisonCommonApp.getSnippet('message/title', 'backend/viison_coupon_article_configuration_check/main'), text: Ext.String.format(message, misconfiguredArticleDetail.articleDetail.number), btnDetail: { text: ViisonCommonApp.getSnippet('message/button/openArticle', 'backend/viison_coupon_article_configuration_check/main'), callback: function () { // Open the stock setup sub app Shopware.app.Application.addSubApplication({ name: 'Shopware.apps.Article', params: { articleId: misconfiguredArticleDetail.articleDetail.articleId, }, }); }, }, onCloseButton: function () { // Warnings about missing gift vouchers cannot be hided if (misconfiguredArticleDetail.problemKind === 'missingGiftVoucher') { return; } switch (misconfiguredArticleDetail.problemKind) { case 'taxConfigurationsDiffer': message = ViisonCommonApp.getSnippet('message/hidePrompt/question/tax', 'backend/viison_coupon_article_configuration_check/main'); break; default: message = ''; } Ext.MessageBox.confirm( ViisonCommonApp.getSnippet('message/hidePrompt/title', 'backend/viison_coupon_article_configuration_check/main'), message, function (clickedButton) { if (clickedButton === 'yes') { hidedWarnings.push(misconfiguredArticleDetail.problemKind); localStorage.setItem('viisonCouponHideMisconfiguredArticleDetailMessages', hidedWarnings); } } ); }, }); }); }, }); }, });