forked from FoundKeyGang/FoundKey
✌️
This commit is contained in:
parent
1134898003
commit
9f477549dd
5 changed files with 291 additions and 5 deletions
|
@ -2,8 +2,12 @@ ChangeLog (Release Notes)
|
||||||
=========================
|
=========================
|
||||||
主に notable な changes を書いていきます
|
主に notable な changes を書いていきます
|
||||||
|
|
||||||
2498 (2017/08/29)
|
unreleased
|
||||||
----------
|
----------
|
||||||
|
* New: モバイルのユーザーページを刷新
|
||||||
|
|
||||||
|
2498 (2017/08/29)
|
||||||
|
-----------------
|
||||||
* Fix: repostのborder-radiusが効いていない (#743)
|
* Fix: repostのborder-radiusが効いていない (#743)
|
||||||
* テーマカラーを赤に戻してみた
|
* テーマカラーを赤に戻してみた
|
||||||
* ユーザビリティの向上
|
* ユーザビリティの向上
|
||||||
|
|
|
@ -472,9 +472,23 @@ mobile:
|
||||||
is-followed: "Followed you"
|
is-followed: "Followed you"
|
||||||
following: "Following"
|
following: "Following"
|
||||||
followers: "Followers"
|
followers: "Followers"
|
||||||
|
overview: "Overview"
|
||||||
posts: "Timeline"
|
posts: "Timeline"
|
||||||
media: "Media"
|
media: "Media"
|
||||||
|
|
||||||
|
mk-user-overview:
|
||||||
|
recent-posts: "Recent posts"
|
||||||
|
images: "Images"
|
||||||
|
activity: "Activity"
|
||||||
|
|
||||||
|
mk-user-overview-posts:
|
||||||
|
loading: "Loading"
|
||||||
|
no-posts: "No posts"
|
||||||
|
|
||||||
|
mk-user-overview-photos:
|
||||||
|
loading: "Loading"
|
||||||
|
no-photos: "No photos"
|
||||||
|
|
||||||
mk-users-list:
|
mk-users-list:
|
||||||
all: "All"
|
all: "All"
|
||||||
known: "You know"
|
known: "You know"
|
||||||
|
|
|
@ -472,10 +472,24 @@ mobile:
|
||||||
is-followed: "フォローされています"
|
is-followed: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
followers: "フォロワー"
|
followers: "フォロワー"
|
||||||
|
overview: "概要"
|
||||||
posts: "タイムライン"
|
posts: "タイムライン"
|
||||||
posts-count: "ポスト"
|
posts-count: "ポスト"
|
||||||
media: "メディア"
|
media: "メディア"
|
||||||
|
|
||||||
|
mk-user-overview:
|
||||||
|
recent-posts: "最近の投稿"
|
||||||
|
images: "画像"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
|
||||||
|
mk-user-overview-posts:
|
||||||
|
loading: "読み込み中"
|
||||||
|
no-posts: "投稿はありません"
|
||||||
|
|
||||||
|
mk-user-overview-photos:
|
||||||
|
loading: "読み込み中"
|
||||||
|
no-photos: "写真はありません"
|
||||||
|
|
||||||
mk-users-list:
|
mk-users-list:
|
||||||
all: "すべて"
|
all: "すべて"
|
||||||
known: "知り合い"
|
known: "知り合い"
|
||||||
|
|
|
@ -23,7 +23,7 @@ export default me => {
|
||||||
route('/post/new', newPost);
|
route('/post/new', newPost);
|
||||||
route('/post::post', post);
|
route('/post::post', post);
|
||||||
route('/search::query', search);
|
route('/search::query', search);
|
||||||
route('/:user', user.bind(null, 'posts'));
|
route('/:user', user.bind(null, 'overview'));
|
||||||
route('/:user/graphs', user.bind(null, 'graphs'));
|
route('/:user/graphs', user.bind(null, 'graphs'));
|
||||||
route('/:user/followers', userFollowers);
|
route('/:user/followers', userFollowers);
|
||||||
route('/:user/following', userFollowing);
|
route('/:user/following', userFollowing);
|
||||||
|
|
|
@ -37,14 +37,15 @@
|
||||||
<i>%i18n:mobile.tags.mk-user.followers%</i>
|
<i>%i18n:mobile.tags.mk-user.followers%</i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<mk-activity-table user={ user }/>
|
|
||||||
</div>
|
</div>
|
||||||
<nav>
|
<nav>
|
||||||
|
<a data-is-active={ page == 'overview' } onclick={ go.bind(null, 'overview') }>%i18n:mobile.tags.mk-user.overview%</a>
|
||||||
<a data-is-active={ page == 'posts' } onclick={ go.bind(null, 'posts') }>%i18n:mobile.tags.mk-user.posts%</a>
|
<a data-is-active={ page == 'posts' } onclick={ go.bind(null, 'posts') }>%i18n:mobile.tags.mk-user.posts%</a>
|
||||||
<a data-is-active={ page == 'media' } onclick={ go.bind(null, 'media') }>%i18n:mobile.tags.mk-user.media%</a>
|
<a data-is-active={ page == 'media' } onclick={ go.bind(null, 'media') }>%i18n:mobile.tags.mk-user.media%</a>
|
||||||
</nav>
|
</nav>
|
||||||
</header>
|
</header>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
|
<mk-user-overview if={ page == 'overview' } user={ user }/>
|
||||||
<mk-user-timeline if={ page == 'posts' } user={ user }/>
|
<mk-user-timeline if={ page == 'posts' } user={ user }/>
|
||||||
<mk-user-timeline if={ page == 'media' } user={ user } with-media={ true }/>
|
<mk-user-timeline if={ page == 'media' } user={ user } with-media={ true }/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -55,6 +56,8 @@
|
||||||
|
|
||||||
> .user
|
> .user
|
||||||
> header
|
> header
|
||||||
|
box-shadow 0 4px 4px rgba(0, 0, 0, 0.3)
|
||||||
|
|
||||||
> .banner
|
> .banner
|
||||||
padding-bottom 33.3%
|
padding-bottom 33.3%
|
||||||
background-color #1b1b1b
|
background-color #1b1b1b
|
||||||
|
@ -159,7 +162,6 @@
|
||||||
justify-content center
|
justify-content center
|
||||||
margin 0 auto
|
margin 0 auto
|
||||||
max-width 600px
|
max-width 600px
|
||||||
border-bottom solid 1px rgba(0, 0, 0, 0.2)
|
|
||||||
|
|
||||||
> a
|
> a
|
||||||
display block
|
display block
|
||||||
|
@ -190,7 +192,7 @@
|
||||||
this.mixin('api');
|
this.mixin('api');
|
||||||
|
|
||||||
this.username = this.opts.user;
|
this.username = this.opts.user;
|
||||||
this.page = this.opts.page ? this.opts.page : 'posts';
|
this.page = this.opts.page ? this.opts.page : 'overview';
|
||||||
this.fetching = true;
|
this.fetching = true;
|
||||||
|
|
||||||
this.on('mount', () => {
|
this.on('mount', () => {
|
||||||
|
@ -211,3 +213,255 @@
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
</mk-user>
|
</mk-user>
|
||||||
|
|
||||||
|
<mk-user-overview>
|
||||||
|
<section class="recent-posts">
|
||||||
|
<h2><i class="fa fa-comments-o"></i>%i18n:mobile.tags.mk-user-overview.recent-posts%</h2>
|
||||||
|
<div>
|
||||||
|
<mk-user-overview-posts user={ user }/>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="images">
|
||||||
|
<h2><i class="fa fa-picture-o"></i>%i18n:mobile.tags.mk-user-overview.images%</h2>
|
||||||
|
<div>
|
||||||
|
<mk-user-overview-photos user={ user }/>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="activity">
|
||||||
|
<h2><i class="fa fa-bar-chart"></i>%i18n:mobile.tags.mk-user-overview.activity%</h2>
|
||||||
|
<div>
|
||||||
|
<mk-activity-table user={ user }/>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<style>
|
||||||
|
:scope
|
||||||
|
display block
|
||||||
|
max-width 600px
|
||||||
|
margin 0 auto
|
||||||
|
|
||||||
|
> section
|
||||||
|
background #eee
|
||||||
|
border-radius 8px
|
||||||
|
box-shadow 0 0 0 1px rgba(0, 0, 0, 0.2)
|
||||||
|
|
||||||
|
&:not(:last-child)
|
||||||
|
margin-bottom 8px
|
||||||
|
|
||||||
|
> h2
|
||||||
|
margin 0
|
||||||
|
padding 8px 10px
|
||||||
|
font-size 16px
|
||||||
|
font-weight normal
|
||||||
|
color #465258
|
||||||
|
background #fff
|
||||||
|
border-radius 8px 8px 0 0
|
||||||
|
|
||||||
|
> i
|
||||||
|
margin-right 6px
|
||||||
|
|
||||||
|
> .activity
|
||||||
|
> div
|
||||||
|
padding 8px
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
this.user = this.opts.user;
|
||||||
|
</script>
|
||||||
|
</mk-user-overview>
|
||||||
|
|
||||||
|
<mk-user-overview-posts>
|
||||||
|
<p class="initializing" if={ initializing }><i class="fa fa-spinner fa-pulse fa-fw"></i>%i18n:mobile.tags.mk-user-overview-posts.loading%<mk-ellipsis/></p>
|
||||||
|
<div if={ !initializing && posts.length > 0 }>
|
||||||
|
<virtual each={ posts }>
|
||||||
|
<mk-user-overview-posts-post-card post={ this }/>
|
||||||
|
</virtual>
|
||||||
|
</div>
|
||||||
|
<p class="empty" if={ !initializing && posts.length == 0 }>%i18n:mobile.tags.mk-user-overview-posts.no-posts%</p>
|
||||||
|
<style>
|
||||||
|
:scope
|
||||||
|
display block
|
||||||
|
|
||||||
|
> div
|
||||||
|
overflow-x scroll
|
||||||
|
-webkit-overflow-scrolling touch
|
||||||
|
white-space nowrap
|
||||||
|
padding 8px
|
||||||
|
|
||||||
|
> *
|
||||||
|
vertical-align top
|
||||||
|
|
||||||
|
&:not(:last-child)
|
||||||
|
margin-right 8px
|
||||||
|
|
||||||
|
> .initializing
|
||||||
|
> .empty
|
||||||
|
margin 0
|
||||||
|
padding 16px
|
||||||
|
text-align center
|
||||||
|
color #aaa
|
||||||
|
|
||||||
|
> i
|
||||||
|
margin-right 4px
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
this.mixin('api');
|
||||||
|
|
||||||
|
this.user = this.opts.user;
|
||||||
|
this.initializing = true;
|
||||||
|
|
||||||
|
this.on('mount', () => {
|
||||||
|
this.api('users/posts', {
|
||||||
|
user_id: this.user.id
|
||||||
|
}).then(posts => {
|
||||||
|
this.update({
|
||||||
|
posts: posts,
|
||||||
|
initializing: false
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</mk-user-overview-posts>
|
||||||
|
|
||||||
|
<mk-user-overview-posts-post-card>
|
||||||
|
<a href={ '/' + post.user.username + '/' + post.id }>
|
||||||
|
<header>
|
||||||
|
<img src={ post.user.avatar_url + '?thumbnail&size=64' } alt="avatar"/><h3>{ post.user.name }</h3>
|
||||||
|
</header>
|
||||||
|
<div>
|
||||||
|
{ text }
|
||||||
|
</div>
|
||||||
|
<mk-time time={ post.created_at }/>
|
||||||
|
</a>
|
||||||
|
<style>
|
||||||
|
:scope
|
||||||
|
display inline-block
|
||||||
|
width 150px
|
||||||
|
//height 120px
|
||||||
|
font-size 12px
|
||||||
|
background #fff
|
||||||
|
border-radius 4px
|
||||||
|
|
||||||
|
> a
|
||||||
|
display block
|
||||||
|
color #2c3940
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
text-decoration none
|
||||||
|
|
||||||
|
> header
|
||||||
|
> img
|
||||||
|
position absolute
|
||||||
|
top 8px
|
||||||
|
left 8px
|
||||||
|
width 28px
|
||||||
|
height 28px
|
||||||
|
border-radius 6px
|
||||||
|
|
||||||
|
> h3
|
||||||
|
display inline-block
|
||||||
|
overflow hidden
|
||||||
|
width calc(100% - 45px)
|
||||||
|
margin-left 44px
|
||||||
|
white-space nowrap
|
||||||
|
text-overflow ellipsis
|
||||||
|
|
||||||
|
> div
|
||||||
|
padding 0 8px 8px 8px
|
||||||
|
height 60px
|
||||||
|
overflow hidden
|
||||||
|
white-space normal
|
||||||
|
|
||||||
|
&:after
|
||||||
|
content ""
|
||||||
|
display block
|
||||||
|
position absolute
|
||||||
|
top 40px
|
||||||
|
left 0
|
||||||
|
width 100%
|
||||||
|
height 20px
|
||||||
|
background linear-gradient(to bottom, transparent 0%, #fff 100%)
|
||||||
|
|
||||||
|
> mk-time
|
||||||
|
display inline-block
|
||||||
|
padding 8px
|
||||||
|
color #aaa
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
import summary from '../../common/scripts/get-post-summary';
|
||||||
|
|
||||||
|
this.post = this.opts.post;
|
||||||
|
this.text = summary(this.post);
|
||||||
|
</script>
|
||||||
|
</mk-user-overview-posts-post-card>
|
||||||
|
|
||||||
|
<mk-user-overview-photos>
|
||||||
|
<p class="initializing" if={ initializing }><i class="fa fa-spinner fa-pulse fa-fw"></i>%i18n:mobile.tags.mk-user-overview-photos.loading%<mk-ellipsis/></p>
|
||||||
|
<div class="stream" if={ !initializing && images.length > 0 }>
|
||||||
|
<virtual each={ image in images }>
|
||||||
|
<a class="img" style={ 'background-image: url(' + image.media.url + '?thumbnail&size=256)' } href={ '/' + image.post.user.username + '/' + image.post.id }></a>
|
||||||
|
</virtual>
|
||||||
|
</div>
|
||||||
|
<p class="empty" if={ !initializing && images.length == 0 }>%i18n:mobile.tags.mk-user-overview-photos.no-photos%</p>
|
||||||
|
<style>
|
||||||
|
:scope
|
||||||
|
display block
|
||||||
|
|
||||||
|
> .stream
|
||||||
|
display -webkit-flex
|
||||||
|
display -moz-flex
|
||||||
|
display -ms-flex
|
||||||
|
display flex
|
||||||
|
justify-content center
|
||||||
|
flex-wrap wrap
|
||||||
|
padding 8px
|
||||||
|
|
||||||
|
> .img
|
||||||
|
flex 1 1 33%
|
||||||
|
width 33%
|
||||||
|
height 80px
|
||||||
|
background-position center center
|
||||||
|
background-size cover
|
||||||
|
background-clip content-box
|
||||||
|
border solid 2px transparent
|
||||||
|
border-radius 4px
|
||||||
|
|
||||||
|
> .initializing
|
||||||
|
> .empty
|
||||||
|
margin 0
|
||||||
|
padding 16px
|
||||||
|
text-align center
|
||||||
|
color #aaa
|
||||||
|
|
||||||
|
> i
|
||||||
|
margin-right 4px
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
this.mixin('api');
|
||||||
|
|
||||||
|
this.images = [];
|
||||||
|
this.initializing = true;
|
||||||
|
this.user = this.opts.user;
|
||||||
|
|
||||||
|
this.on('mount', () => {
|
||||||
|
this.api('users/posts', {
|
||||||
|
user_id: this.user.id,
|
||||||
|
with_media: true,
|
||||||
|
limit: 9
|
||||||
|
}).then(posts => {
|
||||||
|
this.initializing = false;
|
||||||
|
posts.forEach(post => {
|
||||||
|
post.media.forEach(media => {
|
||||||
|
if (this.images.length < 9) this.images.push({
|
||||||
|
post,
|
||||||
|
media
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
this.update();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</mk-user-overview-photos>
|
||||||
|
|
Loading…
Reference in a new issue