Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F85628236
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
16 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/src/App.scss b/src/App.scss
index 431aeb32d4..b0888ac7b2 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -1,297 +1,261 @@
@import './_variables.scss';
#app {
background-size: cover;
background-attachment: fixed;
background-repeat: no-repeat;
background-position: 0 50px;
min-height: 100vh;
}
h4 {
margin: 0;
}
#content {
padding-top: 60px;
}
.text-center {
text-align: center;
}
body {
font-family: sans-serif;
font-size: 14px;
margin: 0;
}
a {
text-decoration: none;
}
button{
border: none;
border-radius: 5px;
&:hover {
background-color: white;
}
}
.container {
display: flex;
flex-wrap: wrap;
margin: 0;
padding: 0 10px 0 10px;
}
.gaps {
margin: -1em 0 0 -1em;
}
.item {
flex: 1;
}
.gaps > .item {
padding: 1em 0 0 1em;
}
.auto-size {
flex: 1
}
nav {
width: 100%;
align-items: center;
position: fixed;
height: 50px;
.inner-nav {
padding-left: 20px;
padding-right: 20px;
display: flex;
align-items: center;
flex-basis: 970px;
margin: auto;
height: 50px;
background-repeat: no-repeat;
background-position: center;
background-size: contain;
}
}
main-router {
flex: 1;
}
.status.compact {
color: rgba(0, 0, 0, 0.42);
font-weight: 300;
p {
margin: 0;
font-size: 0.8em
}
}
/* Panel */
.panel {
display: flex;
flex-direction: column;
margin: 0.5em;
border-radius: 0.5em;
}
.panel-heading {
border-radius: 0.5em 0.5em 0 0;
background-size: cover;
padding: 0.6em 0;
text-align: center;
font-size: 1.3em;
line-height: 24px;
}
.panel-footer {
border-radius: 0 0 0.5em 0.5em;
}
.panel-body > p {
line-height: 18px;
padding: 1em;
margin: 0;
}
#content {
margin: auto;
max-width: 980px;
border-radius: 1em;
padding-bottom: 1em;
background-color: rgba(0,0,0,0.1);
}
.media-body {
flex: 1;
padding-left: 0.5em;
}
.container > * {
min-width: 0px;
}
-.user-info {
- color: white;
- padding: 1em;
- img {
- border: 2px solid;
- border-radius: 0.5em
- }
- text-shadow: 0 1px 1px rgba(0, 0, 0, 0.5);
- .user-name{
- margin-top: 0.2em;
- }
- .user-screen-name {
- margin-top: 0.3em;
- font-weight: lighter;
- padding-right: 0.1em;
- }
-}
-
-.user-counts {
- display: flex;
- line-height:16px;
- padding: 1em 1.5em 0em 1em;
- text-align: center;
-}
-
-.user-count {
- flex: 1;
-
- h5 {
- font-size:1em;
- font-weight: bolder;
- margin: 0 0 0.25em;
- }
-}
-
.fa {
color: grey;
}
-
.status-actions {
width: 50%;
display: flex;
div, favorite-button {
flex: 1;
}
}
status-text-container {
display: block;
}
.status-el {
line-height: 18px;
.notify {
.avatar {
border-width: 3px;
border-style: solid;
}
}
.media-left {
img {
margin-top: 0.2em;
float: right;
margin-right: 0.3em;
border-radius: 20%;
}
}
.retweet-info {
padding: 0.7em 0 0 0.6em;
.media-left {
display: flex;
i {
align-self: center;
text-align: right;
flex: 1;
padding-right: 0.3em;
}
}
}
.media-heading {
small {
font-weight: lighter;
}
margin-bottom: 0.3em;
}
}
nav {
z-index: 1000;
}
.fade-enter-active, .fade-leave-active {
transition: opacity .2s
}
.fade-enter, .fade-leave-active {
opacity: 0
}
.main {
flex: 1;
flex-basis: 65%;
}
.sidebar {
flex: 1;
flex-basis: 35%;
}
.mobile-shown {
display: none;
}
.panel-switcher {
display: none;
width: 100%;
button {
display: block;
flex: 1;
margin: 0.5em;
padding: 0.5em;
}
}
@media all and (max-width: 959px) {
.mobile-hidden {
display: none;
}
.panel-switcher {
display: flex;
}
.container {
padding: 0 0 0 0;
}
.panel {
margin: 0.5em 0 0.5em 0;
}
}
.item.right {
text-align: right;
padding-right: 20px;
}
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index 1e970ec64b..15efc55869 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -1,163 +1,163 @@
<template>
<div class="status-el base00-background" v-if="!status.deleted">
<template v-if="muted">
<div class="media status container muted">
<small><router-link :to="{ name: 'user-profile', params: { id: status.user.id } }">{{status.user.screen_name}}</router-link></small>
<a href="#" class="unmute" @click.prevent="toggleMute"><i class="icon-eye-off"></i></a>
</div>
</template>
<template v-if="!muted">
<div v-if="retweet" class="media container retweet-info">
<div class="media-left">
<i class='fa icon-retweet retweeted'></i>
</div>
<div class="media-body">
Retweeted by {{retweeter}}
</div>
</div>
<div class="media status container">
<div class="media-left">
<a :href="status.user.statusnet_profile_url">
<img @click.prevent="toggleUserExpanded" class='avatar' :src="status.user.profile_image_url_original">
</a>
</div>
<div class="media-body">
<div class="base05 base05=border usercard" v-if="userExpanded">
<user-card-content :user="status.user"></user-card-content>
</div>
<div class="user-content">
<h4 class="media-heading">
{{status.user.name}}
<small><router-link :to="{ name: 'user-profile', params: { id: status.user.id } }">{{status.user.screen_name}}</router-link></small>
<small v-if="status.in_reply_to_screen_name"> >
<router-link :to="{ name: 'user-profile', params: { id: status.in_reply_to_user_id } }">
{{status.in_reply_to_screen_name}}
</router-link>
</small>
-
<small>
<router-link :to="{ name: 'conversation', params: { id: status.id } }">
<timeago :since="status.created_at" :auto-update="60"></timeago>
</router-link>
</small>
<template v-if="expandable">
-
<small>
<a href="#" @click.prevent="toggleExpanded" ><i class="icon-plus-squared"></i></a>
</small>
<small v-if="status.user.muted">
<a href="#" @click.prevent="toggleMute" ><i class="icon-eye-off"></i></a>
</small>
</template>
<small v-if="!status.is_local" class="source_url">
<a :href="status.external_url" target="_blank" ><i class="icon-binoculars"></i></a>
</small>
</h4>
<div @click.prevent="linkClicked" class="status-content" v-html="status.statusnet_html"></div>
<div v-if='status.attachments' class='attachments'>
<attachment v-if="!hideAttachments" :status-id="status.id" :nsfw="status.nsfw" :attachment="attachment" v-for="attachment in status.attachments">
</attachment>
</div>
</div>
<div v-if="loggedIn">
<div class='status-actions'>
<div>
<a href="#" v-on:click.prevent="toggleReplying">
<i class='fa icon-reply'></i>
</a>
</div>
<retweet-button :status=status></retweet-button>
<favorite-button :status=status></favorite-button>
<delete-button :status=status></delete-button>
</div>
<post-status-form v-if="replying" :reply-to="status.id" :attentions="status.attentions" :repliedUser="status.user" v-on:posted="toggleReplying"></post-status-form>
</div>
</div>
</div>
</template>
</div>
</template>
<script src="./status.js" ></script>
<style lang="scss">
@import '../../_variables.scss';
.status-el {
hyphens: auto;
overflow-wrap: break-word;
word-wrap: break-word;
word-break: break-word;
.user-content {
min-height: 52px;
padding-top: 1px;
}
.source_url {
float: right;
}
.greentext {
color: green;
}
a {
display: inline-block;
word-break: break-all;
}
.status-content {
margin: 3px 15px 4px 0;
}
p {
margin: 0;
margin-top: 0.2em;
margin-bottom: 0.5em;
}
}
.status-actions {
padding-top: 5px;
}
.icon-reply:hover {
color: $blue;
}
.status .avatar {
width: 48px;
}
.status.compact .avatar {
width: 32px;
}
.status {
padding: 0.65em 0.7em 0.8em 0.8em;
border-bottom: 1px solid;
}
.muted button {
margin-left: auto;
}
a.unmute {
display: block;
margin-left: auto;
}
.usercard {
border-style: solid;
border-width: 1px;
- border-radius: 1em;
+ border-radius: 0.5em;
margin-bottom: 1em;
}
.conversation .status-el {
border-left: 4px solid rgba(255, 48, 16, 0.65);
}
</style>
diff --git a/src/components/user_card_content/user_card_content.vue b/src/components/user_card_content/user_card_content.vue
index ee4384fa23..10064d5f80 100644
--- a/src/components/user_card_content/user_card_content.vue
+++ b/src/components/user_card_content/user_card_content.vue
@@ -1,92 +1,209 @@
<template>
- <div>
- <div class="base00-background panel-heading text-center" v-bind:style="style">
+ <div id="heading" class="profile-panel-background" :style="headingStyle">
+ <div class="panel-heading text-center">
<div class='user-info'>
- <img :src="user.profile_image_url">
- <span class="glyphicon glyphicon-user"></span>
- <div class='user-name'>{{user.name}}</div>
- <div class='user-screen-name'>@{{user.screen_name}}</div>
+ <div class='container'>
+ <img :src="user.profile_image_url">
+ <span class="glyphicon glyphicon-user"></span>
+ <div class='user-name'>{{user.name}}</div>
+ <div class='user-screen-name'>@{{user.screen_name}}</div>
+ </div>
<div v-if="isOtherUser" class="user-interactions">
<div v-if="user.follows_you && loggedIn" class="following base06">
Follows you!
</div>
<div class="follow" v-if="loggedIn">
<span v-if="user.following">
<!--Following them!-->
<button @click="unfollowUser" class="base06 base01-background">
Unfollow
</button>
</span>
<span v-if="!user.following">
<button @click="followUser" class="base01 base04-background">
Follow
</button>
</span>
</div>
<div class='mute' v-if='isOtherUser'>
<span v-if='user.muted'>
<button @click="toggleMute" class="base04 base01-background base06-border">Unmute</button>
</span>
<span v-if='!user.muted'>
<button @click="toggleMute" class="base01 base04-background base01-border">Mute</button>
</span>
</div>
</div>
</div>
</div>
- <div class="panel-body base00-background">
+ <div class="panel-body profile-panel-body" :style="bodyStyle">
<div class="user-counts">
<div class="user-count">
<h5>Statuses</h5>
<span>{{user.statuses_count}}</span>
</div>
<div class="user-count">
<h5>Following</h5>
<span>{{user.friends_count}}</span>
</div>
<div class="user-count">
<h5>Followers</h5>
<span>{{user.followers_count}}</span>
</div>
</div>
<p>{{user.description}}</p>
</div>
</div>
</template>
<script>
export default {
props: [ 'user' ],
computed: {
- style () {
+ headingStyle () {
return {
- color: `#${this.user.profile_link_color}`,
'background-image': `url(${this.user.cover_photo})`
}
},
+ bodyStyle () {
+ return {
+ background: 'linear-gradient(to bottom, rgba(0, 0, 0, 0), ' + this.$store.state.config.colors['base00'] + ' 80%)'
+ }
+ },
isOtherUser () {
return this.user !== this.$store.state.users.currentUser
},
loggedIn () {
return this.$store.state.users.currentUser
}
},
methods: {
followUser () {
const store = this.$store
store.state.api.backendInteractor.followUser(this.user.id)
.then((followedUser) => store.commit('addNewUsers', [followedUser]))
},
unfollowUser () {
const store = this.$store
store.state.api.backendInteractor.unfollowUser(this.user.id)
.then((unfollowedUser) => store.commit('addNewUsers', [unfollowedUser]))
},
toggleMute () {
const store = this.$store
store.commit('setMuted', {user: this.user, muted: !this.user.muted})
store.state.api.backendInteractor.setUserMute(this.user)
}
}
}
</script>
+
+<style lang="scss">
+
+.profile-panel-background {
+ background-color: #121517;
+ background-size: cover;
+ border-radius: 0.5em 0.5em 0 0;
+}
+
+.profile-panel-body {
+ padding-top: 0em;
+ top: -0em;
+ padding-top: 4em;
+}
+
+.user-info {
+ color: white;
+ padding: 16px 16px 16px 16px;
+ margin-bottom: -4em;
+
+ .container{
+ display: flex;
+ flex-wrap: wrap;
+ flex-direction: column;
+ align-content: flex-start;
+ justify-content: center;
+ max-height: 60px;
+ }
+
+ img {
+ border: 2px solid;
+ border-radius: 0.5em;
+ flex: 1 0 100%;
+ max-width: 48px;
+ max-height: 48px;
+ }
+
+ text-shadow: 0px 1px 1.5px rgba(0, 0, 0, 1.0);
+
+ .user-name{
+ margin-top: 0.0em;
+ margin-left: 0.6em;
+ flex: 0 0 auto;
+ align-self: flex-start;
+ }
+
+ .user-screen-name {
+ margin-top: 0.0em;
+ margin-left: 0.6em;
+ font-weight: lighter;
+ font-size: 15px;
+ padding-right: 0.1em;
+ flex: 0 0 auto;
+ align-self: flex-start;
+ }
+
+ .user-interactions {
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: space-between;
+
+ div {
+ flex: 1;
+ }
+ margin-top: 0.7em;
+ margin-bottom: -1.0em;
+
+ .following {
+ color: white;
+ font-size: 14px;
+ flex: 0 0 100%;
+ margin: -0.7em 0.0em 0.3em 0.0em;
+ padding-left: 16px;
+ text-align: left;
+ }
+
+ .mute {
+ max-width: 220px;
+ min-height: 28px;
+ }
+
+ .follow {
+ max-width: 220px;
+ min-height: 28px;
+ }
+
+ button {
+ width: 92%;
+ height: 100%;
+ border: 1px solid;
+ }
+ }
+}
+
+.user-counts {
+ display: flex;
+ line-height:16px;
+ padding: 1em 1.5em 0em 1em;
+ text-align: center;
+}
+
+.user-count {
+ flex: 1;
+
+ h5 {
+ font-size:1em;
+ font-weight: bolder;
+ margin: 0 0 0.25em;
+ }
+}
+</style>
diff --git a/src/components/user_profile/user_profile.vue b/src/components/user_profile/user_profile.vue
index b0d6db8588..11a61bfc95 100644
--- a/src/components/user_profile/user_profile.vue
+++ b/src/components/user_profile/user_profile.vue
@@ -1,51 +1,16 @@
<template>
<div class="user-profile panel panel-default base00-background">
<user-card-content :user="user"></user-card-content>
</div>
</template>
<script src="./user_profile.js"></script>
<style lang="scss">
- .user-profile {
- flex: 2;
- flex-basis: 500px;
- }
- .user-info {
- .user-interactions {
- display: flex;
- flex-flow: row wrap;
- justify-content: center;
+.user-profile {
+ flex: 2;
+ flex-basis: 500px;
+}
- div {
- flex: 1;
- }
- margin-top: 0.5em;
- margin-bottom: -1.2em;
-
- .following {
- font-size: 14px;
- flex: 0 0 100%;
- margin-bottom: 0.5em;
- }
-
- .mute {
- max-width: 200px;
- }
-
- .follow {
- max-width: 200px;
- }
-
- button {
- width: 80%;
- height: 100%;
- border: 1px solid;
- }
- }
- .user-screen-name {
- margin-top: 0.4em;
- }
- }
</style>
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sat, Aug 8, 11:41 AM (1 d, 9 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1723143
Default Alt Text
(16 KB)
Attached To
Mode
rPUFE pleroma-fe-upstream
Attached
Detach File
Event Timeline
Log In to Comment