fixes part 1

This commit is contained in:
Čarodej
2022-03-01 08:24:51 +01:00
parent 071bdc1bcd
commit 64d1883f53
20 changed files with 79 additions and 57 deletions
+7
View File
@@ -754,6 +754,7 @@ return [
// v2 // v2
'member' => 'Members', 'member' => 'Members',
// file request
'request_for_upload' => '{name} is Asking You For Files', 'request_for_upload' => '{name} is Asking You For Files',
'request_for_upload_success' => 'Upload Request for {name} was Fulfilled Successfully', 'request_for_upload_success' => 'Upload Request for {name} was Fulfilled Successfully',
'request_for_upload_expired' => 'Upload Request Expired', 'request_for_upload_expired' => 'Upload Request Expired',
@@ -763,5 +764,11 @@ return [
'closing_request_for_upload_warn' => "You won't be able to upload any files here once again.", 'closing_request_for_upload_warn' => "You won't be able to upload any files here once again.",
'user_leave_message' => '{name} leave you a message', 'user_leave_message' => '{name} leave you a message',
'tell_you_are_done' => 'Tell {name} you are done!', 'tell_you_are_done' => 'Tell {name} you are done!',
// teams
'user_invite_you_into_team_folder' => '{name} invite you to join with his team into shared team folder',
'register_with_email_and_get_folder' => 'Register account with your email {email} and get access to this Team Folder.',
'' => '',
'' => '',
], ],
]; ];
@@ -18,7 +18,7 @@
</OptionGroup> </OptionGroup>
<OptionGroup :title="$t('Create')"> <OptionGroup :title="$t('Create')">
<Option <Option
@click.stop.native="$createFolder" @click.native="$createFolder"
:title="$t('actions.create_folder')" :title="$t('actions.create_folder')"
icon="folder-plus" icon="folder-plus"
/> />
@@ -23,7 +23,7 @@
</OptionGroup> </OptionGroup>
<OptionGroup :title="$t('Create')"> <OptionGroup :title="$t('Create')">
<Option <Option
@click.stop.native="$createFolder" @click.native="$createFolder"
:class="{ :class="{
'is-inactive': canCreateFolder || isTeamFolderHomepage || isSharedWithMeHomepage, 'is-inactive': canCreateFolder || isTeamFolderHomepage || isSharedWithMeHomepage,
}" }"
@@ -30,7 +30,7 @@
</OptionGroup> </OptionGroup>
<OptionGroup :title="$t('Create')"> <OptionGroup :title="$t('Create')">
<Option <Option
@click.stop.native="$createFolder" @click.native="$createFolder"
:title="$t('actions.create_folder')" :title="$t('actions.create_folder')"
icon="folder-plus" icon="folder-plus"
/> />
@@ -1,22 +1,24 @@
<template> <template>
<div <div
class="sticky top-14 z-[19] flex items-center overflow-x-auto whitespace-nowrap bg-white px-4 pb-3 dark:bg-dark-background lg:hidden" class="sticky top-14 z-[19] overflow-x-auto whitespace-nowrap bg-white px-4 pb-3 dark:bg-dark-background lg:hidden"
> >
<!--Show Buttons--> <div class="flex items-center">
<slot v-if="!isMultiSelectMode" /> <!--Show Buttons-->
<slot v-if="!isMultiSelectMode" />
<!-- Multi select mode --> <!-- Multi select mode -->
<div v-if="isMultiSelectMode"> <div v-if="isMultiSelectMode">
<MobileActionButton @click.native="selectAll" icon="check-square"> <MobileActionButton @click.native="selectAll" icon="check-square">
{{ $t('mobile_selecting.select_all') }} {{ $t('mobile_selecting.select_all') }}
</MobileActionButton> </MobileActionButton>
<MobileActionButton @click.native="deselectAll" icon="x-square"> <MobileActionButton @click.native="deselectAll" icon="x-square">
{{ $t('mobile_selecting.deselect_all') }} {{ $t('mobile_selecting.deselect_all') }}
</MobileActionButton> </MobileActionButton>
<MobileActionButton @click.native="disableMultiSelectMode" icon="check"> <MobileActionButton @click.native="disableMultiSelectMode" icon="check">
{{ $t('mobile_selecting.done') }} {{ $t('mobile_selecting.done') }}
</MobileActionButton> </MobileActionButton>
</div> </div>
</div>
<!--Upload Progressbar--> <!--Upload Progressbar-->
<UploadProgress class="pt-3" /> <UploadProgress class="pt-3" />
@@ -10,7 +10,7 @@
'border-3 border-white dark:border-dark-background': isBorder, 'border-3 border-white dark:border-dark-background': isBorder,
}, },
]" ]"
class="" class="object-cover"
/> />
<div <div
v-else v-else
@@ -13,7 +13,7 @@
<div <div
v-if="isVisible" v-if="isVisible"
@click="closeMenu" @click="closeMenu"
class="fixed left-0 right-0 top-0 bottom-0 z-20 bg-dark-background bg-opacity-[0.35] dark:bg-opacity-[0.45]" class="fixed left-0 right-0 top-0 bottom-0 z-[49] bg-dark-background bg-opacity-[0.35] dark:bg-opacity-[0.45]"
></div> ></div>
</transition> </transition>
</div> </div>
@@ -1,25 +1,31 @@
<template> <template>
<div class="relative cursor-pointer"> <div class="relative flex items-center justify-center cursor-pointer h-14 w-14 overflow-hidden bg-light-background rounded-xl cursor-pointer z-10">
<input <input
ref="file" ref="file"
type="file" type="file"
@change="showImagePreview($event)" @change="showImagePreview($event)"
class="absolute top-0 bottom-0 left-0 right-0 z-10 w-full cursor-pointer opacity-0" class="absolute top-0 bottom-0 left-0 right-0 z-10 w-full cursor-pointer opacity-0"
/> />
<camera-icon v-if="!imagePreview" size="22" class="vue-feather text-gray-300" />
<img <img
v-if="imagePreview" v-if="imagePreview"
ref="image" ref="image"
:src="imagePreview" :src="imagePreview"
class="relative z-0 h-14 w-14 cursor-pointer rounded-xl object-cover shadow-lg md:h-16 md:w-16" class="relative w-full h-full z-0 object-cover shadow-lg md:h-16 md:w-16"
alt="avatar" alt="avatar"
/> />
</div> </div>
</template> </template>
<script> <script>
import { CameraIcon} from 'vue-feather-icons'
export default { export default {
name: 'AvatarInput', name: 'AvatarInput',
props: ['avatar'], props: ['avatar'],
components: {
CameraIcon,
},
data() { data() {
return { return {
imagePreview: undefined, imagePreview: undefined,
+1 -1
View File
@@ -1,7 +1,7 @@
<template> <template>
<div <div
class="relative block cursor-pointer lg:mr-2 lg:w-2 2xl:w-3" class="relative block cursor-pointer lg:mr-2 lg:w-2 2xl:w-3"
:style="{ height: bar.percentage > 0 ? bar.percentage + '%' : '10px' }" :style="{ height: bar.percentage > 0 ? bar.percentage + '%' : '8px' }"
@mouseover="isVisible = true" @mouseover="isVisible = true"
@mouseleave="isVisible = false" @mouseleave="isVisible = false"
> >
+5 -1
View File
@@ -137,7 +137,11 @@ const mutations = {
state.user.data.relationships.settings.data.attributes.last_name = name state.user.data.relationships.settings.data.attributes.last_name = name
}, },
UPDATE_AVATAR(state, avatar) { UPDATE_AVATAR(state, avatar) {
state.user.data.relationships.settings.data.attributes.avatar.sm = avatar state.user.data.attributes.avatar = {
xs: avatar,
sm: avatar,
md: avatar,
}
}, },
REMOVE_ITEM_FROM_FAVOURITES(state, item) { REMOVE_ITEM_FROM_FAVOURITES(state, item) {
state.user.data.relationships.favourites.data = state.user.data.relationships.favourites.data.filter( state.user.data.relationships.favourites.data = state.user.data.relationships.favourites.data.filter(
+4
View File
@@ -56,6 +56,7 @@
:description="$t('page_sign_in.subtitle')" :description="$t('page_sign_in.subtitle')"
> >
<img <img
v-if="checkedAccount.avatar"
class="user-avatar mx-auto mb-6 w-28 rounded-xl shadow-xl" class="user-avatar mx-auto mb-6 w-28 rounded-xl shadow-xl"
:src="checkedAccount.avatar.md" :src="checkedAccount.avatar.md"
:alt="checkedAccount.name" :alt="checkedAccount.name"
@@ -112,6 +113,7 @@
:description="$t('page_not_verified.subtitle')" :description="$t('page_not_verified.subtitle')"
> >
<img <img
v-if="checkedAccount.avatar"
class="user-avatar mx-auto mb-6 w-28 rounded-xl shadow-xl" class="user-avatar mx-auto mb-6 w-28 rounded-xl shadow-xl"
:src="checkedAccount.avatar.md" :src="checkedAccount.avatar.md"
:alt="checkedAccount.name" :alt="checkedAccount.name"
@@ -134,6 +136,7 @@
:description="$t('page_sign_in_2fa_subtitle')" :description="$t('page_sign_in_2fa_subtitle')"
> >
<img <img
v-if="checkedAccount.avatar"
class="user-avatar mx-auto mb-6 w-28 rounded-xl shadow-xl" class="user-avatar mx-auto mb-6 w-28 rounded-xl shadow-xl"
:src="checkedAccount.avatar.md" :src="checkedAccount.avatar.md"
:alt="checkedAccount.name" :alt="checkedAccount.name"
@@ -183,6 +186,7 @@
:description="$t('page_sign_in.2fa_recovery_subtitle')" :description="$t('page_sign_in.2fa_recovery_subtitle')"
> >
<img <img
v-if="checkedAccount.avatar"
class="user-avatar mx-auto mb-6 w-28 rounded-xl shadow-xl" class="user-avatar mx-auto mb-6 w-28 rounded-xl shadow-xl"
:src="checkedAccount.avatar.md" :src="checkedAccount.avatar.md"
:alt="checkedAccount.name" :alt="checkedAccount.name"
+1 -1
View File
@@ -69,7 +69,7 @@
</OptionGroup> </OptionGroup>
<OptionGroup v-if="!isTeamFolderHomepage"> <OptionGroup v-if="!isTeamFolderHomepage">
<Option <Option
@click.stop.native="$createFolder" @click.native="$createFolder"
:title="$t('actions.create_folder')" :title="$t('actions.create_folder')"
icon="folder-plus" icon="folder-plus"
/> />
+1 -1
View File
@@ -94,7 +94,7 @@
<OptionUpload :title="$t('actions.upload')" type="file" /> <OptionUpload :title="$t('actions.upload')" type="file" />
<OptionUpload :title="$t('actions.upload_folder')" type="folder" /> <OptionUpload :title="$t('actions.upload_folder')" type="folder" />
<Option <Option
@click.stop.native="$createFolder" @click.native="$createFolder"
:title="$t('actions.create_folder')" :title="$t('actions.create_folder')"
icon="folder-plus" icon="folder-plus"
/> />
+1 -1
View File
@@ -41,7 +41,7 @@
<!--Image input for replace avatar--> <!--Image input for replace avatar-->
<AvatarInput <AvatarInput
v-model="avatar" v-model="avatar"
:avatar="user.data.relationships.settings.data.attributes.avatar.md" :avatar="user.data.relationships.settings.data.attributes.avatar ? user.data.relationships.settings.data.attributes.avatar.md : undefined"
/> />
<!--User name & email--> <!--User name & email-->
+2 -2
View File
@@ -6,7 +6,7 @@
v-if="invitation" v-if="invitation"
:title="$t('Invitation To Join Team Folder')" :title="$t('Invitation To Join Team Folder')"
:description=" :description="
$t('{name} invite you to join with his team into shared team folder', { $t('user_invite_you_into_team_folder', {
name: invitation.data.relationships.inviter.data.attributes.name, name: invitation.data.relationships.inviter.data.attributes.name,
}) })
" "
@@ -26,7 +26,7 @@
v-if="invitation && !invitation.data.attributes.isExistedUser" v-if="invitation && !invitation.data.attributes.isExistedUser"
class="mx-auto mb-4 max-w-md text-sm text-gray-500" class="mx-auto mb-4 max-w-md text-sm text-gray-500"
v-html=" v-html="
$t('Register account with your email peterpapp@makingcg.com and get access to this Team Folder.', { $t('register_with_email_and_get_folder', {
email: invitation.data.attributes.email, email: invitation.data.attributes.email,
}) })
" "
+2 -7
View File
@@ -37,7 +37,7 @@ class UserSetting extends Model
/** /**
* Format avatar to full url * Format avatar to full url
*/ */
public function getAvatarAttribute(): array|string public function getAvatarAttribute(): array|null
{ {
$link = []; $link = [];
@@ -61,12 +61,7 @@ class UserSetting extends Model
return $link; return $link;
} }
// Return default avatar return null;
foreach (config('vuefilemanager.avatar_sizes') as $item) {
$link[$item['name']] = url('/assets/images/default-avatar.png');
}
return $link;
} }
public function getNameAttribute(): string public function getNameAttribute(): string
+9 -7
View File
@@ -1,4 +1,5 @@
<?php <?php
namespace App\Users\Resources; namespace App\Users\Resources;
use Domain\Folders\Resources\FolderCollection; use Domain\Folders\Resources\FolderCollection;
@@ -31,6 +32,7 @@ class UserResource extends JsonResource
'id' => $this->id, 'id' => $this->id,
'type' => 'user', 'type' => 'user',
'attributes' => [ 'attributes' => [
'color' => $this->settings->color,
'avatar' => $this->settings->avatar, 'avatar' => $this->settings->avatar,
'email' => is_demo() ? obfuscate_email($this->email) : $this->email, 'email' => is_demo() ? obfuscate_email($this->email) : $this->email,
'role' => $this->role, 'role' => $this->role,
@@ -44,16 +46,16 @@ class UserResource extends JsonResource
'settings' => new SettingsResource($this->settings), 'settings' => new SettingsResource($this->settings),
'favourites' => new FolderCollection($this->favouriteFolders), 'favourites' => new FolderCollection($this->favouriteFolders),
'creditCards' => new CreditCardCollection($this->creditCards), 'creditCards' => new CreditCardCollection($this->creditCards),
$this->mergeWhen($this->hasSubscription(), fn () => [ $this->mergeWhen($this->hasSubscription(), fn() => [
'subscription' => new SubscriptionResource($this->subscription), 'subscription' => new SubscriptionResource($this->subscription),
]), ]),
$this->mergeWhen($isMeteredSubscription && $this->hasSubscription(), fn () => [ $this->mergeWhen($isMeteredSubscription && $this->hasSubscription(), fn() => [
'balance' => new BalanceResource($this->balance), 'balance' => new BalanceResource($this->balance),
]), ]),
$this->mergeWhen($isMeteredSubscription && $this->hasSubscription(), fn () => [ $this->mergeWhen($isMeteredSubscription && $this->hasSubscription(), fn() => [
'alert' => new BillingAlertResource($this->billingAlert), 'alert' => new BillingAlertResource($this->billingAlert),
]), ]),
$this->mergeWhen($isMeteredSubscription && $this->hasSubscription(), fn () => [ $this->mergeWhen($isMeteredSubscription && $this->hasSubscription(), fn() => [
'failedPayments' => new FailedPaymentsCollection($this->failedPayments), 'failedPayments' => new FailedPaymentsCollection($this->failedPayments),
]), ]),
], ],
@@ -65,13 +67,13 @@ class UserResource extends JsonResource
'canCreateTeamFolder' => $this->canCreateTeamFolder(), 'canCreateTeamFolder' => $this->canCreateTeamFolder(),
'canInviteTeamMembers' => $this->canInviteTeamMembers(), 'canInviteTeamMembers' => $this->canInviteTeamMembers(),
], ],
$this->mergeWhen($isFixedSubscription, fn () => [ $this->mergeWhen($isFixedSubscription, fn() => [
'limitations' => $this->limitations->summary(), 'limitations' => $this->limitations->summary(),
]), ]),
$this->mergeWhen($isMeteredSubscription && $this->hasSubscription(), fn () => [ $this->mergeWhen($isMeteredSubscription && $this->hasSubscription(), fn() => [
'usages' => $this->getUsageEstimates(), 'usages' => $this->getUsageEstimates(),
]), ]),
$this->mergeWhen($isMeteredSubscription && $this->hasSubscription(), fn () => [ $this->mergeWhen($isMeteredSubscription && $this->hasSubscription(), fn() => [
'totalDebt' => [ 'totalDebt' => [
'formatted' => format_currency($this->failedPayments->sum('amount'), $this->subscription->plan->currency), 'formatted' => format_currency($this->failedPayments->sum('amount'), $this->subscription->plan->currency),
'amount' => $this->failedPayments->sum('amount'), 'amount' => $this->failedPayments->sum('amount'),
+2 -2
View File
@@ -84,8 +84,8 @@ class FileResource extends JsonResource
'iso' => $this->exif->iso, 'iso' => $this->exif->iso,
'aperture_f_number' => $this->exif->aperture_f_number, 'aperture_f_number' => $this->exif->aperture_f_number,
'ccd_width' => $this->exif->ccd_width, 'ccd_width' => $this->exif->ccd_width,
'longitude' => format_gps_coordinates($this->exif->longitude, $this->exif->longitude_ref), 'longitude' => formatGPSCoordinates($this->exif->longitude, $this->exif->longitude_ref),
'latitude' => format_gps_coordinates($this->exif->latitude, $this->exif->latitude_ref), 'latitude' => formatGPSCoordinates($this->exif->latitude, $this->exif->latitude_ref),
], ],
], ],
] ]
@@ -29,6 +29,7 @@ class UploadRequestResource extends JsonResource
'type' => 'user', 'type' => 'user',
'attributes' => [ 'attributes' => [
'name' => $this->user->settings->first_name, 'name' => $this->user->settings->first_name,
'color' => $this->user->settings->color,
'avatar' => $this->user->settings->avatar, 'avatar' => $this->user->settings->avatar,
], ],
], ],
+13 -12
View File
@@ -1110,20 +1110,21 @@ if (! function_exists('replace_occurrence')) {
} }
} }
if(! function_exists('format_gps_coordinates')) { if (!function_exists('formatGPSCoordinates')) {
/** /**
* Format GPS coordinates * Format GPS coordinates
*/ */
function format_gps_coordinates($coordinates, $ref) function formatGPSCoordinates($coordinates, $ref): string|null
{ {
if($coordinates && $ref) { if (!$coordinates && !$ref) {
return null;
return
explode('/',$coordinates[0])[0] . '°' .
explode('/', $coordinates[1])[0] . "'" .
substr(explode(',', $coordinates[2])[0], 0, 5) / 1000 . '"' .
$ref;
} }
};
$degrees = explode('/', $coordinates[0])[0];
$minutes = explode('/', $coordinates[1])[0];
$seconds = intval(substr(explode(',', $coordinates[2])[0], 0, 5)) / 100;
return "{$degrees}°$minutes'$seconds\"$ref";
}
} }
} }