Merge pull request #2804 from pixelfed/staging

Staging
This commit is contained in:
daniel 2021-06-13 00:49:12 -06:00 committed by GitHub
commit 963bea595b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 40 additions and 11 deletions

View file

@ -14,6 +14,8 @@
- Updated Profile, add linkified bio, joined date, follows you label and improved website handling. ([8ee10436](https://github.com/pixelfed/pixelfed/commit/8ee10436)) - Updated Profile, add linkified bio, joined date, follows you label and improved website handling. ([8ee10436](https://github.com/pixelfed/pixelfed/commit/8ee10436))
- Updated routes, add legacy webfinger profile redirect. ([93c7af74](https://github.com/pixelfed/pixelfed/commit/93c7af74)) - Updated routes, add legacy webfinger profile redirect. ([93c7af74](https://github.com/pixelfed/pixelfed/commit/93c7af74))
- Updated StoryController, fix expiration time bug. ([39e57f95](https://github.com/pixelfed/pixelfed/commit/39e57f95)) - Updated StoryController, fix expiration time bug. ([39e57f95](https://github.com/pixelfed/pixelfed/commit/39e57f95))
- Updated Profile component, fix remote urls. ([6e56dbed](https://github.com/pixelfed/pixelfed/commit/6e56dbed))
- Updated verify email screen, add contact admin link. ([f37952d6](https://github.com/pixelfed/pixelfed/commit/f37952d6))
- ([](https://github.com/pixelfed/pixelfed/commit/)) - ([](https://github.com/pixelfed/pixelfed/commit/))
## [v0.11.0 (2021-06-01)](https://github.com/pixelfed/pixelfed/compare/v0.10.10...v0.11.0) ## [v0.11.0 (2021-06-01)](https://github.com/pixelfed/pixelfed/compare/v0.10.10...v0.11.0)

View file

@ -11,7 +11,7 @@
A free and ethical photo sharing platform, powered by ActivityPub federation. A free and ethical photo sharing platform, powered by ActivityPub federation.
<p align="center"> <p align="center">
<img src="https://pixelfed.nyc3.cdn.digitaloceanspaces.com/media/Screen%20Shot%202019-09-08%20at%2010.40.54%20PM.png"> <img src="https://pixelfed.nyc3.cdn.digitaloceanspaces.com/media/pixelfed-screenshot.jpg">
</p> </p>
## Official Documentation ## Official Documentation
@ -27,7 +27,6 @@ Pixelfed is open-sourced software licensed under the AGPL license.
The ways you can communicate on the project are below. Before interacting, please The ways you can communicate on the project are below. Before interacting, please
read through the [Code Of Conduct](CODE_OF_CONDUCT.md). read through the [Code Of Conduct](CODE_OF_CONDUCT.md).
* IRC: [#pixelfed](irc://chat.freenode.net/pixelfed) on irc.freenode.net
* Mastodon: [@pixelfed@mastodon.social](https://mastodon.social/@pixelfed) * Mastodon: [@pixelfed@mastodon.social](https://mastodon.social/@pixelfed)
* E-mail: [hello@pixelfed.org](mailto:hello@pixelfed.org) * E-mail: [hello@pixelfed.org](mailto:hello@pixelfed.org)
@ -37,4 +36,4 @@ We would like to extend our thanks to the following sponsors for funding Pixelfe
- [NLnet Foundation](https://nlnet.nl) and [NGI0 - [NLnet Foundation](https://nlnet.nl) and [NGI0
Discovery](https://nlnet.nl/discovery/), part of the [Next Generation Discovery](https://nlnet.nl/discovery/), part of the [Next Generation
Internet](https://ngi.eu) initiative. Internet](https://ngi.eu) initiative.

View file

@ -23,6 +23,7 @@ class EmailVerificationCheck
'i/auth/*', 'i/auth/*',
'i/verify-email', 'i/verify-email',
'log*', 'log*',
'site*',
'i/confirm-email/*', 'i/confirm-email/*',
'settings/home', 'settings/home',
'settings/email' 'settings/email'

Binary file not shown.

BIN
public/js/profile.js vendored

Binary file not shown.

Binary file not shown.

BIN
public/js/timeline.js vendored

Binary file not shown.

Binary file not shown.

View file

@ -423,12 +423,12 @@
</div> </div>
<div class="list-group-item border-0 py-1" v-for="(user, index) in following" :key="'following_'+index"> <div class="list-group-item border-0 py-1" v-for="(user, index) in following" :key="'following_'+index">
<div class="media"> <div class="media">
<a :href="user.url"> <a :href="profileUrlRedirect(user)">
<img class="mr-3 rounded-circle box-shadow" :src="user.avatar" :alt="user.username + 's avatar'" width="30px" loading="lazy"> <img class="mr-3 rounded-circle box-shadow" :src="user.avatar" :alt="user.username + 's avatar'" width="30px" loading="lazy">
</a> </a>
<div class="media-body text-truncate"> <div class="media-body text-truncate">
<p class="mb-0" style="font-size: 14px"> <p class="mb-0" style="font-size: 14px">
<a :href="user.url" class="font-weight-bold text-dark"> <a :href="profileUrlRedirect(user)" class="font-weight-bold text-dark">
{{user.username}} {{user.username}}
</a> </a>
</p> </p>
@ -470,12 +470,12 @@
</div> </div>
<div class="list-group-item border-0 py-1" v-for="(user, index) in followers" :key="'follower_'+index"> <div class="list-group-item border-0 py-1" v-for="(user, index) in followers" :key="'follower_'+index">
<div class="media mb-0"> <div class="media mb-0">
<a :href="user.url"> <a :href="profileUrlRedirect(user)">
<img class="mr-3 rounded-circle box-shadow" :src="user.avatar" :alt="user.username + 's avatar'" width="30px" height="30px" loading="lazy"> <img class="mr-3 rounded-circle box-shadow" :src="user.avatar" :alt="user.username + 's avatar'" width="30px" height="30px" loading="lazy">
</a> </a>
<div class="media-body mb-0"> <div class="media-body mb-0">
<p class="mb-0" style="font-size: 14px"> <p class="mb-0" style="font-size: 14px">
<a :href="user.url" class="font-weight-bold text-dark"> <a :href="profileUrlRedirect(user)" class="font-weight-bold text-dark">
{{user.username}} {{user.username}}
</a> </a>
</p> </p>
@ -1179,7 +1179,6 @@
}); });
}, },
followersLoadMore() { followersLoadMore() {
if($('body').hasClass('loggedIn') == false) { if($('body').hasClass('loggedIn') == false) {
return; return;
@ -1279,6 +1278,14 @@
return '/i/web/profile/_/' + status.account.id; return '/i/web/profile/_/' + status.account.id;
}, },
profileUrlRedirect(profile) {
if(profile.local == true) {
return profile.url;
}
return '/i/web/profile/_/' + profile.id;
},
showEmbedProfileModal() { showEmbedProfileModal() {
this.ctxEmbedPayload = window.App.util.embed.profile(this.profile.url); this.ctxEmbedPayload = window.App.util.embed.profile(this.profile.url);
this.$refs.visitorContextMenu.hide(); this.$refs.visitorContextMenu.hide();

View file

@ -165,11 +165,21 @@
<p class="mb-0 text-muted font-weight-bold"><span>{{story.created_ago}} ago</span></p> <p class="mb-0 text-muted font-weight-bold"><span>{{story.created_ago}} ago</span></p>
</div> </div>
<div class="flex-grow-1 text-right"> <div class="flex-grow-1 text-right">
<button v-if="story.viewers.length" @click="toggleShowViewers(index)" class="btn btn-link btn-sm mr-1">
<i class="fas fa-eye fa-lg text-muted"></i>
</button>
<button @click="deleteStory(story, index)" class="btn btn-link btn-sm"> <button @click="deleteStory(story, index)" class="btn btn-link btn-sm">
<i class="fas fa-trash-alt fa-lg text-muted"></i> <i class="fas fa-trash-alt fa-lg text-muted"></i>
</button> </button>
</div> </div>
</div> </div>
<div v-if="story.showViewers && story.viewers.length" class="m-2 text-left">
<p class="font-weight-bold mb-2">Viewed By</p>
<div v-for="viewer in story.viewers" class="d-flex">
<img src="/storage/avatars/default.png" width="24" height="24" class="rounded-circle mr-2">
<p class="mb-0 font-weight-bold">viewer.username</p>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -256,7 +266,11 @@
this.mediaWatcher(); this.mediaWatcher();
axios.get('/api/stories/v0/fetch/' + this.profileId) axios.get('/api/stories/v0/fetch/' + this.profileId)
.then(res => { .then(res => {
this.stories = res.data; this.stories = res.data.map(s => {
s.showViewers = false;
s.viewers = [];
return s;
});
this.loaded = true; this.loaded = true;
}); });
}, },
@ -397,6 +411,10 @@
viewMyStory() { viewMyStory() {
window.location.href = '/i/my/story'; window.location.href = '/i/my/story';
},
toggleShowViewers(index) {
this.stories[index].showViewers = this.stories[index].showViewers ? false : true;
} }
} }
} }

View file

@ -13,10 +13,12 @@
<p class="font-weight-bold mb-0">{{ session('error') }}</p> <p class="font-weight-bold mb-0">{{ session('error') }}</p>
</div> </div>
@endif @endif
<div class="card"> <div class="card shadow-none border">
<div class="card-header font-weight-bold bg-white">Confirm Email Address</div> <div class="card-header font-weight-bold bg-white">Confirm Email Address</div>
<div class="card-body"> <div class="card-body">
<p class="lead">You need to confirm your email address (<span class="font-weight-bold">{{Auth::user()->email}}</span>) before you can proceed.</p> <p class="lead">You need to confirm your email address (<span class="font-weight-bold">{{Auth::user()->email}}</span>) before you can proceed.</p>
<p class="lead">You can change your email address <a href="/settings/email">here</a>.</p>
<p class="small">If you don't recieve an email within 30 minutes, you can <a href="/site/contact">contact the administrator</a>.</p>
<hr> <hr>
<form method="post"> <form method="post">
@csrf @csrf
@ -26,4 +28,4 @@
</div> </div>
</div> </div>
</div> </div>
@endsection @endsection