Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F85628895
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 f111c2d5ff..a97e6b7515 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" v-bind:class="{ 'expanded-status': !expandable }">
<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 :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;
}
}
.expanded-status {
border-left: 4px solid rgba(255, 48, 16, 0.65);
}
.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;
}
</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..befe8bf2be 100644
--- a/src/components/user_card_content/user_card_content.vue
+++ b/src/components/user_card_content/user_card_content.vue
@@ -1,92 +1,205 @@
<template>
- <div>
- <div class="base00-background panel-heading text-center" v-bind:style="style">
+ <div id="heading" class="profile-panel-background base00-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 () {
+ let color = '#1C2023'
+ console.log(this.color)
+ return {
+ background: 'linear-gradient(to bottom, rgba(0, 0, 0, 0), ' + color + ' 70%)'
+ }
+ },
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-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: 1em 1em 1em 1em;
+ 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: 0 2px 2px 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: center;
+
+ 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-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, 3:24 PM (1 d, 18 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1723650
Default Alt Text
(16 KB)
Attached To
Mode
rPUFE pleroma-fe-upstream
Attached
Detach File
Event Timeline
Log In to Comment