diff --git a/app/Http/Controllers/FileAccessController.php b/app/Http/Controllers/FileAccessController.php index ce6b857b..2847d15f 100644 --- a/app/Http/Controllers/FileAccessController.php +++ b/app/Http/Controllers/FileAccessController.php @@ -36,6 +36,25 @@ class FileAccessController extends Controller return Storage::download($path, $basename); } + /** + * Get system image + * + * @param $basename + * @return mixed + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + */ + public function get_system_image($basename) + { + // Get file path + $path = '/system/' . $basename; + + // Check if file exist + if (!Storage::exists($path)) abort(404); + + // Return avatar + return Storage::download($path, $basename); + } + /** * Get file * diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 00f525b1..0c142982 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -178,5 +178,55 @@ "/js/main.e71f6bd71eef17aa1119.hot-update.js": "/js/main.e71f6bd71eef17aa1119.hot-update.js", "/js/main.0029144db32ea7c1e9a5.hot-update.js": "/js/main.0029144db32ea7c1e9a5.hot-update.js", "/js/main.d8f463bb144619871d2b.hot-update.js": "/js/main.d8f463bb144619871d2b.hot-update.js", - "/js/main.6589d0fca8e17d97d9cf.hot-update.js": "/js/main.6589d0fca8e17d97d9cf.hot-update.js" + "/js/main.6589d0fca8e17d97d9cf.hot-update.js": "/js/main.6589d0fca8e17d97d9cf.hot-update.js", + "/js/main.509485879ef2ae565133.hot-update.js": "/js/main.509485879ef2ae565133.hot-update.js", + "/js/main.687e63bc8be41f981313.hot-update.js": "/js/main.687e63bc8be41f981313.hot-update.js", + "/js/main.45ddf0054ecb7ce12e18.hot-update.js": "/js/main.45ddf0054ecb7ce12e18.hot-update.js", + "/js/main.fb11cdf11ab3bf5a7828.hot-update.js": "/js/main.fb11cdf11ab3bf5a7828.hot-update.js", + "/js/main.beab3c6280025f0ef1c7.hot-update.js": "/js/main.beab3c6280025f0ef1c7.hot-update.js", + "/js/main.dd8499eefc53baf1d563.hot-update.js": "/js/main.dd8499eefc53baf1d563.hot-update.js", + "/js/main.8e33ac29861dd449cb4b.hot-update.js": "/js/main.8e33ac29861dd449cb4b.hot-update.js", + "/js/main.d424af0746dea32de15f.hot-update.js": "/js/main.d424af0746dea32de15f.hot-update.js", + "/js/main.3b8184fedc668a2b3d77.hot-update.js": "/js/main.3b8184fedc668a2b3d77.hot-update.js", + "/js/main.f8b828790a62148945eb.hot-update.js": "/js/main.f8b828790a62148945eb.hot-update.js", + "/js/main.cea80e1125b5df229e57.hot-update.js": "/js/main.cea80e1125b5df229e57.hot-update.js", + "/js/main.657f537e64723438203f.hot-update.js": "/js/main.657f537e64723438203f.hot-update.js", + "/js/main.24a67f682d00f1c36306.hot-update.js": "/js/main.24a67f682d00f1c36306.hot-update.js", + "/js/main.c5e409b11f38596ad19f.hot-update.js": "/js/main.c5e409b11f38596ad19f.hot-update.js", + "/js/main.f4b2217acfd61015f519.hot-update.js": "/js/main.f4b2217acfd61015f519.hot-update.js", + "/js/main.6b77b11bc09febce1243.hot-update.js": "/js/main.6b77b11bc09febce1243.hot-update.js", + "/js/main.7e13d467124a70e40c12.hot-update.js": "/js/main.7e13d467124a70e40c12.hot-update.js", + "/js/main.4ccb71fa83f56cf61316.hot-update.js": "/js/main.4ccb71fa83f56cf61316.hot-update.js", + "/js/main.57345de2165add04473e.hot-update.js": "/js/main.57345de2165add04473e.hot-update.js", + "/js/main.6120a268b1625c6fbb32.hot-update.js": "/js/main.6120a268b1625c6fbb32.hot-update.js", + "/js/main.8aa7b533c1f75dfce2c7.hot-update.js": "/js/main.8aa7b533c1f75dfce2c7.hot-update.js", + "/js/main.60d43a51d0c18988c7e1.hot-update.js": "/js/main.60d43a51d0c18988c7e1.hot-update.js", + "/js/main.eb76cd56647f48d173fa.hot-update.js": "/js/main.eb76cd56647f48d173fa.hot-update.js", + "/js/main.ed851f3c5ef2bfbb595d.hot-update.js": "/js/main.ed851f3c5ef2bfbb595d.hot-update.js", + "/js/main.09c3644ca93b2e6d8f09.hot-update.js": "/js/main.09c3644ca93b2e6d8f09.hot-update.js", + "/js/main.cdcbfde1180ea16ecd5c.hot-update.js": "/js/main.cdcbfde1180ea16ecd5c.hot-update.js", + "/js/main.5a1cad47101c12e09f69.hot-update.js": "/js/main.5a1cad47101c12e09f69.hot-update.js", + "/js/main.2b7e6f4b4ced40d75147.hot-update.js": "/js/main.2b7e6f4b4ced40d75147.hot-update.js", + "/js/main.4274724ed8e30dd50f2b.hot-update.js": "/js/main.4274724ed8e30dd50f2b.hot-update.js", + "/js/main.4c543473038e6a0f4639.hot-update.js": "/js/main.4c543473038e6a0f4639.hot-update.js", + "/js/main.0a457ad4424536b8d7d5.hot-update.js": "/js/main.0a457ad4424536b8d7d5.hot-update.js", + "/js/main.3ab92d3466136060e695.hot-update.js": "/js/main.3ab92d3466136060e695.hot-update.js", + "/js/main.96ee31a86b16e7212789.hot-update.js": "/js/main.96ee31a86b16e7212789.hot-update.js", + "/js/main.ce31cafcbc6bcdbc1e7f.hot-update.js": "/js/main.ce31cafcbc6bcdbc1e7f.hot-update.js", + "/js/main.fa93a9650f8489b1830c.hot-update.js": "/js/main.fa93a9650f8489b1830c.hot-update.js", + "/js/main.809548951432ef627d16.hot-update.js": "/js/main.809548951432ef627d16.hot-update.js", + "/js/main.de03f7006def0145553a.hot-update.js": "/js/main.de03f7006def0145553a.hot-update.js", + "/js/main.99ee6db24c89a9b4ff24.hot-update.js": "/js/main.99ee6db24c89a9b4ff24.hot-update.js", + "/js/main.87ffb372acf169e7e603.hot-update.js": "/js/main.87ffb372acf169e7e603.hot-update.js", + "/js/main.373fbe1483dd92d27f5a.hot-update.js": "/js/main.373fbe1483dd92d27f5a.hot-update.js", + "/js/main.9d50db9529fee1ba1b18.hot-update.js": "/js/main.9d50db9529fee1ba1b18.hot-update.js", + "/js/main.9c009dbaf7d6d95b7d5d.hot-update.js": "/js/main.9c009dbaf7d6d95b7d5d.hot-update.js", + "/js/main.c0f41fb99be408a33861.hot-update.js": "/js/main.c0f41fb99be408a33861.hot-update.js", + "/js/main.cc89c6036a92c3d63dca.hot-update.js": "/js/main.cc89c6036a92c3d63dca.hot-update.js", + "/js/main.d317f27b8528101c8ef3.hot-update.js": "/js/main.d317f27b8528101c8ef3.hot-update.js", + "/js/main.84be16c4e8bcb948bf25.hot-update.js": "/js/main.84be16c4e8bcb948bf25.hot-update.js", + "/js/main.0cf8831e92ff6f5a1027.hot-update.js": "/js/main.0cf8831e92ff6f5a1027.hot-update.js", + "/js/main.5cbee996e80957a738f2.hot-update.js": "/js/main.5cbee996e80957a738f2.hot-update.js", + "/js/main.9a24bd7a75a877705d40.hot-update.js": "/js/main.9a24bd7a75a877705d40.hot-update.js", + "/js/main.2ecd9a546308a5bb528a.hot-update.js": "/js/main.2ecd9a546308a5bb528a.hot-update.js" } diff --git a/resources/js/components/Mobile/MenuItemList.vue b/resources/js/components/Mobile/MenuItemList.vue index 37cf738a..ad1242e6 100644 --- a/resources/js/components/Mobile/MenuItemList.vue +++ b/resources/js/components/Mobile/MenuItemList.vue @@ -14,6 +14,7 @@ + {{ link.title }} @@ -33,6 +34,7 @@ SettingsIcon, DatabaseIcon, Trash2Icon, + CloudIcon, PowerIcon, ShareIcon, UsersIcon, @@ -43,14 +45,15 @@ export default { name: 'MenuBar', components: { - CreditCardIcon, - DatabaseIcon, - FileTextIcon, ChevronRightIcon, UploadCloudIcon, + CreditCardIcon, HardDriveIcon, + DatabaseIcon, + FileTextIcon, SettingsIcon, Trash2Icon, + CloudIcon, PowerIcon, UsersIcon, ShareIcon, diff --git a/resources/js/components/Others/MobileNavigation.vue b/resources/js/components/Others/MobileNavigation.vue index 5252c41f..ab8d3d8c 100644 --- a/resources/js/components/Others/MobileNavigation.vue +++ b/resources/js/components/Others/MobileNavigation.vue @@ -27,7 +27,7 @@ import {events} from '@/bus' export default { - name: 'MenuBar', + name: 'UserMobileNavigation', components: { MenuItemList, UserHeadline, @@ -64,7 +64,7 @@ { icon: 'user', title: this.$t('menu.settings'), - routeName: 'Profile', + routeName: 'UserProfileMobileMenu', isVisible: true, }, { diff --git a/resources/js/router.js b/resources/js/router.js index 5d8951d8..dae63577 100644 --- a/resources/js/router.js +++ b/resources/js/router.js @@ -25,9 +25,17 @@ import UpgradePlan from './views/Upgrade/UpgradePlan' import UpgradeBilling from './views/Upgrade/UpgradeBilling' import AdminMobileMenu from './views/Mobile/AdminMobileMenu' +import UserProfileMobileMenu from './views/Mobile/UserProfileMobileMenu' import Admin from './views/Admin' import Invoices from './views/Admin/Invoices' +import AppSettings from './views/Admin/AppSettings/AppSettings' + +// App Settings +import AppAppearance from './views/Admin/AppSettings/AppSettingsTabs/Appearance' +import AppBillings from './views/Admin/AppSettings/AppSettingsTabs/Billings' +import AppEmail from './views/Admin/AppSettings/AppSettingsTabs/Email' +import AppOthers from './views/Admin/AppSettings/AppSettingsTabs/Others' // Plans import Plans from './views/Admin/Plans' @@ -225,6 +233,53 @@ const routesAdmin = [ }, ] }, + { + name: 'AppSettings', + path: '/admin/settings', + component: AppSettings, + meta: { + requiresAuth: true, + title: 'Settings' + }, + children: [ + { + name: 'AppAppearance', + path: '/admin/settings/appearance', + component: AppAppearance, + meta: { + requiresAuth: true, + title: 'Appearance' + }, + }, + { + name: 'AppBillings', + path: '/admin/settings/billings', + component: AppBillings, + meta: { + requiresAuth: true, + title: 'Billings' + }, + }, + { + name: 'AppEmail', + path: '/admin/settings/email', + component: AppEmail, + meta: { + requiresAuth: true, + title: 'Email' + }, + }, + { + name: 'AppOthers', + path: '/admin/settings/others', + component: AppOthers, + meta: { + requiresAuth: true, + title: 'Others' + }, + }, + ] + }, ] }, { @@ -236,6 +291,15 @@ const routesAdmin = [ title: i18n.t('routes_title.settings_mobile') }, }, + { + name: 'UserProfileMobileMenu', + path: '/user-menu', + component: UserProfileMobileMenu, + meta: { + requiresAuth: true, + title: 'Profile Settings' + }, + }, ] const routesShared = [ { diff --git a/resources/js/views/Admin.vue b/resources/js/views/Admin.vue index 682dfe65..83160bf2 100644 --- a/resources/js/views/Admin.vue +++ b/resources/js/views/Admin.vue @@ -14,7 +14,7 @@ {{ $t('admin_menu.users') }} - +
diff --git a/resources/js/views/Admin/AppSettings/AppSettings.vue b/resources/js/views/Admin/AppSettings/AppSettings.vue new file mode 100644 index 00000000..8d072ab5 --- /dev/null +++ b/resources/js/views/Admin/AppSettings/AppSettings.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/resources/js/views/Admin/AppSettings/AppSettingsTabs/Appearance.vue b/resources/js/views/Admin/AppSettings/AppSettingsTabs/Appearance.vue new file mode 100644 index 00000000..62d06da4 --- /dev/null +++ b/resources/js/views/Admin/AppSettings/AppSettingsTabs/Appearance.vue @@ -0,0 +1,104 @@ + + + + + diff --git a/resources/js/views/Admin/AppSettings/AppSettingsTabs/Billings.vue b/resources/js/views/Admin/AppSettings/AppSettingsTabs/Billings.vue new file mode 100644 index 00000000..fadff362 --- /dev/null +++ b/resources/js/views/Admin/AppSettings/AppSettingsTabs/Billings.vue @@ -0,0 +1,405 @@ + + + + + diff --git a/resources/js/views/Admin/AppSettings/AppSettingsTabs/Email.vue b/resources/js/views/Admin/AppSettings/AppSettingsTabs/Email.vue new file mode 100644 index 00000000..3070f884 --- /dev/null +++ b/resources/js/views/Admin/AppSettings/AppSettingsTabs/Email.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/resources/js/views/Admin/AppSettings/AppSettingsTabs/Others.vue b/resources/js/views/Admin/AppSettings/AppSettingsTabs/Others.vue new file mode 100644 index 00000000..ed068320 --- /dev/null +++ b/resources/js/views/Admin/AppSettings/AppSettingsTabs/Others.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/resources/js/views/Admin/Plans/Plan.vue b/resources/js/views/Admin/Plans/Plan.vue index 90869ae4..54c00773 100644 --- a/resources/js/views/Admin/Plans/Plan.vue +++ b/resources/js/views/Admin/Plans/Plan.vue @@ -58,7 +58,7 @@ import axios from 'axios' export default { - name: 'Gateway', + name: 'Plan', components: { UsersIcon, Trash2Icon, diff --git a/resources/js/views/Mobile/AdminMobileMenu.vue b/resources/js/views/Mobile/AdminMobileMenu.vue index cad4a76f..e61c82b0 100644 --- a/resources/js/views/Mobile/AdminMobileMenu.vue +++ b/resources/js/views/Mobile/AdminMobileMenu.vue @@ -9,13 +9,13 @@
@@ -56,12 +56,6 @@ routeName: 'Plans', isVisible: true, }, - { - icon: 'credit-card', - title: 'Payment Methods', - routeName: 'Gateways', - isVisible: true, - }, { icon: 'file-text', title: 'Invoices', diff --git a/resources/js/views/Mobile/UserProfileMobileMenu.vue b/resources/js/views/Mobile/UserProfileMobileMenu.vue new file mode 100644 index 00000000..2a8571a1 --- /dev/null +++ b/resources/js/views/Mobile/UserProfileMobileMenu.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/resources/js/views/Profile.vue b/resources/js/views/Profile.vue index c3b60a64..69b64c2b 100644 --- a/resources/js/views/Profile.vue +++ b/resources/js/views/Profile.vue @@ -93,7 +93,7 @@
- + Upgrade Plan @@ -223,4 +223,19 @@ } } } + + @media only screen and (max-width: 690px) { + + .page-detail-headline { + display: block; + + .headline-actions { + margin-top: 20px; + + .upgrade-button { + width: 100%; + } + } + } + } diff --git a/resources/js/views/User/Password.vue b/resources/js/views/User/Password.vue index d730cdff..bf8c01c6 100644 --- a/resources/js/views/User/Password.vue +++ b/resources/js/views/User/Password.vue @@ -1,5 +1,5 @@