This commit is contained in:
Pierre Jaury 2018-06-20 22:50:37 +02:00
commit ff67d9e581
30 changed files with 204 additions and 83 deletions

View file

@ -1,46 +1,50 @@
APP_NAME=Laravel APP_NAME="PixelFed Test"
APP_ENV=local APP_ENV=local
APP_KEY= APP_KEY=
APP_DEBUG=true APP_DEBUG=true
APP_URL=http://localhost APP_URL=http://localhost
ADMIN_DOMAIN="localhost"
APP_DOMAIN="localhost"
LOG_CHANNEL=stack LOG_CHANNEL=stack
DB_CONNECTION=mysql DB_CONNECTION=mysql
DB_HOST=127.0.0.1 DB_HOST=127.0.0.1
DB_PORT=3306 DB_PORT=3306
DB_DATABASE=homestead DB_DATABASE=
DB_USERNAME=homestead DB_USERNAME=
DB_PASSWORD=secret DB_PASSWORD=
BROADCAST_DRIVER=log BROADCAST_DRIVER=log
CACHE_DRIVER=file CACHE_DRIVER=redis
SESSION_DRIVER=file SESSION_DRIVER=redis
SESSION_LIFETIME=120 SESSION_LIFETIME=120
QUEUE_DRIVER=sync QUEUE_DRIVER=redis
REDIS_HOST=127.0.0.1 REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null REDIS_PASSWORD=null
REDIS_PORT=6379 REDIS_PORT=6379
MAIL_DRIVER=smtp MAIL_DRIVER=log
MAIL_HOST=smtp.mailtrap.io MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525 MAIL_PORT=2525
MAIL_USERNAME=null MAIL_USERNAME=null
MAIL_PASSWORD=null MAIL_PASSWORD=null
MAIL_ENCRYPTION=null MAIL_ENCRYPTION=null
PUSHER_APP_ID= SESSION_DOMAIN="${APP_DOMAIN}"
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
SESSION_DOMAIN=".pixelfed.dev"
SESSION_SECURE_COOKIE=true SESSION_SECURE_COOKIE=true
API_BASE="/api/1/" API_BASE="/api/1/"
API_SEARCH="/api/search" API_SEARCH="/api/search"
OPEN_REGISTRATION=true OPEN_REGISTRATION=true
RECAPTCHA_ENABLED=false
ENFORCE_EMAIL_VERIFICATION=true
MAX_PHOTO_SIZE=15000
MAX_CAPTION_LENGTH=150
MAX_ALBUM_LENGTH=4
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

View file

@ -1,4 +1,76 @@
# PixelFed # PixelFed: Federated Image Sharing
Federated Image Sharing
> This project is still in active development and not yet ready for use. PixelFed is a federated social image sharing platform, similar to instagram.
Federation is done using the [ActivityPub](https://activitypub.rocks/) protocol,
which is used by [Mastodon](http://joinmastodon.org/), [PeerTube](https://joinpeertube.org/en/),
[Pleroma](https://pleroma.social/), and more. Through ActivityPub PixelFed can share
and interact with these platforms, as well as other instances of PixelFed.
**_Please note this is alpha software, not recommended for production use,
and federation is not supported yet._**
PixelFed is very early into the development stage. If you would like to have a
permanent instance with minimal breakage, **do not use this software until
there is a stable release**. The following setup instructions are intended for
testing and development.
## Requirements
- PHP >= 7.1.3 (7.2+ recommended for stable version)
- MySQL, Postgres (MariaDB and sqlite are not supported yet)
- Redis
- Composer
- GD or ImageMagick
- OpenSSL PHP Extension
- PDO PHP Extension
- Mbstring PHP Extension
- Tokenizer PHP Extension
- XML PHP Extension
- Ctype PHP Extension
- JSON PHP Extension
- JpegOptim
- Optipng
- Pngquant 2
- SVGO
- Gifsicle
## Installation
This guide assumes you have NGINX/Apache installed, along with the dependencies.
Those will not be covered in these early docs.
```bash
git clone https://github.com/dansup/pixelfed.git
cd pixelfed
composer install
cp .env.example .env
```
**Edit .env file with proper values**
```bash
php artisan key:generate
```
```bash
php artisan storage:link
php artisan migrate
php artisan horizon
php artisan serve --host=localhost --port=80
```
Check your browser at http://localhost
## Communication
The ways you can communicate on the project are below. Before interacting, please
read through the [Code Of Conduct](CODE_OF_CONDUCT.md).
* IRC: #pixelfed on irc.freenode.net ([#freenode_#pixelfed:matrix.org through
Matrix](https://matrix.to/#/#freenode_#pixelfed:matrix.org)
* Project on Mastodon: [@pixelfed@mastodon.social](https://mastodon.social/@pixelfed)
* E-mail: [hello@pixelfed.org](mailto:hello@pixelfed.org)
## Support
The lead maintainer is on Patreon! You can become a Patron at
https://www.patreon.com/dansup

View file

@ -34,7 +34,7 @@ class CommentController extends Controller
$reply = new Status(); $reply = new Status();
$reply->profile_id = $profile->id; $reply->profile_id = $profile->id;
$reply->caption = e(strip_tags($comment)); $reply->caption = e($comment);
$reply->rendered = $comment; $reply->rendered = $comment;
$reply->in_reply_to_id = $status->id; $reply->in_reply_to_id = $status->id;
$reply->in_reply_to_profile_id = $status->profile_id; $reply->in_reply_to_profile_id = $status->profile_id;
@ -44,7 +44,7 @@ class CommentController extends Controller
CommentPipeline::dispatch($status, $reply); CommentPipeline::dispatch($status, $reply);
if($request->ajax()) { if($request->ajax()) {
$response = ['code' => 200, 'msg' => 'Comment saved', 'username' => $profile->username, 'url' => $reply->url(), 'profile' => $profile->url()]; $response = ['code' => 200, 'msg' => 'Comment saved', 'username' => $profile->username, 'url' => $reply->url(), 'profile' => $profile->url(), 'comment' => $reply->caption];
} else { } else {
$response = redirect($status->url()); $response = redirect($status->url());
} }

View file

@ -65,7 +65,7 @@ return [
| |
*/ */
'timezone' => 'UTC', 'timezone' => env('APP_TIMEZONE', 'UTC'),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@ -78,7 +78,7 @@ return [
| |
*/ */
'locale' => 'en', 'locale' => env('APP_LOCALE', 'en'),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@ -91,7 +91,7 @@ return [
| |
*/ */
'fallback_locale' => 'en', 'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------

BIN
public/css/app.css vendored

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
public/js/app.js vendored

Binary file not shown.

Binary file not shown.

View file

@ -21,6 +21,7 @@ $(document).ready(function() {
var username = res.data.username; var username = res.data.username;
var permalink = res.data.url; var permalink = res.data.url;
var profile = res.data.profile; var profile = res.data.profile;
var reply = res.data.comment;
if($('.status-container').length == 1) { if($('.status-container').length == 1) {
var comments = el.parents().eq(3).find('.comments'); var comments = el.parents().eq(3).find('.comments');
@ -28,7 +29,7 @@ $(document).ready(function() {
var comments = el.parents().eq(1).find('.comments'); var comments = el.parents().eq(1).find('.comments');
} }
var comment = '<p class="mb-0"><span class="font-weight-bold pr-1"><bdi><a class="text-dark" href="' + profile + '">' + username + '</a></bdi></span><span class="comment-text">'+ commenttext + '</span><span class="float-right"><a href="' + permalink + '" class="text-dark small font-weight-bold">1s</a></span></p>'; var comment = '<p class="mb-0"><span class="font-weight-bold pr-1"><bdi><a class="text-dark" href="' + profile + '">' + username + '</a></bdi></span><span class="comment-text">'+ reply + '</span><span class="float-right"><a href="' + permalink + '" class="text-dark small font-weight-bold">1s</a></span></p>';
comments.prepend(comment); comments.prepend(comment);

View file

@ -193,6 +193,13 @@ body, button, input, textarea {
} }
} }
@media (max-width: map-get($grid-breakpoints, "sm")) {
.card-md-rounded-0 {
border-width: 1px 0;
border-radius:0 !important;
}
}
@keyframes loading-bar { @keyframes loading-bar {
from { background-position: 0 0; } from { background-position: 0 0; }
to { background-position: 100vw 0; } to { background-position: 100vw 0; }
@ -235,6 +242,12 @@ body, button, input, textarea {
background-position: 50%; background-position: 50%;
} }
.status-photo img {
object-fit: contain;
max-height: calc(100vh - (6rem));
}
@keyframes fadeInDown { @keyframes fadeInDown {
0% { 0% {
opacity: 0; opacity: 0;
@ -248,4 +261,5 @@ body, button, input, textarea {
.details-animated[open] { .details-animated[open] {
animation-name: fadeInDown; animation-name: fadeInDown;
animation-duration: 0.5s; animation-duration: 0.5s;
} }

View file

@ -0,0 +1,13 @@
<?php
return [
'viewMyProfile' => 'Mein Profil anschauen',
'myTimeline' => 'Meine Timeline',
'publicTimeline' => '&Ouml;ffentliche Timeline',
'remoteFollow' => 'Aus der Ferne folgen',
'settings' => 'Einstellungen',
'admin' => 'Administration',
'logout' => 'Abmelden',
];

View file

@ -5,5 +5,6 @@ return [
'likedPhoto' => 'gef&auml;llt dein Foto.', 'likedPhoto' => 'gef&auml;llt dein Foto.',
'startedFollowingYou' => 'folgt dir nun.', 'startedFollowingYou' => 'folgt dir nun.',
'commented' => 'hat deinen Post kommentiert.', 'commented' => 'hat deinen Post kommentiert.',
'mentionedYou' => 'hat dich erw&auml;hnt.'
]; ];

View file

@ -4,5 +4,5 @@ return [
'emptyTimeline' => 'This user has no posts yet!', 'emptyTimeline' => 'This user has no posts yet!',
'emptyFollowers' => 'This user has no followers yet!', 'emptyFollowers' => 'This user has no followers yet!',
'emptyFollowing' => 'This user is not following anyone yet!', 'emptyFollowing' => 'This user is not following anyone yet!',
'savedWarning' => 'Only you can see what you\'ve saved', 'savedWarning' => 'Only you can see what youve saved',
]; ];

View file

@ -0,0 +1,13 @@
<?php
return [
'viewMyProfile' => 'צפה בפרופיל שלי',
'myTimeline' => 'ציר הזמן שלי',
'publicTimeline' => 'ציר הזמן הציבורי',
'remoteFollow' => 'עקיבה מרחוק',
'settings' => 'הגדרות',
'admin' => 'מנהל',
'logout' => 'התנתק',
];

View file

@ -5,5 +5,6 @@ return [
'likedPhoto' => 'אהבו את התמונה שלך.', 'likedPhoto' => 'אהבו את התמונה שלך.',
'startedFollowingYou' => 'התחיל לעקוב אחריך.', 'startedFollowingYou' => 'התחיל לעקוב אחריך.',
'commented' => 'הגיב על הפוסט שלך.', 'commented' => 'הגיב על הפוסט שלך.',
'mentionedYou' => 'הזכיר אותך.'
]; ];

View file

@ -5,9 +5,9 @@
<div class="error-page py-5 my-5"> <div class="error-page py-5 my-5">
<div class="card mx-5"> <div class="card mx-5">
<div class="card-body p-5"> <div class="card-body p-5">
<h1 class="text-center">403 - Forbidden</h1> <h1 class="text-center">403 Forbidden</h1>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
@endsection @endsection

View file

@ -5,9 +5,9 @@
<div class="error-page py-5 my-5"> <div class="error-page py-5 my-5">
<div class="card mx-5"> <div class="card mx-5">
<div class="card-body p-5"> <div class="card-body p-5">
<h1 class="text-center">404 - Page Not Found</h1> <h1 class="text-center">404 Page Not Found</h1>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
@endsection @endsection

View file

@ -5,10 +5,10 @@
<div class="error-page py-5 my-5"> <div class="error-page py-5 my-5">
<div class="card mx-5"> <div class="card mx-5">
<div class="card-body p-5 text-center"> <div class="card-body p-5 text-center">
<h1>503 - Service Unavailable</h1> <h1>503 Service Unavailable</h1>
<p class="lead mb-0">Our services are overloaded at the moment, please try again later.</p> <p class="lead mb-0">Our services are overloaded at the moment, please try again later.</p>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
@endsection @endsection

View file

@ -1,8 +1,8 @@
<nav class="navbar navbar-expand navbar-light navbar-laravel sticky-top"> <nav class="navbar navbar-expand navbar-light navbar-laravel sticky-top">
<div class="container"> <div class="container">
<a class="navbar-brand d-flex align-items-center" href="{{ url('/timeline') }}" title="Logo"> <a class="navbar-brand d-flex align-items-center" href="{{ url('/timeline') }}" title="Logo">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="mr-2"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"></path><circle cx="12" cy="13" r="4"></circle></svg> <img src="/img/pixelfed-icon-black.svg" height="60px" class="p-2">
<strong class="font-weight-bold">{{ config('app.name', 'Laravel') }}</strong> <span class="h4 font-weight-bold mb-0">{{ config('app.name', 'Laravel') }}</span>
</a> </a>
<div class="collapse navbar-collapse" id="navbarSupportedContent"> <div class="collapse navbar-collapse" id="navbarSupportedContent">

View file

@ -1,4 +1,4 @@
@extends('layouts.app',['title' => $profile->username . "'s followers"]) @extends('layouts.app',['title' => $profile->username . "s followers"])
@section('content') @section('content')

View file

@ -1,4 +1,4 @@
@extends('layouts.app',['title' => $profile->username . "'s follows"]) @extends('layouts.app',['title' => $profile->username . "s follows"])
@section('content') @section('content')

View file

@ -22,12 +22,12 @@
<div class="row"> <div class="row">
<div class="col-12 col-md-8 offset-md-2 my-3"> <div class="col-12 col-md-8 offset-md-2 my-3">
<p><a class="btn btn-light btn-block p-4 font-weight-bold" disabled> <p><a class="btn btn-light btn-block p-4 font-weight-bold" disabled>
I'm not interested in this content Im not interested in this content
</a></p> </a></p>
</div> </div>
<div class="col-12 col-md-8 offset-md-2 my-3"> <div class="col-12 col-md-8 offset-md-2 my-3">
<p><a class="btn btn-light btn-block p-4 font-weight-bold"> <p><a class="btn btn-light btn-block p-4 font-weight-bold">
It's spam Its spam
</a></p> </a></p>
</div> </div>
<div class="col-12 col-md-8 offset-md-2 my-3"> <div class="col-12 col-md-8 offset-md-2 my-3">
@ -37,7 +37,7 @@
</div> </div>
<div class="col-12 col-md-8 offset-md-2 my-3"> <div class="col-12 col-md-8 offset-md-2 my-3">
<p><a class="btn btn-light btn-block p-4 font-weight-bold"> <p><a class="btn btn-light btn-block p-4 font-weight-bold">
It's abusive or harmful Its abusive or harmful
</a></p> </a></p>
</div> </div>
<div class="col-12 col-md-8 offset-md-2 my-3"> <div class="col-12 col-md-8 offset-md-2 my-3">
@ -51,4 +51,4 @@
</div> </div>
</div> </div>
@endsection @endsection

View file

@ -7,15 +7,15 @@
</div> </div>
<hr> <hr>
<section> <section>
<p class="lead">Fediverse is a portmanteau of "federation" and "universe". It is a common, informal name for a somewhat broad federation of social network servers.</p> <p class="lead">Fediverse is a portmanteau of “federation” and “universe”. It is a common, informal name for a somewhat broad federation of social network servers.</p>
<p class="lead font-weight-bold text-muted mt-4">Supported Fediverse Projects</p> <p class="lead font-weight-bold text-muted mt-4">Supported Fediverse Projects</p>
<ul class="lead pl-4"> <ul class="lead pl-4">
<li><a href="https://joinmastodon.org" rel="nofollow noopener">Mastodon</a> - A federated twitter alternative.</li> <li><a href="https://joinmastodon.org" rel="nofollow noopener">Mastodon</a> A federated twitter alternative.</li>
<li><a href="https://pleroma.social" rel="nofollow noopener">Pleroma</a> - A federated twitter alternative.</li> <li><a href="https://pleroma.social" rel="nofollow noopener">Pleroma</a> A federated twitter alternative.</li>
</ul> </ul>
</section> </section>
@endsection @endsection
@push('meta') @push('meta')
<meta property="og:description" content="What's Fediverse"> <meta property="og:description" content="Whats Fediverse">
@endpush @endpush

View file

@ -6,7 +6,7 @@
<h3 class="font-weight-bold">Language</h3> <h3 class="font-weight-bold">Language</h3>
</div> </div>
<hr> <hr>
<div class="alert alert-info font-weight-bold">We're still working on localization support!</div> <div class="alert alert-info font-weight-bold">Were still working on localization support!</div>
<p class="lead">Current Locale: <span class="font-weight-bold">{{App::getLocale()}}</span></p> <p class="lead">Current Locale: <span class="font-weight-bold">{{App::getLocale()}}</span></p>
<p class="lead">Select from one of the supported languages:</p> <p class="lead">Select from one of the supported languages:</p>
<ul class="list-group"> <ul class="list-group">

View file

@ -16,7 +16,7 @@
Posts, following and other public information: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public. Posts, following and other public information: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
</li> </li>
<li> <li>
Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any dangerous information over PixelFed. Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore its important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any dangerous information over PixelFed.
</li> </li>
<li> <li>
IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server. IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.
@ -27,7 +27,7 @@
<p class="lead">Any of the information we collect from you may be used in the following ways:</p> <p class="lead">Any of the information we collect from you may be used in the following ways:</p>
<ul class="lead pl-4"> <ul class="lead pl-4">
<li> <li>
To provide the core functionality of PixelFed. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline. To provide the core functionality of PixelFed. You can only interact with other peoples content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.
</li> </li>
<li> <li>
To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations. To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.
@ -57,7 +57,7 @@
<p class="lead">You may irreversibly delete your account at any time.</p> <p class="lead">You may irreversibly delete your account at any time.</p>
<h4 class="font-weight-bold">Do we use cookies?</h4> <h4 class="font-weight-bold">Do we use cookies?</h4>
<p class="lead">Yes. Cookies are small files that a site or its service provider transfers to your computer's hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account. <p class="lead">Yes. Cookies are small files that a site or its service provider transfers to your computers hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account.
</p> </p>
<p class="lead">We use cookies to understand and save your preferences for future visits.</p> <p class="lead">We use cookies to understand and save your preferences for future visits.</p>
@ -66,8 +66,8 @@
<p class="lead">Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.</p> <p class="lead">Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.</p>
<p class="lead">When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.</p> <p class="lead">When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.</p>
<h4 class="font-weight-bold">Children's Online Privacy Protection Act Compliance</h4> <h4 class="font-weight-bold">Childrens Online Privacy Protection Act Compliance</h4>
<p class="lead">Our site, products and services are all directed to people who are at least 13 years old. If this server is in the USA, and you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site.</p> <p class="lead">Our site, products and services are all directed to people who are at least 13 years old. If this server is in the USA, and you are under the age of 13, per the requirements of COPPA (Childrens Online Privacy Protection Act) do not use this site.</p>
<h4 class="font-weight-bold">Changes to our Privacy Policy</h4> <h4 class="font-weight-bold">Changes to our Privacy Policy</h4>
<p class="lead">If we decide to change our privacy policy, we will post those changes on this page.</p> <p class="lead">If we decide to change our privacy policy, we will post those changes on this page.</p>

View file

@ -3,7 +3,7 @@
@section('content') @section('content')
<div class="container px-0 mt-md-4"> <div class="container px-0 mt-md-4">
<div class="card status-container orientation-{{$status->firstMedia()->orientation ?? 'unknown'}}"> <div class="card card-md-rounded-0 status-container orientation-{{$status->firstMedia()->orientation ?? 'unknown'}}">
<div class="row mx-0"> <div class="row mx-0">
<div class="d-flex d-md-none align-items-center justify-content-between card-header bg-white w-100"> <div class="d-flex d-md-none align-items-center justify-content-between card-header bg-white w-100">
<div class="d-flex align-items-center status-username"> <div class="d-flex align-items-center status-username">
@ -87,23 +87,23 @@
</div> </div>
</div> </div>
<div class="card-body flex-grow-0 py-1"> <div class="card-body flex-grow-0 py-1">
<div class="reactions h3 mb-0"> <div class="reactions my-1">
<form class="d-inline-flex like-form pr-3" method="post" action="/i/like" style="display: inline;" data-id="{{$status->id}}" data-action="like"> <form class="d-inline-flex like-form pr-3" method="post" action="/i/like" style="display: inline;" data-id="{{$status->id}}" data-action="like">
@csrf @csrf
<input type="hidden" name="item" value="{{$status->id}}"> <input type="hidden" name="item" value="{{$status->id}}">
<button class="btn btn-link text-dark btn-lg p-0" type="submit" title="Like!"> <button class="btn btn-link text-dark p-0 border-0" type="submit" title="Like!">
<span class="far fa-heart fa-lg mb-0"></span> <h3 class="far fa-heart m-0"></h3>
</button> </button>
</form> </form>
<span class="far fa-comment pt-1 pr-3" title="Comment"></span> <h3 class="far fa-comment pr-3 m-0" title="Comment"></h3>
@if(Auth::check()) @if(Auth::check())
@if(Auth::user()->profile->id === $status->profile->id || Auth::user()->is_admin == true) @if(Auth::user()->profile->id === $status->profile->id || Auth::user()->is_admin == true)
<form method="post" action="/i/delete" class="d-inline-flex"> <form method="post" action="/i/delete" class="d-inline-flex">
@csrf @csrf
<input type="hidden" name="type" value="post"> <input type="hidden" name="type" value="post">
<input type="hidden" name="item" value="{{$status->id}}"> <input type="hidden" name="item" value="{{$status->id}}">
<button type="submit" class="btn btn-link btn-lg text-dark p-0" title="Remove"> <button type="submit" class="btn btn-link text-dark p-0 border-0" title="Remove">
<span class="far fa-trash-alt fa-lg mb-0"></span> <h3 class="far fa-trash-alt m-0"></h3>
</button> </button>
</form> </form>
@endif @endif
@ -112,8 +112,8 @@
<form class="d-inline-flex bookmark-form" method="post" action="/i/bookmark" style="display: inline;" data-id="{{$status->id}}" data-action="bookmark"> <form class="d-inline-flex bookmark-form" method="post" action="/i/bookmark" style="display: inline;" data-id="{{$status->id}}" data-action="bookmark">
@csrf @csrf
<input type="hidden" name="item" value="{{$status->id}}"> <input type="hidden" name="item" value="{{$status->id}}">
<button class="btn btn-link text-dark p-0 btn-lg" type="submit" title="Save"> <button class="btn btn-link text-dark p-0 border-0" type="submit" title="Save">
<span class="far fa-bookmark fa-lg mb-0"></span> <h3 class="far fa-bookmark m-0"></h3>
</button> </button>
</form> </form>
</span> </span>

View file

@ -1,4 +1,4 @@
<div class="card my-4 status-card"> <div class="card my-4 status-card card-md-rounded-0">
<div class="card-header d-inline-flex align-items-center bg-white"> <div class="card-header d-inline-flex align-items-center bg-white">
<img src="{{$item->profile->avatarUrl()}}" width="32px" height="32px" style="border-radius: 32px;"> <img src="{{$item->profile->avatarUrl()}}" width="32px" height="32px" style="border-radius: 32px;">
<a class="username font-weight-bold pl-2 text-dark" href="{{$item->profile->url()}}"> <a class="username font-weight-bold pl-2 text-dark" href="{{$item->profile->url()}}">
@ -44,20 +44,22 @@
</a> </a>
@endif @endif
<div class="card-body"> <div class="card-body">
<div class="reactions h3"> <div class="reactions my-1">
<form class="like-form pr-3" method="post" action="/i/like" style="display: inline;" data-id="{{$item->id}}" data-action="like" data-count="{{$item->likes_count}}"> <form class="d-inline-flex like-form pr-3" method="post" action="/i/like" style="display: inline;" data-id="{{$item->id}}" data-action="like" data-count="{{$item->likes_count}}">
@csrf @csrf
<input type="hidden" name="item" value="{{$item->id}}"> <input type="hidden" name="item" value="{{$item->id}}">
<button class="btn btn-link text-dark p-0" type="submit" title=""Like!> <button class="btn btn-link text-dark p-0" type="submit" title=""Like!>
<span class="far fa-heart status-heart fa-2x"></span> <h3 class="far fa-heart status-heart m-0"></h3>
</button> </button>
</form> </form>
<span class="far fa-comment status-comment-focus" title="Comment"></span> <h3 class="far fa-comment status-comment-focus" title="Comment"></h3>
<span class="float-right"> <span class="float-right">
<form class="bookmark-form" method="post" action="/i/bookmark" style="display: inline;" data-id="{{$item->id}}" data-action="bookmark"> <form class="d-inline-flex bookmark-form" method="post" action="/i/bookmark" style="display: inline;" data-id="{{$item->id}}" data-action="bookmark">
@csrf @csrf
<input type="hidden" name="item" value="{{$item->id}}"> <input type="hidden" name="item" value="{{$item->id}}">
<button class="btn btn-link text-dark p-0" type="submit" title="Save"><span class="far fa-bookmark" style="font-size:25px;"></span></button> <button class="btn btn-link text-dark p-0 border-0" type="submit" title="Save">
<h3 class="far fa-bookmark m-0"></h3>
</button>
</form> </form>
</span> </span>
</div> </div>
@ -103,7 +105,7 @@
<form class="comment-form" method="post" action="/i/comment" data-id="{{$item->id}}" data-truncate="true"> <form class="comment-form" method="post" action="/i/comment" data-id="{{$item->id}}" data-truncate="true">
@csrf @csrf
<input type="hidden" name="item" value="{{$item->id}}"> <input type="hidden" name="item" value="{{$item->id}}">
<input class="form-control status-reply-input" name="comment" placeholder="Add a comment..."> <input class="form-control status-reply-input" name="comment" placeholder="Add a comment">
</form> </form>
</div> </div>
</div> </div>

View file

@ -1,4 +1,4 @@
<div class="card"> <div class="card card-md-rounded-0">
<div class="card-header font-weight-bold">New Post</div> <div class="card-header font-weight-bold">New Post</div>
<div class="card-body" id="statusForm"> <div class="card-body" id="statusForm">
@if (session('error')) @if (session('error'))

View file

@ -6,8 +6,8 @@
@section('content') @section('content')
<div class="container"> <div class="container p-0">
<div class="col-12 col-md-8 offset-md-2 pt-4"> <div class="col-md-10 col-lg-8 mx-auto pt-4 px-0">
@if ($errors->any()) @if ($errors->any())
<div class="alert alert-danger"> <div class="alert alert-danger">
<ul> <ul>
@ -27,7 +27,7 @@
@endforeach @endforeach
@if($timeline->count() == 0) @if($timeline->count() == 0)
<div class="card"> <div class="card card-md-rounded-0">
<div class="card-body py-5"> <div class="card-body py-5">
<div class="d-flex justify-content-center align-items-center"> <div class="d-flex justify-content-center align-items-center">
<p class="lead font-weight-bold mb-0">{{ __('timeline.emptyPersonalTimeline') }}</p> <p class="lead font-weight-bold mb-0">{{ __('timeline.emptyPersonalTimeline') }}</p>
@ -37,11 +37,11 @@
@endif @endif
</div> </div>
<div class="page-load-status"> <div class="page-load-status" style="display: none;">
<div class="infinite-scroll-request"> <div class="infinite-scroll-request" style="display: none;">
<div class="d-none fixed-top loading-page"></div> <div class="fixed-top loading-page"></div>
</div> </div>
<div class="infinite-scroll-last"> <div class="infinite-scroll-last" style="display: none;">
<h3>No more content</h3> <h3>No more content</h3>
<p class="text-muted"> <p class="text-muted">
Maybe you could try Maybe you could try
@ -49,7 +49,7 @@
more people you can follow. more people you can follow.
</p> </p>
</div> </div>
<div class="infinite-scroll-error"> <div class="infinite-scroll-error" style="display: none;">
<h3>Whoops, an error</h3> <h3>Whoops, an error</h3>
<p class="text-muted"> <p class="text-muted">
Try reloading the page Try reloading the page

View file

@ -6,8 +6,8 @@
@section('content') @section('content')
<div class="container"> <div class="container px-0">
<div class="col-12 col-md-8 offset-md-2 pt-4"> <div class="col-md-10 col-lg-8 mx-auto pt-4 px-0">
@if ($errors->any()) @if ($errors->any())
<div class="alert alert-danger"> <div class="alert alert-danger">
<ul> <ul>
@ -28,11 +28,11 @@
@endforeach @endforeach
</div> </div>
<div class="page-load-status"> <div class="page-load-status" style="display: none;">
<div class="infinite-scroll-request"> <div class="infinite-scroll-request" style="display: none;">
<div class="d-none fixed-top loading-page"></div> <div class="fixed-top loading-page"></div>
</div> </div>
<div class="infinite-scroll-last"> <div class="infinite-scroll-last" style="display: none;">
<h3>No more content</h3> <h3>No more content</h3>
<p class="text-muted"> <p class="text-muted">
Maybe you could try Maybe you could try
@ -40,7 +40,7 @@
more people you can follow. more people you can follow.
</p> </p>
</div> </div>
<div class="infinite-scroll-error"> <div class="infinite-scroll-error" style="display: none;">
<h3>Whoops, an error</h3> <h3>Whoops, an error</h3>
<p class="text-muted"> <p class="text-muted">
Try reloading the page Try reloading the page