From a113c0117ec32b340a45de6aa524f523c5053f19 Mon Sep 17 00:00:00 2001 From: j1t Date: Tue, 22 May 2018 06:43:04 +0000 Subject: [PATCH 001/360] Create auth.php --- resources/lang/he/auth.php | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 resources/lang/he/auth.php diff --git a/resources/lang/he/auth.php b/resources/lang/he/auth.php new file mode 100644 index 000000000..c9bc5125c --- /dev/null +++ b/resources/lang/he/auth.php @@ -0,0 +1,8 @@ + 'פרטים אלו אינם תואמים לרשימותינו.', + 'throttle' => 'יותר מדי ניסיונות כניסה. אנא נסה שוב בעוד :seconds שניות.', + +]; From 37ab4942007f6ef2e4da6aeee04e73ad26565258 Mon Sep 17 00:00:00 2001 From: j1t Date: Tue, 22 May 2018 06:43:48 +0000 Subject: [PATCH 002/360] Create pagination.php --- resources/lang/he/pagination.php | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 resources/lang/he/pagination.php diff --git a/resources/lang/he/pagination.php b/resources/lang/he/pagination.php new file mode 100644 index 000000000..fbcdf5faa --- /dev/null +++ b/resources/lang/he/pagination.php @@ -0,0 +1,8 @@ + '« הקודם', + 'next' => 'הבא »', + +]; From f8424180311dad55a9aa21ff06b04ad2044ae6aa Mon Sep 17 00:00:00 2001 From: j1t Date: Tue, 22 May 2018 06:51:57 +0000 Subject: [PATCH 003/360] Create passwords.php --- resources/lang/he/passwords.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 resources/lang/he/passwords.php diff --git a/resources/lang/he/passwords.php b/resources/lang/he/passwords.php new file mode 100644 index 000000000..4fa87bde7 --- /dev/null +++ b/resources/lang/he/passwords.php @@ -0,0 +1,12 @@ + 'סיסמאות צריכות לכלול לפחות שש אותיות ולהתאים לאישור סיסמה.', + 'reset' => 'סיסמאתך אופסה!', + 'sent' => 'קישור איפוס הסיסמה נשלח לך לאימייל!', + 'token' => 'אסימון איפוס סיסמה זה אינו תקין.', + 'user' => "איננו יכולים למצוא משתמש בעל אימייל זה.", + +]; + From 16e29a0ecd51c7270779f50576cba795f87405a3 Mon Sep 17 00:00:00 2001 From: j1t Date: Tue, 22 May 2018 06:54:05 +0000 Subject: [PATCH 004/360] Create validation.php --- resources/lang/he/validation.php | 65 ++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 resources/lang/he/validation.php diff --git a/resources/lang/he/validation.php b/resources/lang/he/validation.php new file mode 100644 index 000000000..78c3d2516 --- /dev/null +++ b/resources/lang/he/validation.php @@ -0,0 +1,65 @@ + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute format is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +]; From fe7c443ffb13a001876df51ae2d4ba4bc00cd2b5 Mon Sep 17 00:00:00 2001 From: j1t Date: Tue, 22 May 2018 06:55:04 +0000 Subject: [PATCH 005/360] Update auth.php --- resources/lang/he/auth.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/resources/lang/he/auth.php b/resources/lang/he/auth.php index c9bc5125c..a3f5f101d 100644 --- a/resources/lang/he/auth.php +++ b/resources/lang/he/auth.php @@ -2,6 +2,17 @@ return [ + /* + |-------------------------------------------------------------------------- + | Authentication Language Lines + |-------------------------------------------------------------------------- + | + | The following language lines are used during authentication for various + | messages that we need to display to the user. You are free to modify + | these language lines according to your application's requirements. + | + */ + 'failed' => 'פרטים אלו אינם תואמים לרשימותינו.', 'throttle' => 'יותר מדי ניסיונות כניסה. אנא נסה שוב בעוד :seconds שניות.', From b4ab656f70baf5bce6bd4b28a023412cee947f14 Mon Sep 17 00:00:00 2001 From: j1t Date: Tue, 22 May 2018 06:55:30 +0000 Subject: [PATCH 006/360] Update pagination.php --- resources/lang/he/pagination.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/resources/lang/he/pagination.php b/resources/lang/he/pagination.php index fbcdf5faa..82eb0d2af 100644 --- a/resources/lang/he/pagination.php +++ b/resources/lang/he/pagination.php @@ -2,6 +2,17 @@ return [ + /* + |-------------------------------------------------------------------------- + | Pagination Language Lines + |-------------------------------------------------------------------------- + | + | The following language lines are used by the paginator library to build + | the simple pagination links. You are free to change them to anything + | you want to customize your views to better match your application. + | + */ + 'previous' => '« הקודם', 'next' => 'הבא »', From 18e06945e8118df2e84f305b33aa5968f3e0a8f1 Mon Sep 17 00:00:00 2001 From: j1t Date: Tue, 22 May 2018 06:56:07 +0000 Subject: [PATCH 007/360] Update passwords.php --- resources/lang/he/passwords.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/resources/lang/he/passwords.php b/resources/lang/he/passwords.php index 4fa87bde7..706876765 100644 --- a/resources/lang/he/passwords.php +++ b/resources/lang/he/passwords.php @@ -2,6 +2,17 @@ return [ + /* + |-------------------------------------------------------------------------- + | Password Reset Language Lines + |-------------------------------------------------------------------------- + | + | The following language lines are the default lines which match reasons + | that are given by the password broker for a password update attempt + | has failed, such as for an invalid token or invalid new password. + | + */ + 'password' => 'סיסמאות צריכות לכלול לפחות שש אותיות ולהתאים לאישור סיסמה.', 'reset' => 'סיסמאתך אופסה!', 'sent' => 'קישור איפוס הסיסמה נשלח לך לאימייל!', From 1173a53266d3a58b6a670f57acbdb478068eb05c Mon Sep 17 00:00:00 2001 From: j1t Date: Tue, 22 May 2018 07:03:27 +0000 Subject: [PATCH 008/360] Update validation.php --- resources/lang/he/validation.php | 113 +++++++++++++++++++++++-------- 1 file changed, 85 insertions(+), 28 deletions(-) diff --git a/resources/lang/he/validation.php b/resources/lang/he/validation.php index 78c3d2516..237051116 100644 --- a/resources/lang/he/validation.php +++ b/resources/lang/he/validation.php @@ -1,36 +1,93 @@ + 'ה- :attribute must be accepted.', + 'active_url' => 'ה- :attribute is not a valid URL.', + 'after' => 'ה- :attribute must be a date after :date.', + 'after_or_equal' => 'ה- :attribute must be a date after or equal to :date.', + 'alpha' => 'ה- :attribute may only contain letters.', + 'alpha_dash' => 'ה- :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'ה- :attribute may only contain letters and numbers.', + 'array' => 'ה- :attribute must be an array.', + 'before' => 'ה- :attribute must be a date before :date.', + 'before_or_equal' => 'ה- :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'ה- :attribute צריך להיות בין :min and :max.', + 'file' => 'ה- :attribute צריך להיות בין :min and :max kilobytes.', + 'string' => 'ה- :attribute צריך להיות בין :min and :max characters.', + 'array' => 'ה- :attribute must have between :min and :max items.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'boolean' => 'ה- :attribute field must be true or false.', + 'confirmed' => 'ה- :attribute confirmation does not match.', + 'date' => 'ה- :attribute is not a valid date.', + 'date_format' => 'ה- :attribute does not match the format :format.', + 'different' => 'ה- :attribute and :other must be different.', + 'digits' => 'ה- :attribute must be :digits digits.', + 'digits_between' => 'ה- :attribute must be between :min and :max digits.', + 'dimensions' => 'ה- :attribute has invalid image dimensions.', + 'distinct' => 'ה- :attribute field has a duplicate value.', + 'email' => 'ה- :attribute must be a valid email address.', + 'exists' => 'ה- selected :attribute is invalid.', + 'file' => 'ה- :attribute must be a file.', + 'filled' => 'ה- :attribute field must have a value.', + 'image' => 'ה- :attribute must be an image.', + 'in' => 'ה- selected :attribute is invalid.', + 'in_array' => 'ה- :attribute field does not exist in :other.', + 'integer' => 'ה- :attribute must be an integer.', + 'ip' => 'ה- :attribute must be a valid IP address.', + 'ipv4' => 'ה- :attribute must be a valid IPv4 address.', + 'ipv6' => 'ה- :attribute must be a valid IPv6 address.', + 'json' => 'ה- :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'ה- :attribute may not be greater than :max.', + 'file' => 'ה- :attribute may not be greater than :max kilobytes.', + 'string' => 'ה- :attribute may not be greater than :max characters.', + 'array' => 'ה- :attribute may not have more than :max items.', + ], + 'mimes' => 'ה- :attribute צריך להיות קובץ מסוג: :values.', + 'mimetypes' => 'ה- :attribute צריך להיות קובץ מסוג: :values.', 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'numeric' => 'ה- :attribute צריך להיות לפחות :min.', + 'file' => 'ה- :attribute צריך להיות לפחות :min kilobytes.', + 'string' => 'ה- :attribute צריך להיות לפחות :min characters.', + 'array' => 'ה- :attribute must have at least :min items.', ], - 'not_in' => 'The selected :attribute is invalid.', - 'not_regex' => 'The :attribute format is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', + 'not_in' => 'ה- selected :attribute is invalid.', + 'not_regex' => 'ה- :attribute format is invalid.', + 'numeric' => 'ה- :attribute must be a number.', + 'present' => 'ה- :attribute field must be present.', + 'regex' => 'ה- :attribute format is invalid.', + 'required' => 'ה- :attribute field is required.', + 'required_if' => 'ה- :attribute field is required when :other is :value.', + 'required_unless' => 'ה- :attribute field is required unless :other is in :values.', + 'required_with' => 'ה- :attribute field is required when :values is present.', + 'required_with_all' => 'ה- :attribute field is required when :values is present.', + 'required_without' => 'ה- :attribute field is required when :values is not present.', + 'required_without_all' => 'ה- :attribute field is required when none of :values are present.', + 'same' => 'ה- :attribute and :other must match.', 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'numeric' => 'ה- :attribute must be :size.', + 'file' => 'ה- :attribute must be :size kilobytes.', + 'string' => 'ה- :attribute must be :size characters.', + 'array' => 'ה- :attribute must contain :size items.', ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', + 'string' => 'ה- :attribute must be a string.', + 'timezone' => 'ה- :attribute must be a valid zone.', + 'unique' => 'ה- :attribute has already been taken.', + 'uploaded' => 'ה- :attribute failed to upload.', + 'url' => 'ה- :attribute format is invalid.', /* |-------------------------------------------------------------------------- From 004dc22b1b1ebf66bf865f7eefcf981a7db09ff9 Mon Sep 17 00:00:00 2001 From: Tim Stahel Date: Fri, 25 May 2018 21:00:48 +0200 Subject: [PATCH 009/360] added partial swedish translations --- resources/lang/sv/auth.php | 19 +++++ resources/lang/sv/pagination.php | 19 +++++ resources/lang/sv/passwords.php | 22 ++++++ resources/lang/sv/validation.php | 122 +++++++++++++++++++++++++++++++ 4 files changed, 182 insertions(+) create mode 100644 resources/lang/sv/auth.php create mode 100644 resources/lang/sv/pagination.php create mode 100644 resources/lang/sv/passwords.php create mode 100644 resources/lang/sv/validation.php diff --git a/resources/lang/sv/auth.php b/resources/lang/sv/auth.php new file mode 100644 index 000000000..073fc9141 --- /dev/null +++ b/resources/lang/sv/auth.php @@ -0,0 +1,19 @@ + 'Dessa autentiseringsuppgifter matchar inte de i vårat register.', + 'throttle' => 'För många inloggningsförsök. Var god försök igen om :seconds sekunder.', + +]; diff --git a/resources/lang/sv/pagination.php b/resources/lang/sv/pagination.php new file mode 100644 index 000000000..f48366d47 --- /dev/null +++ b/resources/lang/sv/pagination.php @@ -0,0 +1,19 @@ + '« Föregående', + 'next' => 'Nästa »', + +]; diff --git a/resources/lang/sv/passwords.php b/resources/lang/sv/passwords.php new file mode 100644 index 000000000..2c334d4cf --- /dev/null +++ b/resources/lang/sv/passwords.php @@ -0,0 +1,22 @@ + 'Lösenord måste vara minst sex tecken långa, och matcha bekräftelsen.', + 'reset' => 'Ditt lösenord har återställts!', + 'sent' => 'Vi har skickat återställningslänken till ditt e-postkonto!', + 'token' => 'Denna lösenords-token är ogiltig.', + 'user' => "Vi kan inte hitta en användare med den e-postadressen.", + +]; diff --git a/resources/lang/sv/validation.php b/resources/lang/sv/validation.php new file mode 100644 index 000000000..77d230221 --- /dev/null +++ b/resources/lang/sv/validation.php @@ -0,0 +1,122 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'ipv4' => 'The :attribute must be a valid IPv4 address.', + 'ipv6' => 'The :attribute must be a valid IPv6 address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute format is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +]; From 4f8941df9a03201813515d795043bed0a5667d1e Mon Sep 17 00:00:00 2001 From: ahmad-amsyar Date: Sat, 26 May 2018 13:29:52 +0800 Subject: [PATCH 010/360] add malay translation. --- resources/lang/ms/auth.php | 19 +++++ resources/lang/ms/pagination.php | 19 +++++ resources/lang/ms/passwords.php | 22 ++++++ resources/lang/ms/validation.php | 122 +++++++++++++++++++++++++++++++ 4 files changed, 182 insertions(+) create mode 100644 resources/lang/ms/auth.php create mode 100644 resources/lang/ms/pagination.php create mode 100644 resources/lang/ms/passwords.php create mode 100644 resources/lang/ms/validation.php diff --git a/resources/lang/ms/auth.php b/resources/lang/ms/auth.php new file mode 100644 index 000000000..5de259d52 --- /dev/null +++ b/resources/lang/ms/auth.php @@ -0,0 +1,19 @@ + 'Butiran ini tidak sepadan dengan rekod kami ', + 'throttle' => 'Terlalu banyak cubaan log masuk. Cuba lagi dalam :seconds saat.', + +]; diff --git a/resources/lang/ms/pagination.php b/resources/lang/ms/pagination.php new file mode 100644 index 000000000..4b4345efe --- /dev/null +++ b/resources/lang/ms/pagination.php @@ -0,0 +1,19 @@ + '« Sebelum', + 'next' => 'Seterusnya »', + +]; diff --git a/resources/lang/ms/passwords.php b/resources/lang/ms/passwords.php new file mode 100644 index 000000000..017c98033 --- /dev/null +++ b/resources/lang/ms/passwords.php @@ -0,0 +1,22 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Kata laluan anda sudah ditetap semula!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => "Kami tidak menjumpai pengguna dengan alamat emel tersebut.", + +]; diff --git a/resources/lang/ms/validation.php b/resources/lang/ms/validation.php new file mode 100644 index 000000000..77d230221 --- /dev/null +++ b/resources/lang/ms/validation.php @@ -0,0 +1,122 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'ipv4' => 'The :attribute must be a valid IPv4 address.', + 'ipv6' => 'The :attribute must be a valid IPv6 address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute format is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +]; From ec42c29aa966b33258a5cf3df331fd235580742f Mon Sep 17 00:00:00 2001 From: ahmad-amsyar Date: Sat, 26 May 2018 13:40:17 +0800 Subject: [PATCH 011/360] Improve malay translation. --- resources/lang/ms/passwords.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/lang/ms/passwords.php b/resources/lang/ms/passwords.php index 017c98033..f2394969d 100644 --- a/resources/lang/ms/passwords.php +++ b/resources/lang/ms/passwords.php @@ -13,10 +13,10 @@ return [ | */ - 'password' => 'Passwords must be at least six characters and match the confirmation.', + 'password' => 'Kata laluan mesti mempunyai sekurang-kurangnya enam askara dan sepadan dengan pengesahan.', 'reset' => 'Kata laluan anda sudah ditetap semula!', - 'sent' => 'We have e-mailed your password reset link!', - 'token' => 'This password reset token is invalid.', + 'sent' => 'Kami sudah emel pautan penetapan semula kata laluan anda!', + 'token' => 'Token penetapan semula kata laluan ini tidak sah.', 'user' => "Kami tidak menjumpai pengguna dengan alamat emel tersebut.", ]; From 3895b6dff1a7ff0ac0969f3b79000927d3553e01 Mon Sep 17 00:00:00 2001 From: ahmad-amsyar Date: Sat, 26 May 2018 14:56:43 +0800 Subject: [PATCH 012/360] add more malay translation. --- resources/lang/ms/validation.php | 134 +++++++++++++++---------------- 1 file changed, 67 insertions(+), 67 deletions(-) diff --git a/resources/lang/ms/validation.php b/resources/lang/ms/validation.php index 77d230221..86f47b484 100644 --- a/resources/lang/ms/validation.php +++ b/resources/lang/ms/validation.php @@ -13,81 +13,81 @@ return [ | */ - 'accepted' => 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'accepted' => ':attribute haruslah diterima.', + 'active_url' => ':attribute bukan URL yang sah.', + 'after' => ':attribute tarikh mestilah selepas :date.', + 'after_or_equal' => ':attribute mestilah tarikh selepas atau sama dengan :date.', + 'alpha' => ':attribute mesti mempunyai abjad sahaja.', + 'alpha_dash' => ':attribute mesti mempunyai abjad, nombor, dan sengkang sahaja.', + 'alpha_num' => ':attribute mesti mempunyai abjad dan nombor sahaja.', + 'array' => ':attribute mestilah lokasi.', + 'before' => ':attribute mestilah tarikh sebelum :date.', + 'before_or_equal' => ':attribute mestilah tarikh sebelum atau sama dengan :date.', 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'numeric' => ':attribute mestilah antara :min dan :max.', + 'file' => ':attribute mestilah antara :min dan :max kilobytes.', + 'string' => ':attribute mestilah antara :min dan :max perkataan.', + 'array' => ':attribute mestilah antara :min dan :max item.', ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'json' => 'The :attribute must be a valid JSON string.', + 'boolean' => ':attribute mestilah ruang betul atau salah.', + 'confirmed' => ':attribute pengesahan tidak sepadan.', + 'date' => ':attribute bukan tarikh yang sah.', + 'date_format' => ':attribute tidak sepadan dengan format :format.', + 'different' => ':attribute dan :other mestilah berbeza.', + 'digits' => ':attribute mestilah :digits digit.', + 'digits_between' => ':attribute mestilah antara :min dan :max digit.', + 'dimensions' => ':attribute mempunyai dimensi imej yang tidak sah.', + 'distinct' => ':attribute ruang mempunyai nilai pendua.', + 'email' => ':attribute mestilah alamat emel yang sah.', + 'exists' => ':attribute yang dipilih tidak sah.', + 'file' => ':attribute mestilah sebuah fail.', + 'filled' => ':attribute ruang mestilah mempunyai nilai.', + 'image' => ':attribute mestilah imej.', + 'in' => ':attribute yang di pilih tidak sah.', + 'in_array' => ':attribute ruang tidak wujud dalam :other.', + 'integer' => ':attribute mestilah integer.', + 'ip' => ':attribute mestilah alamat IP yang sah.', + 'ipv4' => ':attribute mestilah alamat IPv4 yang sah.', + 'ipv6' => ':attribute mestilah alamat IPv6 yang sah.', + 'json' => ':attribute mestilah rentetan JSON yang sah.', 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'numeric' => ':attribute mesti tidak besar daripada :max.', + 'file' => ':attribute mesti tidak besar daripada :max kilobytes.', + 'string' => ':attribute mesti tidak besar daripada :max perkataan.', + 'array' => ':attribute mesti tidak lebih daripada :max item.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'mimes' => ':attribute mestilah mempunyai jenis file: :values.', + 'mimetypes' => ':attribute mestilah mempunyai jenis file: :values.', 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'numeric' => ':attribute mesti sekurang-kurangnya :min.', + 'file' => ':attribute mesti sekurang-kurangnya :min kilobytes.', + 'string' => ':attribute mesti sekurang-kurangnya :min perkataan.', + 'array' => ':attribute mesti mempunyai sekurang-kurangnya :min item.', ], - 'not_in' => 'The selected :attribute is invalid.', - 'not_regex' => 'The :attribute format is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', + 'not_in' => ':attribute yang di pilih tidak sah.', + 'not_regex' => ':attribute adalah format tidak sah.', + 'numeric' => ':attribute mestilah nombor.', + 'present' => ':attribute ruang mesti ada.', + 'regex' => ':attribute adalah format tidak sah.', + 'required' => ':attribute ruang diperlukan.', + 'required_if' => ':attribute ruang diperlukan bila :other adalah :value.', + 'required_unless' => ':attribute ruang diperlukan kecuali jika :other ada dalam :values.', + 'required_with' => 'The :attribute ruang diperlukan bila :values wujud.', + 'required_with_all' => 'The :attribute ruang diperlukan bila :values wujud.', + 'required_without' => 'The :attribute ruang diperlukan bila :values tidak wujud.', + 'required_without_all' => 'The :attribute ruang diperlukan bila tiada daripada :values wujud.', + 'same' => ':attribute dan :other mestilah sepadan.', 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'numeric' => ':attribute mesilah :size.', + 'file' => ':attribute mestilah :size kilobytes.', + 'string' => ':attribute mestilah :size perkataan.', + 'array' => ':attribute mesti mempunyai :size item.', ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', + 'string' => ':attribute mestilah rentetan.', + 'timezone' => ':attribute mesti zon waktu yang sah.', + 'unique' => ':attribute telah diambil.', + 'uploaded' => ':attribute gagal dimuat naik.', + 'url' => ':attribute adalah format tidak sah.', /* |-------------------------------------------------------------------------- From 0fb5e143a59678c912ac2fc6450f75ed7f46d4de Mon Sep 17 00:00:00 2001 From: j1t Date: Sat, 26 May 2018 17:38:22 +0000 Subject: [PATCH 013/360] Update validation.php --- resources/lang/he/validation.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/resources/lang/he/validation.php b/resources/lang/he/validation.php index 237051116..dbcd28768 100644 --- a/resources/lang/he/validation.php +++ b/resources/lang/he/validation.php @@ -27,7 +27,7 @@ return [ 'numeric' => 'ה- :attribute צריך להיות בין :min and :max.', 'file' => 'ה- :attribute צריך להיות בין :min and :max kilobytes.', 'string' => 'ה- :attribute צריך להיות בין :min and :max characters.', - 'array' => 'ה- :attribute must have between :min and :max items.', + 'array' => 'ה- :attribute צריך לכלול בין :min and :max items.', ], 'boolean' => 'ה- :attribute field must be true or false.', 'confirmed' => 'ה- :attribute confirmation does not match.', @@ -62,7 +62,7 @@ return [ 'numeric' => 'ה- :attribute צריך להיות לפחות :min.', 'file' => 'ה- :attribute צריך להיות לפחות :min kilobytes.', 'string' => 'ה- :attribute צריך להיות לפחות :min characters.', - 'array' => 'ה- :attribute must have at least :min items.', + 'array' => 'ה- :attribute צריך לכלול לפחות :min items.', ], 'not_in' => 'ה- selected :attribute is invalid.', 'not_regex' => 'ה- :attribute format is invalid.', @@ -78,10 +78,10 @@ return [ 'required_without_all' => 'ה- :attribute field is required when none of :values are present.', 'same' => 'ה- :attribute and :other must match.', 'size' => [ - 'numeric' => 'ה- :attribute must be :size.', - 'file' => 'ה- :attribute must be :size kilobytes.', - 'string' => 'ה- :attribute must be :size characters.', - 'array' => 'ה- :attribute must contain :size items.', + 'numeric' => 'ה- :attribute צריך להיות :size.', + 'file' => 'ה- :attribute צריך להיות :size kilobytes.', + 'string' => 'ה- :attribute צריך להיות :size characters.', + 'array' => 'ה- :attribute צריך לכלול :size items.', ], 'string' => 'ה- :attribute must be a string.', 'timezone' => 'ה- :attribute must be a valid zone.', From 1d83c857ac217f471d1e72f0fc4250d66b387d6f Mon Sep 17 00:00:00 2001 From: timmyRS Date: Sat, 26 May 2018 22:18:47 +0200 Subject: [PATCH 014/360] Add German Translation --- resources/lang/de/auth.php | 19 +++++ resources/lang/de/pagination.php | 19 +++++ resources/lang/de/passwords.php | 22 ++++++ resources/lang/de/validation.php | 122 +++++++++++++++++++++++++++++++ 4 files changed, 182 insertions(+) create mode 100644 resources/lang/de/auth.php create mode 100644 resources/lang/de/pagination.php create mode 100644 resources/lang/de/passwords.php create mode 100644 resources/lang/de/validation.php diff --git a/resources/lang/de/auth.php b/resources/lang/de/auth.php new file mode 100644 index 000000000..c0a62f918 --- /dev/null +++ b/resources/lang/de/auth.php @@ -0,0 +1,19 @@ + 'Diese Daten stimmen nicht mit unserem Register überein.', + 'throttle' => 'Zu viele Login-Versuche. Versuche es in :seconds Sekunden erneut.', + +]; diff --git a/resources/lang/de/pagination.php b/resources/lang/de/pagination.php new file mode 100644 index 000000000..9120d892c --- /dev/null +++ b/resources/lang/de/pagination.php @@ -0,0 +1,19 @@ + '« Vorherige', + 'next' => 'Nächste »', + +]; diff --git a/resources/lang/de/passwords.php b/resources/lang/de/passwords.php new file mode 100644 index 000000000..343e79d28 --- /dev/null +++ b/resources/lang/de/passwords.php @@ -0,0 +1,22 @@ + 'Passwörter müssen mindestens 6 Zeichen sein und die Bestätigung muss übereinstimmen.', + 'reset' => 'Dein Passwort wurde zurückgesetzt!', + 'sent' => 'Wir haben die eine Password-Rücksetzungs-E-Mail gesendet!', + 'token' => 'Dieser Passwort-Rücksetzungs-Code ist nicht gültig.', + 'user' => "Wir konnten keinen Nutzer mit dieser E-Mail-Adresse finden.", + +]; diff --git a/resources/lang/de/validation.php b/resources/lang/de/validation.php new file mode 100644 index 000000000..1f7584ecf --- /dev/null +++ b/resources/lang/de/validation.php @@ -0,0 +1,122 @@ + ':attribute muss akzeptiert sein .', + 'active_url' => ':attribute ist keine gültige URL.', + 'after' => ':attribute muss ein Datum nach dem :date sein.', + 'after_or_equal' => ':attribute muss auf den :date oder danach fallen.', + 'alpha' => ':attribute darf nur Buchstaben beinhalten.', + 'alpha_dash' => ':attribute darf nur Buchstaben, Zahlen, und Bindestriche beinhalten.', + 'alpha_num' => ':attribute darf nur Buchstaben und Zahlen beinhalten.', + 'array' => ':attribute muss ein Array sein.', + 'before' => ':attribute muss vor dem :date fallen.', + 'before_or_equal' => ':attribute muss auf den :date oder davor fallen.', + 'between' => [ + 'numeric' => ':attribute muss eine Zahl zwischen :min bis :max sein.', + 'file' => ':attribute muss zwischen :min bis :max Kilobytes haben.', + 'string' => ':attribute muss zwischen :min bis :max Zeichen lang sein.', + 'array' => ':attribute muss zwischen :min bis :max Objekte beinhalten.', + ], + 'boolean' => ':attribute muss "true" oder "false" sein.', + 'confirmed' => ':attribute-Bestätigung stimmt nicht überein.', + 'date' => ':attribute ist kein gültiges Datum.', + 'date_format' => ':attribute passt nicht in das :format Format.', + 'different' => ':attribute und :other dürfen nicht gleich sein.', + 'digits' => ':attribute muss genau :digits Ziffern haben.', + 'digits_between' => ':attribute muss :min bis :max Ziffern haben.', + 'dimensions' => ':attribute hat ungültige Bildmaße.', + 'distinct' => ':attribute-Feld hat einen doppelten Wert.', + 'email' => ':attribute muss eine gültige E-Mail-Adresse sein.', + 'exists' => 'Gewählter :attribute-Wert ist ungültig.', + 'file' => ':attribute muss eine Datei sein.', + 'filled' => ':attribute muss ausgefüllt sein.', + 'image' => ':attribute muss ein Bild sein.', + 'in' => 'Gewählter :attribute-Wert ist ungültig.', + 'in_array' => ':attribute-Feld existiert nicht in :other.', + 'integer' => ':attribute muss eine Zahl sein.', + 'ip' => ':attribute muss eine gültige IP-Adresse sein.', + 'ipv4' => ':attribute muss eine gültige IPv4-Adresse sein.', + 'ipv6' => ':attribute muss eine gültige IPv6-Adresse sein.', + 'json' => ':attribute muss eine gültige JSON-Zeichenfolge sein.', + 'max' => [ + 'numeric' => ':attribute darf nicht gr&omul;ßer als :max sein.', + 'file' => ':attribute darf nicht gr&omul;ßer als :max Kilobytes sein.', + 'string' => ':attribute darf nicht mehr als :max Zeichen haben.', + 'array' => ':attribute darf nicht mehr als :max Objekte beinhalten.', + ], + 'mimes' => ':attribute muss eine Datei einer dieser Typen sein: :values.', + 'mimetypes' => ':attribute muss eine Datei einer dieser Typen sein: :values.', + 'min' => [ + 'numeric' => ':attribute muss gr&omul;ßer als oder gleich :min sein.', + 'file' => ':attribute muss mindestens :min Kilobytes groß sein.', + 'string' => ':attribute muss mindestens :min Zeichen haben.', + 'array' => ':attribute muss mindestens :min Objekte beinhalten.', + ], + 'not_in' => 'Gewählter :attribute-Wert ist ungültig.', + 'not_regex' => ':attribute-Format ist ungültig.', + 'numeric' => ':attribute muss eine Zahl sein.', + 'present' => ':attribute muss vorhanden sein.', + 'regex' => ':attribute-Format ist ungültig.', + 'required' => 'Das :attribute-Feld ist benötigt.', + 'required_if' => 'Das :attribute-Feld ist benötigt wenn :other :value ist.', + 'required_unless' => 'Das :attribute-Feld ist benötigt es sei denn :other ist in :values.', + 'required_with' => 'Das :attribute-Feld ist benötigt wenn :values vorhanden ist.', + 'required_with_all' => 'Das :attribute-Feld ist benötigt wenn :values vorhanden ist.', + 'required_without' => 'Das :attribute-Feld ist benötigt wenn :values nicht vorhanden ist.', + 'required_without_all' => 'Das :attribute-Feld ist benötigt wenn keiner von :values vorhanden ist.', + 'same' => ':attribute und :other müssen gleich sein.', + 'size' => [ + 'numeric' => ':attribute muss :size sein.', + 'file' => ':attribute muss :size Kilobytes groß sein.', + 'string' => ':attribute muss :size Zeichen lang sein.', + 'array' => ':attribute muss :size Objekte beinhalten.', + ], + 'string' => ':attribute muss eine Zeichenkette sein.', + 'timezone' => ':attribute muss eine g¨ltige Zeitzone sein.', + 'unique' => ':attribute ist bereits in Verwendung.', + 'uploaded' => ':attribute hochladen ist fehlgeschlagen.', + 'url' => ':attribute-Format ist ung¨lig.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +]; From e94d9534b1bd719177445728e94749d4110d4ebb Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 16:37:46 -0600 Subject: [PATCH 015/360] Fix image resizing logic --- app/Util/Media/Image.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Util/Media/Image.php b/app/Util/Media/Image.php index f9ee8342d..a7d53d34a 100644 --- a/app/Util/Media/Image.php +++ b/app/Util/Media/Image.php @@ -106,8 +106,8 @@ class Image { try { $img = Intervention::make($file); - $img->fit($aspect['width'], $aspect['height'], function ($constraint) { - $constraint->upsize(); + $img->resize($aspect['width'], $aspect['height'], function ($constraint) { + $constraint->aspectRatio(); }); $converted = $this->convertPngToJpeg($path, $thumbnail, $img->extension); $newPath = storage_path('app/'.$converted['path']); From 22b779c8283bf678232c1adf169c23c61d8e0a92 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 16:39:32 -0600 Subject: [PATCH 016/360] Add user settings view --- resources/lang/en/profile.php | 5 ++ resources/views/settings/home.blade.php | 80 +++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 resources/lang/en/profile.php create mode 100644 resources/views/settings/home.blade.php diff --git a/resources/lang/en/profile.php b/resources/lang/en/profile.php new file mode 100644 index 000000000..6d70d56a3 --- /dev/null +++ b/resources/lang/en/profile.php @@ -0,0 +1,5 @@ + 'This user has no posts yet!', +]; \ No newline at end of file diff --git a/resources/views/settings/home.blade.php b/resources/views/settings/home.blade.php new file mode 100644 index 000000000..87c516fc0 --- /dev/null +++ b/resources/views/settings/home.blade.php @@ -0,0 +1,80 @@ +@extends('settings.template') + +@section('section') + +
+

Account Settings

+
+
+
+ @csrf +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ {{--
+ +
+ +
+
+
+
+
+ Radios +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+
Checkbox
+
+
+ + +
+
+
--}} +
+
+
+ +
+
+
+ +@endsection \ No newline at end of file From d292c3870f05e76d2b095390c96476dccf613a30 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 16:40:39 -0600 Subject: [PATCH 017/360] Add user settings views --- .../views/settings/import/home.blade.php | 30 +++++++++++++ .../views/settings/notifications.blade.php | 13 ++++++ .../views/settings/partial/sidebar.blade.php | 44 +++++++++++++++++++ resources/views/settings/password.blade.php | 38 ++++++++++++++++ resources/views/settings/privacy.blade.php | 13 ++++++ resources/views/settings/security.blade.php | 13 ++++++ resources/views/settings/template.blade.php | 25 +++++++++++ 7 files changed, 176 insertions(+) create mode 100644 resources/views/settings/import/home.blade.php create mode 100644 resources/views/settings/notifications.blade.php create mode 100644 resources/views/settings/partial/sidebar.blade.php create mode 100644 resources/views/settings/password.blade.php create mode 100644 resources/views/settings/privacy.blade.php create mode 100644 resources/views/settings/security.blade.php create mode 100644 resources/views/settings/template.blade.php diff --git a/resources/views/settings/import/home.blade.php b/resources/views/settings/import/home.blade.php new file mode 100644 index 000000000..8d362e4d0 --- /dev/null +++ b/resources/views/settings/import/home.blade.php @@ -0,0 +1,30 @@ +@extends('settings.template') + +@section('section') + +
+

Import

+
+
+
+

Account Import allows you to import your data from a supported service.

+

Importing from another service will not impact existing data by default however you may choose to update avatar, bio or nickname fields during the process.

+
+
+

Supported Services

+

+ Import from Instagram +

+
+

Coming Soon

+

+ Import from Mastodon +

+

+ Import from Pleroma +

+

+ Import from GNU/Social +

+
+@endsection \ No newline at end of file diff --git a/resources/views/settings/notifications.blade.php b/resources/views/settings/notifications.blade.php new file mode 100644 index 000000000..2d1458f5c --- /dev/null +++ b/resources/views/settings/notifications.blade.php @@ -0,0 +1,13 @@ +@extends('settings.template') + +@section('section') + +
+

Notification Settings

+
+
+
+ Coming Soon +
+ +@endsection \ No newline at end of file diff --git a/resources/views/settings/partial/sidebar.blade.php b/resources/views/settings/partial/sidebar.blade.php new file mode 100644 index 000000000..60ae2bb5c --- /dev/null +++ b/resources/views/settings/partial/sidebar.blade.php @@ -0,0 +1,44 @@ +
+ +
\ No newline at end of file diff --git a/resources/views/settings/password.blade.php b/resources/views/settings/password.blade.php new file mode 100644 index 000000000..d560c9272 --- /dev/null +++ b/resources/views/settings/password.blade.php @@ -0,0 +1,38 @@ +@extends('settings.template') + +@section('section') + +
+

Update Password

+
+
+
+ @csrf +
+ +
+ +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+ +
+
+
+ +@endsection \ No newline at end of file diff --git a/resources/views/settings/privacy.blade.php b/resources/views/settings/privacy.blade.php new file mode 100644 index 000000000..b322d4201 --- /dev/null +++ b/resources/views/settings/privacy.blade.php @@ -0,0 +1,13 @@ +@extends('settings.template') + +@section('section') + +
+

Privacy Settings

+
+
+
+ Coming Soon +
+ +@endsection \ No newline at end of file diff --git a/resources/views/settings/security.blade.php b/resources/views/settings/security.blade.php new file mode 100644 index 000000000..44f752557 --- /dev/null +++ b/resources/views/settings/security.blade.php @@ -0,0 +1,13 @@ +@extends('settings.template') + +@section('section') + +
+

Security Settings

+
+
+
+ Coming Soon +
+ +@endsection \ No newline at end of file diff --git a/resources/views/settings/template.blade.php b/resources/views/settings/template.blade.php new file mode 100644 index 000000000..39e155a17 --- /dev/null +++ b/resources/views/settings/template.blade.php @@ -0,0 +1,25 @@ +@extends('layouts.app') + +@section('content') + +
+
+
+
+
+ @include('settings.partial.sidebar') +
+ @if (session('status')) +
+ {{ session('status') }} +
+ @endif + @yield('section') +
+
+
+
+
+
+ +@endsection \ No newline at end of file From 8631669dc32f0b8fcf211a95b9913b7e30a088e9 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 16:40:52 -0600 Subject: [PATCH 018/360] Add about view --- resources/views/site/about.blade.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 resources/views/site/about.blade.php diff --git a/resources/views/site/about.blade.php b/resources/views/site/about.blade.php new file mode 100644 index 000000000..433d3f283 --- /dev/null +++ b/resources/views/site/about.blade.php @@ -0,0 +1,12 @@ +@extends('site.partial.template') + +@section('section') + +
+

About

+
+
+
+

PixelFed is a federated image sharing platform, powered by the ActivityPub protocol.

+
+@endsection \ No newline at end of file From 00b4fe04a6303526abd3060080eac7b445c6dff9 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 16:42:14 -0600 Subject: [PATCH 019/360] Add privacy policy --- .../views/site/partial/sidebar.blade.php | 43 ++++++++++ .../views/site/partial/template.blade.php | 25 ++++++ resources/views/site/privacy.blade.php | 80 +++++++++++++++++++ 3 files changed, 148 insertions(+) create mode 100644 resources/views/site/partial/sidebar.blade.php create mode 100644 resources/views/site/partial/template.blade.php create mode 100644 resources/views/site/privacy.blade.php diff --git a/resources/views/site/partial/sidebar.blade.php b/resources/views/site/partial/sidebar.blade.php new file mode 100644 index 000000000..18aa8dfe2 --- /dev/null +++ b/resources/views/site/partial/sidebar.blade.php @@ -0,0 +1,43 @@ +
+ +
\ No newline at end of file diff --git a/resources/views/site/partial/template.blade.php b/resources/views/site/partial/template.blade.php new file mode 100644 index 000000000..31cd0aa95 --- /dev/null +++ b/resources/views/site/partial/template.blade.php @@ -0,0 +1,25 @@ +@extends('layouts.app') + +@section('content') + +
+
+
+
+
+ @include('site.partial.sidebar') +
+ @if (session('status')) +
+ {{ session('status') }} +
+ @endif + @yield('section') +
+
+
+
+
+
+ +@endsection \ No newline at end of file diff --git a/resources/views/site/privacy.blade.php b/resources/views/site/privacy.blade.php new file mode 100644 index 000000000..aa99d8e2f --- /dev/null +++ b/resources/views/site/privacy.blade.php @@ -0,0 +1,80 @@ +@extends('site.partial.template') + +@section('section') + +
+

Privacy Policy

+
+
+
+

What information do we collect?

+
    +
  • + Basic account information: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography and avatar image are always listed publicly. +
  • +
  • + 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. +
  • +
  • + 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. +
  • +
  • + 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. +
  • +
+

What do we use your information for?

+ +

Any of the information we collect from you may be used in the following ways:

+
    +
  • + 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 aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations. +
  • +
  • + The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions. +
  • +
+ +

How do we protect your information?

+

We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account.

+ + +

What is our data retention policy?

+

We will make a good faith effort to:

+
    +
  • + Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days. +
  • +
  • + Retain the IP addresses associated with registered users no more than 12 months. +
  • +
  • + You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image. +
  • +
+

You may irreversibly delete your account at any time.

+ +

Do we use cookies?

+

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. +

+

We use cookies to understand and save your preferences for future visits.

+ +

Do we disclose any information to outside parties?

+

We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.

+

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.

+

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.

+ +

Children's Online Privacy Protection Act Compliance

+

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.

+ +

Changes to our Privacy Policy

+

If we decide to change our privacy policy, we will post those changes on this page.

+ +

This document is CC-BY-SA. It was last updated May 31, 2018.

+ +

Originally adapted from the Mastodon privacy policy.

+
+ +@endsection \ No newline at end of file From 1b145ab4eac74d84594b838e2486221f4542b0b4 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 16:42:47 -0600 Subject: [PATCH 020/360] Update personal timeline view --- resources/views/timeline/personal.blade.php | 33 ++++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/resources/views/timeline/personal.blade.php b/resources/views/timeline/personal.blade.php index 42a993494..b66381ad7 100644 --- a/resources/views/timeline/personal.blade.php +++ b/resources/views/timeline/personal.blade.php @@ -1,9 +1,13 @@ @extends('layouts.app') +@push('scripts') + +@endpush + @section('content')
-
+
@if ($errors->any())
    @@ -13,10 +17,19 @@
@endif - + {{----}}
-
New Status Post
-
+
New Post
+
@csrf
@@ -27,16 +40,20 @@
- +
- @foreach($timeline as $item) - @include('status.template') + @foreach($timeline as $item) - @endforeach + @include('status.template') + + @endforeach +
+
+ {{$timeline->links()}}
From 8de99876e8e7f65af6ca8a6d35716966d22ba74d Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 16:44:44 -0600 Subject: [PATCH 021/360] Add CatchUnoptimizedMedia cronjob command --- .../Commands/CatchUnoptimizedMedia.php | 47 +++++++++++++++++++ app/Console/Kernel.php | 4 +- 2 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 app/Console/Commands/CatchUnoptimizedMedia.php diff --git a/app/Console/Commands/CatchUnoptimizedMedia.php b/app/Console/Commands/CatchUnoptimizedMedia.php new file mode 100644 index 000000000..01b8f79c0 --- /dev/null +++ b/app/Console/Commands/CatchUnoptimizedMedia.php @@ -0,0 +1,47 @@ +take(50)->get(); + foreach($medias as $media) { + ImageOptimize::dispatch($media); + } + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index a8c515859..bb5923aa2 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -24,8 +24,8 @@ class Kernel extends ConsoleKernel */ protected function schedule(Schedule $schedule) { - // $schedule->command('inspire') - // ->hourly(); + $schedule->command('media:optimize') + ->hourly(); } /** From 43c9c264efb2b91bc2d6d6b2b368d90f4f300cb2 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 16:45:05 -0600 Subject: [PATCH 022/360] Update AdminController, add new methods --- app/Http/Controllers/AdminController.php | 36 +++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index a9fd75a3a..71f2b8a64 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -3,8 +3,42 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; +use App\{Comment, Like, Media, Profile, Status, User}; class AdminController extends Controller { - // + public function __construct() + { + return $this->middleware('admin'); + } + + public function home() + { + return view('admin.home'); + } + + public function users(Request $request) + { + $users = User::orderBy('id', 'desc')->paginate(10); + return view('admin.users.home', compact('users')); + } + + + public function statuses(Request $request) + { + $statuses = Status::orderBy('id', 'desc')->paginate(10); + return view('admin.statuses.home', compact('statuses')); + } + + public function showStatus(Request $request, $id) + { + $status = Status::findOrFail($id); + return view('admin.statuses.show', compact('status')); + } + + public function media(Request $request) + { + $media = Status::whereHas('media')->orderby('id', 'desc')->paginate(12); + return view('admin.media.home', compact('media')); + } } From 9f6b9bcd3874340ad022be71bb667c0298f4f7aa Mon Sep 17 00:00:00 2001 From: j1t Date: Sat, 26 May 2018 22:45:52 +0000 Subject: [PATCH 023/360] Update validation.php --- resources/lang/he/validation.php | 106 +++++++++++++++---------------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/resources/lang/he/validation.php b/resources/lang/he/validation.php index dbcd28768..da36d5c9e 100644 --- a/resources/lang/he/validation.php +++ b/resources/lang/he/validation.php @@ -24,70 +24,70 @@ return [ 'before' => 'ה- :attribute must be a date before :date.', 'before_or_equal' => 'ה- :attribute must be a date before or equal to :date.', 'between' => [ - 'numeric' => 'ה- :attribute צריך להיות בין :min and :max.', - 'file' => 'ה- :attribute צריך להיות בין :min and :max kilobytes.', - 'string' => 'ה- :attribute צריך להיות בין :min and :max characters.', - 'array' => 'ה- :attribute צריך לכלול בין :min and :max items.', + 'numeric' => 'ה- :attribute צריך להיות בין :min ו- :max.', + 'file' => 'ה- :attribute צריך להיות בין :min ו- :max קילובייט.', + 'string' => 'ה- :attribute צריך להיות בין :min ו- :max אותיות.', + 'array' => 'ה- :attribute צריך לכלול בין :min ו- :max פריטים.', ], - 'boolean' => 'ה- :attribute field must be true or false.', - 'confirmed' => 'ה- :attribute confirmation does not match.', - 'date' => 'ה- :attribute is not a valid date.', - 'date_format' => 'ה- :attribute does not match the format :format.', - 'different' => 'ה- :attribute and :other must be different.', - 'digits' => 'ה- :attribute must be :digits digits.', - 'digits_between' => 'ה- :attribute must be between :min and :max digits.', - 'dimensions' => 'ה- :attribute has invalid image dimensions.', - 'distinct' => 'ה- :attribute field has a duplicate value.', - 'email' => 'ה- :attribute must be a valid email address.', - 'exists' => 'ה- selected :attribute is invalid.', - 'file' => 'ה- :attribute must be a file.', - 'filled' => 'ה- :attribute field must have a value.', - 'image' => 'ה- :attribute must be an image.', - 'in' => 'ה- selected :attribute is invalid.', - 'in_array' => 'ה- :attribute field does not exist in :other.', - 'integer' => 'ה- :attribute must be an integer.', - 'ip' => 'ה- :attribute must be a valid IP address.', - 'ipv4' => 'ה- :attribute must be a valid IPv4 address.', - 'ipv6' => 'ה- :attribute must be a valid IPv6 address.', - 'json' => 'ה- :attribute must be a valid JSON string.', + 'boolean' => 'השדה :attribute חייב להיות אמת או שקר.', + 'confirmed' => 'ה- :attribute אישור לא תואם.', + 'date' => 'ה- :attribute לא תאריך תקין.', + 'date_format' => 'ה- :attribute לא תואם את הפורמט :format.', + 'different' => 'ה- :attribute ו- :other חייבים להיות שונים.', + 'digits' => 'ה- :attribute חייב להיות :digits ספרות.', + 'digits_between' => 'ה- :attribute חייב להיות בין :min ו- :max ספרות.', + 'dimensions' => 'ה- :attribute בעל ממדי תמונה לא תקינים.', + 'distinct' => 'השדה :attribute בעל ערך כפול.', + 'email' => 'ה- :attribute חייב להיות כתובת אימייל תקינה.', + 'exists' => 'ה- :attribute הנבחר לא תקין.', + 'file' => 'ה- :attribute חייב להיות קובץ.', + 'filled' => 'השדה :attribute חייב להיות בעל ערך.', + 'image' => 'ה- :attribute חייב להיות תמונה.', + 'in' => 'ה- :attribute הנבחר לא תקין.', + 'in_array' => 'השדה :attribute לא קיים ב- :other.', + 'integer' => 'ה- :attribute צריך להיות מספר שלם.', + 'ip' => 'ה- :attribute צריך להיות כתובת IP תקינה.', + 'ipv4' => 'ה- :attribute צריך להיות כתובת IPv4 תקינה.', + 'ipv6' => 'ה- :attribute צריך להיות כתובת IPv6 תקינה.', + 'json' => 'ה- :attribute צריך להיות רצף אותיות JSON תקין.', 'max' => [ - 'numeric' => 'ה- :attribute may not be greater than :max.', - 'file' => 'ה- :attribute may not be greater than :max kilobytes.', - 'string' => 'ה- :attribute may not be greater than :max characters.', - 'array' => 'ה- :attribute may not have more than :max items.', + 'numeric' => 'ה- :attribute צריך להיות מתחת ל- :max.', + 'file' => 'ה- :attribute צריך להיות מתחת ל- :max קילובייט.', + 'string' => 'ה- :attribute צריך להיות מתחת ל- :max תוים.', + 'array' => 'ה- :attribute לא יכול לכלול יותר מ- :max פריטים.', ], 'mimes' => 'ה- :attribute צריך להיות קובץ מסוג: :values.', 'mimetypes' => 'ה- :attribute צריך להיות קובץ מסוג: :values.', 'min' => [ 'numeric' => 'ה- :attribute צריך להיות לפחות :min.', - 'file' => 'ה- :attribute צריך להיות לפחות :min kilobytes.', - 'string' => 'ה- :attribute צריך להיות לפחות :min characters.', - 'array' => 'ה- :attribute צריך לכלול לפחות :min items.', + 'file' => 'ה- :attribute צריך להיות לפחות :min קילובייט.', + 'string' => 'ה- :attribute צריך להיות לפחות :min תוים.', + 'array' => 'ה- :attribute צריך לכלול לפחות :min פריטים.', ], - 'not_in' => 'ה- selected :attribute is invalid.', - 'not_regex' => 'ה- :attribute format is invalid.', - 'numeric' => 'ה- :attribute must be a number.', - 'present' => 'ה- :attribute field must be present.', - 'regex' => 'ה- :attribute format is invalid.', - 'required' => 'ה- :attribute field is required.', - 'required_if' => 'ה- :attribute field is required when :other is :value.', - 'required_unless' => 'ה- :attribute field is required unless :other is in :values.', - 'required_with' => 'ה- :attribute field is required when :values is present.', - 'required_with_all' => 'ה- :attribute field is required when :values is present.', - 'required_without' => 'ה- :attribute field is required when :values is not present.', - 'required_without_all' => 'ה- :attribute field is required when none of :values are present.', - 'same' => 'ה- :attribute and :other must match.', + 'not_in' => 'ה- :attribute הנבחר אינו תקין.', + 'not_regex' => 'הפורמט :attribute אינו תקין.', + 'numeric' => 'ה- :attribute חייב להיות מספר.', + 'present' => 'השדה :attribute חייב להיות קיים.', + 'regex' => 'הפורמט :attribute לא תקין.', + 'required' => 'השדה :attribute הכרחי.', + 'required_if' => 'השדה :attribute הכרחי כש- :other הוא :value.', + 'required_unless' => 'השדה :attribute הכרחי אלא אם :other בתוך :values.', + 'required_with' => 'השדה :attribute הכרחי כש- :values קיים.', + 'required_with_all' => 'השדה :attribute הכרחי כש- :values קיים.', + 'required_without' => 'השדה :attribute הכרחי כש- :values לא קיים.', + 'required_without_all' => 'השדה :attribute הכרחי כשאף מן ה- :values לא נמצאים.', + 'same' => 'ה- :attribute ו- :other חייבים להתאים.', 'size' => [ 'numeric' => 'ה- :attribute צריך להיות :size.', - 'file' => 'ה- :attribute צריך להיות :size kilobytes.', - 'string' => 'ה- :attribute צריך להיות :size characters.', - 'array' => 'ה- :attribute צריך לכלול :size items.', + 'file' => 'ה- :attribute צריך להיות :size קילובייט.', + 'string' => 'ה- :attribute צריך להיות :size תוים.', + 'array' => 'ה- :attribute צריך לכלול :size פריטים.', ], - 'string' => 'ה- :attribute must be a string.', - 'timezone' => 'ה- :attribute must be a valid zone.', - 'unique' => 'ה- :attribute has already been taken.', - 'uploaded' => 'ה- :attribute failed to upload.', - 'url' => 'ה- :attribute format is invalid.', + 'string' => 'ה- :attribute חייב להיות רצף של אותיות.', + 'timezone' => 'ה- :attribute חייב להיות איזור תקין.', + 'unique' => 'ה- :attribute כבר נלקח.', + 'uploaded' => 'ההעלאה של ה- :attribute נכשלה.', + 'url' => 'הפורמט של ה- :attribute אינו תקין.', /* |-------------------------------------------------------------------------- From befa82dc04e4f4916c08baa3a0b6311e968f193c Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 16:46:07 -0600 Subject: [PATCH 024/360] Update CommentController, remove hashids --- app/Http/Controllers/CommentController.php | 32 ++++++++++------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php index 2150bf4ef..22208c9c2 100644 --- a/app/Http/Controllers/CommentController.php +++ b/app/Http/Controllers/CommentController.php @@ -3,9 +3,9 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; -use Auth; +use App\Jobs\StatusPipeline\NewStatusPipeline; +use Auth, Hashids; use App\{Comment, Profile, Status}; -use Vinkla\Hashids\Facades\Hashids; class CommentController extends Controller { @@ -13,29 +13,25 @@ class CommentController extends Controller { if(Auth::check() === false) { abort(403); } $this->validate($request, [ - 'item' => 'required|alpha_num', + 'item' => 'required|integer', 'comment' => 'required|string|max:500' ]); - - try { - $statusId = Hashids::decode($request->item)[0]; - } catch (Exception $e) { - abort(500); - } + $comment = $request->input('comment'); + $statusId = $request->item; $user = Auth::user(); $profile = $user->profile; $status = Status::findOrFail($statusId); - $comment = new Comment; - $comment->profile_id = $profile->id; - $comment->user_id = $user->id; - $comment->status_id = $status->id; - $comment->comment = e($request->comment); - $comment->rendered = e($request->comment); - $comment->is_remote = false; - $comment->entities = null; - $comment->save(); + $reply = new Status(); + $reply->profile_id = $profile->id; + $reply->caption = $comment; + $reply->rendered = $comment; + $reply->in_reply_to_id = $status->id; + $reply->in_reply_to_profile_id = $status->profile_id; + $reply->save(); + + NewStatusPipeline::dispatch($reply, false); return redirect($status->url()); } From 3dafc278b53fa56bf25f1871dedeea991a7c6292 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 16:49:39 -0600 Subject: [PATCH 025/360] Add DiscoverController and hashtag posts view --- app/Http/Controllers/DiscoverController.php | 22 ++++++++++++ resources/views/discover/tags/show.blade.php | 37 ++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 app/Http/Controllers/DiscoverController.php create mode 100644 resources/views/discover/tags/show.blade.php diff --git a/app/Http/Controllers/DiscoverController.php b/app/Http/Controllers/DiscoverController.php new file mode 100644 index 000000000..9dd12c449 --- /dev/null +++ b/app/Http/Controllers/DiscoverController.php @@ -0,0 +1,22 @@ +firstOrFail(); + $posts = $tag->posts()->has('media')->orderBy('id','desc')->paginate(12); + $count = $tag->posts()->has('media')->orderBy('id','desc')->count(); + return view('discover.tags.show', compact('tag', 'posts', 'count')); + } +} diff --git a/resources/views/discover/tags/show.blade.php b/resources/views/discover/tags/show.blade.php new file mode 100644 index 000000000..bacc30178 --- /dev/null +++ b/resources/views/discover/tags/show.blade.php @@ -0,0 +1,37 @@ +@extends('layouts.app') + +@section('content') + +
+ +
+
+
+ +
+
+
+
+
+ {{$tag->name}} +
+

+ {{$count}} posts +

+
+
+
+ +
+ @foreach($posts as $status) +
+ + + +
+ @endforeach +
+ +
+ +@endsection \ No newline at end of file From 02ec1688b4ddd678ce65dbe5a415e3e89df115bf Mon Sep 17 00:00:00 2001 From: j1t Date: Sat, 26 May 2018 22:49:41 +0000 Subject: [PATCH 026/360] Update validation.php --- resources/lang/he/validation.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/resources/lang/he/validation.php b/resources/lang/he/validation.php index da36d5c9e..bbe8aedb7 100644 --- a/resources/lang/he/validation.php +++ b/resources/lang/he/validation.php @@ -13,16 +13,16 @@ return [ | */ - 'accepted' => 'ה- :attribute must be accepted.', - 'active_url' => 'ה- :attribute is not a valid URL.', - 'after' => 'ה- :attribute must be a date after :date.', - 'after_or_equal' => 'ה- :attribute must be a date after or equal to :date.', - 'alpha' => 'ה- :attribute may only contain letters.', - 'alpha_dash' => 'ה- :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'ה- :attribute may only contain letters and numbers.', - 'array' => 'ה- :attribute must be an array.', - 'before' => 'ה- :attribute must be a date before :date.', - 'before_or_equal' => 'ה- :attribute must be a date before or equal to :date.', + 'accepted' => 'חובה לאשר את ה- :attribute.', + 'active_url' => 'ה- :attribute לא URL תקין.', + 'after' => 'ה- :attribute חייב להיות תאריך אחרי :date.', + 'after_or_equal' => 'ה- :attribute חייב להיות תאריך אחרי או שווה ל- :date.', + 'alpha' => 'ה- :attribute יכול לכלול רק אותיות.', + 'alpha_dash' => 'ה- :attribute יכול לכלול רק אותיות, מספרים וקוים מפרידים.', + 'alpha_num' => 'ה- :attribute יכול לכלול רק אותיות ומספרים.', + 'array' => 'ה- :attribute חייב להיות מערך.', + 'before' => 'ה- :attribute חייב להיות תאריך לפני :date.', + 'before_or_equal' => 'ה- :attribute חייב להיות תאריך לפני או שווה ל- :date.', 'between' => [ 'numeric' => 'ה- :attribute צריך להיות בין :min ו- :max.', 'file' => 'ה- :attribute צריך להיות בין :min ו- :max קילובייט.', From 1252f76a2f759b11b1065a3651a62f85b411c273 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 16:50:36 -0600 Subject: [PATCH 027/360] Add SearchController --- app/Http/Controllers/SearchController.php | 42 +++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 app/Http/Controllers/SearchController.php diff --git a/app/Http/Controllers/SearchController.php b/app/Http/Controllers/SearchController.php new file mode 100644 index 000000000..bcedd947e --- /dev/null +++ b/app/Http/Controllers/SearchController.php @@ -0,0 +1,42 @@ +get(); + $tags = $res->map(function($item, $key) { + return [ + 'count' => $item->posts()->count(), + 'url' => $item->url(), + 'type' => 'hashtag', + 'value' => $item->name, + 'tokens' => explode('-', $item->name), + 'name' => null + ]; + }); + $res = Profile::where('username', 'like', '%'.$tag.'%')->get(); + $profiles = $res->map(function($item, $key) { + return [ + 'count' => 0, + 'url' => $item->url(), + 'type' => 'profile', + 'value' => $item->username, + 'tokens' => [$item->username], + 'name' => $item->name + ]; + }); + $tags = $tags->push($profiles[0]); + return $tags; + }); + + return response()->json($res); + } +} From 1250312caba0bdf187dcbf59e56accce6ac7076b Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 16:53:21 -0600 Subject: [PATCH 028/360] Add SettingsController --- app/Http/Controllers/SettingsController.php | 97 +++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 app/Http/Controllers/SettingsController.php diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php new file mode 100644 index 000000000..005a98238 --- /dev/null +++ b/app/Http/Controllers/SettingsController.php @@ -0,0 +1,97 @@ +middleware('auth'); + } + + public function home() + { + return view('settings.home'); + } + + public function homeUpdate(Request $request) + { + $this->validate($request, [ + 'name' => 'required|string|max:30', + ]); + + $name = $request->input('name'); + $user = Auth::user(); + $profile = $user->profile; + + if($profile->name != $name) { + $user->name = $name; + $user->save(); + + $profile->name = $name; + $profile->save(); + + return redirect('/settings/home')->with('status', 'Profile successfully updated!'); + } + return redirect('/settings/home'); + } + + public function password() + { + return view('settings.password'); + } + + public function email() + { + return view('settings.email'); + } + + public function avatar() + { + return view('settings.avatar'); + } + + public function notifications() + { + return view('settings.notifications'); + } + + public function privacy() + { + return view('settings.privacy'); + } + + public function security() + { + return view('settings.security'); + } + + public function applications() + { + return view('settings.applications'); + } + + public function dataExport() + { + return view('settings.dataexport'); + } + + public function dataImport() + { + return view('settings.import.home'); + } + + public function dataImportInstagram() + { + return view('settings.import.ig'); + } + + public function developers() + { + return view('settings.developers'); + } +} From e52f81fc2a22c5fe55433319f9fcebaaa90a91c4 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 16:58:22 -0600 Subject: [PATCH 029/360] Add Notification model/migration --- app/Notification.php | 10 +++++ ...5_07_025743_create_notifications_table.php | 37 +++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 app/Notification.php create mode 100644 database/migrations/2018_05_07_025743_create_notifications_table.php diff --git a/app/Notification.php b/app/Notification.php new file mode 100644 index 000000000..107f0ad10 --- /dev/null +++ b/app/Notification.php @@ -0,0 +1,10 @@ +bigIncrements('id'); + $table->bigInteger('profile_id')->unsigned()->index(); + $table->bigInteger('actor_id')->unsigned()->nullable(); + $table->string('action')->nullable(); + $table->string('message')->nullable(); + $table->string('rendered')->nullable(); + $table->timestamp('read_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('notifications'); + } +} From 095b23ac7833c1f46122a4f5260eb747f5ce745f Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 16:59:31 -0600 Subject: [PATCH 030/360] Update LikeController --- app/Http/Controllers/LikeController.php | 29 ++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/LikeController.php b/app/Http/Controllers/LikeController.php index 6847a9a4b..1691f32cb 100644 --- a/app/Http/Controllers/LikeController.php +++ b/app/Http/Controllers/LikeController.php @@ -3,8 +3,35 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; +use Auth, Hashids; +use App\{Like, Profile, Status, User}; class LikeController extends Controller { - // + public function store(Request $request) + { + if(Auth::check() === false) { abort(403); } + $this->validate($request, [ + 'item' => 'required|integer', + ]); + + $statusId = $request->item; + + $user = Auth::user(); + $profile = $user->profile; + $status = Status::findOrFail($statusId); + + if($status->likes()->whereProfileId($profile->id)->count() !== 0) { + $like = Like::whereProfileId($profile->id)->whereStatusId($status->id)->firstOrFail(); + $like->delete(); + return redirect()->back(); + } + + $like = new Like; + $like->profile_id = $profile->id; + $like->status_id = $status->id; + $like->save(); + + return redirect($status->url()); + } } From e1faa17bd5f6d88793a4092f3f59724cc1c9b5ba Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 17:00:07 -0600 Subject: [PATCH 031/360] Add AccountController --- app/Http/Controllers/AccountController.php | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 app/Http/Controllers/AccountController.php diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php new file mode 100644 index 000000000..e5635d1db --- /dev/null +++ b/app/Http/Controllers/AccountController.php @@ -0,0 +1,22 @@ +middleware('auth'); + } + + public function notifications(Request $request) + { + $user = Auth::user(); + $profile = $user->profile; + return view('account.activity', compact('profile')); + } +} From da94721d62dd1a37398c3dc7a83fefa2596fcc11 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 17:05:38 -0600 Subject: [PATCH 032/360] Update cache.php, add more detailed redis config Closes #19 --- config/cache.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/config/cache.php b/config/cache.php index fa12e5e4f..b36148427 100644 --- a/config/cache.php +++ b/config/cache.php @@ -69,8 +69,16 @@ return [ ], 'redis' => [ - 'driver' => 'redis', - 'connection' => 'default', + + 'client' => 'predis', + + 'default' => [ + 'host' => env('REDIS_HOST', 'localhost'), + 'password' => env('REDIS_PASSWORD', null), + 'port' => env('REDIS_PORT', 6379), + 'database' => env('REDIS_DATABASE', 0), + ], + ], ], From de9237b5e11979561bfbffe83add7f23f1e7b596 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 19:24:49 -0600 Subject: [PATCH 033/360] Update cache.php config --- config/cache.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/cache.php b/config/cache.php index b36148427..7045c4f30 100644 --- a/config/cache.php +++ b/config/cache.php @@ -69,7 +69,7 @@ return [ ], 'redis' => [ - + 'driver' => 'redis', 'client' => 'predis', 'default' => [ From 3ec93d096cce3875da2e6aa4cd12b893277914b4 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 20:26:44 -0600 Subject: [PATCH 034/360] Add LikePipeline and like notifications --- app/Http/Controllers/LikeController.php | 16 ++++--- app/Jobs/LikePipeline/LikePipeline.php | 60 +++++++++++++++++++++++++ app/Like.php | 16 ++++++- resources/lang/en/notification.php | 7 +++ 4 files changed, 92 insertions(+), 7 deletions(-) create mode 100644 app/Jobs/LikePipeline/LikePipeline.php create mode 100644 resources/lang/en/notification.php diff --git a/app/Http/Controllers/LikeController.php b/app/Http/Controllers/LikeController.php index 1691f32cb..932958d5e 100644 --- a/app/Http/Controllers/LikeController.php +++ b/app/Http/Controllers/LikeController.php @@ -5,21 +5,23 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use Auth, Hashids; use App\{Like, Profile, Status, User}; +use App\Jobs\LikePipeline\LikePipeline; class LikeController extends Controller { + public function __construct() + { + $this->middleware('auth'); + } + public function store(Request $request) { - if(Auth::check() === false) { abort(403); } $this->validate($request, [ 'item' => 'required|integer', ]); - $statusId = $request->item; - - $user = Auth::user(); - $profile = $user->profile; - $status = Status::findOrFail($statusId); + $profile = Auth::user()->profile; + $status = Status::findOrFail($request->input('item')); if($status->likes()->whereProfileId($profile->id)->count() !== 0) { $like = Like::whereProfileId($profile->id)->whereStatusId($status->id)->firstOrFail(); @@ -32,6 +34,8 @@ class LikeController extends Controller $like->status_id = $status->id; $like->save(); + LikePipeline::dispatch($like); + return redirect($status->url()); } } diff --git a/app/Jobs/LikePipeline/LikePipeline.php b/app/Jobs/LikePipeline/LikePipeline.php new file mode 100644 index 000000000..a7fb71d57 --- /dev/null +++ b/app/Jobs/LikePipeline/LikePipeline.php @@ -0,0 +1,60 @@ +like = $like; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $like = $this->like; + + $status = $this->like->status; + $actor = $this->like->actor; + + try { + + $notification = new Notification; + $notification->profile_id = $status->profile_id; + $notification->actor_id = $actor->id; + $notification->action = 'like'; + $notification->message = $like->toText(); + $notification->rendered = $like->toHtml(); + $notification->save(); + + Cache::forever('notification.' . $notification->id, $notification); + + $redis = Redis::connection(); + $key = config('cache.prefix').':user.' . $status->profile_id . '.notifications'; + $redis->lpush($key, $notification->id); + + } catch (Exception $e) { + Log::error($e); + } + } +} diff --git a/app/Like.php b/app/Like.php index 32c99554e..a4ce9f0a8 100644 --- a/app/Like.php +++ b/app/Like.php @@ -8,11 +8,25 @@ class Like extends Model { public function actor() { - return $this->belongsTo(Profile::class); + return $this->belongsTo(Profile::class, 'profile_id', 'id'); } public function status() { return $this->belongsTo(Status::class); } + + public function toText() + { + $actorName = $this->actor->username; + return "{$actorName} " . __('notification.likedPhoto'); + } + + public function toHtml() + { + $actorName = $this->actor->username; + $actorUrl = $this->actor->url(); + return "{$actorName} " . + __('notification.likedPhoto'); + } } diff --git a/resources/lang/en/notification.php b/resources/lang/en/notification.php new file mode 100644 index 000000000..7e5bb85e3 --- /dev/null +++ b/resources/lang/en/notification.php @@ -0,0 +1,7 @@ + 'liked your photo.', + +]; \ No newline at end of file From 1406f467a0eb43ed801c9e885013c5b00c89f823 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 26 May 2018 21:25:04 -0600 Subject: [PATCH 035/360] Add basic notification support --- app/Http/Controllers/AccountController.php | 33 +++++++++++++++++++--- app/Notification.php | 12 +++++++- resources/assets/sass/custom.scss | 9 ++++++ resources/views/account/activity.blade.php | 29 +++++++++++++++++++ 4 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 resources/views/account/activity.blade.php diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index e5635d1db..79f2d1c80 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -3,7 +3,7 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; -use Auth, Cache; +use Auth, Cache, Redis; use App\{Notification, Profile, User}; class AccountController extends Controller @@ -15,8 +15,33 @@ class AccountController extends Controller public function notifications(Request $request) { - $user = Auth::user(); - $profile = $user->profile; - return view('account.activity', compact('profile')); + $profile = Auth::user()->profile; + $notifications = $this->fetchNotifications($profile->id); + return view('account.activity', compact('profile', 'notifications')); + } + + public function fetchNotifications($id) + { + $key = config('cache.prefix') . ":user.{$id}.notifications"; + $redis = Redis::connection(); + $notifications = $redis->lrange($key, 0, 30); + if(empty($notifications)) { + $notifications = Notification::whereProfileId($id) + ->orderBy('id','desc')->take(30)->get(); + } else { + $notifications = $this->hydrateNotifications($notifications); + } + + return $notifications; + } + + public function hydrateNotifications($keys) + { + $prefix = 'notification.'; + $notifications = []; + foreach($keys as $key) { + $notifications[] = Cache::get($prefix . $key); + } + return $notifications; } } diff --git a/app/Notification.php b/app/Notification.php index 107f0ad10..4102ba56e 100644 --- a/app/Notification.php +++ b/app/Notification.php @@ -6,5 +6,15 @@ use Illuminate\Database\Eloquent\Model; class Notification extends Model { - // + + public function actor() + { + return $this->belongsTo(Profile::class, 'actor_id', 'id'); + } + + public function profile() + { + return $this->belongsTo(Profile::class, 'profile_id', 'id'); + } + } diff --git a/resources/assets/sass/custom.scss b/resources/assets/sass/custom.scss index 48c4f611d..0a0a549b6 100644 --- a/resources/assets/sass/custom.scss +++ b/resources/assets/sass/custom.scss @@ -76,4 +76,13 @@ body, button, input, textarea { .no-caret.dropdown-toggle::after { display:none; +} + +.notification-page .profile-link { + color: #212529; + font-weight: bold; +} + +.notification-page .list-group-item:first-child { + border-top: none; } \ No newline at end of file diff --git a/resources/views/account/activity.blade.php b/resources/views/account/activity.blade.php new file mode 100644 index 000000000..ebf4fe9b7 --- /dev/null +++ b/resources/views/account/activity.blade.php @@ -0,0 +1,29 @@ +@extends('layouts.app') + +@section('content') +
+
+
    + + @foreach($notifications as $notification) +
  • + @switch($notification->action) + + @case('like') + + + + + {!! $notification->rendered !!} + {{$notification->created_at->diffForHumans(null, true, true, true)}} + + + + @break + @endswitch +
  • + @endforeach +
+
+
+@endsection \ No newline at end of file From 1f464107778a6515a166e0cd04a98c1392ba3747 Mon Sep 17 00:00:00 2001 From: Reka <8795284+Grazouillis@users.noreply.github.com> Date: Sun, 27 May 2018 14:27:55 +0200 Subject: [PATCH 036/360] french correction MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I suppose this mention will appear after a nickname. Ex : JohnDoe liked this photo. So in French, JohnDoe a aimé cette photo. --- resources/lang/fr/notification.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/lang/fr/notification.php b/resources/lang/fr/notification.php index b7759f0ed..1fab6b99d 100644 --- a/resources/lang/fr/notification.php +++ b/resources/lang/fr/notification.php @@ -1,4 +1,4 @@ 'Aimé votre photo.', + 'likedPhoto' => 'a aimé votre photo.', ]; From a1b444cb7ac2f8c42948b316d0a46d3a9d9d256e Mon Sep 17 00:00:00 2001 From: Reka <8795284+Grazouillis@users.noreply.github.com> Date: Sun, 27 May 2018 14:30:18 +0200 Subject: [PATCH 037/360] triple single quote marks --- resources/lang/fr/profile.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/lang/fr/profile.php b/resources/lang/fr/profile.php index 07d1b759d..3ca556717 100644 --- a/resources/lang/fr/profile.php +++ b/resources/lang/fr/profile.php @@ -1,4 +1,4 @@ 'Cet utilisateur n'a pas encore de messages!', + 'emptyTimeline' => 'Cet utilisateur n\'a pas encore de messages !', ]; From 47cd935091402a3bca0a92ea5b2c862aac8f621a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Miko=C5=82ajczak?= Date: Sun, 27 May 2018 13:00:55 +0000 Subject: [PATCH 038/360] Add pcntl extension to Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b64f08282..c076c6672 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM php:7.2-fpm-alpine RUN apk add --no-cache git imagemagick \ && apk add --no-cache --virtual .build build-base autoconf imagemagick-dev libtool \ - && docker-php-ext-install pdo_mysql \ + && docker-php-ext-install pdo_mysql pcntl \ && pecl install imagick \ && docker-php-ext-enable imagick \ && apk del --purge .build From 618b5b46efbd0062749cf0bbd383e1da2278774a Mon Sep 17 00:00:00 2001 From: Reka <8795284+Grazouillis@users.noreply.github.com> Date: Sun, 27 May 2018 15:11:03 +0200 Subject: [PATCH 039/360] escape caracters are missing before aporstrophes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit many antislashes are missing before apostrophes (single quote mark) to escape this character. + non présente => absente* + x et y doit => doivent* (plural) correspondre and other french corrections --- resources/lang/fr/validation.php | 68 ++++++++++++++++---------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/resources/lang/fr/validation.php b/resources/lang/fr/validation.php index c02d5f74a..74090789b 100644 --- a/resources/lang/fr/validation.php +++ b/resources/lang/fr/validation.php @@ -11,80 +11,80 @@ return [ | */ 'accepted' => ':attribute doit être accepté.', - 'active_url' => ':attribute n'est pas un Lien valide.', - 'after' => ':attribute doit être une date après :date.', - 'after_or_equal' => ':attribute doit être une date après ou égale à :date.', + 'active_url' => ':attribute n\'est pas un lien valide.', + 'after' => ':attribute doit être une date ultérieure à :date.', + 'after_or_equal' => ':attribute doit être une date ultérieure ou égale à :date.', 'alpha' => ':attribute peut contenir uniquement des lettres.', 'alpha_dash' => ':attribute peut contenir uniquement des lettres, des chiffres et des tirets.', 'alpha_num' => ':attribute peut contenir uniquement des lettres et des chiffres.', 'array' => ':attribute doit être un tableau.', - 'before' => ':attribute doit être une date avant :date.', - 'before_or_equal' => ':attribute doit être une date avant ou égale à :date.', + 'before' => ':attribute doit être une date antérieure à :date.', + 'before_or_equal' => ':attribute doit être une date antérieure ou égale à :date.', 'between' => [ 'numeric' => ':attribute doit être compris entre :min et :max.', - 'file' => ':attribute doit être compris entre :min et :max Kilo-octets.', - 'string' => ':attribute doit être compris entre :min et :max Caractères.', - 'array' => ':attribute doit avoir entre :min et :max Articles.', + 'file' => ':attribute doit être compris entre :min et :max Ko.', + 'string' => ':attribute doit être compris entre :min et :max caractères.', + 'array' => ':attribute doit avoir entre :min et :max articles.', ], 'boolean' => ':attribute le champ doit être vrai ou faux.', 'confirmed' => ':attribute la confirmation ne correspond pas.', - 'date' => ':attribute n'est pas une date valide.', + 'date' => ':attribute n\'est pas une date valide.', 'date_format' => ':attribute ne correspond pas au format :format.', - 'different' => ':attribute et :other doit être différent.', - 'digits' => ':attribute doit être :digits chiffres.', + 'different' => ':attribute et :other doivent être différents.', + 'digits' => ':attribute doit compter :digits chiffres.', 'digits_between' => ':attribute doit être compris entre :min et :max chiffres.', - 'dimensions' => ':attribute a des dimensions d'image non valides.', + 'dimensions' => ':attribute a des dimensions d\'image non valides.', 'distinct' => ':attribute le champ a une valeur dupliquée.', 'email' => ':attribute doit être une adresse e-mail valide.', - 'exists' => ':attribute sélectionné n'est pas valide.', + 'exists' => ':attribute sélectionné n\'est pas valide.', 'file' => ':attribute doit être un fichier.', 'filled' => ':attribute le champ doit avoir une valeur.', 'image' => ':attribute doit être une image.', - 'in' => ':attribute sélectionner n'est pas valide.', - 'in_array' => ':attribute le champ n'existe pas dans :other.', + 'in' => ':attribute sélectionné n\'est pas valide.', + 'in_array' => ':attribute le champ n\'existe pas dans :other.', 'integer' => ':attribute doit être un entier.', 'ip' => ':attribute doit être une adresse IP valide.', 'ipv4' => ':attribute doit être une adresse IPv4 valide.', 'ipv6' => ':attribute doit être une adresse IPv6 valide.', 'json' => ':attribute doit être une chaîne JSON valide.', 'max' => [ - 'numeric' => ':attribute peut ne pas être supérieur à :max.', - 'file' => ':attribute peut ne pas être supérieur :max Kilo-octets.', - 'string' => ':attribute peut ne pas être supérieur :max Caractères.', - 'array' => ':attribute peut ne pas être supérieur :max Articles.', + 'numeric' => ':attribute ne peut pas être supérieur à :max.', + 'file' => ':attribute ne peut pas être supérieur :max Ko.', + 'string' => ':attribute ne peut pas compter plus de :max caractères.', + 'array' => ':attribute ne peut pas compter plus de :max articles.', ], - 'mimes' => ':attribute doit être un fichier de type: :values.', - 'mimetypes' => ':attribute doit être un fichier de type: :values.', + 'mimes' => ':attribute doit être un fichier de type : :values.', + 'mimetypes' => ':attribute doit être un fichier de type : :values.', 'min' => [ 'numeric' => ':attribute doit être au moins :min.', - 'file' => ':attribute doit être au moins :min Kilo-octets.', - 'string' => ':attribute doit être au moins :min Caractères.', - 'array' => ':attribute doit avoir au moins :min Articles.', + 'file' => ':attribute doit avoir une taille d\'au moins :min Ko.', + 'string' => ':attribute doit compter au moins :min caractères.', + 'array' => ':attribute doit compter au moins :min articles.', ], - 'not_in' => ':attribute sélectionner n'est pas valide.', - 'not_regex' => ':attribute le format n'est pas valide.', + 'not_in' => ':attribute sélectionné n\'est pas valide.', + 'not_regex' => ':attribute le format n\'est pas valide.', 'numeric' => ':attribute doit être un nombre.', 'present' => ':attribute le champ doit être présent.', - 'regex' => ':attribute le format n'est pas valide.', + 'regex' => ':attribute le format n\'est pas valide.', 'required' => ':attribute champ requis.', 'required_if' => ':attribute champ requis lorsque :other est :value.', 'required_unless' => ':attribute champ obligatoire à moins que :other est en :values.', 'required_with' => ':attribute champ requis lorsque :values est présent.', 'required_with_all' => ':attribute champ requis lorsque :values est présent.', - 'required_without' => ':attribute champ requis lorsque :values est non présente.', - 'required_without_all' => ':attribute champ requis lorsqu'aucun des :values sont présents.', - 'same' => ':attribute et :other doit correspondre.', + 'required_without' => ':attribute champ requis lorsque :values est absente.', + 'required_without_all' => ':attribute champ requis lorsqu\'aucun des :values sont présents.', + 'same' => ':attribute et :other doivent correspondre.', 'size' => [ 'numeric' => ':attribute doit être :size.', - 'file' => ':attribute doit être :size Kilo-octets.', - 'string' => ':attribute doit être :size Caractères.', - 'array' => ':attribute doit contenir :size Articles.', + 'file' => ':attribute doit être :size Ko.', + 'string' => ':attribute doit compter :size caractères.', + 'array' => ':attribute doit compter :size articles.', ], 'string' => ':attribute doit être une chaîne.', 'timezone' => ':attribute doit être une zone valide.', 'unique' => ':attribute a déjà été prise.', 'uploaded' => ':attribute Impossible de télécharger.', - 'url' => ':attribute le format n'est pas valide.', + 'url' => ':attribute le format n\'est pas valide.', /* |-------------------------------------------------------------------------- | Custom Validation Language Lines From df5db1d27f131d78fccbad31fef717faa98db43b Mon Sep 17 00:00:00 2001 From: timmyRS Date: Sun, 27 May 2018 15:18:14 +0200 Subject: [PATCH 040/360] Translate new files in German --- resources/lang/de/notification.php | 7 +++++++ resources/lang/de/profile.php | 5 +++++ 2 files changed, 12 insertions(+) create mode 100644 resources/lang/de/notification.php create mode 100644 resources/lang/de/profile.php diff --git a/resources/lang/de/notification.php b/resources/lang/de/notification.php new file mode 100644 index 000000000..2818fc996 --- /dev/null +++ b/resources/lang/de/notification.php @@ -0,0 +1,7 @@ + 'gefällt dein Foto.', + +]; \ No newline at end of file diff --git a/resources/lang/de/profile.php b/resources/lang/de/profile.php new file mode 100644 index 000000000..586f57419 --- /dev/null +++ b/resources/lang/de/profile.php @@ -0,0 +1,5 @@ + 'Dieser Benutzer hat noch keine Fotos hochgeladen!', +]; \ No newline at end of file From 46b32d9890cde05237ca8a28f05c32d27fbfc603 Mon Sep 17 00:00:00 2001 From: Reka <8795284+Grazouillis@users.noreply.github.com> Date: Sun, 27 May 2018 15:21:02 +0200 Subject: [PATCH 041/360] call a variable correctly :seconds instead : secondes --- resources/lang/fr/auth.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/lang/fr/auth.php b/resources/lang/fr/auth.php index 8fb7bcd30..b5203399d 100644 --- a/resources/lang/fr/auth.php +++ b/resources/lang/fr/auth.php @@ -11,6 +11,6 @@ return [ | */ 'failed' => 'Ces informations ne correspondent pas à nos dossiers.', - 'throttle' => 'Trop de tentatives de connexion. Veuillez réessayer dans: secondes secondes.', + 'throttle' => 'Trop de tentatives de connexion. Veuillez réessayer dans :seconds secondes.', ]; © 2018 GitHub, Inc. From 4e0d49bd5e152912a6acc9ba9d5d28a11f4e14a2 Mon Sep 17 00:00:00 2001 From: Reka <8795284+Grazouillis@users.noreply.github.com> Date: Sun, 27 May 2018 15:24:59 +0200 Subject: [PATCH 042/360] French corrections More comprehensible for French natives ;) --- resources/lang/fr/passwords.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/lang/fr/passwords.php b/resources/lang/fr/passwords.php index 2f4b3fbd9..6ec889e70 100644 --- a/resources/lang/fr/passwords.php +++ b/resources/lang/fr/passwords.php @@ -10,9 +10,9 @@ return [ | has failed, such as for an invalid token or invalid new password. | */ - 'password' => 'Les mots de passe doivent avoir au moins six caractères et correspondre à la confirmation.', - 'reset' => 'Votre mot de passe a été réinitialisé!', - 'sent' => 'Nous avons envoyé par e-mail votre lien de réinitialisation de mot de passe!', + 'password' => 'Les mots de passe doivent compter au moins six caractères et correspondre à la confirmation.', + 'reset' => 'Votre mot de passe a été réinitialisé !', + 'sent' => 'Nous vous avons envoyé un e-mail avec un lien de réinitialisation de mot de passe !', 'token' => 'Ce jeton de réinitialisation de mot de passe est invalide.', - 'user' => "Nous ne pouvons pas trouver un utilisateur avec cette adresse e-mail.", + 'user' => "Aucun utilisateur n'est inscrit avec cette adresse e-mail.", ]; From b79d01354462d587f6edf73d8a0d23e063ddd12c Mon Sep 17 00:00:00 2001 From: Tim Stahel Date: Sun, 27 May 2018 16:49:55 +0200 Subject: [PATCH 043/360] finished swedish translations --- resources/lang/sv/validation.php | 134 +++++++++++++++---------------- 1 file changed, 67 insertions(+), 67 deletions(-) diff --git a/resources/lang/sv/validation.php b/resources/lang/sv/validation.php index 77d230221..c98f55b4a 100644 --- a/resources/lang/sv/validation.php +++ b/resources/lang/sv/validation.php @@ -13,81 +13,81 @@ return [ | */ - 'accepted' => 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'accepted' => ':attribute måste accepteras.', + 'active_url' => ':attribute är inte en giltig URL.', + 'after' => ':attribute måste vara ett datum efter :date.', + 'after_or_equal' => ':attribute måste vara ett datum efter eller samma som :date.', + 'alpha' => ':attribute får endast intehålla bokstäver.', + 'alpha_dash' => ':attribute får endast intehålla bokstäver, nummer, och bindestreck.', + 'alpha_num' => ':attribute får endast intehålla bokstäver och nummer.', + 'array' => ':attribute måste vara en array.', + 'before' => ':attribute måste vara ett datum före :date.', + 'before_or_equal' => ':attribute måste vara ett datum före eller samma som :date.', 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'numeric' => ':attribute måste vara mellan :min och :max.', + 'file' => ':attribute måste vara mellan :min och :max kilobytes.', + 'string' => ':attribute måste vara mellan :min och :max tecken.', + 'array' => ':attribute måste ha mellan :min och :max objekt.', ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'json' => 'The :attribute must be a valid JSON string.', + 'boolean' => ':attribute fält måste vara sant eller falskt.', + 'confirmed' => ':attribute bekräftelse stämmer inte.', + 'date' => ':attribute är inte ett giltigt datum.', + 'date_format' => ':attribute matchar inte formatet :format.', + 'different' => ':attribute och :other måste vara olika.', + 'digits' => ':attribute måste vara :digits siffror.', + 'digits_between' => ':attribute måste vara mellan :min och :max siffror.', + 'dimensions' => ':attribute har ogiltiga bilddimensioner.', + 'distinct' => ':attribute fält har ett duplikatvärde.', + 'email' => ':attribute måste vara en giltig e-postadress.', + 'exists' => 'vald :attribute är ogiltig.', + 'file' => ':attribute måste vara en fil.', + 'filled' => ':attribute fält måste ha ett värde.', + 'image' => ':attribute måste vara en bild.', + 'in' => 'vald :attribute är ogiltig.', + 'in_array' => ':attribute fält existerar inte i :other.', + 'integer' => ':attribute måste vara ett heltal.', + 'ip' => ':attribute måste vara en giltig IP-adress.', + 'ipv4' => ':attribute måste vara en giltig IPv4 adress.', + 'ipv6' => ':attribute måste vara en giltig IPv6 adress.', + 'json' => ':attribute måste vara en giltig JSON string.', 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'numeric' => ':attribute får inte vara större than :max.', + 'file' => ':attribute får inte vara större than :max kilobyte.', + 'string' => ':attribute får inte vara större than :max tecken.', + 'array' => ':attribute får inte ha mer än :max objekt.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'mimes' => ':attribute måste vara en fil av typ: :values.', + 'mimetypes' => ':attribute måste vara en fil av typ: :values.', 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', + 'numeric' => ':attribute måste vara åtminstone :min.', + 'file' => ':attribute måste vara åtminstone :min kilobyte.', + 'string' => ':attribute måste vara åtminstone :min tecken.', + 'array' => ':attribute måste have åtminstone :min objekt.', ], - 'not_in' => 'The selected :attribute is invalid.', - 'not_regex' => 'The :attribute format is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', + 'not_in' => 'vald :attribute är ogiltig.', + 'not_regex' => ':attribute formatet är ogiltigt.', + 'numeric' => ':attribute måste vara ett nummer.', + 'present' => ':attribute fält måste finnas.', + 'regex' => ':attribute formatet är ogiltigt.', + 'required' => ':attribute fält krävs.', + 'required_if' => ':attribute fält krävs när :other är :value.', + 'required_unless' => ':attribute fält krävs om inte :other är i :values.', + 'required_with' => ':attribute fält krävs när :values finns.', + 'required_with_all' => ':attribute fält krävs när :values finns.', + 'required_without' => ':attribute fält krvävs när :values inte finns.', + 'required_without_all' => ':attribute fält krävs när inga av :values finns.', + 'same' => ':attribute och :other måste matcha.', 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', + 'numeric' => ':attribute måste vara :size.', + 'file' => ':attribute måste vara :size kilobyte.', + 'string' => ':attribute måste vara :size tecken.', + 'array' => ':attribute måste innehålla :size objekt.', ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', + 'string' => ':attribute måste vara en string.', + 'timezone' => ':attribute måste vara en giltig zon.', + 'unique' => ':attribute är redan taget.', + 'uploaded' => 'uppladdning av :attribute misslyckades.', + 'url' => 'format av :attribute är ogiltigt.', /* |-------------------------------------------------------------------------- From 5cbbecf9aa7918bde0162e4294542aa9737e9f95 Mon Sep 17 00:00:00 2001 From: Yabir Date: Sun, 27 May 2018 23:22:49 +0200 Subject: [PATCH 044/360] Spanish traslation --- resources/lang/es/auth.php | 19 +++++ resources/lang/es/notification.php | 7 ++ resources/lang/es/pagination.php | 19 +++++ resources/lang/es/passwords.php | 22 ++++++ resources/lang/es/profile.php | 5 ++ resources/lang/es/validation.php | 122 +++++++++++++++++++++++++++++ 6 files changed, 194 insertions(+) create mode 100644 resources/lang/es/auth.php create mode 100644 resources/lang/es/notification.php create mode 100644 resources/lang/es/pagination.php create mode 100644 resources/lang/es/passwords.php create mode 100644 resources/lang/es/profile.php create mode 100644 resources/lang/es/validation.php diff --git a/resources/lang/es/auth.php b/resources/lang/es/auth.php new file mode 100644 index 000000000..8723dd3d2 --- /dev/null +++ b/resources/lang/es/auth.php @@ -0,0 +1,19 @@ + 'Los datos introducidos no son válidos.', + 'throttle' => 'Demasiados intentos de iniciar sesión. Por favor, inténtalo de nuevo en :seconds segundos.', + +]; diff --git a/resources/lang/es/notification.php b/resources/lang/es/notification.php new file mode 100644 index 000000000..cd62c2897 --- /dev/null +++ b/resources/lang/es/notification.php @@ -0,0 +1,7 @@ + 'le gustó tu foto.', + +]; diff --git a/resources/lang/es/pagination.php b/resources/lang/es/pagination.php new file mode 100644 index 000000000..f8f044e19 --- /dev/null +++ b/resources/lang/es/pagination.php @@ -0,0 +1,19 @@ + '« Anterior', + 'next' => 'Siguiente »', + +]; diff --git a/resources/lang/es/passwords.php b/resources/lang/es/passwords.php new file mode 100644 index 000000000..5abf74146 --- /dev/null +++ b/resources/lang/es/passwords.php @@ -0,0 +1,22 @@ + 'La contraseña debe tener al menos seis caracteres y coincidir con la de confirmación.', + 'reset' => '¡Tu password se ha cambiado!', + 'sent' => 'Te hemos enviado a tu correo un enlace para cambiar tu contraseña.', + 'token' => 'El token para canbiar la contraseña no es válido.', + 'user' => "No hemos podido encontrar a ningún usuario con esa contraseña.", + +]; diff --git a/resources/lang/es/profile.php b/resources/lang/es/profile.php new file mode 100644 index 000000000..c62bcf3f6 --- /dev/null +++ b/resources/lang/es/profile.php @@ -0,0 +1,5 @@ + 'Este usuario todavía no ha publicado nada.', +]; diff --git a/resources/lang/es/validation.php b/resources/lang/es/validation.php new file mode 100644 index 000000000..8d43e0297 --- /dev/null +++ b/resources/lang/es/validation.php @@ -0,0 +1,122 @@ + 'Las :attribute deben ser aceptadas.', + 'active_url' => 'La dirección :attribute no es una URL válida.', + 'after' => ':attribute debe ser una fecha posterior a :date.', + 'after_or_equal' => ':attribute debe ser una fecha posterior o igual a :date.', + 'alpha' => ':attribute debe contener únicamente letras.', + 'alpha_dash' => ':attribute solo debe contener letras, números y guiones.', + 'alpha_num' => ':attribute solo debe contener letras y números.', + 'array' => ':attribute debe ser una lista.', + 'before' => ':attribute debe ser una fecha anterior a :date.', + 'before_or_equal' => ':attribute debe ser una fecha anterior o igual a :date.', + 'between' => [ + 'numeric' => ':attribute debe estar entre :min y :max.', + 'file' => ':attribute debe contener entre :min y :max kilobytes.', + 'string' => ':attribute debe contener :min y :max caracteres.', + 'array' => ':attribute debe contener :min y :max elementos.', + ], + 'boolean' => 'El campo :attribute debe ser verdadero o falso.', + 'confirmed' => 'La confirmación de :attribute no coincide.', + 'date' => ':attribute no es un formato válido de fecha.cd ', + 'date_format' => ':attribute no cumple con el formato :format.', + 'different' => ':attribute y :other deben ser distintos.', + 'digits' => ':attribute debe contener :digits digitos.', + 'digits_between' => ':attribute debe contener entre :min y :max digitos.', + 'dimensions' => ':attribute tiene unas dimensiones no válidas para la imagen.', + 'distinct' => 'El campo :attribute tiene un valor duplicado.', + 'email' => 'El campo :attribute debe ser un e-mail válido.', + 'exists' => 'El :attribute seleccionado no es válido.', + 'file' => 'El campo :attribute debe ser un archivo.', + 'filled' => 'El campo :attribute debe tener un valor válido.', + 'image' => 'El campo :attribute debe ser una imagen.', + 'in' => 'El elemento seleccionado :attribute no es válido.', + 'in_array' => 'El campo :attribute no existe en :other.', + 'integer' => 'El campo :attribute debe ser un entero.', + 'ip' => 'El campo :attribute debe ser una dirección IP válida.', + 'ipv4' => 'El campo :attribute debe ser una dirección IPv4 válida.', + 'ipv6' => 'El campo :attribute debe ser una dirección IPv6 válida.', + 'json' => 'El campo :attribute debe ser un JSON válido.', + 'max' => [ + 'numeric' => ':attribute no debe ser mayor que :max.', + 'file' => ':attribute no debe tener más de :max kilobytes.', + 'string' => ':attribute no debe contener más de :max characters.', + 'array' => ':attribute no debe contene más de :max elementos.', + ], + 'mimes' => ':attribute debe ser un archivo de tipo: :values.', + 'mimetypes' => ':attribute debe ser un archivo de tipo: :values.', + 'min' => [ + 'numeric' => ':attribute debe ser :min como mínimo.', + 'file' => ':attribute debe tener al menos :min kilobytes.', + 'string' => ':attribute debe contener al menos :min caracteres.', + 'array' => ':attribute debe contener al menos :min elementos.', + ], + 'not_in' => 'El elemento seleccionado :attribute no es valido.', + 'not_regex' => 'El formato de :attribute no es valido.', + 'numeric' => ':attribute debe ser un número.', + 'present' => 'El campo :attribute debe estar presente.', + 'regex' => 'El formato de :attribute no es valido.', + 'required' => 'El campo :attribute es obligatorio.', + 'required_if' => 'El campo :attribute es obligatorio cuando :other es :value.', + 'required_unless' => 'El campo :attribute es obligatorio a menos que :other sea :values.', + 'required_with' => 'El campo :attribute es obligatorio cuando :values está presente.', + 'required_with_all' => 'El campo :attribute es obligatorio cuando :values está presente.', + 'required_without' => 'El campo :attribute es obligatorio cuando :values no está presente.', + 'required_without_all' => 'El campo :attribute es obligatorio cuando ninguno de :values está presente.', + 'same' => ':attribute y :other deben coincidir.', + 'size' => [ + 'numeric' => ':attribute debe ser :size.', + 'file' => ':attribute debe contener :size kilobytes.', + 'string' => ':attribute debe contener :size caracteres.', + 'array' => ':attribute debe contener :size elementos.', + ], + 'string' => ':attribute debe ser una cadena de texto.', + 'timezone' => ':attribute debe ser un uso horario valido.', + 'unique' => ':attribute no está disponible.', + 'uploaded' => ':attribute falló al subirse.', + 'url' => 'El formato de :attribute no es valido.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +]; From dc5bce159ddc77726af2782a539e0e8faa29389b Mon Sep 17 00:00:00 2001 From: Michael Demetriou Date: Mon, 28 May 2018 18:12:46 +0300 Subject: [PATCH 045/360] Greek translation Added translations for greek (el). Also added DS_Store to .gitignore --- .gitignore | 1 + resources/lang/el/auth.php | 19 +++++ resources/lang/el/notification.php | 13 +++ resources/lang/el/pagination.php | 19 +++++ resources/lang/el/passwords.php | 22 ++++++ resources/lang/el/profile.php | 5 ++ resources/lang/el/validation.php | 122 +++++++++++++++++++++++++++++ 7 files changed, 201 insertions(+) create mode 100644 resources/lang/el/auth.php create mode 100644 resources/lang/el/notification.php create mode 100644 resources/lang/el/pagination.php create mode 100644 resources/lang/el/passwords.php create mode 100644 resources/lang/el/profile.php create mode 100644 resources/lang/el/validation.php diff --git a/.gitignore b/.gitignore index d52873f29..82945e0a4 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ Homestead.yaml npm-debug.log yarn-error.log .env +.DS_Store diff --git a/resources/lang/el/auth.php b/resources/lang/el/auth.php new file mode 100644 index 000000000..9d1cd7f4a --- /dev/null +++ b/resources/lang/el/auth.php @@ -0,0 +1,19 @@ + 'Αυτά τα στοιχεία δεν υπάρχουν στα κατάστιχά μας.', + 'throttle' => 'Λόγω πολλαπλών δοκιμών, παρακαλώ δοκιμάστε ξανά σε :seconds δευτερόλεπτα.', + +]; diff --git a/resources/lang/el/notification.php b/resources/lang/el/notification.php new file mode 100644 index 000000000..3af597daa --- /dev/null +++ b/resources/lang/el/notification.php @@ -0,0 +1,13 @@ + 'έδειξε προτίμηση στη φωτογραφία σου.', //'preferred your photo' + //'likedPhoto' => 'αγάπησε τη φωτογραφία σου.', //'loved your photo' (this is too much, we don't use 'love' like that) + //'likedPhoto' => 'έκανε like στη φωτογραφία σου.', //'did a like on your photo' (this sounds cheesy) + + //In greek "like" is only passive (i.e. you can say "Your photo was liked by user" but not "user liked your photo"). + // So we either can use "loved", use the english word ("performed a 'like' on your photo"), or (the one I chose) say + // "user preferred your photo" + +]; \ No newline at end of file diff --git a/resources/lang/el/pagination.php b/resources/lang/el/pagination.php new file mode 100644 index 000000000..32e04a901 --- /dev/null +++ b/resources/lang/el/pagination.php @@ -0,0 +1,19 @@ + '« Προηγούμενο', + 'next' => 'Επόμενο »', + +]; diff --git a/resources/lang/el/passwords.php b/resources/lang/el/passwords.php new file mode 100644 index 000000000..475f290f5 --- /dev/null +++ b/resources/lang/el/passwords.php @@ -0,0 +1,22 @@ + 'Ο κωδικός πρέπει να έχει τουλάχιστον 6 χαρακτήρες και να είναι ίδιος με την επιβεβαίωση.', + 'reset' => 'Έγινε επαναφορά του κωδικού σας', + 'sent' => 'Ο σύνδεσμος για την επαναφορά του κωδικού έφυγε με e-mail.', + 'token' => 'Ο σύνδεσμος επαναφοράς κωδικού δεν είναι έγκυρος.', + 'user' => "Δεν υπάρχει χρήστης με αυτό το e-mail στη βάση δεδομένων.", + +]; diff --git a/resources/lang/el/profile.php b/resources/lang/el/profile.php new file mode 100644 index 000000000..b47b2f7bd --- /dev/null +++ b/resources/lang/el/profile.php @@ -0,0 +1,5 @@ + 'Αυτός ο χρήστης δεν έχει δημοσιεύσει τίποτα ακόμη!', +]; \ No newline at end of file diff --git a/resources/lang/el/validation.php b/resources/lang/el/validation.php new file mode 100644 index 000000000..fb027870b --- /dev/null +++ b/resources/lang/el/validation.php @@ -0,0 +1,122 @@ + 'Πρέπει να αποδεκτείτε το :attribute.', + 'active_url' => 'Το :attribute δεν είναι έγκυρο URL.', + 'after' => 'Η :attribute πρέπει να είναι μετά την :date.', + 'after_or_equal' => 'Η :attribute πρέπει να είναι ακριβώς :date ή αργότερα.', + 'alpha' => 'Το στοιχείο :attribute δέχεται μόνο γράμματα.', + 'alpha_dash' => 'Το στοιχείο :attribute δέχεται μόνο γράμματα, αριθμούς και παύλες.', + 'alpha_num' => 'Το στοιχείο :attribute δέχεται μόνο γράμματα και αριθμούς.', + 'array' => 'Το στοιχείο :attribute πρέπει να είναι πίνακας.', + 'before' => 'Το στοιχείο :attribute πρέπει να είναι πριν την :date.', + 'before_or_equal' => 'Το στοιχείο :attribute πρέπει να είναι ακριβώς :date ή νωρίτερα.', + 'between' => [ + 'numeric' => 'Το στοιχείο :attribute πρέπει να είναι μεταξύ :min και :max.', + 'file' => 'Το στοιχείο :attribute πρέπει να είναι μεταξύ :min και :max kb.', + 'string' => 'Το στοιχείο :attribute πρέπει να είναι μεταξύ :min και :max χαρακτήρες.', + 'array' => 'Το στοιχείο :attribute πρέπει να έχει μεταξύ :min και :max αντικείμενα.', + ], + 'boolean' => 'Το στοιχείο :attribute πρέπει να είναι είτε αληθές είτε ψευδές.', + 'confirmed' => 'Η επιβεβαίωση του στοιχείου :attribute δεν ταιριάζει.', + 'date' => 'Το στοιχείο :attribute δεν είναι έγκυρη ημερομηνία.', + 'date_format' => 'Το στοιχείο :attribute δεν έχει τη σωστή μορφοποίηση: :format.', + 'different' => 'Τα στοιχεία :attribute και :other πρέπει να διαφέρουν.', + 'digits' => 'Το στοιχείο :attribute πρέπει να αποτελείται από :digits ψηφία.', + 'digits_between' => 'Το στοιχείο :attribute πρέπει να έχει μεταξύ :min και :max ψηφία.', + 'dimensions' => 'Το στοιχείο :attribute δεν έχει έγκυρες διαστάσεις εικόνας.', + 'distinct' => 'Το πεδίο :attribute έχει διπλή τιμή.', + 'email' => 'Το :attribute πρέπει να είναι έγκυρη διεύθυνση e-mail.', + 'exists' => 'Το επιλεγμένο στοιχείο :attribute δεν είναι έγκυρο.', + 'file' => 'Το στοιχείο :attribute πρέπει να είναι αρχείο.', + 'filled' => 'Το πεδίο :attribute πρέπει να έχει τιμή.', + 'image' => 'Το στοιχείο :attribute πρέπει να είναι εικόνα.', + 'in' => 'Το επιλεγμένο στοιχείο :attribute δεν είναι έγκυρο.', + 'in_array' => 'Το πεδίο :attribute δεν υπάρχει στο :other.', + 'integer' => 'Το στοιχείο :attribute πρέπει να είναι ακέραιος.', + 'ip' => 'Το στοιχείο :attribute πρέπει να είναι έγκυρη διεύθυνση IP.', + 'ipv4' => 'Το στοιχείο :attribute πρέπει να είναι έγκυρη διεύθυνση IPv4.', + 'ipv6' => 'Το στοιχείο :attribute πρέπει να είναι έγκυρη διεύθυνση IPv6.', + 'json' => 'Το στοιχείο :attribute πρέπει να είναι έγκυρη συμβολοσειρά JSON.', + 'max' => [ + 'numeric' => 'Το στοιχείο :attribute δεν μπορεί να είναι μεγαλύτερο από :max.', + 'file' => 'Το στοιχείο :attribute δεν μπορεί να είναι μεγαλύτερο από :max kb.', + 'string' => 'Το στοιχείο :attribute δεν μπορεί να είναι μεγαλύτερο από :max χαρακτήρες.', + 'array' => 'Το στοιχείο :attribute may not have more than :max items.', + ], + 'mimes' => 'Το στοιχείο :attribute πρεπει να είναι αρχείο τύπου: :values.', + 'mimetypes' => 'Το στοιχείο :attribute πρεπει να είναι αρχείο τύπου: :values.', + 'min' => [ + 'numeric' => 'Το στοιχείο :attribute πρέπει να είναι τουλάχιστον :min.', + 'file' => 'Το στοιχείο :attribute πρέπει να είναι τουλάχιστον :min kb.', + 'string' => 'Το στοιχείο :attribute πρέπει να είναι τουλάχιστον :min χαρακτήρες.', + 'array' => 'Το στοιχείο :attribute must have at least :min items.', + ], + 'not_in' => 'Το επιλεγμένο στοιχείο :attribute δεν είναι έγκυρο.', + 'not_regex' => 'Η μορφοποίηση του στοιχείου :attribute δεν είναι έγκυρη.', + 'numeric' => 'Το στοιχείο :attribute πρέπει να είναι αριθμός.', + 'present' => 'Το πεδίο :attribute πρέπει να υπάρχει.', + 'regex' => 'Η μορφοποίηση του στοιχείου :attribute δεν είναι έγκυρη.', + 'required' => 'Το πεδίο :attribute είναι απαραίτητο.', + 'required_if' => 'Το πεδίο :attribute είναι απαραίτητο όταν το :other είναι :value.', + 'required_unless' => 'Το πεδίο :attribute είναι απαραίτητο unless :other είναι ένα από: :values.', + 'required_with' => 'Το πεδίο :attribute είναι απαραίτητο όταν το :values υπάρχει.', + 'required_with_all' => 'Το πεδίο :attribute είναι απαραίτητο όταν το :values υπάρχει.', + 'required_without' => 'Το πεδίο :attribute είναι απαραίτητο όταν το :values δεν υπάρχει.', + 'required_without_all' => 'Το πεδίο :attribute είναι απαραίτητο όταν καμία από τις τιμές :values δεν υπάρχει.', + 'same' => 'Τα στοιχεία :attribute και :other πρέπει να ταιριάζουν.', + 'size' => [ + 'numeric' => 'Το στοιχείο :attribute πρέπει να έχει μέγεθος :size.', + 'file' => 'Το στοιχείο :attribute πρέπει να έχει μέγεθος :size kb.', + 'string' => 'Το στοιχείο :attribute πρέπει να έχει μέγεθος :size χαρακτήρες.', + 'array' => 'Το στοιχείο :attribute πρέπει να έχει :size αντικείμενα.', + ], + 'string' => 'Το στοιχείο :attribute πρέπει να είναι συμβολοσειρά.', + 'timezone' => 'Το στοιχείο :attribute πρέπει να είναι έγκυρη ζώνη ώρας.', + 'unique' => 'Το στοιχείο :attribute είναι πιασμένο :-(.', + 'uploaded' => 'Το στοιχείο :attribute απέτυχε να ανέβει.', + 'url' => 'Η μορφοποίηση του στοιχείου :attribute δεν είναι έγκυρη.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +]; From 1664095c3de5bdbc3c507af70aa6787d0cd19e9c Mon Sep 17 00:00:00 2001 From: voss Date: Mon, 28 May 2018 22:41:18 +0100 Subject: [PATCH 046/360] some translations done. --- resources/lang/da/auth.php | 19 +++++ resources/lang/da/notification.php | 7 ++ resources/lang/da/pagination.php | 19 +++++ resources/lang/da/passwords.php | 22 ++++++ resources/lang/da/profile.php | 5 ++ resources/lang/da/validation.php | 122 +++++++++++++++++++++++++++++ 6 files changed, 194 insertions(+) create mode 100644 resources/lang/da/auth.php create mode 100644 resources/lang/da/notification.php create mode 100644 resources/lang/da/pagination.php create mode 100644 resources/lang/da/passwords.php create mode 100644 resources/lang/da/profile.php create mode 100644 resources/lang/da/validation.php diff --git a/resources/lang/da/auth.php b/resources/lang/da/auth.php new file mode 100644 index 000000000..8eb3d4fc8 --- /dev/null +++ b/resources/lang/da/auth.php @@ -0,0 +1,19 @@ + 'Disse oplysninger stemmer ikke overens med vores data.', + 'throttle' => 'For mange login-forsøg. Vær venlig at prøve igen om :seconds seconds.', + +]; diff --git a/resources/lang/da/notification.php b/resources/lang/da/notification.php new file mode 100644 index 000000000..6024d9b16 --- /dev/null +++ b/resources/lang/da/notification.php @@ -0,0 +1,7 @@ + 'syntes om dit billede.', + +]; \ No newline at end of file diff --git a/resources/lang/da/pagination.php b/resources/lang/da/pagination.php new file mode 100644 index 000000000..f0fb56aea --- /dev/null +++ b/resources/lang/da/pagination.php @@ -0,0 +1,19 @@ + '« Tidligere', + 'next' => 'Næste »', + +]; diff --git a/resources/lang/da/passwords.php b/resources/lang/da/passwords.php new file mode 100644 index 000000000..a41bd59ae --- /dev/null +++ b/resources/lang/da/passwords.php @@ -0,0 +1,22 @@ + 'Adgangskode skal være mindst 6 tegn og skal matche bekræftelsen.', + 'reset' => 'Din adgangskode er blevet nulstillet!', + 'sent' => 'Vi har sendt dig en email med et link, hvor du kan nulstille din andgangskode!', + 'token' => 'Dette nulstillingslink er ikke længere gyldigt.', + 'user' => "Vi kan ikke finde en bruger med den emailadresse.", + +]; diff --git a/resources/lang/da/profile.php b/resources/lang/da/profile.php new file mode 100644 index 000000000..e19ae40ab --- /dev/null +++ b/resources/lang/da/profile.php @@ -0,0 +1,5 @@ + 'Denne bruger har ikke postet noget endnu!', +]; \ No newline at end of file diff --git a/resources/lang/da/validation.php b/resources/lang/da/validation.php new file mode 100644 index 000000000..490e1c07e --- /dev/null +++ b/resources/lang/da/validation.php @@ -0,0 +1,122 @@ + ':attribute skal accepteres.', + 'active_url' => ':attribute er ikke en gyldig URL.', + 'after' => ':attribute skal være en dato efter :date.', + 'after_or_equal' => ':attribute skal være en dato ens med, eller efter :date.', + 'alpha' => ':attribute må kun indeholde bogstaver.', + 'alpha_dash' => ':attribute må kun indeholde bogstaver, tal og bindestreger.', + 'alpha_num' => ':attribute må kun indeholde bogstaver og tal.', + 'array' => ':attribute skal være en array.', + 'before' => ':attribute skal være en dato før :date.', + 'before_or_equal' => ':attribute skal være en dato før, eller det samme som :date.', + 'between' => [ + 'numeric' => ':attribute skal være mellem :min og :max.', + 'file' => ':attribute skal være mellem :min og :max kilobytes.', + 'string' => ':attribute skal være mellem :min og :max tegn.', + 'array' => ':attribute skal være mellem :min og :max elementer.', + ], + 'boolean' => ':attribute felt skal være sandt eller falsk.', + 'confirmed' => ':attribute bekræftelse matcher ikke.', + 'date' => ':attribute er ikke en gyldig dato.', + 'date_format' => ':attribute matcher ikke formatet :format.', + 'different' => ':attribute og :other skal være forskellige.', + 'digits' => ':attribute must be :digits digits.', + 'digits_between' => ':attribute must be between :min and :max digits.', + 'dimensions' => ':attribute has invalid image dimensions.', + 'distinct' => ':attribute field has a duplicate value.', + 'email' => ':attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => ':attribute must be a file.', + 'filled' => ':attribute field must have a value.', + 'image' => ':attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => ':attribute field does not exist in :other.', + 'integer' => ':attribute must be an integer.', + 'ip' => ':attribute must be a valid IP address.', + 'ipv4' => ':attribute must be a valid IPv4 address.', + 'ipv6' => ':attribute must be a valid IPv6 address.', + 'json' => ':attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => ':attribute may not be greater than :max.', + 'file' => ':attribute may not be greater than :max kilobytes.', + 'string' => ':attribute may not be greater than :max characters.', + 'array' => ':attribute may not have more than :max items.', + ], + 'mimes' => ':attribute must be a file of type: :values.', + 'mimetypes' => ':attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => ':attribute must be at least :min.', + 'file' => ':attribute must be at least :min kilobytes.', + 'string' => ':attribute must be at least :min characters.', + 'array' => ':attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => ':attribute format is invalid.', + 'numeric' => ':attribute must be a number.', + 'present' => ':attribute field must be present.', + 'regex' => ':attribute format is invalid.', + 'required' => ':attribute field is required.', + 'required_if' => ':attribute field is required when :other is :value.', + 'required_unless' => ':attribute field is required unless :other is in :values.', + 'required_with' => ':attribute field is required when :values is present.', + 'required_with_all' => ':attribute field is required when :values is present.', + 'required_without' => ':attribute field is required when :values is not present.', + 'required_without_all' => ':attribute field is required when none of :values are present.', + 'same' => ':attribute and :other must match.', + 'size' => [ + 'numeric' => ':attribute must be :size.', + 'file' => ':attribute must be :size kilobytes.', + 'string' => ':attribute must be :size characters.', + 'array' => ':attribute must contain :size items.', + ], + 'string' => ':attribute must be a string.', + 'timezone' => ':attribute must be a valid zone.', + 'unique' => ':attribute has already been taken.', + 'uploaded' => ':attribute failed to upload.', + 'url' => ':attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +]; From c6a602e32408e660f1812321d82f1c7abc527278 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Mon, 28 May 2018 17:48:59 -0600 Subject: [PATCH 047/360] Update pixelfed.php config --- config/pixelfed.php | 79 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 67 insertions(+), 12 deletions(-) diff --git a/config/pixelfed.php b/config/pixelfed.php index a912a3b26..479df7fa9 100644 --- a/config/pixelfed.php +++ b/config/pixelfed.php @@ -2,19 +2,74 @@ return [ - 'version' => '0.1.0', + /* + |-------------------------------------------------------------------------- + | Domains + |-------------------------------------------------------------------------- + | + | Application domains used for routing + | + */ + 'domain' => [ + 'admin' => env('ADMIN_DOMAIN'), + 'app' => env('APP_DOMAIN'), + ], - 'nodeinfo' => [ - 'url' => config('app.url') . '/' . 'api/nodeinfo/2.0.json' - ], + /* + |-------------------------------------------------------------------------- + | PixelFed Version + |-------------------------------------------------------------------------- + | + | This value is the version of your PixelFed instance. + | + */ + 'version' => '0.1.0', - 'memory_limit' => '1024M', + /* + |-------------------------------------------------------------------------- + | NodeInfo Route Path + |-------------------------------------------------------------------------- + | + | Do not change this value unless you know what you are doing. + | + */ + 'nodeinfo' => [ + 'url' => config('app.url') . '/' . 'api/nodeinfo/2.0.json' + ], - 'restricted_names' => [ - 'reserved_routes' => true, - 'use_blacklist' => false - ], - - 'open_registration' => env('OPEN_REGISTRATION', true), - + /* + |-------------------------------------------------------------------------- + | PHP/ImageMagic/GD Memory Limit + |-------------------------------------------------------------------------- + | + | This memory_limit value is only used for image processing. The + | default memory_limit php.ini is used for the rest of the app. + | + */ + 'memory_limit' => '1024M', + + /* + |-------------------------------------------------------------------------- + | Restricted Usernames + |-------------------------------------------------------------------------- + | + | Optional blacklist to prevent registering usernames that could + | be confused for admin or system services. + | + */ + 'restricted_names' => [ + 'reserved_routes' => true, + 'use_blacklist' => false + ], + + /* + |-------------------------------------------------------------------------- + | Allow New Registrations + |-------------------------------------------------------------------------- + | + | Enable/disable new local account registrations. + | + */ + 'open_registration' => env('OPEN_REGISTRATION', true), + ]; \ No newline at end of file From ad657b7fdc33cd82cc61037869ae6a6ca665cdb2 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Mon, 28 May 2018 17:50:14 -0600 Subject: [PATCH 048/360] Add FederationController Closes #8 --- app/Http/Controllers/FederationController.php | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 app/Http/Controllers/FederationController.php diff --git a/app/Http/Controllers/FederationController.php b/app/Http/Controllers/FederationController.php new file mode 100644 index 000000000..e0b29639f --- /dev/null +++ b/app/Http/Controllers/FederationController.php @@ -0,0 +1,84 @@ +authCheck(); + return view('federation.remotefollow'); + } + + public function nodeinfoWellKnown() + { + $res = [ + 'links' => [ + [ + 'href' => config('pixelfed.nodeinfo.url'), + 'rel' => 'http://nodeinfo.diaspora.software/ns/schema/2.0' + ] + ] + ]; + return response()->json($res); + } + + public function nodeinfo() + { + $res = [ + 'metadata' => [ + 'nodeName' => config('app.name'), + 'software' => [ + 'homepage' => 'https://pixelfed.org', + 'github' => 'https://github.com/pixelfed', + 'follow' => 'https://mastodon.social/@pixelfed' + ], + /* + TODO: Custom Features for Trending + 'customFeatures' => [ + 'trending' => [ + 'description' => 'Trending API for federated discovery', + 'api' => [ + 'url' => null, + 'docs' => null + ], + ], + ], + */ + ], + 'openRegistrations' => config('pixelfed.open_registration'), + 'protocols' => [ + 'activitypub' + ], + 'services' => [ + 'inbound' => [], + 'outbound' => [] + ], + 'software' => [ + 'name' => 'PixelFed', + 'version' => config('pixelfed.version') + ], + 'usage' => [ + 'localPosts' => \App\Status::whereLocal(true)->count(), + 'users' => [ + 'total' => \App\User::count() + ] + ], + 'version' => '2.0' + ]; + + return response()->json($res); + } +} From 522e304a302dcfc49639c6762f9448b3feacfa41 Mon Sep 17 00:00:00 2001 From: j1t Date: Tue, 29 May 2018 00:13:57 +0000 Subject: [PATCH 049/360] Create notification.php --- resources/lang/he/notification.php | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 resources/lang/he/notification.php diff --git a/resources/lang/he/notification.php b/resources/lang/he/notification.php new file mode 100644 index 000000000..3e7406a97 --- /dev/null +++ b/resources/lang/he/notification.php @@ -0,0 +1,7 @@ + 'אהבו את התמונה שלך.', + +]; From 23850cd95023cc34518bcc8282449355f19ecf61 Mon Sep 17 00:00:00 2001 From: j1t Date: Tue, 29 May 2018 00:16:07 +0000 Subject: [PATCH 050/360] Create profile.php --- resources/lang/he/profile.php | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 resources/lang/he/profile.php diff --git a/resources/lang/he/profile.php b/resources/lang/he/profile.php new file mode 100644 index 000000000..ff1674f34 --- /dev/null +++ b/resources/lang/he/profile.php @@ -0,0 +1,5 @@ + 'למשתמש זה עדיין אין פוסטים!', +]; From 609ca40e6967201957a28e213ff8a32c3227866d Mon Sep 17 00:00:00 2001 From: Moritz Heiber Date: Mon, 28 May 2018 17:30:36 +0200 Subject: [PATCH 051/360] Tweaked the Docker configuration --- .dockerignore | 1 + Dockerfile | 40 +++++++++++++++++++++++++------------ contrib/nginx.conf | 2 +- docker-compose.yml | 49 +++++++++++++++++++++++++++++++++------------- 4 files changed, 65 insertions(+), 27 deletions(-) diff --git a/.dockerignore b/.dockerignore index 5d4b8fcc0..10cb02760 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,6 +1,7 @@ storage data Dockerfile +docker-compose.yml .dockerignore .git .gitignore diff --git a/Dockerfile b/Dockerfile index c076c6672..ec457f905 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,17 +1,33 @@ -FROM php:7.2-fpm-alpine +FROM php:7.2.6-fpm-alpine -RUN apk add --no-cache git imagemagick \ - && apk add --no-cache --virtual .build build-base autoconf imagemagick-dev libtool \ - && docker-php-ext-install pdo_mysql pcntl \ - && pecl install imagick \ - && docker-php-ext-enable imagick \ - && apk del --purge .build +ARG COMPOSER_VERSION="1.6.5" +ARG COMPOSER_CHECKSUM="67bebe9df9866a795078bb2cf21798d8b0214f2e0b2fd81f2e907a8ef0be3434" -RUN curl -sS https://getcomposer.org/installer | php \ - && mv composer.phar /usr/local/bin/ \ - && ln -s /usr/local/bin/composer.phar /usr/local/bin/composer +RUN apk add --no-cache --virtual .build build-base autoconf imagemagick-dev libtool && \ + apk --no-cache add imagemagick git && \ + docker-php-ext-install pdo_mysql pcntl && \ + pecl install imagick && \ + docker-php-ext-enable imagick pcntl imagick && \ + curl -LsS https://getcomposer.org/download/${COMPOSER_VERSION}/composer.phar -o /tmp/composer.phar && \ + echo "${COMPOSER_CHECKSUM} /tmp/composer.phar" | sha256sum -c - && \ + install -m0755 -o root -g root /tmp/composer.phar /usr/bin/composer.phar && \ + ln -sf /usr/bin/composer.phar /usr/bin/composer && \ + mkdir -p /var/www && \ + install -d -m0755 -o www-data -g www-data /var/www/html/pixelfed && \ + install -d -m0755 -o www-data -g www-data /var/www/html/pixelfed/storage && \ + install -d -m0755 -o www-data -g www-data /var/www/html/pixelfed/storage/framework && \ + install -d -m0755 -o www-data -g www-data /var/www/html/pixelfed/storage/framework/sessions && \ + install -d -m0755 -o www-data -g www-data /var/www/html/pixelfed/storage/framework/views && \ + install -d -m0755 -o www-data -g www-data /var/www/html/pixelfed/storage/framework/cache && \ + rm /tmp/composer.phar && \ + apk del --purge .build -WORKDIR /var/www/html -COPY . . +COPY --chown=www-data . /var/www/html/pixelfed/ + +WORKDIR /var/www/html/pixelfed +USER www-data RUN composer install --prefer-source --no-interaction + +VOLUME ["/var/www/html"] +USER root ENV PATH="~/.composer/vendor/bin:./vendor/bin:${PATH}" diff --git a/contrib/nginx.conf b/contrib/nginx.conf index c39103d5a..39cfbdf4d 100644 --- a/contrib/nginx.conf +++ b/contrib/nginx.conf @@ -4,7 +4,7 @@ server { server_name localhost; index index.php index.html; - root /var/www/html/public; + root /var/www/html/pixelfed/public; location / { try_files $uri $uri/ /index.php; diff --git a/docker-compose.yml b/docker-compose.yml index d9c39bd2f..b49b77a77 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,37 +3,58 @@ version: '3' services: nginx: image: nginx:alpine + networks: + - internal + - external ports: - 3000:80 volumes: - - .:/var/www/html + - "php-storage:/var/www/html" - ./contrib/nginx.conf:/etc/nginx/conf.d/default.conf depends_on: - - php + - php + php: build: . + image: pixelfed volumes: - - ./storage:/var/www/html/storage - depends_on: - - mysql - - redis + - "php-storage:/var/www/html" + networks: + - internal environment: - DB_HOST=mysql - DB_DATABASE=pixelfed - - DB_USERNAME=${DB_USERNAME} - - DB_PASSWORD=${DB_PASSWORD} + - DB_USERNAME=${DB_USERNAME:-pixelfed} + - DB_PASSWORD=${DB_PASSWORD:-pixelfed} - REDIS_HOST=redis - - APP_KEY=${APP_KEY} + - APP_KEY=${APP_KEY:-app_key} + mysql: image: mysql:5.7 + networks: + - internal environment: - MYSQL_DATABASE=pixelfed - - MYSQL_USER=${DB_USERNAME} - - MYSQL_PASSWORD=${DB_PASSWORD} + - MYSQL_USER=${DB_USERNAME:-pixelfed} + - MYSQL_PASSWORD=${DB_PASSWORD:-pixelfed} + - MYSQL_RANDOM_ROOT_PASSWORD="true" volumes: - - ./docker-volumes/mysql:/var/lib/mysql + - "mysql-data:/var/lib/mysql" + redis: image: redis:alpine volumes: - - ./docker-volumes/redis:/data -... + - "redis-data:/data" + networks: + - internal + +volumes: + redis-data: + mysql-data: + php-storage: + +networks: + internal: + internal: true + external: + driver: bridge From 9baa229a120fc5d4dec1099f7ecc90af81391a32 Mon Sep 17 00:00:00 2001 From: Moritz Heiber Date: Tue, 29 May 2018 09:20:17 +0200 Subject: [PATCH 052/360] Simplified Dockerfile --- Dockerfile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index ec457f905..91e37d04c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,12 +13,12 @@ RUN apk add --no-cache --virtual .build build-base autoconf imagemagick-dev libt install -m0755 -o root -g root /tmp/composer.phar /usr/bin/composer.phar && \ ln -sf /usr/bin/composer.phar /usr/bin/composer && \ mkdir -p /var/www && \ - install -d -m0755 -o www-data -g www-data /var/www/html/pixelfed && \ - install -d -m0755 -o www-data -g www-data /var/www/html/pixelfed/storage && \ - install -d -m0755 -o www-data -g www-data /var/www/html/pixelfed/storage/framework && \ - install -d -m0755 -o www-data -g www-data /var/www/html/pixelfed/storage/framework/sessions && \ - install -d -m0755 -o www-data -g www-data /var/www/html/pixelfed/storage/framework/views && \ - install -d -m0755 -o www-data -g www-data /var/www/html/pixelfed/storage/framework/cache && \ + install -d -m0755 -o www-data -g www-data /var/www/html/pixelfed \ + /var/www/html/pixelfed/storage \ + /var/www/html/pixelfed/storage/framework \ + /var/www/html/pixelfed/storage/framework/sessions \ + /var/www/html/pixelfed/storage/framework/views \ + /var/www/html/pixelfed/storage/framework/cache && \ rm /tmp/composer.phar && \ apk del --purge .build From 32d54ecf658c9f0440fdffdb253743f185e99d18 Mon Sep 17 00:00:00 2001 From: Moritz Heiber Date: Tue, 29 May 2018 10:25:25 +0200 Subject: [PATCH 053/360] Fixed logs location in Dockerfile, added docker-compose-running.yml for running the application --- Dockerfile | 1 + docker-compose-running.yml | 64 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 docker-compose-running.yml diff --git a/Dockerfile b/Dockerfile index 91e37d04c..bbb285efb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,6 +16,7 @@ RUN apk add --no-cache --virtual .build build-base autoconf imagemagick-dev libt install -d -m0755 -o www-data -g www-data /var/www/html/pixelfed \ /var/www/html/pixelfed/storage \ /var/www/html/pixelfed/storage/framework \ + /var/www/html/pixelfed/storage/logs \ /var/www/html/pixelfed/storage/framework/sessions \ /var/www/html/pixelfed/storage/framework/views \ /var/www/html/pixelfed/storage/framework/cache && \ diff --git a/docker-compose-running.yml b/docker-compose-running.yml new file mode 100644 index 000000000..8e9ccd4c1 --- /dev/null +++ b/docker-compose-running.yml @@ -0,0 +1,64 @@ +--- +version: '3' +services: + nginx: + image: nginx:alpine + networks: + - internal + - external + ports: + - 3000:80 + volumes: + - "php-storage:/var/www/html" + - ./contrib/nginx.conf:/etc/nginx/conf.d/default.conf + depends_on: + - php + + php: + build: . + image: pixelfed + volumes: + - "php-storage:/var/www/html" + networks: + - internal + environment: + - DB_HOST=mysql + - DB_DATABASE=pixelfed + - DB_USERNAME=${DB_USERNAME:-pixelfed} + - DB_PASSWORD=${DB_PASSWORD:-pixelfed} + - REDIS_HOST=redis + - APP_KEY=${APP_KEY} + env_file: + - ./.env + + mysql: + image: mysql:5.7 + networks: + - internal + environment: + - MYSQL_DATABASE=pixelfed + - MYSQL_USER=${DB_USERNAME:-pixelfed} + - MYSQL_PASSWORD=${DB_PASSWORD:-pixelfed} + - MYSQL_RANDOM_ROOT_PASSWORD="true" + env_file: + - ./.env + volumes: + - "mysql-data:/var/lib/mysql" + + redis: + image: redis:alpine + volumes: + - "redis-data:/data" + networks: + - internal + +volumes: + redis-data: + mysql-data: + php-storage: + +networks: + internal: + internal: true + external: + driver: bridge From 407095c13b72b22ce8f8e5657e88feaf28f894e7 Mon Sep 17 00:00:00 2001 From: Moritz Heiber Date: Tue, 29 May 2018 10:26:44 +0200 Subject: [PATCH 054/360] Also added the second docker-compose configuration file to dockerignore --- .dockerignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.dockerignore b/.dockerignore index 10cb02760..e47e3356b 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,7 +1,7 @@ storage data Dockerfile -docker-compose.yml +docker-compose*.yml .dockerignore .git .gitignore From 42ba511e3e5e8a40387ed61d0ef1a405979ceabd Mon Sep 17 00:00:00 2001 From: Nouutilizaire <39726620+Nouutilizaire@users.noreply.github.com> Date: Tue, 29 May 2018 08:42:30 +0000 Subject: [PATCH 055/360] Create notification.php --- resources/lang/oc/notification.php | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 resources/lang/oc/notification.php diff --git a/resources/lang/oc/notification.php b/resources/lang/oc/notification.php new file mode 100644 index 000000000..71fcc14f2 --- /dev/null +++ b/resources/lang/oc/notification.php @@ -0,0 +1,7 @@ + 'a aimat vòstra fotografia.', + +]; From 9ed904091b617f036480a9cb4aea5039cd844de5 Mon Sep 17 00:00:00 2001 From: Nouutilizaire <39726620+Nouutilizaire@users.noreply.github.com> Date: Tue, 29 May 2018 08:45:16 +0000 Subject: [PATCH 056/360] Create profile.php --- resources/lang/oc/profile.php | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 resources/lang/oc/profile.php diff --git a/resources/lang/oc/profile.php b/resources/lang/oc/profile.php new file mode 100644 index 000000000..ee70a7b00 --- /dev/null +++ b/resources/lang/oc/profile.php @@ -0,0 +1,5 @@ + 'Aqueste utilizaire a pas encara de publicacion !', +]; From 5117f003fe547968aa1fbca851190b276d6dcec2 Mon Sep 17 00:00:00 2001 From: Moritz Heiber Date: Tue, 29 May 2018 12:30:50 +0200 Subject: [PATCH 057/360] Revert the changes to the docker-compose.yml, we can merge the files later if necessary --- docker-compose.yml | 49 +++++++++++++--------------------------------- 1 file changed, 14 insertions(+), 35 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index b49b77a77..d9c39bd2f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,58 +3,37 @@ version: '3' services: nginx: image: nginx:alpine - networks: - - internal - - external ports: - 3000:80 volumes: - - "php-storage:/var/www/html" + - .:/var/www/html - ./contrib/nginx.conf:/etc/nginx/conf.d/default.conf depends_on: - - php - + - php php: build: . - image: pixelfed volumes: - - "php-storage:/var/www/html" - networks: - - internal + - ./storage:/var/www/html/storage + depends_on: + - mysql + - redis environment: - DB_HOST=mysql - DB_DATABASE=pixelfed - - DB_USERNAME=${DB_USERNAME:-pixelfed} - - DB_PASSWORD=${DB_PASSWORD:-pixelfed} + - DB_USERNAME=${DB_USERNAME} + - DB_PASSWORD=${DB_PASSWORD} - REDIS_HOST=redis - - APP_KEY=${APP_KEY:-app_key} - + - APP_KEY=${APP_KEY} mysql: image: mysql:5.7 - networks: - - internal environment: - MYSQL_DATABASE=pixelfed - - MYSQL_USER=${DB_USERNAME:-pixelfed} - - MYSQL_PASSWORD=${DB_PASSWORD:-pixelfed} - - MYSQL_RANDOM_ROOT_PASSWORD="true" + - MYSQL_USER=${DB_USERNAME} + - MYSQL_PASSWORD=${DB_PASSWORD} volumes: - - "mysql-data:/var/lib/mysql" - + - ./docker-volumes/mysql:/var/lib/mysql redis: image: redis:alpine volumes: - - "redis-data:/data" - networks: - - internal - -volumes: - redis-data: - mysql-data: - php-storage: - -networks: - internal: - internal: true - external: - driver: bridge + - ./docker-volumes/redis:/data +... From 9fbcf225b9bbb31503c45121dea78a651f20deff Mon Sep 17 00:00:00 2001 From: voss Date: Tue, 29 May 2018 21:09:59 +0100 Subject: [PATCH 058/360] Danish translations done. --- resources/lang/da/auth.php | 4 +- resources/lang/da/pagination.php | 4 +- resources/lang/da/validation.php | 98 ++++++++++++++++---------------- 3 files changed, 53 insertions(+), 53 deletions(-) diff --git a/resources/lang/da/auth.php b/resources/lang/da/auth.php index 8eb3d4fc8..a399897f8 100644 --- a/resources/lang/da/auth.php +++ b/resources/lang/da/auth.php @@ -13,7 +13,7 @@ return [ | */ - 'failed' => 'Disse oplysninger stemmer ikke overens med vores data.', - 'throttle' => 'For mange login-forsøg. Vær venlig at prøve igen om :seconds seconds.', + 'failed' => 'Disse oplysninger stemmer ikke overens med nogen konto.', + 'throttle' => 'For mange loginforsøg. Vær venlig at prøve igen om :seconds sekunder.', ]; diff --git a/resources/lang/da/pagination.php b/resources/lang/da/pagination.php index f0fb56aea..d21965d92 100644 --- a/resources/lang/da/pagination.php +++ b/resources/lang/da/pagination.php @@ -13,7 +13,7 @@ return [ | */ - 'previous' => '« Tidligere', - 'next' => 'Næste »', + 'previous' => '« forrige', + 'next' => 'næste »', ]; diff --git a/resources/lang/da/validation.php b/resources/lang/da/validation.php index 490e1c07e..571a64a01 100644 --- a/resources/lang/da/validation.php +++ b/resources/lang/da/validation.php @@ -20,7 +20,7 @@ return [ 'alpha' => ':attribute må kun indeholde bogstaver.', 'alpha_dash' => ':attribute må kun indeholde bogstaver, tal og bindestreger.', 'alpha_num' => ':attribute må kun indeholde bogstaver og tal.', - 'array' => ':attribute skal være en array.', + 'array' => ':attribute skal være en Array.', 'before' => ':attribute skal være en dato før :date.', 'before_or_equal' => ':attribute skal være en dato før, eller det samme som :date.', 'between' => [ @@ -34,60 +34,60 @@ return [ 'date' => ':attribute er ikke en gyldig dato.', 'date_format' => ':attribute matcher ikke formatet :format.', 'different' => ':attribute og :other skal være forskellige.', - 'digits' => ':attribute must be :digits digits.', - 'digits_between' => ':attribute must be between :min and :max digits.', - 'dimensions' => ':attribute has invalid image dimensions.', - 'distinct' => ':attribute field has a duplicate value.', - 'email' => ':attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => ':attribute must be a file.', - 'filled' => ':attribute field must have a value.', - 'image' => ':attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => ':attribute field does not exist in :other.', - 'integer' => ':attribute must be an integer.', - 'ip' => ':attribute must be a valid IP address.', - 'ipv4' => ':attribute must be a valid IPv4 address.', - 'ipv6' => ':attribute must be a valid IPv6 address.', - 'json' => ':attribute must be a valid JSON string.', + 'digits' => ':attribute skal være :digits tal.', + 'digits_between' => ':attribute skal være mellem :min og :max tal.', + 'dimensions' => ':attribute har ugyldige billeddimensioner.', + 'distinct' => ':attribute-felt har en dobbeltværdi.', + 'email' => ':attribute skal være en gyldig emailadresse.', + 'exists' => 'Den valgte :attribute er ugyldig.', + 'file' => ':attribute skal være en fil.', + 'filled' => 'Feltet :attribute skal have en værdi.', + 'image' => ':attribute skal være et billede.', + 'in' => 'Den valgte :attribute er ugyldig.', + 'in_array' => ':attribute feltet findes ikke i :other.', + 'integer' => ':attribute skal være et heltal.', + 'ip' => ':attribute skal være en gyldig IP-adresse.', + 'ipv4' => ':attribute skal være en gyldig IPv4 adresse.', + 'ipv6' => ':attribute skal være en gyldig IPv6 adresse.', + 'json' => ':attribute skal være en gyldig JSON string.', 'max' => [ - 'numeric' => ':attribute may not be greater than :max.', - 'file' => ':attribute may not be greater than :max kilobytes.', - 'string' => ':attribute may not be greater than :max characters.', - 'array' => ':attribute may not have more than :max items.', + 'numeric' => ':attribute må ikke være større end :max.', + 'file' => ':attribute må ikke være større end :max kilobytes.', + 'string' => ':attribute må ikke være større end :max tegn.', + 'array' => ':attribute må ikke have mere end :max elementer.', ], - 'mimes' => ':attribute must be a file of type: :values.', - 'mimetypes' => ':attribute must be a file of type: :values.', + 'mimes' => ':attribute skal være en fil af typen: :values.', + 'mimetypes' => ':attribute skal være en fil af typen: :values.', 'min' => [ - 'numeric' => ':attribute must be at least :min.', - 'file' => ':attribute must be at least :min kilobytes.', - 'string' => ':attribute must be at least :min characters.', - 'array' => ':attribute must have at least :min items.', + 'numeric' => ':attribute skal være mindst :min.', + 'file' => ':attribute skal være mindst :min kilobytes.', + 'string' => ':attribute skal være mindst :min tegn.', + 'array' => ':attribute skal være mindst :min elementer.', ], - 'not_in' => 'The selected :attribute is invalid.', - 'not_regex' => ':attribute format is invalid.', - 'numeric' => ':attribute must be a number.', - 'present' => ':attribute field must be present.', - 'regex' => ':attribute format is invalid.', - 'required' => ':attribute field is required.', - 'required_if' => ':attribute field is required when :other is :value.', - 'required_unless' => ':attribute field is required unless :other is in :values.', - 'required_with' => ':attribute field is required when :values is present.', - 'required_with_all' => ':attribute field is required when :values is present.', - 'required_without' => ':attribute field is required when :values is not present.', - 'required_without_all' => ':attribute field is required when none of :values are present.', - 'same' => ':attribute and :other must match.', + 'not_in' => 'Den valgte :attribute er ugyldig.', + 'not_regex' => ':attribute format er ugyldigt.', + 'numeric' => ':attribute skal være et tal.', + 'present' => ':attribute feltet skal være til stede.', + 'regex' => ':attribute format er ugyldigt.', + 'required' => ':attribute felt er påkrævet.', + 'required_if' => ':attribute felt er påkrævet når :other er :value.', + 'required_unless' => ':attribute felt er påkrævet medmindre :other er i :values.', + 'required_with' => ':attribute felt er påkrævet når :values er tilstede.', + 'required_with_all' => ':attribute felt er påkrævet når :values er tilstede.', + 'required_without' => ':attribute felt er påkrævet når :values ikke er tilstede.', + 'required_without_all' => ':attribute felt er påkrævet når ingen af :values er tilstede.', + 'same' => ':attribute og :other skal være ens.', 'size' => [ - 'numeric' => ':attribute must be :size.', - 'file' => ':attribute must be :size kilobytes.', - 'string' => ':attribute must be :size characters.', - 'array' => ':attribute must contain :size items.', + 'numeric' => ':attribute skal være :size.', + 'file' => ':attribute skal være :size kilobytes.', + 'string' => ':attribute skal være :size tegn.', + 'array' => ':attribute skal indeholde :size elementer.', ], - 'string' => ':attribute must be a string.', - 'timezone' => ':attribute must be a valid zone.', - 'unique' => ':attribute has already been taken.', - 'uploaded' => ':attribute failed to upload.', - 'url' => ':attribute format is invalid.', + 'string' => ':attribute skal være en streng.', + 'timezone' => ':attribute skal være en gyldig zone.', + 'unique' => ':attribute er allerede taget.', + 'uploaded' => ':attribute kunne ikke uploades.', + 'url' => ':attribute format er ugyldigt.', /* |-------------------------------------------------------------------------- From 8148e61415cc9458914f7f8913914eb8dce7a31c Mon Sep 17 00:00:00 2001 From: voss Date: Tue, 29 May 2018 21:47:44 +0100 Subject: [PATCH 059/360] Changed Danish characters to HTML encoded versions. --- resources/lang/da/auth.php | 2 +- resources/lang/da/pagination.php | 2 +- resources/lang/da/passwords.php | 4 +- resources/lang/da/validation.php | 104 +++++++++++++++---------------- 4 files changed, 56 insertions(+), 56 deletions(-) diff --git a/resources/lang/da/auth.php b/resources/lang/da/auth.php index a399897f8..4a14729fd 100644 --- a/resources/lang/da/auth.php +++ b/resources/lang/da/auth.php @@ -14,6 +14,6 @@ return [ */ 'failed' => 'Disse oplysninger stemmer ikke overens med nogen konto.', - 'throttle' => 'For mange loginforsøg. Vær venlig at prøve igen om :seconds sekunder.', + 'throttle' => 'For mange loginforsøg. Vær venlig at prøve igen om :seconds sekunder.', ]; diff --git a/resources/lang/da/pagination.php b/resources/lang/da/pagination.php index d21965d92..c4d70ab5b 100644 --- a/resources/lang/da/pagination.php +++ b/resources/lang/da/pagination.php @@ -14,6 +14,6 @@ return [ */ 'previous' => '« forrige', - 'next' => 'næste »', + 'next' => 'næste »', ]; diff --git a/resources/lang/da/passwords.php b/resources/lang/da/passwords.php index a41bd59ae..366a1643a 100644 --- a/resources/lang/da/passwords.php +++ b/resources/lang/da/passwords.php @@ -13,10 +13,10 @@ return [ | */ - 'password' => 'Adgangskode skal være mindst 6 tegn og skal matche bekræftelsen.', + 'password' => 'Adgangskode skal være mindst 6 tegn og skal matche bekræftelsen.', 'reset' => 'Din adgangskode er blevet nulstillet!', 'sent' => 'Vi har sendt dig en email med et link, hvor du kan nulstille din andgangskode!', - 'token' => 'Dette nulstillingslink er ikke længere gyldigt.', + 'token' => 'Dette nulstillingslink er ikke længere gyldigt.', 'user' => "Vi kan ikke finde en bruger med den emailadresse.", ]; diff --git a/resources/lang/da/validation.php b/resources/lang/da/validation.php index 571a64a01..280a2df9a 100644 --- a/resources/lang/da/validation.php +++ b/resources/lang/da/validation.php @@ -15,76 +15,76 @@ return [ 'accepted' => ':attribute skal accepteres.', 'active_url' => ':attribute er ikke en gyldig URL.', - 'after' => ':attribute skal være en dato efter :date.', - 'after_or_equal' => ':attribute skal være en dato ens med, eller efter :date.', - 'alpha' => ':attribute må kun indeholde bogstaver.', - 'alpha_dash' => ':attribute må kun indeholde bogstaver, tal og bindestreger.', - 'alpha_num' => ':attribute må kun indeholde bogstaver og tal.', - 'array' => ':attribute skal være en Array.', - 'before' => ':attribute skal være en dato før :date.', - 'before_or_equal' => ':attribute skal være en dato før, eller det samme som :date.', + 'after' => ':attribute skal være en dato efter :date.', + 'after_or_equal' => ':attribute skal være en dato ens med, eller efter :date.', + 'alpha' => ':attribute må kun indeholde bogstaver.', + 'alpha_dash' => ':attribute må kun indeholde bogstaver, tal og bindestreger.', + 'alpha_num' => ':attribute må kun indeholde bogstaver og tal.', + 'array' => ':attribute skal være en Array.', + 'before' => ':attribute skal være en dato før :date.', + 'before_or_equal' => ':attribute skal være en dato før, eller det samme som :date.', 'between' => [ - 'numeric' => ':attribute skal være mellem :min og :max.', - 'file' => ':attribute skal være mellem :min og :max kilobytes.', - 'string' => ':attribute skal være mellem :min og :max tegn.', - 'array' => ':attribute skal være mellem :min og :max elementer.', + 'numeric' => ':attribute skal være mellem :min og :max.', + 'file' => ':attribute skal være mellem :min og :max kilobytes.', + 'string' => ':attribute skal være mellem :min og :max tegn.', + 'array' => ':attribute skal være mellem :min og :max elementer.', ], - 'boolean' => ':attribute felt skal være sandt eller falsk.', - 'confirmed' => ':attribute bekræftelse matcher ikke.', + 'boolean' => ':attribute felt skal være sandt eller falsk.', + 'confirmed' => ':attribute bekræftelse matcher ikke.', 'date' => ':attribute er ikke en gyldig dato.', 'date_format' => ':attribute matcher ikke formatet :format.', - 'different' => ':attribute og :other skal være forskellige.', - 'digits' => ':attribute skal være :digits tal.', - 'digits_between' => ':attribute skal være mellem :min og :max tal.', + 'different' => ':attribute og :other skal være forskellige.', + 'digits' => ':attribute skal være :digits tal.', + 'digits_between' => ':attribute skal være mellem :min og :max tal.', 'dimensions' => ':attribute har ugyldige billeddimensioner.', - 'distinct' => ':attribute-felt har en dobbeltværdi.', - 'email' => ':attribute skal være en gyldig emailadresse.', + 'distinct' => ':attribute-felt har en dobbeltværdi.', + 'email' => ':attribute skal være en gyldig emailadresse.', 'exists' => 'Den valgte :attribute er ugyldig.', - 'file' => ':attribute skal være en fil.', - 'filled' => 'Feltet :attribute skal have en værdi.', - 'image' => ':attribute skal være et billede.', + 'file' => ':attribute skal være en fil.', + 'filled' => 'Feltet :attribute skal have en værdi.', + 'image' => ':attribute skal være et billede.', 'in' => 'Den valgte :attribute er ugyldig.', 'in_array' => ':attribute feltet findes ikke i :other.', - 'integer' => ':attribute skal være et heltal.', - 'ip' => ':attribute skal være en gyldig IP-adresse.', - 'ipv4' => ':attribute skal være en gyldig IPv4 adresse.', - 'ipv6' => ':attribute skal være en gyldig IPv6 adresse.', - 'json' => ':attribute skal være en gyldig JSON string.', + 'integer' => ':attribute skal være et heltal.', + 'ip' => ':attribute skal være en gyldig IP-adresse.', + 'ipv4' => ':attribute skal være en gyldig IPv4 adresse.', + 'ipv6' => ':attribute skal være en gyldig IPv6 adresse.', + 'json' => ':attribute skal være en gyldig JSON string.', 'max' => [ - 'numeric' => ':attribute må ikke være større end :max.', - 'file' => ':attribute må ikke være større end :max kilobytes.', - 'string' => ':attribute må ikke være større end :max tegn.', - 'array' => ':attribute må ikke have mere end :max elementer.', + 'numeric' => ':attribute må ikke være større end :max.', + 'file' => ':attribute må ikke være større end :max kilobytes.', + 'string' => ':attribute må ikke være større end :max tegn.', + 'array' => ':attribute må ikke have mere end :max elementer.', ], - 'mimes' => ':attribute skal være en fil af typen: :values.', - 'mimetypes' => ':attribute skal være en fil af typen: :values.', + 'mimes' => ':attribute skal være en fil af typen: :values.', + 'mimetypes' => ':attribute skal være en fil af typen: :values.', 'min' => [ - 'numeric' => ':attribute skal være mindst :min.', - 'file' => ':attribute skal være mindst :min kilobytes.', - 'string' => ':attribute skal være mindst :min tegn.', - 'array' => ':attribute skal være mindst :min elementer.', + 'numeric' => ':attribute skal være mindst :min.', + 'file' => ':attribute skal være mindst :min kilobytes.', + 'string' => ':attribute skal være mindst :min tegn.', + 'array' => ':attribute skal være mindst :min elementer.', ], 'not_in' => 'Den valgte :attribute er ugyldig.', 'not_regex' => ':attribute format er ugyldigt.', - 'numeric' => ':attribute skal være et tal.', - 'present' => ':attribute feltet skal være til stede.', + 'numeric' => ':attribute skal være et tal.', + 'present' => ':attribute feltet skal være til stede.', 'regex' => ':attribute format er ugyldigt.', - 'required' => ':attribute felt er påkrævet.', - 'required_if' => ':attribute felt er påkrævet når :other er :value.', - 'required_unless' => ':attribute felt er påkrævet medmindre :other er i :values.', - 'required_with' => ':attribute felt er påkrævet når :values er tilstede.', - 'required_with_all' => ':attribute felt er påkrævet når :values er tilstede.', - 'required_without' => ':attribute felt er påkrævet når :values ikke er tilstede.', - 'required_without_all' => ':attribute felt er påkrævet når ingen af :values er tilstede.', - 'same' => ':attribute og :other skal være ens.', + 'required' => ':attribute felt er påkrævet.', + 'required_if' => ':attribute felt er påkrævet når :other er :value.', + 'required_unless' => ':attribute felt er påkrævet medmindre :other er i :values.', + 'required_with' => ':attribute felt er påkrævet når :values er tilstede.', + 'required_with_all' => ':attribute felt er påkrævet når :values er tilstede.', + 'required_without' => ':attribute felt er påkrævet når :values ikke er tilstede.', + 'required_without_all' => ':attribute felt er påkrævet når ingen af :values er tilstede.', + 'same' => ':attribute og :other skal være ens.', 'size' => [ - 'numeric' => ':attribute skal være :size.', - 'file' => ':attribute skal være :size kilobytes.', - 'string' => ':attribute skal være :size tegn.', + 'numeric' => ':attribute skal være :size.', + 'file' => ':attribute skal være :size kilobytes.', + 'string' => ':attribute skal være :size tegn.', 'array' => ':attribute skal indeholde :size elementer.', ], - 'string' => ':attribute skal være en streng.', - 'timezone' => ':attribute skal være en gyldig zone.', + 'string' => ':attribute skal være en streng.', + 'timezone' => ':attribute skal være en gyldig zone.', 'unique' => ':attribute er allerede taget.', 'uploaded' => ':attribute kunne ikke uploades.', 'url' => ':attribute format er ugyldigt.', From 0f8fe5d3d2b20c8e0af510e6b0aeacdf375e2913 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 19:47:20 -0600 Subject: [PATCH 060/360] Update LikePipeline Do not send notifications to self --- app/Jobs/LikePipeline/LikePipeline.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/Jobs/LikePipeline/LikePipeline.php b/app/Jobs/LikePipeline/LikePipeline.php index a7fb71d57..8e57072dd 100644 --- a/app/Jobs/LikePipeline/LikePipeline.php +++ b/app/Jobs/LikePipeline/LikePipeline.php @@ -37,6 +37,10 @@ class LikePipeline implements ShouldQueue $status = $this->like->status; $actor = $this->like->actor; + if($actor->id === $status->profile_id) { + return true; + } + try { $notification = new Notification; From f1c1c9e6cc6a835df110fbe897c14665788c5e46 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:30:39 -0600 Subject: [PATCH 061/360] Update home page --- resources/views/welcome.blade.php | 105 +++--------------------------- 1 file changed, 9 insertions(+), 96 deletions(-) diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php index 68bf29952..9a140cf63 100644 --- a/resources/views/welcome.blade.php +++ b/resources/views/welcome.blade.php @@ -1,97 +1,10 @@ - - - - - - +@extends('layouts.app') - PixelFed - - - - - - - - -
- @if (Route::has('login')) - - @endif - -
-
- PixelFed -
-

Federated Image Sharing

- - -
-
- - +@section('content') +
+
+

Federated Image Sharing

+

Powered by ActivityPub and the fediverse.

+
+
+@endsection From 1dfa2317b467fe1e9089e54fd6d5757c611c23d7 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:31:04 -0600 Subject: [PATCH 062/360] Add public timeline view --- resources/views/timeline/public.blade.php | 53 +++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 resources/views/timeline/public.blade.php diff --git a/resources/views/timeline/public.blade.php b/resources/views/timeline/public.blade.php new file mode 100644 index 000000000..94488429e --- /dev/null +++ b/resources/views/timeline/public.blade.php @@ -0,0 +1,53 @@ +@extends('layouts.app') + +@push('scripts') + +@endpush + +@section('content') + +
+
+ @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif +
+
New Post
+
+
+ @csrf +
+ + +
+
+ + +
+ +
+
+
+ +
+ @foreach($timeline as $item) + + @include('status.template') + + @endforeach +
+
+ {{$timeline->links()}} +
+ +
+
+ + +@endsection \ No newline at end of file From 0d32c28886d5bad6c2247eeea99f71c370732e56 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:32:16 -0600 Subject: [PATCH 063/360] Update personal timeline view --- resources/views/timeline/personal.blade.php | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/resources/views/timeline/personal.blade.php b/resources/views/timeline/personal.blade.php index b66381ad7..134fd37f1 100644 --- a/resources/views/timeline/personal.blade.php +++ b/resources/views/timeline/personal.blade.php @@ -17,16 +17,6 @@
@endif - {{----}}
New Post
From 147e6395ea905c048cc3ffa8c0394483b0d5066f Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:32:46 -0600 Subject: [PATCH 064/360] Update status template --- resources/views/status/template.blade.php | 70 +++++++++++++++++------ 1 file changed, 52 insertions(+), 18 deletions(-) diff --git a/resources/views/status/template.blade.php b/resources/views/status/template.blade.php index 7e6914d48..401692c8c 100644 --- a/resources/views/status/template.blade.php +++ b/resources/views/status/template.blade.php @@ -1,43 +1,77 @@ -
+
- + + +
- + - +
-

+

- {{$item->profile->username}} + {{$item->profile->username}} - {{$item->caption}} + {!! $item->rendered ?? e($item->caption) !!}

-
-
-

{{$item->created_at->diffForHumans()}}

+ @if($item->comments()->count() > 3) + + @endif +
+ @if(isset($showSingleComment) && $showSingleComment === true) +

+ {{$status->profile->username}} + {!!$status->rendered!!}{{$status->created_at->diffForHumans(null, true, true, true)}} +

+ @else + @foreach($item->comments->reverse()->take(3) as $comment) +

+ {{$comment->profile->username}} + {{ str_limit($comment->caption, 125) }} +

+ @endforeach + @endif +
+
\ No newline at end of file From f657bba76b36964c5c480f7648c4ba62c622a415 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:33:27 -0600 Subject: [PATCH 065/360] Update status show view --- resources/views/status/show.blade.php | 73 +++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 resources/views/status/show.blade.php diff --git a/resources/views/status/show.blade.php b/resources/views/status/show.blade.php new file mode 100644 index 000000000..667eabc05 --- /dev/null +++ b/resources/views/status/show.blade.php @@ -0,0 +1,73 @@ +@extends('layouts.app') + +@section('content') + +
+
+ +
+
+
+
+ +
+
+
+
+ +
+ +
+
+
+
+ {{$status->profile->username}} +

+ {!! $status->rendered ?? e($status->caption) !!} +

+
+ @foreach($status->comments->reverse()->take(10) as $item) +

+ {{$item->profile->username}} + {!!$item->rendered!!} {{$item->created_at->diffForHumans(null, true, true ,true)}} +

+ @endforeach +
+
+
+
+
+ + + + + +
+ + +
+
+
+ @csrf + + +
+
+
+
+
+
+
+
+ +@endsection \ No newline at end of file From 5a415422915817c9883e4143e2c28e4f17efebfb Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:33:59 -0600 Subject: [PATCH 066/360] Add comment/reply permalink view --- resources/views/status/reply.blade.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 resources/views/status/reply.blade.php diff --git a/resources/views/status/reply.blade.php b/resources/views/status/reply.blade.php new file mode 100644 index 000000000..4896d74f8 --- /dev/null +++ b/resources/views/status/reply.blade.php @@ -0,0 +1,23 @@ +@extends('layouts.app') + +@section('content') + +
+
+ @php($item = $status->parent()) + @php($showSingleComment = true) + @include('status.template') +
+
+ +@endsection + +@push('scripts') + +@endpush \ No newline at end of file From fb8a17ad6b8f40f199746a8639e74a475fbacecc Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:35:05 -0600 Subject: [PATCH 067/360] Add site blade views --- resources/views/site/bannedinstances.blade.php | 9 +++++++++ resources/views/site/features.blade.php | 9 +++++++++ resources/views/site/fediverse.blade.php | 9 +++++++++ resources/views/site/help.blade.php | 9 +++++++++ resources/views/site/libraries.blade.php | 9 +++++++++ resources/views/site/opensource.blade.php | 9 +++++++++ resources/views/site/platform.blade.php | 9 +++++++++ resources/views/site/terms.blade.php | 9 +++++++++ 8 files changed, 72 insertions(+) create mode 100644 resources/views/site/bannedinstances.blade.php create mode 100644 resources/views/site/features.blade.php create mode 100644 resources/views/site/fediverse.blade.php create mode 100644 resources/views/site/help.blade.php create mode 100644 resources/views/site/libraries.blade.php create mode 100644 resources/views/site/opensource.blade.php create mode 100644 resources/views/site/platform.blade.php create mode 100644 resources/views/site/terms.blade.php diff --git a/resources/views/site/bannedinstances.blade.php b/resources/views/site/bannedinstances.blade.php new file mode 100644 index 000000000..aca13d885 --- /dev/null +++ b/resources/views/site/bannedinstances.blade.php @@ -0,0 +1,9 @@ +@extends('site.partial.template') + +@section('section') + +
+

Banned Instances

+
+
+@endsection \ No newline at end of file diff --git a/resources/views/site/features.blade.php b/resources/views/site/features.blade.php new file mode 100644 index 000000000..6d7ea4cdb --- /dev/null +++ b/resources/views/site/features.blade.php @@ -0,0 +1,9 @@ +@extends('site.partial.template') + +@section('section') + +
+

Features

+
+
+@endsection \ No newline at end of file diff --git a/resources/views/site/fediverse.blade.php b/resources/views/site/fediverse.blade.php new file mode 100644 index 000000000..7858c3509 --- /dev/null +++ b/resources/views/site/fediverse.blade.php @@ -0,0 +1,9 @@ +@extends('site.partial.template') + +@section('section') + +
+

Fediverse

+
+
+@endsection \ No newline at end of file diff --git a/resources/views/site/help.blade.php b/resources/views/site/help.blade.php new file mode 100644 index 000000000..59a9cb2ae --- /dev/null +++ b/resources/views/site/help.blade.php @@ -0,0 +1,9 @@ +@extends('site.partial.template') + +@section('section') + +
+

Help

+
+
+@endsection \ No newline at end of file diff --git a/resources/views/site/libraries.blade.php b/resources/views/site/libraries.blade.php new file mode 100644 index 000000000..97ded54f6 --- /dev/null +++ b/resources/views/site/libraries.blade.php @@ -0,0 +1,9 @@ +@extends('site.partial.template') + +@section('section') + +
+

Libraries

+
+
+@endsection \ No newline at end of file diff --git a/resources/views/site/opensource.blade.php b/resources/views/site/opensource.blade.php new file mode 100644 index 000000000..1f62e0f97 --- /dev/null +++ b/resources/views/site/opensource.blade.php @@ -0,0 +1,9 @@ +@extends('site.partial.template') + +@section('section') + +
+

Open Source

+
+
+@endsection \ No newline at end of file diff --git a/resources/views/site/platform.blade.php b/resources/views/site/platform.blade.php new file mode 100644 index 000000000..e8f71bb9e --- /dev/null +++ b/resources/views/site/platform.blade.php @@ -0,0 +1,9 @@ +@extends('site.partial.template') + +@section('section') + +
+

Platform/API Terms Of Use

+
+
+@endsection \ No newline at end of file diff --git a/resources/views/site/terms.blade.php b/resources/views/site/terms.blade.php new file mode 100644 index 000000000..383eb331c --- /dev/null +++ b/resources/views/site/terms.blade.php @@ -0,0 +1,9 @@ +@extends('site.partial.template') + +@section('section') + +
+

Terms Of Use

+
+
+@endsection \ No newline at end of file From 870ac92a0a8ff686da8faa7296f1f8f6f5f4a2ce Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:35:31 -0600 Subject: [PATCH 068/360] Update settings blade template --- resources/views/settings/template.blade.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/resources/views/settings/template.blade.php b/resources/views/settings/template.blade.php index 39e155a17..2c7fb2a94 100644 --- a/resources/views/settings/template.blade.php +++ b/resources/views/settings/template.blade.php @@ -14,6 +14,15 @@ {{ session('status') }}
@endif + @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif @yield('section')
From e6a1e364d74e1cd6dc7a10a10ac7309126a7fbfd Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:35:49 -0600 Subject: [PATCH 069/360] Update password settings view --- resources/views/settings/password.blade.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/views/settings/password.blade.php b/resources/views/settings/password.blade.php index d560c9272..0cc584cba 100644 --- a/resources/views/settings/password.blade.php +++ b/resources/views/settings/password.blade.php @@ -11,20 +11,20 @@
- +

- +
- +

From 1e9fe8db2a4ae04f5d987de7300588dd013ecade Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:36:39 -0600 Subject: [PATCH 070/360] Update settings import view The instagram import tool is not yet ready --- resources/views/settings/import/home.blade.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/resources/views/settings/import/home.blade.php b/resources/views/settings/import/home.blade.php index 8d362e4d0..a546556af 100644 --- a/resources/views/settings/import/home.blade.php +++ b/resources/views/settings/import/home.blade.php @@ -12,11 +12,12 @@

Supported Services

-

- Import from Instagram -

+

No services are supported at the moment.


Coming Soon

+

+ Import from Instagram +

Import from Mastodon

From 606979eacaf9e797d49820b859580f549e1c3b5f Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:37:10 -0600 Subject: [PATCH 071/360] Add setting blade views --- resources/views/settings/applications.blade.php | 13 +++++++++++++ resources/views/settings/avatar.blade.php | 13 +++++++++++++ resources/views/settings/dataexport.blade.php | 13 +++++++++++++ resources/views/settings/developers.blade.php | 13 +++++++++++++ resources/views/settings/email.blade.php | 13 +++++++++++++ 5 files changed, 65 insertions(+) create mode 100644 resources/views/settings/applications.blade.php create mode 100644 resources/views/settings/avatar.blade.php create mode 100644 resources/views/settings/dataexport.blade.php create mode 100644 resources/views/settings/developers.blade.php create mode 100644 resources/views/settings/email.blade.php diff --git a/resources/views/settings/applications.blade.php b/resources/views/settings/applications.blade.php new file mode 100644 index 000000000..d49b55b6c --- /dev/null +++ b/resources/views/settings/applications.blade.php @@ -0,0 +1,13 @@ +@extends('settings.template') + +@section('section') + +
+

Applications

+
+
+
+ Coming Soon +
+ +@endsection \ No newline at end of file diff --git a/resources/views/settings/avatar.blade.php b/resources/views/settings/avatar.blade.php new file mode 100644 index 000000000..569160214 --- /dev/null +++ b/resources/views/settings/avatar.blade.php @@ -0,0 +1,13 @@ +@extends('settings.template') + +@section('section') + +
+

Avatar Settings

+
+
+
+ Coming Soon +
+ +@endsection \ No newline at end of file diff --git a/resources/views/settings/dataexport.blade.php b/resources/views/settings/dataexport.blade.php new file mode 100644 index 000000000..51f4ed1da --- /dev/null +++ b/resources/views/settings/dataexport.blade.php @@ -0,0 +1,13 @@ +@extends('settings.template') + +@section('section') + +
+

Data Export

+
+
+
+ Coming Soon +
+ +@endsection \ No newline at end of file diff --git a/resources/views/settings/developers.blade.php b/resources/views/settings/developers.blade.php new file mode 100644 index 000000000..5dc64cea9 --- /dev/null +++ b/resources/views/settings/developers.blade.php @@ -0,0 +1,13 @@ +@extends('settings.template') + +@section('section') + +
+

Developers

+
+
+
+ Coming Soon +
+ +@endsection \ No newline at end of file diff --git a/resources/views/settings/email.blade.php b/resources/views/settings/email.blade.php new file mode 100644 index 000000000..60bbd8768 --- /dev/null +++ b/resources/views/settings/email.blade.php @@ -0,0 +1,13 @@ +@extends('settings.template') + +@section('section') + +
+

Email Settings

+
+
+
+ Coming Soon +
+ +@endsection \ No newline at end of file From 7ae21ab26b70e454548328e3400f631d1f40b855 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:38:21 -0600 Subject: [PATCH 072/360] Add profile view --- resources/views/profile/show.blade.php | 98 ++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 resources/views/profile/show.blade.php diff --git a/resources/views/profile/show.blade.php b/resources/views/profile/show.blade.php new file mode 100644 index 000000000..d540e85d1 --- /dev/null +++ b/resources/views/profile/show.blade.php @@ -0,0 +1,98 @@ +@extends('layouts.app') + +@section('content') + +
+ +
+
+
+ +
+
+
+
+
+ {{$user->username}} + @if($owner == true) + + Settings + + @elseif ($following == true) + + + + @elseif ($following == false) + + + + @endif + {{-- TODO: Implement action dropdown + + + --}} +
+
+
+ {{$user->statuses()->count()}} + Posts +
+ +
+ {{$user->followingCount(true)}} + Following +
+
+

+ {{$user->name}} +

+
+
+
+ +
+ @if($timeline->count() > 0) + @foreach($timeline as $status) +
+ + + +
+ @endforeach + @else +
+
+
+
+

{{ __('profile.emptyTimeline') }}

+
+
+
+
+ @endif +
+ +
+ +@endsection \ No newline at end of file From 51053556ba999abbd798227b427126678a0ab259 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:42:40 -0600 Subject: [PATCH 073/360] Add nav view --- resources/views/layouts/partial/nav.blade.php | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 resources/views/layouts/partial/nav.blade.php diff --git a/resources/views/layouts/partial/nav.blade.php b/resources/views/layouts/partial/nav.blade.php new file mode 100644 index 000000000..729078be9 --- /dev/null +++ b/resources/views/layouts/partial/nav.blade.php @@ -0,0 +1,66 @@ + From c2f1af51b268361b4d32ac9fc12f41e2a829f386 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:42:46 -0600 Subject: [PATCH 074/360] Add footer view --- .../views/layouts/partial/footer.blade.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 resources/views/layouts/partial/footer.blade.php diff --git a/resources/views/layouts/partial/footer.blade.php b/resources/views/layouts/partial/footer.blade.php new file mode 100644 index 000000000..7cc7f6551 --- /dev/null +++ b/resources/views/layouts/partial/footer.blade.php @@ -0,0 +1,17 @@ + \ No newline at end of file From 3ec72aff04836aa0a2781a44e8734c94f9a854ff Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:44:12 -0600 Subject: [PATCH 075/360] Update main layout view --- resources/views/layouts/app.blade.php | 60 ++++----------------------- 1 file changed, 8 insertions(+), 52 deletions(-) diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index f9988c49a..e25fe9249 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -16,60 +16,16 @@ @stack('styles') - - -
- - -
- @yield('content') -
+ + @include('layouts.partial.nav') +
+ @yield('content') +
+
+ @include('layouts.partial.footer')
- + @stack('scripts') From 67daf7c4035f30c8bef8f8c09cfd30da7534e0e5 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:44:46 -0600 Subject: [PATCH 076/360] Add discover view --- resources/views/discover/home.blade.php | 42 +++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 resources/views/discover/home.blade.php diff --git a/resources/views/discover/home.blade.php b/resources/views/discover/home.blade.php new file mode 100644 index 000000000..e5fedc366 --- /dev/null +++ b/resources/views/discover/home.blade.php @@ -0,0 +1,42 @@ +@extends('layouts.app') + +@section('content') +
+
+

Discover People

+
+ @foreach($people as $profile) +
+
+
+
+ +
+

{{$profile->username}}

+

{{$profile->name}}

+ +
+
+
+ @endforeach +
+
+
+

Explore

+
+ @foreach($posts as $status) +
+ + + +
+ @endforeach +
+
+
+ +@endsection \ No newline at end of file From dba5a5561c1698ecefd7099f853fc9acd22e932c Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:46:27 -0600 Subject: [PATCH 077/360] Update register view --- public/img/Macbook__ipad__iphone.svg | Bin 0 -> 4087 bytes resources/views/auth/register.blade.php | 55 ++++++++++++------------ 2 files changed, 28 insertions(+), 27 deletions(-) create mode 100644 public/img/Macbook__ipad__iphone.svg diff --git a/public/img/Macbook__ipad__iphone.svg b/public/img/Macbook__ipad__iphone.svg new file mode 100644 index 0000000000000000000000000000000000000000..ea7eec9c75a7f0365690d27e1f707e46844002d5 GIT binary patch literal 4087 zcmd^CTW{Mo6n^io;MA8EuxXN#cnRzjo!S%wRG>h&m%S-AYYTBKPgde|zkVMtvX#Vb z(sggM0sDLuc@B9lACIPQ?ylG5*0#I4*~}77Swie)-Yn|Pa+dt@`^8u%WY<-jMYV1= zc9v|KF#z(_VuD$%@S?Y_AVhSTQ67LEXi`=;B9U9zczQXgb_wCg!yzlGKY?@~K+d zF}%0y+UCkfWMg|YjxoXGFZFuu!sQ-1dEDNtG27nSO|w{Ffj{C|_jQZWkDr~^=nU_W zV9V|P(bTf~YTFNObF)oI*H)X|m!`d*C0<WObRbD%5(~eQz=ps5zDACqzuTfOGy!sTS?px zANc_i)do=Z76U8IFFTj`g&z4uz3{Ac2WcWM8&>)sQ6 zv``o!S}!l&x$h&7e_mBv8$6DTaDECI;oRmv)Bla@#_&~0{Qu5*t(|v1IJi{5xAV328(25r19M>;&n)}*7x+H%)01UC zNS(dCL|CE1-wK1`c;NeiPU5mD&5*w?lQ<%c@MfoC>p3Qb^s?!?26j#oKXNhBzIUdV zUF7axHG?f2Gsg4SJt~tKqnbOqr;L*l(Ggll1cs(E;}NkDU}iGHM#xhp1nz*5pqbF1 z{}GlW-kheX%L13a?!T1UP|jSc6w)xNq=YDqz#tOEujx@xRrU}z@?5!P?rM_GI5UDs zB`K0A?&<#SV;cCApNP?Y_CHDSJ_HAvXB0OPQX9v>-bE&0+z*6XrmP1o0eUApueP&f z_t#C;;*vjkgAA+J+xj_HGmQ5tT(0?YPDb51j%P z8aE)s7i8^q;IZZ;>JOmo%?DWYyNgqC2*2JPAgV2gC%XrpN!9d? znL#DtMaWUsH(HECB`JldQiWc)aH2$caDrUP(H8@0lRCr@uK-H4?}j6~0TzHMm?pv; z{k99eQ$uDVMO;LxBsDyO)C0*+=zrrtdE6v +
-
+
-
{{ __('Register') }}
+
+

A Photo Sharing Experience For Everyone

+
+ +
+
+
+
+
+
+
{{ __('Register a new account') }}
-
+ @csrf
- - -
- +
+ @if ($errors->has('name')) @@ -26,10 +34,8 @@
- - -
- +
+ @if ($errors->has('username')) @@ -40,10 +46,8 @@
- - -
- +
+ @if ($errors->has('email')) @@ -54,10 +58,8 @@
- - -
- +
+ @if ($errors->has('password')) @@ -68,20 +70,19 @@
- - -
- +
+
-
-
-
+

By signing up, you agree to our Terms, Data Policy and Cookies Policy.

From a5061c653d866df7fafd68ad9b61217a08c08c10 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:46:59 -0600 Subject: [PATCH 078/360] Update password reset views --- .../views/auth/passwords/email.blade.php | 24 ++++++++++++------- .../views/auth/passwords/reset.blade.php | 4 ++-- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/resources/views/auth/passwords/email.blade.php b/resources/views/auth/passwords/email.blade.php index 4d4690073..5bfda773e 100644 --- a/resources/views/auth/passwords/email.blade.php +++ b/resources/views/auth/passwords/email.blade.php @@ -1,11 +1,11 @@ @extends('layouts.app') @section('content') -
+
-
+
-
{{ __('Reset Password') }}
+
{{ __('Reset Password') }}
@if (session('status')) @@ -18,10 +18,8 @@ @csrf
- - -
- +
+ @if ($errors->has('email')) @@ -32,8 +30,8 @@
-
-
@@ -41,6 +39,14 @@
+ +
diff --git a/resources/views/auth/passwords/reset.blade.php b/resources/views/auth/passwords/reset.blade.php index 292f30241..ad9b82063 100644 --- a/resources/views/auth/passwords/reset.blade.php +++ b/resources/views/auth/passwords/reset.blade.php @@ -1,9 +1,9 @@ @extends('layouts.app') @section('content') -
+
-
+
{{ __('Reset Password') }}
From 60c1f272e08f005bf1b0f70a779937c1e4b824db Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:47:11 -0600 Subject: [PATCH 079/360] Update login view --- resources/views/auth/login.blade.php | 37 ++++++++++++++++------------ 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index 984e9abb5..c09b128f2 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -1,21 +1,20 @@ @extends('layouts.app') @section('content') -
+
-
+
-
{{ __('Login') }}
+
{{ __('Login') }}
-
+ @csrf
- -
- +
+ @if ($errors->has('email')) @@ -26,10 +25,9 @@
- -
- +
+ @if ($errors->has('password')) @@ -40,7 +38,7 @@
-
+
-
- - - {{ __('Forgot Your Password?') }} -
+
From ff32f51ee5cd32c55d726996b4045703dc6957c5 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:48:07 -0600 Subject: [PATCH 080/360] Update user dashboard view --- resources/views/home.blade.php | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 223d77ec3..740323892 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -1,8 +1,8 @@ @extends('layouts.app') @section('content') -
-
+
+
Dashboard
@@ -14,10 +14,24 @@
@endif - You are logged in! +

Welcome to {{config('app.name')}}!

+ + +
+ Take me to my timeline +
+
@endsection + +@push('meta') + +@endpush + + +@push('styles') +@endpush From 9767bec6603a08abd7064a866642daab37a38391 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:49:25 -0600 Subject: [PATCH 081/360] Update admin dashboard views --- resources/views/admin/statuses/home.blade.php | 12 ++++++------ resources/views/admin/users/home.blade.php | 6 +----- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/resources/views/admin/statuses/home.blade.php b/resources/views/admin/statuses/home.blade.php index a627d6d0e..f3f458556 100644 --- a/resources/views/admin/statuses/home.blade.php +++ b/resources/views/admin/statuses/home.blade.php @@ -12,7 +12,7 @@ # Username - Caption + Likes Storage Created @@ -25,19 +25,19 @@ {{$status->id}} - {{$status->profile->username}} - {{str_limit($status->caption, 30)}} + {{$status->profile->username}} + {{$status->likes()->count()}} @if(!$status->media_path) - 0 + 0 @else
{{$status->firstMedia()->size}}
@endif - {{$status->created_at->diffForHumans()}} + {{$status->created_at->diffForHumans(null, true, true, true)}} @endforeach -
+
{{$statuses->links()}}
@endsection diff --git a/resources/views/admin/users/home.blade.php b/resources/views/admin/users/home.blade.php index d0077574f..e19c98ff7 100644 --- a/resources/views/admin/users/home.blade.php +++ b/resources/views/admin/users/home.blade.php @@ -11,8 +11,6 @@ # - Username - Email Statuses Storage Role @@ -27,8 +25,6 @@ {{$user->id}} - {{$user->username}} - {{$user->email}} {{$user->profile->statuses->count()}}

{!!$user->is_admin ? 'admin' : 'member'!!} @@ -37,7 +33,7 @@ @endforeach -
+
{{$users->links()}}
@endsection From c6a4882a80513b697d40a4de096e559b618d4263 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:49:50 -0600 Subject: [PATCH 082/360] Update notification localization file --- resources/lang/en/notification.php | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/lang/en/notification.php b/resources/lang/en/notification.php index 7e5bb85e3..99b6ed099 100644 --- a/resources/lang/en/notification.php +++ b/resources/lang/en/notification.php @@ -3,5 +3,6 @@ return [ 'likedPhoto' => 'liked your photo.', + 'startedFollowingYou' => 'started following you.', ]; \ No newline at end of file From 17a04ed62e1055162ca92402c7dbe669f9dfad41 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:50:06 -0600 Subject: [PATCH 083/360] Update custom SASS --- resources/assets/sass/custom.scss | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/resources/assets/sass/custom.scss b/resources/assets/sass/custom.scss index 0a0a549b6..666ca087f 100644 --- a/resources/assets/sass/custom.scss +++ b/resources/assets/sass/custom.scss @@ -8,6 +8,12 @@ body, button, input, textarea { box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04); } +.bg-pixelfed { + background:#10c5f8; + background:-webkit-gradient(linear,left top,right bottom,from(#6736dd),to(#10c5f8)); + background:linear-gradient(to bottom right,#6736dd,#10c5f8); +} + @media (min-width: 1200px) { .container { max-width: 935px; From 53c4c50d23d9da16e917ec6e01b310d3922e12e9 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:51:57 -0600 Subject: [PATCH 084/360] Update admin dashboard --- resources/views/admin/home.blade.php | 113 +++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 resources/views/admin/home.blade.php diff --git a/resources/views/admin/home.blade.php b/resources/views/admin/home.blade.php new file mode 100644 index 000000000..e96459040 --- /dev/null +++ b/resources/views/admin/home.blade.php @@ -0,0 +1,113 @@ +@extends('admin.partial.template') + +@section('section') +
+

Dashboard

+
+ +
+ +
+ Hello, {{Auth::user()->name}} +
+ +
+
+
+
+

0

+

Alerts

+
+
+
+ +
+
+
+

{{App\Util\Lexer\PrettyNumber::convert(App\Status::whereLocal(true)->count())}}

+

Local Statuses

+
+
+
+ +
+
+
+

{{App\Util\Lexer\PrettyNumber::convert(App\Status::count())}}

+

All Statuses

+
+
+
+
+ +
+
+
+
+

{{App\Util\Lexer\PrettyNumber::convert(App\Like::count())}}

+

Likes

+
+
+
+ +
+
+
+

{{App\Util\Lexer\PrettyNumber::convert(App\Profile::count())}}

+

Profiles

+
+
+
+ +
+
+
+

{{App\Util\Lexer\PrettyNumber::convert(App\User::count())}}

+

Users

+
+
+
+
+ +
+
+
+
+

{{App\Util\Lexer\PrettyNumber::convert(App\Status::whereNotNull('url')->distinct('url')->count())}}

+

Remote Instances

+
+
+
+ +
+
+
+

{{App\Util\Lexer\PrettyNumber::convert(App\Media::count())}}

+

Photos Uploaded

+
+
+
+ @php($filesum = filesize(storage_path('app/public/m/'))) +
+
+
+

{{App\Media::sum('size')}} bytes

+

Storage Used

+
+
+
+
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file From 2eaf1df97c94856000cc89b1a28c23f9dc93b5bb Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:57:27 -0600 Subject: [PATCH 085/360] Update compiled assets --- public/css/app.css | Bin 202327 -> 157393 bytes public/js/app.js | Bin 1070383 -> 305888 bytes public/js/timeline.js | Bin 0 -> 709 bytes public/mix-manifest.json | Bin 70 -> 184 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/js/timeline.js diff --git a/public/css/app.css b/public/css/app.css index 84adafeaa2bd034c8cc098fc75ca2a2d6d620a82..dcd6775ae8c071e5acbc5c723785aea16600deb3 100644 GIT binary patch literal 157393 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 gS*?=R^<*?Hoy6k0CJEA$bs2ew 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 ACIA2c literal 202327 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
OO{(Q*oXqSKB^m?<=kFDFZ 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%0DTkiixM$@z6Im6I+XCa z6-3}k1rm6fR^a)1pi@22<$6WuI{;jifr0ZafGtWw>w#Cv@xHZ6HbL{thhUQeB-k>w zVhbDqP8|R)cQ9~)2hc@XBy@oZ;6;fjyugC{oRzeM&#xu3YAWzDt-$m3Kqs|~miuLF zTP*kv0H+R%dal{)E(fc|w*a;%3Bl$XU=@lL?8`shr>0IzW8_^J2)pXa821doZZZMB z(nR~7Zv%jnjgyOYKi>xwCm$yrL0NUFFZUN4oILX8CRWC6u2(PrG(qNbZAxG0gs!7K z&9u*DOzV}7dOcHruc(csBR|aKwcvu#5wq4N4GBnP4 z>(3Nu&B}StE>`A|kVT0AT#$%@i!3+|n=wrI+!8JHq{`DOtPmSL-vIE`0PvR4Q&01U zY+)DVFtPK~0JovnbdY6wiGL|zyQqD0L(H2V-{H8T^i(&s0AM27Nnuv0tY5% z(+nf$*Jg0j)iU0pOQ~@4<)Ef=P|M^>%{KtEAigp49Y8EdL5R8fBlEJFnWl90@U@dQFtB1>d`r%6`hGvP%DI$lpD!6 zlPjyp0>sn;y(_mcVv)(LcGmMq+#(myi&9Z~kq0xh`ZZ(d77altWk*ua)P~S^06}#C z!Q3Gc^gRGD%3=cOn}A=Gi1G6+7@rlggwL%Y0#7QCz{|7(&({N;>VYoTD>~l+;Gzr+ zoNobaQ4)g9H(+R1$tGxi`4DVUfCO8nR&0R-z^Mbk5flg`}t@q2=HsAFf08Ski^<1-m(R!Z)OOdN4A=um;unNTz z_T}q+ia4!}k#}Jr?5ay+UGFbUka=mMeb2W6Kz@0)+A3|V`}scTe3Orpj-af%@b+M1 z_e@`X82SO5A>w}dZs^B%yY_K^_`YiX@t5D|#dm-2K0h7W)7$2^u0IU)zoBn8^#5On z{yZGo^V{a)ulsd(q8&nqo?jg<=+Ljj(`nzGn!k15=&vb?>|2P)w)Zz*M;ySe#VdQX z#bTzA(w#j@C)*Vf&+wW5?kQ=;(^J1`#||x=wp)DIZ?|3lCyPG4&>d*=$n*ZpFI9rf zn!teJI?o>mtBIg{6z9v)s$jPD^gKdkBkB76o7?-lHG^L#ey@fo?q< zwx#OcQ=x&f-87OukKbu8-9``R34%U`T!f(K1`elH^V4p(E82onkEcD|gph57?c~eL z`*nGKD;HY@s|OzK-~J&xI_={-ncZD&%8juR{M^ygIJSBCyUqRW{Wecm10_k8z;wJ! z;r8ZseRq``N^{Onn@x8Z+iAg>m*SU?v{MMfOeJ{KA+BMqkHXknU^Yb;V3bM#{v<$wz{?t|a zGA{VG?LX6uhUY65d%L-&>*K_h^Rv);u#CLkUVXSO-?NB3y~i!^?&I#$u5|+A^enC% zE5mNv?y@UdAhfA-e_1s5`sTX5DRNZQe0CNThsu~AsHs;@uUZe=<@=dVy}kOBw^R~* zd>VC^c;ixk`^nksL%aE6n*^&M-*7tHZ#vB(Wge&-49~S!x3_Pb=|7k6JqMa@$~e#C zAbs=YkC#o$GfXu@%{jKGt{>Bs)HdxSaEg!uFR zupen+Z^!fDci-D9+{fn%nJecPL4OZSgK94o=oenr{IXiDJF1?vS33UE?nZsr=ENnljO=WDK7)WYBN>_r2|} zjX8GKy>R+_zJ4uTX&K62DC*m<>(&$rqP;W4c-?MOj+JY6d8to8AXx8#U)v++@_YKw z9?#S?`%^W2QI1#n-HB1J;+ yUSPeWy9VvoP9~Y<*u|M~*QmYYFPkgs>o@doK0sgI;3*E=@A;qQ6AD5RCH6ndLmVjp diff --git a/public/js/app.js b/public/js/app.js index ae8eccafc55797ecd40eb163d6bd3da9300e9a6e..ae0f1dbc36dc936619c4175958c1cd76e9e5625e 100644 GIT binary patch literal 305888 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 z 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
mn-)w~Dz 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 SrCNAB+}wQZOm{8v%IRNy=;2%d literal 1070383 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ℑSmFKwCk}KDj2;Ot(4C9sio{`e!{cNynI4Fm8moE)pt_6r4LQcR5XxrYOuH zKxdvw!{MxyR43gis9?;>KJ!7KdEQ~ciV$UIwIOuUAR{tsG)QimU)qYCa8QRHv(a{? zsYF-)LsuG;(8skI7(JqZ^VCj1ZC8pJhz)i*XOS94E~03gJ+X{v-T<5w*N^R6BYYHWi

-+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 diff --git a/public/js/timeline.js b/public/js/timeline.js new file mode 100644 index 0000000000000000000000000000000000000000..fde930740d02785c60b37cea4fbee031d1bb0b07 GIT binary patch literal 709 zcmZuv!EW0y4E>cvC<+PCwB~9<=y``B0}AX?6oG2fi3*4EWO}Wk>fc9YagzeQ*b>S2 z_#UZsH(^6Qpahlvy0}7{a=ipsB%?~cllT~)R0NtLuFBcK+Ylm+b%6w1LN@s->b_cU z^f_6joa-|P3aD{?FT;Y>L0`_K_|n_;-6fXE94%-vjYa;pc2Olkqh?)XLOH7U_wDlw zG+Y9mNB9-P0FmZXS!x1yem_O`+`~y5PDeQ3?(`n0idkjm$1DD26mWYBX19a!XK1G$ z?mrZ$wD>Ab-PBXAzDR!9XKfO-aDwG(EbYQoI}R>cB8UPn~R7tBT@;LX*8^D=pHDrZ&y1IX+Az5oCK literal 0 HcmV?d00001 diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 585e57f4862c59104ee7dc943aa40f83bdace6b8..00c9d2a8a4ad069a9f488cf7cb5dda402aa68be8 100644 GIT binary patch literal 184 zcmYj~!3x4K5Jd0&3dvb)H@m4@LHw5Ob^|FYg?JPH-B?S>T!tBVymxabaqXO2S(ekB z-KAc)G+m=1Q#gxsiVR(ZF@QU6oaR4RdL^s Date: Tue, 29 May 2018 20:58:41 -0600 Subject: [PATCH 086/360] Add FollowPipeline job --- app/Jobs/FollowPipeline/FollowPipeline.php | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 app/Jobs/FollowPipeline/FollowPipeline.php diff --git a/app/Jobs/FollowPipeline/FollowPipeline.php b/app/Jobs/FollowPipeline/FollowPipeline.php new file mode 100644 index 000000000..6688575f3 --- /dev/null +++ b/app/Jobs/FollowPipeline/FollowPipeline.php @@ -0,0 +1,62 @@ +follower = $follower; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $follower = $this->follower; + $actor = $follower->actor; + $target = $follower->target; + + try { + + $notification = new Notification; + $notification->profile_id = $target->id; + $notification->actor_id = $actor->id; + $notification->action = 'follow'; + $notification->message = $follower->toText(); + $notification->rendered = $follower->toHtml(); + $notification->save(); + + Cache::forever('notification.' . $notification->id, $notification); + + $redis = Redis::connection(); + + $nkey = config('cache.prefix').':user.' . $target->id . '.notifications'; + $redis->lpush($nkey, $notification->id); + + } catch (Exception $e) { + Log::error($e); + } + } +} From dff76e70b3378df1483bbbfefbdbdd8aa2f650b0 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 20:59:10 -0600 Subject: [PATCH 087/360] Add FollowerController --- app/Http/Controllers/FollowerController.php | 34 ++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/FollowerController.php b/app/Http/Controllers/FollowerController.php index fa35ca2bb..42c776b23 100644 --- a/app/Http/Controllers/FollowerController.php +++ b/app/Http/Controllers/FollowerController.php @@ -2,9 +2,41 @@ namespace App\Http\Controllers; +use Auth; +use App\{Follower, Profile}; use Illuminate\Http\Request; +use App\Jobs\FollowPipeline\FollowPipeline; class FollowerController extends Controller { - // + public function __construct() + { + $this->middleware('auth'); + } + + public function store(Request $request) + { + $this->validate($request, [ + 'item' => 'required|integer', + ]); + + $user = Auth::user()->profile; + $target = Profile::where('id', '!=', $user->id)->findOrFail($request->input('item')); + + $isFollowing = Follower::whereProfileId($user->id)->whereFollowingId($target->id)->count(); + + if($isFollowing == 0) { + $follower = new Follower; + $follower->profile_id = $user->id; + $follower->following_id = $target->id; + $follower->save(); + FollowPipeline::dispatch($follower); + } else { + $follower = Follower::whereProfileId($user->id)->whereFollowingId($target->id)->firstOrFail(); + $follower->delete(); + } + + + return redirect()->back(); + } } From 7d999f0995e4837edab1885a92dc9f4ed72cea9d Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 21:01:28 -0600 Subject: [PATCH 088/360] Add follow seeder --- app/Console/Commands/SeedFollows.php | 60 ++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 app/Console/Commands/SeedFollows.php diff --git a/app/Console/Commands/SeedFollows.php b/app/Console/Commands/SeedFollows.php new file mode 100644 index 000000000..81f23fabb --- /dev/null +++ b/app/Console/Commands/SeedFollows.php @@ -0,0 +1,60 @@ +firstOrFail(); + $target = Profile::orderByRaw('rand()')->firstOrFail(); + + $follow = new Follower; + $follow->profile_id = $actor->id; + $follow->following_id = $target->id; + $follow->save(); + + FollowPipeline::dispatch($follow); + } catch (Exception $e) { + continue; + } + } + } +} From e4ebd474ff3200a121d35f1e3f0b30f89203f2e7 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 21:01:56 -0600 Subject: [PATCH 089/360] Update Console Kernel --- app/Console/Kernel.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index bb5923aa2..6912655e6 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -26,6 +26,7 @@ class Kernel extends ConsoleKernel { $schedule->command('media:optimize') ->hourly(); + $schedule->command('horizon:snapshot')->everyFiveMinutes(); } /** From 95dcf8f7b374d1e340d5dfc1b7eec3ef006df8d5 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 21:02:24 -0600 Subject: [PATCH 090/360] Update follower model, add new methods --- app/Follower.php | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/app/Follower.php b/app/Follower.php index 597f82aac..b2b8675de 100644 --- a/app/Follower.php +++ b/app/Follower.php @@ -6,5 +6,32 @@ use Illuminate\Database\Eloquent\Model; class Follower extends Model { - // + public function actor() + { + return $this->belongsTo(Profile::class, 'profile_id', 'id'); + } + + public function target() + { + return $this->belongsTo(Profile::class, 'following_id', 'id'); + } + + public function profile() + { + return $this->belongsTo(Profile::class, 'following_id', 'id'); + } + + public function toText() + { + $actorName = $this->actor->username; + return "{$actorName} " . __('notification.startedFollowingYou'); + } + + public function toHtml() + { + $actorName = $this->actor->username; + $actorUrl = $this->actor->url(); + return "{$actorName} " . + __('notification.startedFollowingYou'); + } } From e37108c544abf9139f96203afd57079c4673084c Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 21:03:11 -0600 Subject: [PATCH 091/360] Update AccountController, fix hydrateNotifications() Notifications expect a collection, not a vanilla array. --- app/Http/Controllers/AccountController.php | 4 ++-- app/WebSub.php | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 app/WebSub.php diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index 79f2d1c80..f2d1f4092 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -38,9 +38,9 @@ class AccountController extends Controller public function hydrateNotifications($keys) { $prefix = 'notification.'; - $notifications = []; + $notifications = collect([]); foreach($keys as $key) { - $notifications[] = Cache::get($prefix . $key); + $notifications->push(Cache::get("{$prefix}{$key}")); } return $notifications; } diff --git a/app/WebSub.php b/app/WebSub.php new file mode 100644 index 000000000..5be3ad93f --- /dev/null +++ b/app/WebSub.php @@ -0,0 +1,10 @@ + Date: Tue, 29 May 2018 21:04:26 -0600 Subject: [PATCH 092/360] Update DiscoverController --- app/Http/Controllers/DiscoverController.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/DiscoverController.php b/app/Http/Controllers/DiscoverController.php index 9dd12c449..a8459b370 100644 --- a/app/Http/Controllers/DiscoverController.php +++ b/app/Http/Controllers/DiscoverController.php @@ -3,13 +3,22 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; -use App\{Hashtag, Status, StatusHashtag}; +use App\{Hashtag, Follower, Profile, Status, StatusHashtag}; +use Auth; class DiscoverController extends Controller { + public function __construct() + { + $this->middleware('auth'); + } + public function home() { - return view('discover.home'); + $following = Follower::whereProfileId(Auth::user()->profile->id)->pluck('following_id'); + $people = Profile::whereNotIn('id', $following)->orderByRaw('rand()')->take(3)->get(); + $posts = Status::whereHas('media')->whereNotIn('profile_id', $following)->orderBy('created_at', 'desc')->take('21')->get(); + return view('discover.home', compact('people', 'posts')); } public function showTags(Request $request, $hashtag) From b7b916e211e1153bf89d5cf4361b6049eb77eb57 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 29 May 2018 22:54:31 -0600 Subject: [PATCH 093/360] Add atom user feed Closes #37 --- resources/views/atom/user.blade.php | 41 +++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 resources/views/atom/user.blade.php diff --git a/resources/views/atom/user.blade.php b/resources/views/atom/user.blade.php new file mode 100644 index 000000000..dd639dd38 --- /dev/null +++ b/resources/views/atom/user.blade.php @@ -0,0 +1,41 @@ +` won't get parsed as short tags */ + ''.PHP_EOL +?> + + {{$profile->permalink('.atom')}} + {{$profile->username}} + {{$profile->bio}} + {{$profile->updated_at->toAtomString()}} + + + {{$profile->permalink()}} + http://activitystrea.ms/schema/1.0/person + {{$profile->permalink()}} + {{$profile->permalink()}} + {{$profile->emailUrl()}} +

{{$profile->bio}} + + + {{$profile->username}} + {{$profile->name}} + {{$profile->bio}} + public + + + +@foreach($items as $item) + + <![CDATA[{{ $item->caption }}]]> + + {{ url($item->id) }} + + profile->username }}]]> + + + caption !!}]]> + + {{ $item->updated_at->toAtomString() }} + +@endforeach + \ No newline at end of file From d1fa191f06ee9de7a3df327cd88c08951522ffbd Mon Sep 17 00:00:00 2001 From: Nouutilizaire <39726620+Nouutilizaire@users.noreply.github.com> Date: Wed, 30 May 2018 08:54:37 +0000 Subject: [PATCH 094/360] Update notification.php --- resources/lang/oc/notification.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/lang/oc/notification.php b/resources/lang/oc/notification.php index 71fcc14f2..38676b253 100644 --- a/resources/lang/oc/notification.php +++ b/resources/lang/oc/notification.php @@ -2,6 +2,7 @@ return [ - 'likedPhoto' => 'a aimat vòstra fotografia.', + 'likedPhoto' => 'a aimat vòstra fòto.', + 'startedFollowingYou' => 'a començat de vos seguir.', ]; From 1fec6737280bfc4cdb179992838e0f1ee24cedfd Mon Sep 17 00:00:00 2001 From: Moritz Heiber Date: Thu, 31 May 2018 21:43:14 +0200 Subject: [PATCH 095/360] Replaced docker-compose.yml, run composer as root, create needed directories for application storage, revert changes to nginx.conf --- Dockerfile | 25 +++++++-------- contrib/nginx.conf | 2 +- docker-compose-running.yml | 64 -------------------------------------- docker-compose.yml | 55 +++++++++++++++++++++++--------- 4 files changed, 52 insertions(+), 94 deletions(-) delete mode 100644 docker-compose-running.yml diff --git a/Dockerfile b/Dockerfile index bbb285efb..c9ee294a0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,23 +12,20 @@ RUN apk add --no-cache --virtual .build build-base autoconf imagemagick-dev libt echo "${COMPOSER_CHECKSUM} /tmp/composer.phar" | sha256sum -c - && \ install -m0755 -o root -g root /tmp/composer.phar /usr/bin/composer.phar && \ ln -sf /usr/bin/composer.phar /usr/bin/composer && \ - mkdir -p /var/www && \ - install -d -m0755 -o www-data -g www-data /var/www/html/pixelfed \ - /var/www/html/pixelfed/storage \ - /var/www/html/pixelfed/storage/framework \ - /var/www/html/pixelfed/storage/logs \ - /var/www/html/pixelfed/storage/framework/sessions \ - /var/www/html/pixelfed/storage/framework/views \ - /var/www/html/pixelfed/storage/framework/cache && \ rm /tmp/composer.phar && \ - apk del --purge .build + apk --no-cache del --purge .build -COPY --chown=www-data . /var/www/html/pixelfed/ +COPY . /var/www/html/ -WORKDIR /var/www/html/pixelfed -USER www-data -RUN composer install --prefer-source --no-interaction +WORKDIR /var/www/html +RUN install -d -m0755 -o www-data -g www-data \ + /var/www/html/storage \ + /var/www/html/storage/framework \ + /var/www/html/storage/logs \ + /var/www/html/storage/framework/sessions \ + /var/www/html/storage/framework/views \ + /var/www/html/storage/framework/cache && \ + composer install --prefer-source --no-interaction VOLUME ["/var/www/html"] -USER root ENV PATH="~/.composer/vendor/bin:./vendor/bin:${PATH}" diff --git a/contrib/nginx.conf b/contrib/nginx.conf index 39cfbdf4d..c39103d5a 100644 --- a/contrib/nginx.conf +++ b/contrib/nginx.conf @@ -4,7 +4,7 @@ server { server_name localhost; index index.php index.html; - root /var/www/html/pixelfed/public; + root /var/www/html/public; location / { try_files $uri $uri/ /index.php; diff --git a/docker-compose-running.yml b/docker-compose-running.yml deleted file mode 100644 index 8e9ccd4c1..000000000 --- a/docker-compose-running.yml +++ /dev/null @@ -1,64 +0,0 @@ ---- -version: '3' -services: - nginx: - image: nginx:alpine - networks: - - internal - - external - ports: - - 3000:80 - volumes: - - "php-storage:/var/www/html" - - ./contrib/nginx.conf:/etc/nginx/conf.d/default.conf - depends_on: - - php - - php: - build: . - image: pixelfed - volumes: - - "php-storage:/var/www/html" - networks: - - internal - environment: - - DB_HOST=mysql - - DB_DATABASE=pixelfed - - DB_USERNAME=${DB_USERNAME:-pixelfed} - - DB_PASSWORD=${DB_PASSWORD:-pixelfed} - - REDIS_HOST=redis - - APP_KEY=${APP_KEY} - env_file: - - ./.env - - mysql: - image: mysql:5.7 - networks: - - internal - environment: - - MYSQL_DATABASE=pixelfed - - MYSQL_USER=${DB_USERNAME:-pixelfed} - - MYSQL_PASSWORD=${DB_PASSWORD:-pixelfed} - - MYSQL_RANDOM_ROOT_PASSWORD="true" - env_file: - - ./.env - volumes: - - "mysql-data:/var/lib/mysql" - - redis: - image: redis:alpine - volumes: - - "redis-data:/data" - networks: - - internal - -volumes: - redis-data: - mysql-data: - php-storage: - -networks: - internal: - internal: true - external: - driver: bridge diff --git a/docker-compose.yml b/docker-compose.yml index d9c39bd2f..8e9ccd4c1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,37 +3,62 @@ version: '3' services: nginx: image: nginx:alpine + networks: + - internal + - external ports: - - 3000:80 + - 3000:80 volumes: - - .:/var/www/html - - ./contrib/nginx.conf:/etc/nginx/conf.d/default.conf + - "php-storage:/var/www/html" + - ./contrib/nginx.conf:/etc/nginx/conf.d/default.conf depends_on: - - php + - php + php: build: . + image: pixelfed volumes: - - ./storage:/var/www/html/storage - depends_on: - - mysql - - redis + - "php-storage:/var/www/html" + networks: + - internal environment: - DB_HOST=mysql - DB_DATABASE=pixelfed - - DB_USERNAME=${DB_USERNAME} - - DB_PASSWORD=${DB_PASSWORD} + - DB_USERNAME=${DB_USERNAME:-pixelfed} + - DB_PASSWORD=${DB_PASSWORD:-pixelfed} - REDIS_HOST=redis - APP_KEY=${APP_KEY} + env_file: + - ./.env + mysql: image: mysql:5.7 + networks: + - internal environment: - MYSQL_DATABASE=pixelfed - - MYSQL_USER=${DB_USERNAME} - - MYSQL_PASSWORD=${DB_PASSWORD} + - MYSQL_USER=${DB_USERNAME:-pixelfed} + - MYSQL_PASSWORD=${DB_PASSWORD:-pixelfed} + - MYSQL_RANDOM_ROOT_PASSWORD="true" + env_file: + - ./.env volumes: - - ./docker-volumes/mysql:/var/lib/mysql + - "mysql-data:/var/lib/mysql" + redis: image: redis:alpine volumes: - - ./docker-volumes/redis:/data -... + - "redis-data:/data" + networks: + - internal + +volumes: + redis-data: + mysql-data: + php-storage: + +networks: + internal: + internal: true + external: + driver: bridge From 1c631841334ea77bc83e585795dffe711c6e4217 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 15:56:46 -0600 Subject: [PATCH 096/360] Add Bookmark feature --- app/Bookmark.php | 10 +++++ app/Http/Controllers/BookmarkController.php | 38 +++++++++++++++++++ ...18_05_31_043327_create_bookmarks_table.php | 34 +++++++++++++++++ .../assets/js/components/bookmarkform.js | 9 +++++ resources/lang/en/profile.php | 3 ++ resources/views/status/template.blade.php | 6 ++- 6 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 app/Bookmark.php create mode 100644 app/Http/Controllers/BookmarkController.php create mode 100644 database/migrations/2018_05_31_043327_create_bookmarks_table.php create mode 100644 resources/assets/js/components/bookmarkform.js diff --git a/app/Bookmark.php b/app/Bookmark.php new file mode 100644 index 000000000..65cdfec19 --- /dev/null +++ b/app/Bookmark.php @@ -0,0 +1,10 @@ +middleware('auth'); + } + + public function store(Request $request) + { + $this->validate($request, [ + 'item' => 'required|integer|min:1' + ]); + + $profile = Auth::user()->profile; + $status = Status::findOrFail($request->input('item')); + + $bookmark = Bookmark::firstOrCreate( + ['status_id' => $status->id], ['profile_id' => $profile->id] + ); + + if($request->ajax()) { + $response = ['code' => 200, 'msg' => 'Bookmark saved!']; + } else { + $response = redirect()->back(); + } + + return $response; + } + +} diff --git a/database/migrations/2018_05_31_043327_create_bookmarks_table.php b/database/migrations/2018_05_31_043327_create_bookmarks_table.php new file mode 100644 index 000000000..e34622e36 --- /dev/null +++ b/database/migrations/2018_05_31_043327_create_bookmarks_table.php @@ -0,0 +1,34 @@ +increments('id'); + $table->bigInteger('status_id')->unsigned(); + $table->bigInteger('profile_id')->unsigned(); + $table->unique(['status_id', 'profile_id']); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('bookmarks'); + } +} diff --git a/resources/assets/js/components/bookmarkform.js b/resources/assets/js/components/bookmarkform.js new file mode 100644 index 000000000..dd67747ae --- /dev/null +++ b/resources/assets/js/components/bookmarkform.js @@ -0,0 +1,9 @@ +$(document).ready(function() { + + $('.bookmark-form').submit(function(e) { + e.preventDefault(); + var el = $(this); + var id = el.data('id'); + var res = axios.post('/i/bookmark', {item: id}); + }); +}); \ No newline at end of file diff --git a/resources/lang/en/profile.php b/resources/lang/en/profile.php index 6d70d56a3..50b6f2429 100644 --- a/resources/lang/en/profile.php +++ b/resources/lang/en/profile.php @@ -2,4 +2,7 @@ return [ 'emptyTimeline' => 'This user has no posts yet!', + 'emptyFollowers' => 'This user has no followers yet!', + 'emptyFollowing' => 'This user is not following anyone yet!', + 'savedWarning' => 'Only you can see what you\'ve saved', ]; \ No newline at end of file diff --git a/resources/views/status/template.blade.php b/resources/views/status/template.blade.php index 401692c8c..b0019e989 100644 --- a/resources/views/status/template.blade.php +++ b/resources/views/status/template.blade.php @@ -29,7 +29,11 @@ - +
+ @csrf + + +
- {{$user->followingCount(true)}} - Following + + {{$user->followingCount(true)}} + Following +
-

- {{$user->name}} +

+ {{$user->name}} + @if($user->remote_url) + REMOTE PROFILE + @endif + {{$user->bio}}

+ @if($owner == true) +
+ +
+ @endif + + @if($owner && request()->is('*/saved')) +
+

{{__('profile.savedWarning')}}

+
+ @endif + @if($timeline->count() > 0) @foreach($timeline as $status)
From f69624eb285402b238402a54e7a5168b087aa9c1 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 20:31:53 -0600 Subject: [PATCH 112/360] Update RestrictedNames --- app/Util/Lexer/RestrictedNames.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/Util/Lexer/RestrictedNames.php b/app/Util/Lexer/RestrictedNames.php index eb820d40d..698b31cd2 100644 --- a/app/Util/Lexer/RestrictedNames.php +++ b/app/Util/Lexer/RestrictedNames.php @@ -128,11 +128,6 @@ class RestrictedNames { // Reserved route "i", - - // Official accounts - "pixelfed", - "pixelfed-support", - "pixelfed_support", ]; public static function get() From 4ab0515e76f4e2b65a0448c05d2a9ed8546fe336 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 20:36:58 -0600 Subject: [PATCH 113/360] Add AvatarController --- app/Http/Controllers/AvatarController.php | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 app/Http/Controllers/AvatarController.php diff --git a/app/Http/Controllers/AvatarController.php b/app/Http/Controllers/AvatarController.php new file mode 100644 index 000000000..afb893059 --- /dev/null +++ b/app/Http/Controllers/AvatarController.php @@ -0,0 +1,10 @@ + Date: Thu, 31 May 2018 20:37:11 -0600 Subject: [PATCH 114/360] Update CommentController --- app/Http/Controllers/CommentController.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php index 22208c9c2..790b22142 100644 --- a/app/Http/Controllers/CommentController.php +++ b/app/Http/Controllers/CommentController.php @@ -33,6 +33,12 @@ class CommentController extends Controller NewStatusPipeline::dispatch($reply, false); - return redirect($status->url()); + if($request->ajax()) { + $response = ['code' => 200, 'msg' => 'Comment saved']; + } else { + $response = redirect($status->url()); + } + + return $response; } } From a97403f3e708abee47be4a088c2509070cef8b06 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 20:38:11 -0600 Subject: [PATCH 115/360] Update FederationController --- app/Http/Controllers/FederationController.php | 55 ++++++++++++++++++- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/FederationController.php b/app/Http/Controllers/FederationController.php index e0b29639f..1bef479d2 100644 --- a/app/Http/Controllers/FederationController.php +++ b/app/Http/Controllers/FederationController.php @@ -2,9 +2,17 @@ namespace App\Http\Controllers; -use Illuminate\Http\Request; -use App\Profile; use Auth; +use App\Profile; +use League\Fractal; +use Illuminate\Http\Request; +use App\Util\Lexer\Nickname; +use App\Util\Webfinger\Webfinger; +use App\Transformer\ActivityPub\{ + ProfileOutbox, + ProfileTransformer +}; +use App\Jobs\RemoteFollowPipeline\RemoteFollowPipeline; class FederationController extends Controller { @@ -22,6 +30,25 @@ class FederationController extends Controller return view('federation.remotefollow'); } + public function remoteFollowStore(Request $request) + { + $this->authCheck(); + $this->validate($request, [ + 'url' => 'required|string' + ]); + + if(config('pixelfed.remote_follow_enabled') !== true) { + abort(403); + } + + $follower = Auth::user()->profile; + $url = $request->input('url'); + + RemoteFollowPipeline::dispatch($follower, $url); + + return redirect()->back(); + } + public function nodeinfoWellKnown() { $res = [ @@ -81,4 +108,28 @@ class FederationController extends Controller return response()->json($res); } + + + public function webfinger(Request $request) + { + $this->validate($request, ['resource'=>'required']); + $resource = $request->input('resource'); + $parsed = Nickname::normalizeProfileUrl($resource); + $username = $parsed['username']; + $user = Profile::whereUsername($username)->firstOrFail(); + $webfinger = (new Webfinger($user))->generate(); + return response()->json($webfinger); + } + + public function userOutbox(Request $request, $username) + { + $user = Profile::whereNull('remote_url')->whereUsername($username)->firstOrFail(); + + $timeline = $user->statuses()->orderBy('created_at','desc')->paginate(10); + $fractal = new Fractal\Manager(); + $resource = new Fractal\Resource\Item($user, new ProfileOutbox); + $res = $fractal->createData($resource)->toArray(); + return response()->json($res['data']); + } + } From d2633534176ed0589fdb760ca9c6a9c417f375f7 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 20:39:35 -0600 Subject: [PATCH 116/360] Add HashtagController --- app/Http/Controllers/HashtagController.php | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 app/Http/Controllers/HashtagController.php diff --git a/app/Http/Controllers/HashtagController.php b/app/Http/Controllers/HashtagController.php new file mode 100644 index 000000000..a4afae3aa --- /dev/null +++ b/app/Http/Controllers/HashtagController.php @@ -0,0 +1,10 @@ + Date: Thu, 31 May 2018 20:39:48 -0600 Subject: [PATCH 117/360] Add ImportDataController --- app/Http/Controllers/ImportDataController.php | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 app/Http/Controllers/ImportDataController.php diff --git a/app/Http/Controllers/ImportDataController.php b/app/Http/Controllers/ImportDataController.php new file mode 100644 index 000000000..1b0a12e63 --- /dev/null +++ b/app/Http/Controllers/ImportDataController.php @@ -0,0 +1,10 @@ + Date: Thu, 31 May 2018 20:39:56 -0600 Subject: [PATCH 118/360] Add NotificationController --- app/Http/Controllers/NotificationController.php | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 app/Http/Controllers/NotificationController.php diff --git a/app/Http/Controllers/NotificationController.php b/app/Http/Controllers/NotificationController.php new file mode 100644 index 000000000..7bd130ac7 --- /dev/null +++ b/app/Http/Controllers/NotificationController.php @@ -0,0 +1,10 @@ + Date: Thu, 31 May 2018 20:40:50 -0600 Subject: [PATCH 119/360] Update ProfileController --- app/Http/Controllers/ProfileController.php | 71 +++++++++++++++++++++- 1 file changed, 68 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index ffe348f62..7aba7e572 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -3,14 +3,79 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; -use App\{Profile}; +use Auth, Cache; +use App\{Follower, Profile, User}; +use League\Fractal; +use App\Util\Lexer\Nickname; +use App\Util\Webfinger\Webfinger; +use App\Transformer\ActivityPub\{ + ProfileOutbox, + ProfileTransformer +}; class ProfileController extends Controller { public function show(Request $request, $username) { $user = Profile::whereUsername($username)->firstOrFail(); - $timeline = $user->statuses()->orderBy('id','desc')->paginate(10); - return view('profile.show', compact('user', 'timeline')); + + $mimes = [ + 'application/activity+json', + 'application/ld+json', + 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' + ]; + + if(in_array($request->header('accept'), $mimes)) { + return $this->showActivityPub($request, $user); + } + + // TODO: refactor this mess + $owner = Auth::check() && Auth::id() === $user->user_id; + $following = ($owner == false && Auth::check()) ? $user->followedBy(Auth::user()->profile) : false; + $timeline = $user->statuses()->whereHas('media')->whereNull('in_reply_to_id')->orderBy('id','desc')->paginate(21); + + return view('profile.show', compact('user', 'owner', 'following', 'timeline')); + } + + public function showActivityPub(Request $request, $user) + { + $fractal = new Fractal\Manager(); + $resource = new Fractal\Resource\Item($user, new ProfileTransformer); + $res = $fractal->createData($resource)->toArray(); + return response()->json($res['data']); + } + + public function showAtomFeed(Request $request, $user) + { + $profile = Profile::whereUsername($user)->firstOrFail(); + $items = $profile->statuses()->orderBy('created_at', 'desc')->take(10)->get(); + return response()->view('atom.user', compact('profile', 'items')) + ->header('Content-Type', 'application/atom+xml'); + } + + public function followers(Request $request, $username) + { + $profile = Profile::whereUsername($username)->firstOrFail(); + $followers = $profile->followers()->orderBy('created_at','desc')->simplePaginate(12); + return view('profile.followers', compact('profile', 'followers')); + } + + public function following(Request $request, $username) + { + $profile = Profile::whereUsername($username)->firstOrFail(); + $following = $profile->following()->orderBy('created_at','desc')->simplePaginate(12); + return view('profile.following', compact('profile', 'following')); + } + + public function savedBookmarks(Request $request, $username) + { + if(Auth::check() === false || $username !== Auth::user()->username) { + abort(403); + } + $user = Auth::user()->profile; + $owner = true; + $following = false; + $timeline = $user->bookmarks()->orderBy('created_at','desc')->simplePaginate(10); + return view('profile.show', compact('user', 'owner', 'following', 'timeline')); } } From 8fedeb4ce85f4d159c5b47f46fb7381af72fede1 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:11:56 -0600 Subject: [PATCH 120/360] Update SettingsController --- app/Http/Controllers/SettingsController.php | 40 +++++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index 005a98238..b1a17700b 100644 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -22,21 +22,32 @@ class SettingsController extends Controller { $this->validate($request, [ 'name' => 'required|string|max:30', + 'bio' => 'string|max:125' ]); + $changes = false; $name = $request->input('name'); + $bio = $request->input('bio'); $user = Auth::user(); $profile = $user->profile; if($profile->name != $name) { + $changes = true; $user->name = $name; - $user->save(); - $profile->name = $name; - $profile->save(); + } + if($profile->bio != $bio) { + $changes = true; + $profile->bio = $bio; + } + + if($changes === true) { + $user->save(); + $profile->save(); return redirect('/settings/home')->with('status', 'Profile successfully updated!'); } + return redirect('/settings/home'); } @@ -45,6 +56,29 @@ class SettingsController extends Controller return view('settings.password'); } + public function passwordUpdate(Request $request) + { + $this->validate($request, [ + 'current' => 'required|string', + 'password' => 'required|string', + 'password_confirmation' => 'required|string', + ]); + + $current = $request->input('current'); + $new = $request->input('password'); + $confirm = $request->input('password_confirmation'); + + $user = Auth::user(); + + if(password_verify($current, $user->password) && $new === $confirm) { + $user->password = bcrypt($new); + $user->save(); + + return redirect('/settings/home')->with('status', 'Password successfully updated!'); + } + return redirect('/settings/home')->with('error', 'There was an error with your request!'); + } + public function email() { return view('settings.email'); From 1c142d4a9b97cc3ffc8cfb9837fd7d7c995628e3 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:12:06 -0600 Subject: [PATCH 121/360] Add SiteController --- app/Http/Controllers/SiteController.php | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 app/Http/Controllers/SiteController.php diff --git a/app/Http/Controllers/SiteController.php b/app/Http/Controllers/SiteController.php new file mode 100644 index 000000000..7993f7838 --- /dev/null +++ b/app/Http/Controllers/SiteController.php @@ -0,0 +1,10 @@ + Date: Thu, 31 May 2018 21:12:27 -0600 Subject: [PATCH 122/360] Update StatusController --- app/Http/Controllers/StatusController.php | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/StatusController.php b/app/Http/Controllers/StatusController.php index 3b6088e5d..3ad994eed 100644 --- a/app/Http/Controllers/StatusController.php +++ b/app/Http/Controllers/StatusController.php @@ -2,23 +2,21 @@ namespace App\Http\Controllers; -use Auth; +use Auth, Cache; +use App\Jobs\StatusPipeline\NewStatusPipeline; use Illuminate\Http\Request; use App\{Media, Profile, Status, User}; use Vinkla\Hashids\Facades\Hashids; class StatusController extends Controller { - public function show(Request $request, $username, $hashid) + public function show(Request $request, $username, int $id) { $user = Profile::whereUsername($username)->firstOrFail(); - $id = Hashids::decode($hashid); - if(empty($id)) { - abort(404); - } else { - $id = $id[0]; - } $status = Status::whereProfileId($user->id)->findOrFail($id); + if(!$status->media_path && $status->in_reply_to_id) { + return view('status.reply', compact('user', 'status')); + } return view('status.show', compact('user', 'status')); } @@ -32,10 +30,11 @@ class StatusController extends Controller $user = Auth::user(); $this->validate($request, [ - 'photo' => 'required|image|max:8000', + 'photo' => 'required|image|max:15000', 'caption' => 'string|max:150' ]); - $monthHash = hash('sha1',date('Y').date('m')); + + $monthHash = hash('sha1', date('Y') . date('m')); $userHash = hash('sha1', $user->id . (string) $user->created_at); $storagePath = "public/m/{$monthHash}/{$userHash}"; $path = $request->photo->store($storagePath); @@ -54,6 +53,10 @@ class StatusController extends Controller $media->size = $request->file('photo')->getClientSize(); $media->mime = $request->file('photo')->getClientMimeType(); $media->save(); + NewStatusPipeline::dispatch($status, $media); + + // TODO: Parse Caption + // TODO: Send to subscribers return redirect($status->url()); } From e2afe175f46c20dea7fa1871abb9a7dd07623c3f Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:14:15 -0600 Subject: [PATCH 123/360] Add RemoteFollowPipeline Still a WIP --- .../RemoteFollowImportRecent.php | 226 ++++++++++++++++++ .../RemoteFollowPipeline.php | 105 ++++++++ 2 files changed, 331 insertions(+) create mode 100644 app/Jobs/RemoteFollowPipeline/RemoteFollowImportRecent.php create mode 100644 app/Jobs/RemoteFollowPipeline/RemoteFollowPipeline.php diff --git a/app/Jobs/RemoteFollowPipeline/RemoteFollowImportRecent.php b/app/Jobs/RemoteFollowPipeline/RemoteFollowImportRecent.php new file mode 100644 index 000000000..1cb6a7828 --- /dev/null +++ b/app/Jobs/RemoteFollowPipeline/RemoteFollowImportRecent.php @@ -0,0 +1,226 @@ +actor = $actorObject; + $this->profile = $profile; + $this->cursor = 1; + $this->mediaCount = 0; + $this->supported = [ + 'image/jpg', + 'image/jpeg', + 'image/png', + 'image/gif' + ]; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $outbox = $this->fetchOutbox(); + } + + public function fetchOutbox($url = false) + { + Log::info(json_encode($url)); + $url = ($url == false) ? $this->actor['outbox'] : $url; + + $response = Zttp::withHeaders([ + 'User-Agent' => 'PixelFedBot v0.1 - https://pixelfed.org' + ])->get($url); + + $this->outbox = $response->json(); + $this->parseOutbox($this->outbox); + } + + public function parseOutbox($outbox) + { + $types = ['OrderedCollection', 'OrderedCollectionPage']; + + if(isset($outbox['totalItems']) && $outbox['totalItems'] < 1) { + // Skip remote fetch, not enough posts + Log::info('not enough items'); + return; + } + + if(isset($outbox['type']) && in_array($outbox['type'], $types)) { + Log::info('handle ordered collection'); + $this->handleOrderedCollection(); + } + } + + public function handleOrderedCollection() + { + $outbox = $this->outbox; + + if(!isset($outbox['next']) && !isset($outbox['first']['next']) && $this->cursor !== 1) { + $this->cursor = 40; + $outbox['next'] = false; + } + + if($outbox['type'] == 'OrderedCollectionPage') { + $this->nextUrl = $outbox['next']; + } + + if(isset($outbox['first']) && !is_array($outbox['first'])) { + // Mastodon detected + Log::info('Mastodon detected...'); + $this->nextUrl = $outbox['first']; + return $this->fetchOutbox($this->nextUrl); + } else { + // Pleroma detected. + $this->nextUrl = isset($outbox['next']) ? $outbox['next'] : (isset($outbox['first']['next']) ? $outbox['first']['next'] : $outbox['next']); + Log::info('Checking ordered items...'); + $orderedItems = isset($outbox['orderedItems']) ? $outbox['orderedItems'] : $outbox['first']['orderedItems']; + } + + + foreach($orderedItems as $item) { + Log::info('Parsing items...'); + $parsed = $this->parseObject($item); + if($parsed !== 0) { + Log::info('Found media!'); + $this->importActivity($item); + } + } + + if($this->cursor < 40 && $this->mediaCount < 9) { + $this->cursor++; + $this->mediaCount++; + $this->fetchOutbox($this->nextUrl); + } + + } + + public function parseObject($parsed) + { + if($parsed['type'] !== 'Create') { + return 0; + } + + $activity = $parsed['object']; + + if(isset($activity['attachment']) && !empty($activity['attachment'])) { + return $this->detectSupportedMedia($activity['attachment']); + } + } + + public function detectSupportedMedia($attachments) + { + $supported = $this->supported; + $count = 0; + + foreach($attachments as $media) { + $mime = $media['mediaType']; + $count = in_array($mime, $supported) ? ($count + 1) : $count; + } + + return $count; + } + + public function importActivity($activity) + { + $profile = $this->profile; + $supported = $this->supported; + $attachments = $activity['object']['attachment']; + $caption = str_limit($activity['object']['content'], 125); + + if(Status::whereUrl($activity['id'])->count() !== 0) { + return true; + } + + $status = new Status; + $status->profile_id = $profile->id; + $status->url = $activity['id']; + $status->local = false; + $status->caption = strip_tags($caption); + $status->created_at = Carbon::parse($activity['published']); + + $count = 0; + + foreach($attachments as $media) { + Log::info($media['mediaType'] . ' - ' . $media['url']); + $url = $media['url']; + $mime = $media['mediaType']; + if(!in_array($mime, $supported)) { + Log::info('Invalid media, skipping. ' . $mime); + continue; + } + $count++; + + if($count === 1) { + $status->save(); + } + $this->importMedia($url, $mime, $status); + } + Log::info(count($attachments) . ' media found...'); + + if($count !== 0) { + NewStatusPipeline::dispatch($status, $status->media->first()); + } + } + + public function importMedia($url, $mime, $status) + { + $user = $this->profile; + $monthHash = hash('sha1', date('Y') . date('m')); + $userHash = hash('sha1', $user->id . (string) $user->created_at); + $storagePath = "public/m/{$monthHash}/{$userHash}"; + try { + $info = pathinfo($url); + $img = file_get_contents($url); + $file = '/tmp/' . str_random(12) . $info['basename']; + file_put_contents($file, $img); + $path = Storage::putFile($storagePath, new File($file), 'public'); + + $media = new Media; + $media->status_id = $status->id; + $media->profile_id = $status->profile_id; + $media->user_id = null; + $media->media_path = $path; + $media->size = 0; + $media->mime = $mime; + $media->save(); + + return true; + } catch (Exception $e) { + return false; + } + } + +} diff --git a/app/Jobs/RemoteFollowPipeline/RemoteFollowPipeline.php b/app/Jobs/RemoteFollowPipeline/RemoteFollowPipeline.php new file mode 100644 index 000000000..5854e90fe --- /dev/null +++ b/app/Jobs/RemoteFollowPipeline/RemoteFollowPipeline.php @@ -0,0 +1,105 @@ +follower = $follower; + $this->url = $url; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $follower = $this->follower; + $url = $this->url; + + if(Profile::whereRemoteUrl($url)->count() !== 0) { + return true; + } + + $this->discover($url); + return true; + } + + public function discover($url) + { + $context = new Context([ + 'keys' => ['examplekey' => 'secret-key-here'], + 'algorithm' => 'hmac-sha256', + 'headers' => ['(request-target)', 'date'], + ]); + + $handlerStack = GuzzleHttpSignatures::defaultHandlerFromContext($context); + $client = new Client(['handler' => $handlerStack]); + $response = Zttp::withHeaders([ + 'Accept' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', + 'User-Agent' => 'PixelFedBot v0.1 - https://pixelfed.org' + ])->get($url); + $this->response = $response->json(); + + $this->storeProfile(); + } + + public function storeProfile() + { + $res = $this->response; + $domain = parse_url($res['url'], PHP_URL_HOST); + $username = $res['preferredUsername']; + $remoteUsername = "@{$username}@{$domain}"; + + $profile = new Profile; + $profile->user_id = null; + $profile->domain = $domain; + $profile->username = $remoteUsername; + $profile->name = $res['name']; + $profile->bio = str_limit($res['summary'], 125); + $profile->sharedInbox = $res['endpoints']['sharedInbox']; + $profile->remote_url = $res['url']; + $profile->save(); + + RemoteFollowImportRecent::dispatch($this->response, $profile); + CreateAvatar::dispatch($profile); + } + + public function sendActivity() + { + $res = $this->response; + $url = $res['inbox']; + + $activity = Zttp::withHeaders(['Content-Type' => 'application/activity+json'])->post($url, [ + 'type' => 'Follow', + 'object' => $this->follower->url() + ]); + } +} From ec2bff95b6e5b93b1ca581566dbb6152306364e2 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:14:46 -0600 Subject: [PATCH 124/360] Add StatusPipeline --- app/Jobs/StatusPipeline/NewStatusPipeline.php | 52 +++++++++++++ .../StatusActivityPubDeliver.php | 38 ++++++++++ app/Jobs/StatusPipeline/StatusEntityLexer.php | 74 +++++++++++++++++++ 3 files changed, 164 insertions(+) create mode 100644 app/Jobs/StatusPipeline/NewStatusPipeline.php create mode 100644 app/Jobs/StatusPipeline/StatusActivityPubDeliver.php create mode 100644 app/Jobs/StatusPipeline/StatusEntityLexer.php diff --git a/app/Jobs/StatusPipeline/NewStatusPipeline.php b/app/Jobs/StatusPipeline/NewStatusPipeline.php new file mode 100644 index 000000000..01392aa47 --- /dev/null +++ b/app/Jobs/StatusPipeline/NewStatusPipeline.php @@ -0,0 +1,52 @@ +status = $status; + $this->media = $media; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $status = $this->status; + $media = $this->media; + + StatusEntityLexer::dispatch($status); + StatusActivityPubDeliver::dispatch($status); + if($media) { + ImageOptimize::dispatch($media); + } + Cache::forever('post.' . $status->id, $status); + + $redis = Redis::connection(); + $redis->lpush(config('cache.prefix').':user.' . $status->profile_id . '.posts', $status->id); + } +} diff --git a/app/Jobs/StatusPipeline/StatusActivityPubDeliver.php b/app/Jobs/StatusPipeline/StatusActivityPubDeliver.php new file mode 100644 index 000000000..acf660ca4 --- /dev/null +++ b/app/Jobs/StatusPipeline/StatusActivityPubDeliver.php @@ -0,0 +1,38 @@ +status = $status; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $status = $this->status; + + // todo: fanout on write + } +} diff --git a/app/Jobs/StatusPipeline/StatusEntityLexer.php b/app/Jobs/StatusPipeline/StatusEntityLexer.php new file mode 100644 index 000000000..ebbf4ad44 --- /dev/null +++ b/app/Jobs/StatusPipeline/StatusEntityLexer.php @@ -0,0 +1,74 @@ +status = $status; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $status = $this->status; + $this->parseHashtags(); + } + + public function parseHashtags() + { + $status = $this->status; + $text = $status->caption; + $tags = HashtagLexer::getHashtags($text); + $rendered = $text; + if(count($tags) > 0) { + $rendered = HashtagLexer::replaceHashtagsWithLinks($text); + } + $status->rendered = $rendered; + $status->save(); + + Cache::forever('post.' . $status->id, $status); + + foreach($tags as $tag) { + $slug = str_slug($tag); + + $htag = Hashtag::firstOrCreate( + ['name' => $tag], + ['slug' => $slug] + ); + + $stag = new StatusHashtag; + $stag->status_id = $status->id; + $stag->hashtag_id = $htag->id; + $stag->save(); + } + + } +} From d84b0c1d4126da66e21e1b5ca71d2fbfab73b5d1 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:15:20 -0600 Subject: [PATCH 125/360] Add UserObserver --- app/Observer/UserObserver.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Observer/UserObserver.php b/app/Observer/UserObserver.php index f2c523852..e91042830 100644 --- a/app/Observer/UserObserver.php +++ b/app/Observer/UserObserver.php @@ -34,7 +34,7 @@ class UserObserver $profile->public_key = $pki_public; $profile->save(); - CreateAvatar::dispatch($user); + CreateAvatar::dispatch($profile); } } From 05bf9b7aeee4ced0220994d7125076217bb2e4c7 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:15:37 -0600 Subject: [PATCH 126/360] Add StatusHashtag model --- app/StatusHashtag.php | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 app/StatusHashtag.php diff --git a/app/StatusHashtag.php b/app/StatusHashtag.php new file mode 100644 index 000000000..7ceac0564 --- /dev/null +++ b/app/StatusHashtag.php @@ -0,0 +1,10 @@ + Date: Thu, 31 May 2018 21:16:43 -0600 Subject: [PATCH 127/360] Add ProfileOutbox Transformer --- app/Transformer/ActivityPub/ProfileOutbox.php | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 app/Transformer/ActivityPub/ProfileOutbox.php diff --git a/app/Transformer/ActivityPub/ProfileOutbox.php b/app/Transformer/ActivityPub/ProfileOutbox.php new file mode 100644 index 000000000..9d3b487cb --- /dev/null +++ b/app/Transformer/ActivityPub/ProfileOutbox.php @@ -0,0 +1,79 @@ +statuses()->count(); + $statuses = $profile->statuses()->has('media')->orderBy('id','desc')->take(20)->get()->map(function($i, $k) { + $item = [ + 'id' => $i->url(), + // TODO: handle other types + 'type' => 'Create', + 'actor' => $i->profile->url(), + 'published' => $i->created_at->toISO8601String(), + 'to' => [ + 'https://www.w3.org/ns/activitystreams#Public' + ], + 'cc' => [ + $i->profile->permalink('/followers'), + ], + 'object' => [ + 'id' => $i->url(), + + // TODO: handle other types + 'type' => 'Note', + + // XXX: CW Title + 'summary' => null, + 'content' => $i->rendered ?? $i->caption, + 'inReplyTo' => null, + + // TODO: fix date format + 'published' => $i->created_at->toAtomString(), + 'url' => $i->url(), + 'attributedTo' => $i->profile->permalink(), + 'to' => [ + // TODO: handle proper scope + 'https://www.w3.org/ns/activitystreams#Public' + ], + 'cc' => [ + // TODO: add cc's + //"{$notice->getProfile()->getUrl()}/subscribers", + ], + 'sensitive' => null, + 'atomUri' => $i->url(), + 'inReplyToAtomUri' => null, + 'conversation' => $i->url(), + 'attachment' => [ + + // TODO: support more than 1 attachment + [ + 'type' => 'Document', + 'mediaType' => $i->firstMedia()->mime, + 'url' => $i->firstMedia()->url(), + 'name' => null + ] + ], + 'tag' => [] + ] + ]; + return $item; + }); + + return [ + '@context' => 'https://www.w3.org/ns/activitystreams', + 'id' => $profile->permalink('/outbox'), + 'type' => 'OrderedCollection', + 'totalItems' => $count, + 'orderedItems' => $statuses + ]; + } + +} \ No newline at end of file From 753b6d47219664cb0bd37fdd8319b8e60a101718 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:17:07 -0600 Subject: [PATCH 128/360] Add Inbox util --- app/Util/ActivityPub/Inbox.php | 88 ++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 app/Util/ActivityPub/Inbox.php diff --git a/app/Util/ActivityPub/Inbox.php b/app/Util/ActivityPub/Inbox.php new file mode 100644 index 000000000..310c91b84 --- /dev/null +++ b/app/Util/ActivityPub/Inbox.php @@ -0,0 +1,88 @@ +request = $request; + $this->profile = $profile; + $this->payload = $payload; + } + + public function handle() + { + $this->authenticatePayload(); + } + + public function authenticatePayload() + { + // todo + + $this->handleVerb(); + } + + public function handleVerb() + { + $verb = $this->payload['type']; + + switch ($verb) { + case 'Create': + $this->handleCreateActivity(); + break; + + case 'Follow': + $this->handleFollowActivity(); + break; + + default: + // TODO: decide how to handle invalid verbs. + break; + } + } + + public function handleCreateActivity() + { + // todo + } + + public function handleFollowActivity() + { + $actor = $this->payload['object']; + $target = $this->profile; + + } + + public function actorFirstOrCreate($actorUrl) + { + if(Profile::whereRemoteUrl($actorUrl)->count() !== 0) { + return Profile::whereRemoteUrl($actorUrl)->firstOrFail(); + } + + $res = (new DiscoverActor($url))->discover(); + + $domain = parse_url($res['url'], PHP_URL_HOST); + $username = $res['preferredUsername']; + $remoteUsername = "@{$username}@{$domain}"; + + $profile = new Profile; + $profile->user_id = null; + $profile->domain = $domain; + $profile->username = $remoteUsername; + $profile->name = $res['name']; + $profile->bio = str_limit($res['summary'], 125); + $profile->sharedInbox = $res['endpoints']['sharedInbox']; + $profile->remote_url = $res['url']; + $profile->save(); + + } + +} \ No newline at end of file From faf775348ac563225156100173039eda9793485d Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:20:16 -0600 Subject: [PATCH 129/360] Update compiled assets --- public/css/app.css | Bin 157393 -> 157659 bytes public/js/app.js | Bin 305888 -> 306149 bytes public/mix-manifest.json | Bin 184 -> 184 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/public/css/app.css b/public/css/app.css index dcd6775ae8c071e5acbc5c723785aea16600deb3..d56db8db351270ac2bf078ae9df7ff2c299baf36 100644 GIT binary patch delta 132 zcmcb3mh<*`&W0AoElhiore`EEDQV>-=A{%TCl;hC=oObFmXsFj7G&g?;pX$H1g1=?|$EW z=bSnBo-_Gl)~`3S#-5B2WpH{VNz6gx=oUO*JNgjM7mgjsReVyYCD2;eSgvcm1JaU{ZCFXeEdA$ll4$Q0|CiTAup7Dz_E<%*?OaI(=5p(Es;>|Ios833W zhNMXiFOKHWBjO<@Lw7sD;4nvgNDp%4o|`CaMEy-9|#isQ{?dLw!K3f52)QEZ8f>xQuRdKuI0L=XA z7*VqnO^#cJZG?^PV!`hhiWPQxj8xb1O52(U4Na4h^iIRr9#gID)EMO}O5})YtD+E% z2)+t688s4e+(_7>;E(#B8wKf|sIA4ywOzhlJ~lZ;)uW=O_NWZ5jpW=Re6^g7kn zq~JWEL5)ir=JC0yl)Uq#7R{DgpK)g1;i4X_c>6JT9pT&*w-W#3&J;KFQo3S^Hcq8Z zoBClX-4uW3u$2u+(OfA4a73h6l;XfkP0D~a`B43b0_`#EG~-N2AiE6?{9=0 z{5-l5hOscM?to^5!yWJzst-EgsWWi*R0tr*ozRYj20EeI*~80W_!(7WGvv^V5opB# zj|K}CqL!!QwJ0p0!y(>fYSl4aH0hol;AOKGq<+uT7p`&`{>gsWgHCw>{#b-bmr=YflbICGrX%Jb zhx1O4H&4K82#Zd_Mue`D$V_(RB;0qdxc?M9a$~B#6f~mzT?%Y$nN^L$6|BHAz5uU) zpG$55MSAHLe92`yKP*P9xdpWQ;#xcI_X!}`gP|bL&fSKmndy=)3eGCB(cj^eQ@6gB zzkrG4CbEor>-gGqQ?z}u8i~-7AfLnb*73&(?`YIG!FyPBkUxw)vFpuzFbi>+#^*S^ J)Z|mE{{x?M-qeJEJ{ClAhVsL`G)40LJL&b2nYU20ntq9HvBMB`)cTs?^>K*}yb- zfN>W<5P;b&0?0&r1-O<020ySA{HwsQbswzY6A}yxlq9k~hmyk#CWv-ygxe(LQ9rB~ zGnge=`y+A1Qtauq;OSS+Eg{%RNbx0CTz5(03f}z@h6nNa>cCE#V=vqEg?TIqXvGa~Y zjUzq|cSyvaI{|+R9;QkGRaQbThB|keAuS%$O{;?OruX3+BpkFw@9n?}Si98#y>3 zRJw_dT@kjnGPTN3i;BoP5`V@tLkZR%4y&e8yC`21vQ%Z$qC{;drtDh87w)bUE=o11 zmeP2a^S1AWh=)3UdrP=TaAHO%ra2~Ogn?y5qayATm}%Ev6;|+HM65`s zvDP_zDdy4F>!nzhMf72Y-%-&#!{|~f+8@BvM7{NR%SBb0yRicvGAy~$RIPSX%U7$_ z;JT)gc&sgANsJ%egGuUbS2W`eg5GA_L+WeIIPcu;=jYK+Ah%$Uyk2X;YUeqhZ^a+d zjCj?~i2YZim~Ed`v5`cXVN6>>)j2v!RQ2(68Y0H{ z+e3KMS^dFboX#LCD}{BG{w#$S?Sq$}#tYPer*kYUpwGU`XcIkm89x@Xo%y9!bK#L& ziI^HR_?uTS`vLyJ4Ls&F3Dk&Vq!FMbLllPuZp+AMl_&1Uf}nwL*Dh?}wq PSBJ$Mhi@>&ljZ*bX}6;U diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 00c9d2a8a4ad069a9f488cf7cb5dda402aa68be8..ee547e28740cfeb6957a97d80c12b3bd7a492b9e 100644 GIT binary patch delta 54 zcmdnNxPx(mvWSJ5d9r1SVVXr^l7X>BT4IWMiqS-K4H4r+BNMaaq(pPe6iagpvs4R{ Jq@;<(t^l&i5AFZ} delta 54 zcmdnNxPx(mvPfF0v4x4Ld19hLvayAsL7HKbso_L(4H1jvL{kfs6f+Ye6T?)aRMS+8 JG?R(Nt^lK_4@Uq1 From 2d8e6186daa058eb31105f0128e9cab21b0b4758 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:21:02 -0600 Subject: [PATCH 130/360] Update bootstrap.js --- resources/assets/js/bootstrap.js | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/assets/js/bootstrap.js b/resources/assets/js/bootstrap.js index c99dc0953..bda277bc1 100644 --- a/resources/assets/js/bootstrap.js +++ b/resources/assets/js/bootstrap.js @@ -20,6 +20,7 @@ try { require('./components/likebutton'); require('./components/commentform'); require('./components/searchform'); + require('./components/bookmarkform'); } catch (e) {} /** From 6f8a296392947e549e67aa9be8d11056ae707ff8 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:22:26 -0600 Subject: [PATCH 131/360] Add remote follow view --- .../views/federation/remotefollow.blade.php | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 resources/views/federation/remotefollow.blade.php diff --git a/resources/views/federation/remotefollow.blade.php b/resources/views/federation/remotefollow.blade.php new file mode 100644 index 000000000..9af271af0 --- /dev/null +++ b/resources/views/federation/remotefollow.blade.php @@ -0,0 +1,48 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
+
+
+

Remote Follow

+
+
+

This feature is not yet ready for production. Please try again later.

+
+
+
+ @if (session('status')) +
+ {{ session('status') }} +
+ @endif +
+ @csrf +
+
+
+ +
+ +

ex: me@example.com or http://example.net/nickname

+
+
+
+ +
+ +
+
+
+
+
+
+
+ +@endsection \ No newline at end of file From b2362776ccd490f4fdb10dd81c6d6a6b5afb950f Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:23:00 -0600 Subject: [PATCH 132/360] Add report views --- resources/views/report/form.blade.php | 54 +++++++++++++++++++ .../views/report/not-interested.blade.php | 20 +++++++ resources/views/report/spam.blade.php | 42 +++++++++++++++ resources/views/report/spam/comment.blade.php | 42 +++++++++++++++ resources/views/report/spam/post.blade.php | 42 +++++++++++++++ resources/views/report/spam/profile.blade.php | 42 +++++++++++++++ 6 files changed, 242 insertions(+) create mode 100644 resources/views/report/form.blade.php create mode 100644 resources/views/report/not-interested.blade.php create mode 100644 resources/views/report/spam.blade.php create mode 100644 resources/views/report/spam/comment.blade.php create mode 100644 resources/views/report/spam/post.blade.php create mode 100644 resources/views/report/spam/profile.blade.php diff --git a/resources/views/report/form.blade.php b/resources/views/report/form.blade.php new file mode 100644 index 000000000..1c755844e --- /dev/null +++ b/resources/views/report/form.blade.php @@ -0,0 +1,54 @@ +@extends('layouts.app') + +@section('content') + +
+
+ +
+
+

This feature is not yet ready for production. Please try again later.

+
+
+ +
+
+ Report +
+
+
+

Please select one of the following options.

+
+ +
+
+
+
+ +@endsection \ No newline at end of file diff --git a/resources/views/report/not-interested.blade.php b/resources/views/report/not-interested.blade.php new file mode 100644 index 000000000..687a19751 --- /dev/null +++ b/resources/views/report/not-interested.blade.php @@ -0,0 +1,20 @@ +@extends('layouts.app') + +@section('content') + +
+
+
+
+ I'm not interested in this content +
+
+
+

You can unfollow or mute a user or hashtag from appearing in your timeline. Unless the content violates our terms of service, there is nothing we can do to remove it.

+
+
+
+
+
+ +@endsection \ No newline at end of file diff --git a/resources/views/report/spam.blade.php b/resources/views/report/spam.blade.php new file mode 100644 index 000000000..aff2fb3e8 --- /dev/null +++ b/resources/views/report/spam.blade.php @@ -0,0 +1,42 @@ +@extends('layouts.app') + +@section('content') + +
+
+
+
+ Report Spam +
+
+
+

Please select one of the following options.

+
+ +
+
+
+
+ +@endsection \ No newline at end of file diff --git a/resources/views/report/spam/comment.blade.php b/resources/views/report/spam/comment.blade.php new file mode 100644 index 000000000..2f213e53e --- /dev/null +++ b/resources/views/report/spam/comment.blade.php @@ -0,0 +1,42 @@ +@extends('layouts.app') + +@section('content') + +
+
+
+
+ Report Comment Spam +
+
+
+

Please select one of the following options.

+
+ +
+
+
+
+ +@endsection \ No newline at end of file diff --git a/resources/views/report/spam/post.blade.php b/resources/views/report/spam/post.blade.php new file mode 100644 index 000000000..b12228801 --- /dev/null +++ b/resources/views/report/spam/post.blade.php @@ -0,0 +1,42 @@ +@extends('layouts.app') + +@section('content') + +
+
+
+
+ Report Post Spam +
+
+
+

Please select one of the following options.

+
+ +
+
+
+
+ +@endsection \ No newline at end of file diff --git a/resources/views/report/spam/profile.blade.php b/resources/views/report/spam/profile.blade.php new file mode 100644 index 000000000..9e4a36e6f --- /dev/null +++ b/resources/views/report/spam/profile.blade.php @@ -0,0 +1,42 @@ +@extends('layouts.app') + +@section('content') + +
+
+
+
+ Report Profile Spam +
+
+
+

Please select one of the following options.

+
+ +
+
+
+
+ +@endsection \ No newline at end of file From 7df83c79022182b78e1ba79108f2affba7236c8d Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:23:31 -0600 Subject: [PATCH 133/360] Add import view --- resources/views/settings/import/ig.blade.php | 82 ++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 resources/views/settings/import/ig.blade.php diff --git a/resources/views/settings/import/ig.blade.php b/resources/views/settings/import/ig.blade.php new file mode 100644 index 000000000..2ef8266f7 --- /dev/null +++ b/resources/views/settings/import/ig.blade.php @@ -0,0 +1,82 @@ +@extends('settings.template') + +@section('section') + +
+

Import from Instagram

+
+
+
+

Before you proceed, you need to have a backup of your account from Instagram, you can do that here.

+
+
+
+
+

Step 1

+

Import photos directory

+

50mb limit, if your photos directory exceeds that amount please follow this guide.

+
+
+ @csrf + + +
+
+
+
+
+

Step 2

+

Import media.json file

+

10mb limit, please only upload the media.json file

+
+
+ @csrf + + +
+
+
+
+
+

Step 3

+

Audit Data

+

Manually approve each import or bulk approve

+
+
+ @csrf + +
+
+
+
+
+ +@endsection + +@push('scripts') + +@endpush \ No newline at end of file From b222186527c64431f64166b5e42eafa18dc8b5f4 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:23:43 -0600 Subject: [PATCH 134/360] Update fediverse view --- resources/views/site/fediverse.blade.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/resources/views/site/fediverse.blade.php b/resources/views/site/fediverse.blade.php index 7858c3509..2f7cc9ddd 100644 --- a/resources/views/site/fediverse.blade.php +++ b/resources/views/site/fediverse.blade.php @@ -6,4 +6,12 @@

Fediverse


+
+

Fediverse is a portmanteau of "federation" and "universe". It is a common, informal name for a somewhat broad federation of social network servers.

+

Supported Fediverse Projects

+
    +
  • Mastodon - A federated twitter alternative.
  • +
  • Pleroma - A federated twitter alternative.
  • +
+
@endsection \ No newline at end of file From 786e4b5747b79924e4b6348870e01d78225575a2 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:23:57 -0600 Subject: [PATCH 135/360] Update open source view --- resources/views/site/opensource.blade.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resources/views/site/opensource.blade.php b/resources/views/site/opensource.blade.php index 1f62e0f97..9688a90e3 100644 --- a/resources/views/site/opensource.blade.php +++ b/resources/views/site/opensource.blade.php @@ -6,4 +6,7 @@

Open Source


+
+

The software that powers this website is called PixelFed and anyone can download the source code and run their own instance!

+
@endsection \ No newline at end of file From 7f10f8caf30f9a4d43752066f853d03c06a273ea Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:24:15 -0600 Subject: [PATCH 136/360] Update personal timeline view --- resources/views/timeline/personal.blade.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/resources/views/timeline/personal.blade.php b/resources/views/timeline/personal.blade.php index 134fd37f1..d5458ac5e 100644 --- a/resources/views/timeline/personal.blade.php +++ b/resources/views/timeline/personal.blade.php @@ -41,6 +41,15 @@ @include('status.template') @endforeach + @if($timeline->count() == 0) +
+
+
+

{{ __('timeline.emptyPersonalTimeline') }}

+
+
+
+ @endif
{{$timeline->links()}} From 4b9dd1e312b99bdc71c0dd6d605d6d5d2c8f1c96 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:25:18 -0600 Subject: [PATCH 137/360] Update settings home view --- resources/views/settings/home.blade.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/resources/views/settings/home.blade.php b/resources/views/settings/home.blade.php index 87c516fc0..ec451b6bb 100644 --- a/resources/views/settings/home.blade.php +++ b/resources/views/settings/home.blade.php @@ -9,19 +9,28 @@
@csrf
- +
- +
- + +
+ +
+
+
+

Private Information

+
+
+
From 51aa17052fd80e5677ea7b1904758c9c412f86f1 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:34:04 -0600 Subject: [PATCH 138/360] Update FederationController Prevent outbox from returning an actor object so other federation software does not attempt to send inbox requests until the inbox is fully supported. --- app/Http/Controllers/FederationController.php | 5 ++++- app/Http/Controllers/ProfileController.php | 2 +- config/pixelfed.php | 4 ++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/FederationController.php b/app/Http/Controllers/FederationController.php index 1bef479d2..a5e7007ec 100644 --- a/app/Http/Controllers/FederationController.php +++ b/app/Http/Controllers/FederationController.php @@ -123,8 +123,11 @@ class FederationController extends Controller public function userOutbox(Request $request, $username) { + if(config('pixelfed.activitypub_enabled') == false) { + abort(403); + } + $user = Profile::whereNull('remote_url')->whereUsername($username)->firstOrFail(); - $timeline = $user->statuses()->orderBy('created_at','desc')->paginate(10); $fractal = new Fractal\Manager(); $resource = new Fractal\Resource\Item($user, new ProfileOutbox); diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index 7aba7e572..a9d9846c5 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -25,7 +25,7 @@ class ProfileController extends Controller 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' ]; - if(in_array($request->header('accept'), $mimes)) { + if(in_array($request->header('accept'), $mimes) && config('pixelfed.activitypub_enabled')) { return $this->showActivityPub($request, $user); } diff --git a/config/pixelfed.php b/config/pixelfed.php index 479df7fa9..69a8f3dfb 100644 --- a/config/pixelfed.php +++ b/config/pixelfed.php @@ -71,5 +71,9 @@ return [ | */ 'open_registration' => env('OPEN_REGISTRATION', true), + + 'remote_follow_enabled' => env('REMOTE_FOLLOW', false), + + 'activitypub_enabled' => env('ACTIVITY_PUB', false), ]; \ No newline at end of file From 1ba6f5715c5fc081b56b4a8314f1092795858573 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:35:22 -0600 Subject: [PATCH 139/360] Update web.php --- routes/web.php | 120 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 116 insertions(+), 4 deletions(-) diff --git a/routes/web.php b/routes/web.php index 12fc04c0e..7b9e1f8f5 100644 --- a/routes/web.php +++ b/routes/web.php @@ -11,10 +11,122 @@ | */ -Route::get('/', function () { - return view('welcome'); + +Route::domain(config('pixelfed.domain.admin'))->group(function() { + Route::redirect('/', '/dashboard'); + Route::redirect('timeline', config('app.url').'/timeline'); + Route::get('dashboard', 'AdminController@home')->name('admin.home'); + Route::redirect('statuses', '/statuses/list'); + Route::get('statuses/list', 'AdminController@statuses')->name('admin.statuses'); + Route::get('statuses/show/{id}', 'AdminController@showStatus'); + Route::redirect('users', '/users/list'); + Route::get('users/list', 'AdminController@users')->name('admin.users'); + Route::redirect('media', '/media/list'); + Route::get('media/list', 'AdminController@media')->name('admin.media'); }); -Auth::routes(); +Route::domain(config('pixelfed.domain.app'))->group(function() { -Route::get('/home', 'HomeController@index')->name('home'); + Route::view('/', 'welcome'); + + Auth::routes(); + + Route::get('.well-known/webfinger', 'FederationController@webfinger'); + Route::get('.well-known/nodeinfo', 'FederationController@nodeinfoWellKnown'); + + Route::get('/home', 'HomeController@index')->name('home'); + + + Route::get('discover', 'DiscoverController@home')->name('discover'); + + Route::get('search/hashtag/{tag}', function($tag) { + return redirect('/discover/tags/'.$tag); + }); + + Route::group(['prefix' => 'api'], function() { + Route::get('search/{tag}', 'SearchController@searchAPI') + ->where('tag', '[A-Za-z0-9]+'); + Route::get('nodeinfo/2.0.json', 'FederationController@nodeinfo'); + }); + + Route::get('discover/tags/{hashtag}', 'DiscoverController@showTags'); + + Route::group(['prefix' => 'i'], function() { + Route::redirect('/', '/'); + Route::get('remote-follow', 'FederationController@remoteFollow')->name('remotefollow'); + Route::post('remote-follow', 'FederationController@remoteFollowStore'); + Route::post('comment', 'CommentController@store'); + Route::post('like', 'LikeController@store'); + Route::post('follow', 'FollowerController@store'); + Route::post('bookmark', 'BookmarkController@store'); + + Route::group(['prefix' => 'report'], function() { + Route::get('/', 'ReportController@showForm')->name('report.form'); + Route::get('not-interested', 'ReportController@notInterestedForm')->name('report.not-interested'); + Route::get('spam', 'ReportController@spamForm')->name('report.spam'); + Route::get('spam/comment', 'ReportController@spamCommentForm')->name('report.spam.comment'); + Route::get('spam/post', 'ReportController@spamPostForm')->name('report.spam.post'); + Route::get('spam/profile', 'ReportController@spamProfileForm')->name('report.spam.profile'); + }); + }); + + Route::group(['prefix' => 'account'], function() { + Route::redirect('/', '/'); + Route::get('activity', 'AccountController@notifications')->name('notifications'); + }); + + Route::group(['prefix' => 'settings'], function() { + Route::redirect('/', '/settings/home'); + Route::get('home', 'SettingsController@home')->name('settings'); + Route::post('home', 'SettingsController@homeUpdate'); + Route::get('avatar', 'SettingsController@avatar')->name('settings.avatar'); + Route::get('password', 'SettingsController@password')->name('settings.password'); + Route::post('password', 'SettingsController@passwordUpdate'); + Route::get('email', 'SettingsController@email')->name('settings.email'); + Route::get('notifications', 'SettingsController@notifications')->name('settings.notifications'); + Route::get('privacy', 'SettingsController@privacy')->name('settings.privacy'); + Route::get('security', 'SettingsController@security')->name('settings.security'); + Route::get('applications', 'SettingsController@applications')->name('settings.applications'); + Route::get('data-export', 'SettingsController@dataExport')->name('settings.dataexport'); + Route::get('import', 'SettingsController@dataImport')->name('settings.import'); + Route::get('import/instagram', 'SettingsController@dataImportInstagram')->name('settings.import.ig'); + Route::get('developers', 'SettingsController@developers')->name('settings.developers'); + }); + + Route::group(['prefix' => 'timeline'], function() { + Route::get('/', 'TimelineController@personal')->name('timeline.personal'); + Route::post('/', 'StatusController@store'); + Route::get('public', 'TimelineController@local')->name('timeline.public'); + Route::post('public', 'StatusController@store'); + }); + + Route::group(['prefix' => 'users'], function() { + Route::redirect('/', '/'); + Route::get('{user}.atom', 'ProfileController@showAtomFeed'); + Route::get('{username}/outbox', 'FederationController@userOutbox'); + Route::get('{user}', function($user) { + return redirect('/@'.$user); + }); + }); + + Route::group(['prefix' => 'site'], function() { + Route::redirect('/', '/'); + Route::view('about', 'site.about')->name('site.about'); + Route::view('features', 'site.features')->name('site.features'); + Route::view('help', 'site.help')->name('site.help'); + Route::view('fediverse', 'site.fediverse')->name('site.fediverse'); + Route::view('open-source', 'site.opensource')->name('site.opensource'); + Route::view('banned-instances', 'site.bannedinstances')->name('site.bannedinstances'); + Route::view('terms', 'site.terms')->name('site.terms'); + Route::view('privacy', 'site.privacy')->name('site.privacy'); + Route::view('platform', 'site.platform')->name('site.platform'); + Route::view('libraries', 'site.libraries')->name('site.libraries'); + }); + + Route::get('p/{username}/{id}', 'StatusController@show'); + Route::get('{username}/saved', 'ProfileController@savedBookmarks'); + Route::get('{username}/followers', 'ProfileController@followers'); + Route::get('{username}/following', 'ProfileController@following'); + Route::get('{username}', 'ProfileController@show'); + +}); From b9c02e5b6862263bd45747e502fbc76b447aa905 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:35:32 -0600 Subject: [PATCH 140/360] Update horizon config --- config/horizon.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/horizon.php b/config/horizon.php index 03f468851..0d74e01dd 100644 --- a/config/horizon.php +++ b/config/horizon.php @@ -86,7 +86,7 @@ return [ 'connection' => 'redis', 'queue' => ['default'], 'balance' => 'simple', - 'processes' => 3, + 'processes' => 10, 'tries' => 3, ], ], From 82f3c50766ecef5a3b32fc0d95b723b1e11be12d Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 21:37:52 -0600 Subject: [PATCH 141/360] Add debugbar config --- config/debugbar.php | 201 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 config/debugbar.php diff --git a/config/debugbar.php b/config/debugbar.php new file mode 100644 index 000000000..4fada2da2 --- /dev/null +++ b/config/debugbar.php @@ -0,0 +1,201 @@ + env('DEBUGBAR_ENABLED', false), + 'except' => [ + // + ], + + /* + |-------------------------------------------------------------------------- + | Storage settings + |-------------------------------------------------------------------------- + | + | DebugBar stores data for session/ajax requests. + | You can disable this, so the debugbar stores data in headers/session, + | but this can cause problems with large data collectors. + | By default, file storage (in the storage folder) is used. Redis and PDO + | can also be used. For PDO, run the package migrations first. + | + */ + 'storage' => [ + 'enabled' => true, + 'driver' => 'file', // redis, file, pdo, custom + 'path' => storage_path('debugbar'), // For file driver + 'connection' => null, // Leave null for default connection (Redis/PDO) + 'provider' => '' // Instance of StorageInterface for custom driver + ], + + /* + |-------------------------------------------------------------------------- + | Vendors + |-------------------------------------------------------------------------- + | + | Vendor files are included by default, but can be set to false. + | This can also be set to 'js' or 'css', to only include javascript or css vendor files. + | Vendor files are for css: font-awesome (including fonts) and highlight.js (css files) + | and for js: jquery and and highlight.js + | So if you want syntax highlighting, set it to true. + | jQuery is set to not conflict with existing jQuery scripts. + | + */ + + 'include_vendors' => true, + + /* + |-------------------------------------------------------------------------- + | Capture Ajax Requests + |-------------------------------------------------------------------------- + | + | The Debugbar can capture Ajax requests and display them. If you don't want this (ie. because of errors), + | you can use this option to disable sending the data through the headers. + | + | Optionally, you can also send ServerTiming headers on ajax requests for the Chrome DevTools. + */ + + 'capture_ajax' => true, + 'add_ajax_timing' => false, + + /* + |-------------------------------------------------------------------------- + | Custom Error Handler for Deprecated warnings + |-------------------------------------------------------------------------- + | + | When enabled, the Debugbar shows deprecated warnings for Symfony components + | in the Messages tab. + | + */ + 'error_handler' => false, + + /* + |-------------------------------------------------------------------------- + | Clockwork integration + |-------------------------------------------------------------------------- + | + | The Debugbar can emulate the Clockwork headers, so you can use the Chrome + | Extension, without the server-side code. It uses Debugbar collectors instead. + | + */ + 'clockwork' => false, + + /* + |-------------------------------------------------------------------------- + | DataCollectors + |-------------------------------------------------------------------------- + | + | Enable/disable DataCollectors + | + */ + + 'collectors' => [ + 'phpinfo' => true, // Php version + 'messages' => true, // Messages + 'time' => true, // Time Datalogger + 'memory' => true, // Memory usage + 'exceptions' => true, // Exception displayer + 'log' => true, // Logs from Monolog (merged in messages if enabled) + 'db' => true, // Show database (PDO) queries and bindings + 'views' => true, // Views with their data + 'route' => true, // Current route information + 'auth' => true, // Display Laravel authentication status + 'gate' => true, // Display Laravel Gate checks + 'session' => true, // Display session data + 'symfony_request' => true, // Only one can be enabled.. + 'mail' => true, // Catch mail messages + 'laravel' => false, // Laravel version and environment + 'events' => false, // All events fired + 'default_request' => false, // Regular or special Symfony request logger + 'logs' => false, // Add the latest log messages + 'files' => false, // Show the included files + 'config' => false, // Display config settings + 'cache' => false, // Display cache events + ], + + /* + |-------------------------------------------------------------------------- + | Extra options + |-------------------------------------------------------------------------- + | + | Configure some DataCollectors + | + */ + + 'options' => [ + 'auth' => [ + 'show_name' => true, // Also show the users name/email in the debugbar + ], + 'db' => [ + 'with_params' => true, // Render SQL with the parameters substituted + 'backtrace' => true, // Use a backtrace to find the origin of the query in your files. + 'timeline' => false, // Add the queries to the timeline + 'explain' => [ // Show EXPLAIN output on queries + 'enabled' => false, + 'types' => ['SELECT'], // ['SELECT', 'INSERT', 'UPDATE', 'DELETE']; for MySQL 5.6.3+ + ], + 'hints' => true, // Show hints for common mistakes + ], + 'mail' => [ + 'full_log' => false + ], + 'views' => [ + 'data' => false, //Note: Can slow down the application, because the data can be quite large.. + ], + 'route' => [ + 'label' => true // show complete route on bar + ], + 'logs' => [ + 'file' => null + ], + 'cache' => [ + 'values' => true // collect cache values + ], + ], + + /* + |-------------------------------------------------------------------------- + | Inject Debugbar in Response + |-------------------------------------------------------------------------- + | + | Usually, the debugbar is added just before , by listening to the + | Response after the App is done. If you disable this, you have to add them + | in your template yourself. See http://phpdebugbar.com/docs/rendering.html + | + */ + + 'inject' => true, + + /* + |-------------------------------------------------------------------------- + | DebugBar route prefix + |-------------------------------------------------------------------------- + | + | Sometimes you want to set route prefix to be used by DebugBar to load + | its resources from. Usually the need comes from misconfigured web server or + | from trying to overcome bugs like this: http://trac.nginx.org/nginx/ticket/97 + | + */ + 'route_prefix' => '_debugbar', + + /* + |-------------------------------------------------------------------------- + | DebugBar route domain + |-------------------------------------------------------------------------- + | + | By default DebugBar route served from the same domain that request served. + | To override default domain, specify it as a non-empty value. + */ + 'route_domain' => null, +]; From 8498779430dbd3e112fc6f4925acb3698ab78fa6 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 22:07:29 -0600 Subject: [PATCH 142/360] Fix avatar bug --- app/Jobs/AvatarPipeline/CreateAvatar.php | 6 ++++++ storage/app/public/avatars/.gitignore | 3 +++ storage/app/public/avatars/default.png | Bin 0 -> 216568 bytes storage/debugbar/.gitignore | 2 ++ 4 files changed, 11 insertions(+) create mode 100644 storage/app/public/avatars/.gitignore create mode 100644 storage/app/public/avatars/default.png create mode 100644 storage/debugbar/.gitignore diff --git a/app/Jobs/AvatarPipeline/CreateAvatar.php b/app/Jobs/AvatarPipeline/CreateAvatar.php index 88243e4c6..40e54deb2 100644 --- a/app/Jobs/AvatarPipeline/CreateAvatar.php +++ b/app/Jobs/AvatarPipeline/CreateAvatar.php @@ -48,6 +48,12 @@ class CreateAvatar implements ShouldQueue $icon = $identicon->getIcon($hash); try { + + $baseDir = storage_path('app/public/avatars'); + if(!is_dir($baseDir)) { + mkdir($baseDir); + } + $prefix = $profile->id; $padded = str_pad($prefix, 12, 0, STR_PAD_LEFT); $parts = str_split($padded, 3); diff --git a/storage/app/public/avatars/.gitignore b/storage/app/public/avatars/.gitignore new file mode 100644 index 000000000..e841eefe2 --- /dev/null +++ b/storage/app/public/avatars/.gitignore @@ -0,0 +1,3 @@ +* +!.gitignore +!default.png \ No newline at end of file diff --git a/storage/app/public/avatars/default.png b/storage/app/public/avatars/default.png new file mode 100644 index 0000000000000000000000000000000000000000..e7bdbefd2fb2b16ba52802312f822a1b69d587f4 GIT binary patch literal 216568 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 M07*qoM6N<$g6k=5NdN!< literal 0 HcmV?d00001 diff --git a/storage/debugbar/.gitignore b/storage/debugbar/.gitignore new file mode 100644 index 000000000..d6b7ef32c --- /dev/null +++ b/storage/debugbar/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore From 1d3482a6e8f8b01e38a81d6d44070a2054b2ee85 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 31 May 2018 23:38:33 -0600 Subject: [PATCH 143/360] Update compiled assets --- public/js/app.js | Bin 306149 -> 305119 bytes public/mix-manifest.json | Bin 184 -> 184 bytes resources/assets/js/bootstrap.js | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/js/app.js b/public/js/app.js index 1f6bb3d19823fc67398b2154cdc44b9b96e700bf..79183fb803a23a545300bedc673f6b5fff0bcd61 100644 GIT binary patch delta 33 rcmV++0N(%Q*Am~)5`eS;`1Xe*`2n{h`2uF~x1H((d%U;bs00QBJ1G%G delta 904 zcmZuwL2DC17$s>?>Oo4;gMzY-N@m#EN#nsowwqphQADwz2&IQfGD!wEv%}16o6?5p z$*a&q&K~>+LN5LXPvTK~5PA|su|4`tn%cB@S$4ngeQ&;b@9o!5i{HO2zWPu&`ZM?R z;q%eKufo#BX4dNonB2>a>TdEc= zOQmzSu6R!*Xv%{&%7kW#WScz2gxX|BI?<~cI_=l8LF~--4)4p%GM!n6QAJixrl}>d z9JX;afzuJQj=S7O%}hBil`x2~RH%;Y62Bq;FD779GK)woQY!$bnC1p^bwKygbxFGv(GMsMm;=P<`2Iu1-pA*d^K$veR`@BTHL>Hc=JT%b}Kik+wyP}zi((^OZdAaTHbM)~ItSe+nj-H2Yoz(!yBpW% z$$$*#YQA=FwEwJh_07UzVZ3lyeEjqBRvIJc^h4RPwhKUbz^ zcnWYkR}OZ!3AC+v0Jddp=%vDh#D+oiME^+}D^icDE7&lrQ`r<)(JBl@5zW{H49S%V z%GG2qQUjpQZ5PI<4a2jbV~F2)Rs=&JwaR9xVCns=gJp<BT4IWMiqS;#MgWZS2~7Y1 diff --git a/resources/assets/js/bootstrap.js b/resources/assets/js/bootstrap.js index bda277bc1..a79c08644 100644 --- a/resources/assets/js/bootstrap.js +++ b/resources/assets/js/bootstrap.js @@ -17,8 +17,8 @@ try { window.Bloodhound = require('./lib/bloodhound'); require('./components/localstorage'); - require('./components/likebutton'); - require('./components/commentform'); + //require('./components/likebutton'); + //require('./components/commentform'); require('./components/searchform'); require('./components/bookmarkform'); } catch (e) {} From 57edcfac800d81156b427a8a1a1c502a7a80650f Mon Sep 17 00:00:00 2001 From: j1t Date: Fri, 1 Jun 2018 05:59:07 +0000 Subject: [PATCH 144/360] Create timeline.php --- resources/lang/he/timeline.php | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 resources/lang/he/timeline.php diff --git a/resources/lang/he/timeline.php b/resources/lang/he/timeline.php new file mode 100644 index 000000000..2a60fb7b5 --- /dev/null +++ b/resources/lang/he/timeline.php @@ -0,0 +1,7 @@ + 'ציר הזמן שלך ריק.' + +]; From 112ca537e6ee39c1d620a8c80c7811ef1d8bdd7a Mon Sep 17 00:00:00 2001 From: j1t Date: Fri, 1 Jun 2018 06:03:12 +0000 Subject: [PATCH 145/360] Update profile.php --- resources/lang/he/profile.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/resources/lang/he/profile.php b/resources/lang/he/profile.php index ff1674f34..5c76cbd91 100644 --- a/resources/lang/he/profile.php +++ b/resources/lang/he/profile.php @@ -1,5 +1,8 @@ 'למשתמש זה עדיין אין פוסטים!', + 'emptyTimeline' => 'למשתמש זה עדיין אין פוסטים!', + 'emptyFollowers' => 'למשתמש זה עדיין אין עוקבים!', + 'emptyFollowing' => 'משתמש זה עדיין אינו עוקב אחרי אף אחד!', + 'savedWarning' => 'רק אתם יכולים לראות את מה ששמרתם', ]; From d2ed666321423150f58922f982a68f0cec259fdd Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 1 Jun 2018 00:06:08 -0600 Subject: [PATCH 146/360] Update discover page Closes #48 --- resources/views/discover/home.blade.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/resources/views/discover/home.blade.php b/resources/views/discover/home.blade.php index e5fedc366..0bce0f326 100644 --- a/resources/views/discover/home.blade.php +++ b/resources/views/discover/home.blade.php @@ -10,9 +10,11 @@

-@endsection \ No newline at end of file +@endsection From 31802c942d2faaa8ef0aa08a72df91c770a1f943 Mon Sep 17 00:00:00 2001 From: Tim Stahel Date: Fri, 1 Jun 2018 16:47:11 +0200 Subject: [PATCH 158/360] updated swedish translation --- resources/lang/sv/notification.php | 8 ++++++++ resources/lang/sv/profile.php | 8 ++++++++ resources/lang/sv/timeline.php | 7 +++++++ 3 files changed, 23 insertions(+) create mode 100644 resources/lang/sv/notification.php create mode 100644 resources/lang/sv/profile.php create mode 100644 resources/lang/sv/timeline.php diff --git a/resources/lang/sv/notification.php b/resources/lang/sv/notification.php new file mode 100644 index 000000000..bbd658bce --- /dev/null +++ b/resources/lang/sv/notification.php @@ -0,0 +1,8 @@ + 'gillade ditt foto.', + 'startedFollowingYou' => 'började följa dig.', + +]; diff --git a/resources/lang/sv/profile.php b/resources/lang/sv/profile.php new file mode 100644 index 000000000..c7dda1d4d --- /dev/null +++ b/resources/lang/sv/profile.php @@ -0,0 +1,8 @@ + 'Den här användaren har inga inlägg än!', + 'emptyFollowers' => 'Den här användaren har inga följare än!', + 'emptyFollowing' => 'Den här användaren följer inte någon än!', + 'savedWarning' => 'Du är den enda som kan se vad du har sparat', +]; diff --git a/resources/lang/sv/timeline.php b/resources/lang/sv/timeline.php new file mode 100644 index 000000000..9c1c8bae8 --- /dev/null +++ b/resources/lang/sv/timeline.php @@ -0,0 +1,7 @@ + 'Din tidslinje är tom.' + +]; From 464cd3f888abac6e1572a8c267861a4e60e8e88e Mon Sep 17 00:00:00 2001 From: moshpirit Date: Fri, 1 Jun 2018 17:17:50 +0200 Subject: [PATCH 159/360] Create timeline.php --- resources/lang/es/timeline.php | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 resources/lang/es/timeline.php diff --git a/resources/lang/es/timeline.php b/resources/lang/es/timeline.php new file mode 100644 index 000000000..877b37062 --- /dev/null +++ b/resources/lang/es/timeline.php @@ -0,0 +1,7 @@ ++ 'Tu línea temporal está vacía.' ++ ++]; From ab10da03506c87d8f5f0df5c6cf01cdbd0d32a59 Mon Sep 17 00:00:00 2001 From: moshpirit Date: Fri, 1 Jun 2018 17:22:10 +0200 Subject: [PATCH 160/360] =?UTF-8?q?Token=E2=86=92"token"=20and=20one=20for?= =?UTF-8?q?gotten=20word=20to=20translate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit password wasn't translated and token is not a Spanish word, so it should go between quotation marks --- resources/lang/es/passwords.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/lang/es/passwords.php b/resources/lang/es/passwords.php index 5abf74146..f2b66f57f 100644 --- a/resources/lang/es/passwords.php +++ b/resources/lang/es/passwords.php @@ -14,9 +14,9 @@ return [ */ 'password' => 'La contraseña debe tener al menos seis caracteres y coincidir con la de confirmación.', - 'reset' => '¡Tu password se ha cambiado!', + 'reset' => '¡Tu contraseña se ha cambiado!', 'sent' => 'Te hemos enviado a tu correo un enlace para cambiar tu contraseña.', - 'token' => 'El token para canbiar la contraseña no es válido.', + 'token' => 'El "token" para canbiar la contraseña no es válido.', 'user' => "No hemos podido encontrar a ningún usuario con esa contraseña.", ]; From ac4d3253256352b4848a1d8bb23e3d0f67773507 Mon Sep 17 00:00:00 2001 From: moshpirit Date: Fri, 1 Jun 2018 17:27:19 +0200 Subject: [PATCH 161/360] Update profile.php Lacked some lines --- resources/lang/es/profile.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/resources/lang/es/profile.php b/resources/lang/es/profile.php index c62bcf3f6..88105ced9 100644 --- a/resources/lang/es/profile.php +++ b/resources/lang/es/profile.php @@ -1,5 +1,8 @@ 'Este usuario todavía no ha publicado nada.', + 'emptyTimeline' => '¡Este usuario todavía no ha publicado nada!', + 'emptyFollowers' => '¡Este usuario todavía no tiene seguidores!', + 'emptyFollowing' => '¡Este usuario todavía no está siguiendo a nadie!', + 'savedWarning' => 'Solamente tú puedes ver lo que has guardado', ]; From c083fa7c9fa301e603ef1f98aeb25e9dc3685c99 Mon Sep 17 00:00:00 2001 From: moshpirit Date: Fri, 1 Jun 2018 17:32:44 +0200 Subject: [PATCH 162/360] Update notification.php --- resources/lang/es/notification.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/lang/es/notification.php b/resources/lang/es/notification.php index cd62c2897..96b07e5f4 100644 --- a/resources/lang/es/notification.php +++ b/resources/lang/es/notification.php @@ -2,6 +2,7 @@ return [ - 'likedPhoto' => 'le gustó tu foto.', + 'likedPhoto' => 'le gustó tu foto.', + 'startedFollowingYou' => 'empezó a seguirte.', ]; From 9511988ddd1d8a70bf1984b740ca0f2f69af5387 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Miko=C5=82ajczak?= Date: Fri, 1 Jun 2018 17:49:45 +0200 Subject: [PATCH 163/360] Follow/Unfollow button in followers/ing lists MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marcin Mikołajczak --- resources/views/profile/followers.blade.php | 21 ++++++++++++++++++++- resources/views/profile/following.blade.php | 21 ++++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/resources/views/profile/followers.blade.php b/resources/views/profile/followers.blade.php index f27d12e5c..7bb558678 100644 --- a/resources/views/profile/followers.blade.php +++ b/resources/views/profile/followers.blade.php @@ -56,6 +56,25 @@ {{$user->name}} + @if(Auth::check() && Auth::id() != $user->user_id) + @if($user->followedBy(Auth::user()->profile) == false) + + + + @else + + + + @endif + @endif @endforeach @@ -75,4 +94,4 @@
-

{{$profile->username}}

+

{{$profile->username}}

{{$profile->name}}

@csrf From 0a619bac8fb19d63bf1ca2cefa3d202d8197800e Mon Sep 17 00:00:00 2001 From: Stasiek Michalski Date: Fri, 1 Jun 2018 08:42:10 +0200 Subject: [PATCH 147/360] Always center content without leaking in card --- resources/assets/sass/custom.scss | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/resources/assets/sass/custom.scss b/resources/assets/sass/custom.scss index 55f0b464c..e48165be8 100644 --- a/resources/assets/sass/custom.scss +++ b/resources/assets/sass/custom.scss @@ -55,11 +55,7 @@ body, button, input, textarea { display: -webkit-box !important; display: -ms-flexbox !important; display: flex !important; - -webkit-box-align: center !important; - -ms-flex-align: center !important; - align-items: center !important; - padding: 0; - background-color: #fff; + margin: auto !important; } .card.status-container .status-comments { @@ -104,4 +100,4 @@ body, button, input, textarea { .notification-page .list-group-item:first-child { border-top: none; -} \ No newline at end of file +} From 336439b331e40988252038e63481d35f4ac3bb82 Mon Sep 17 00:00:00 2001 From: deadsuperhero Date: Fri, 1 Jun 2018 00:12:13 -0700 Subject: [PATCH 148/360] prevent card from stretching --- resources/assets/sass/custom.scss | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/resources/assets/sass/custom.scss b/resources/assets/sass/custom.scss index 55f0b464c..9cff7bb1d 100644 --- a/resources/assets/sass/custom.scss +++ b/resources/assets/sass/custom.scss @@ -51,6 +51,10 @@ body, button, input, textarea { .card.status-container { } +img.card-img-top { + height: auto; +} + .card.status-container .status-photo { display: -webkit-box !important; display: -ms-flexbox !important; @@ -104,4 +108,4 @@ body, button, input, textarea { .notification-page .list-group-item:first-child { border-top: none; -} \ No newline at end of file +} From 3ead4b42b2ecaff6a0e546d06e348b6ae4597c18 Mon Sep 17 00:00:00 2001 From: deadsuperhero Date: Fri, 1 Jun 2018 00:17:14 -0700 Subject: [PATCH 149/360] adjust to just the class --- resources/assets/sass/custom.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/assets/sass/custom.scss b/resources/assets/sass/custom.scss index 9cff7bb1d..fa4da39fc 100644 --- a/resources/assets/sass/custom.scss +++ b/resources/assets/sass/custom.scss @@ -51,7 +51,7 @@ body, button, input, textarea { .card.status-container { } -img.card-img-top { +.card-img-top { height: auto; } From 9fbc5d0902fbc2042a6d2bb698cc3802e7b25508 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 1 Jun 2018 01:41:44 -0600 Subject: [PATCH 150/360] Update complied assets Closes #78 --- public/css/app.css | Bin 157659 -> 157685 bytes public/mix-manifest.json | Bin 184 -> 184 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/public/css/app.css b/public/css/app.css index d56db8db351270ac2bf078ae9df7ff2c299baf36..0617b662f9ad3ec794bea0e107bb5b52a9ed56a9 100644 GIT binary patch delta 40 wcmcb8p7ZN@&W0AoElgVyM07KA({)So3#v0xGt)CltP)F0^0%)`VA5p=0A=V9FaQ7m delta 24 gcmex*p7Zv3&W0AoElgVyrXNdWlG^?vfr*zL0F*uoKL7v# diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 0ec3eadf7228d04e799ef2ccff288b8c735a0df4..824fba1379f4fc20943e99b62a77ba9956429192 100644 GIT binary patch delta 30 lcmdnNxPx&*yhv(tl2MY8nTbJKl3}t@T9R?1S?a`MR{)r#3C;ij delta 30 lcmdnNxPx&*yohn4k%?JyQlhzKilw=QS*nFeQqsg?R{)VN30wdG From 1273a5bb53d2dce5c9de58f7bec46827e42a5efa Mon Sep 17 00:00:00 2001 From: Jonas Date: Fri, 1 Jun 2018 09:47:34 +0200 Subject: [PATCH 151/360] Update personal.blade.php --- resources/views/timeline/personal.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/timeline/personal.blade.php b/resources/views/timeline/personal.blade.php index d5458ac5e..b10490638 100644 --- a/resources/views/timeline/personal.blade.php +++ b/resources/views/timeline/personal.blade.php @@ -24,7 +24,7 @@ @csrf
- +
@@ -59,4 +59,4 @@
-@endsection \ No newline at end of file +@endsection From 6a87f9d0e2289086886f767056fd8710a13f9d50 Mon Sep 17 00:00:00 2001 From: Jonas Date: Fri, 1 Jun 2018 09:48:32 +0200 Subject: [PATCH 152/360] Update public.blade.php --- resources/views/timeline/public.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/timeline/public.blade.php b/resources/views/timeline/public.blade.php index 94488429e..7f5d9afd2 100644 --- a/resources/views/timeline/public.blade.php +++ b/resources/views/timeline/public.blade.php @@ -24,7 +24,7 @@ @csrf
- +
@@ -50,4 +50,4 @@
-@endsection \ No newline at end of file +@endsection From fc1dc625760f467cc91b387f65f9e11d5016310f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Miko=C5=82ajczak?= Date: Fri, 1 Jun 2018 10:44:18 +0200 Subject: [PATCH 153/360] =?UTF-8?q?=F0=9F=8C=8D:=20=F0=9F=87=B5?= =?UTF-8?q?=F0=9F=87=B1=E2=AC=86=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marcin Mikołajczak --- resources/lang/pl/notification.php | 8 ++++++++ resources/lang/pl/profile.php | 8 ++++++++ resources/lang/pl/timeline.php | 7 +++++++ 3 files changed, 23 insertions(+) create mode 100644 resources/lang/pl/notification.php create mode 100644 resources/lang/pl/profile.php create mode 100644 resources/lang/pl/timeline.php diff --git a/resources/lang/pl/notification.php b/resources/lang/pl/notification.php new file mode 100644 index 000000000..d9d2e412f --- /dev/null +++ b/resources/lang/pl/notification.php @@ -0,0 +1,8 @@ + 'polubił Twoje zdjęcie.', + 'startedFollowingYou' => 'zaczął Cię obserwować.', + +]; diff --git a/resources/lang/pl/profile.php b/resources/lang/pl/profile.php new file mode 100644 index 000000000..cdd0d56ae --- /dev/null +++ b/resources/lang/pl/profile.php @@ -0,0 +1,8 @@ + 'Ten użytkownik nie opublikował jeszcze niczego!', + 'emptyFollowers' => 'Nikt nie obserwuje tego użytkownika!', + 'emptyFollowing' => 'Ten użytkownik nie obserwuje nikogo!', + 'savedWarning' => 'Tylko Ty widzisz to, co zapisałeś', +]; diff --git a/resources/lang/pl/timeline.php b/resources/lang/pl/timeline.php new file mode 100644 index 000000000..2d4897cf0 --- /dev/null +++ b/resources/lang/pl/timeline.php @@ -0,0 +1,7 @@ + 'Twoja oś czasu jest pusta.' + +]; From 11447c13da7f5fcfef40b1db200c46e359ac9a64 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Fri, 1 Jun 2018 12:13:32 +0100 Subject: [PATCH 154/360] Use inRandomOrder instead of orderByRaw in Discover page --- app/Http/Controllers/DiscoverController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/DiscoverController.php b/app/Http/Controllers/DiscoverController.php index a8459b370..d7c70e30a 100644 --- a/app/Http/Controllers/DiscoverController.php +++ b/app/Http/Controllers/DiscoverController.php @@ -16,7 +16,7 @@ class DiscoverController extends Controller public function home() { $following = Follower::whereProfileId(Auth::user()->profile->id)->pluck('following_id'); - $people = Profile::whereNotIn('id', $following)->orderByRaw('rand()')->take(3)->get(); + $people = Profile::inRandomOrder()->whereNotIn('id', $following)->take(3)->get(); $posts = Status::whereHas('media')->whereNotIn('profile_id', $following)->orderBy('created_at', 'desc')->take('21')->get(); return view('discover.home', compact('people', 'posts')); } From efbb1017e7fce0cc0271776ea897db75f90ce03a Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Fri, 1 Jun 2018 12:23:52 +0100 Subject: [PATCH 155/360] Also fix orderByRaw in SeedFollows --- app/Console/Commands/SeedFollows.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Console/Commands/SeedFollows.php b/app/Console/Commands/SeedFollows.php index 81f23fabb..d11685648 100644 --- a/app/Console/Commands/SeedFollows.php +++ b/app/Console/Commands/SeedFollows.php @@ -41,10 +41,10 @@ class SeedFollows extends Command { $limit = 10000; - for ($i=0; $i < $limit; $i++) { + for ($i=0; $i < $limit; $i++) { try { - $actor = Profile::orderByRaw('rand()')->firstOrFail(); - $target = Profile::orderByRaw('rand()')->firstOrFail(); + $actor = Profile::inRandomOrder()->firstOrFail(); + $target = Profile::inRandomOrder()->firstOrFail(); $follow = new Follower; $follow->profile_id = $actor->id; From a8811e44ec140dba76213e583f9e11bcd248cda3 Mon Sep 17 00:00:00 2001 From: Isak Alexander Date: Fri, 1 Jun 2018 13:47:20 +0200 Subject: [PATCH 156/360] Update auth.php Fixed a typo. --- resources/lang/sv/auth.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/lang/sv/auth.php b/resources/lang/sv/auth.php index 073fc9141..058317d63 100644 --- a/resources/lang/sv/auth.php +++ b/resources/lang/sv/auth.php @@ -13,7 +13,7 @@ return [ | */ - 'failed' => 'Dessa autentiseringsuppgifter matchar inte de i vårat register.', + 'failed' => 'Dessa autentiseringsuppgifter matchar inte de i vårt register.', 'throttle' => 'För många inloggningsförsök. Var god försök igen om :seconds sekunder.', ]; From d49a054c38b9a32e5c92c3b0d0d97d24ea5d7881 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Miko=C5=82ajczak?= Date: Fri, 1 Jun 2018 16:12:10 +0200 Subject: [PATCH 157/360] =?UTF-8?q?Do=20not=20show=20=E2=80=9CFollow?= =?UTF-8?q?=E2=80=9D=20in=20notifications=20if=20already=20followed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marcin Mikołajczak --- resources/views/account/activity.blade.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/resources/views/account/activity.blade.php b/resources/views/account/activity.blade.php index 26165be84..241d46f8a 100644 --- a/resources/views/account/activity.blade.php +++ b/resources/views/account/activity.blade.php @@ -28,6 +28,7 @@ {!! $notification->rendered !!} {{$notification->created_at->diffForHumans(null, true, true, true)}} + @if($notification->actor->followedBy(Auth::user()->profile) == false) @csrf @@ -35,6 +36,7 @@ + @endif @break @endswitch @@ -42,4 +44,4 @@
-@endsection \ No newline at end of file +@endsection diff --git a/resources/views/profile/following.blade.php b/resources/views/profile/following.blade.php index 6e88262b5..9f2c1b89f 100644 --- a/resources/views/profile/following.blade.php +++ b/resources/views/profile/following.blade.php @@ -56,6 +56,25 @@ {{$user->name}} + @if(Auth::check() && Auth::id() != $user->user_id) + @if($user->followedBy(Auth::user()->profile) == false) + + + + @else + + + + @endif + @endif @endforeach @@ -75,4 +94,4 @@ -@endsection \ No newline at end of file +@endsection From 8107f64eece72ae961206086aef421fc5d06f83f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Miko=C5=82ajczak?= Date: Fri, 1 Jun 2018 17:59:53 +0200 Subject: [PATCH 164/360] Follow/Unfollow button in followers/ing lists MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marcin Mikołajczak --- resources/views/profile/followers.blade.php | 8 ++++---- resources/views/profile/following.blade.php | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/resources/views/profile/followers.blade.php b/resources/views/profile/followers.blade.php index 7bb558678..8fd90f215 100644 --- a/resources/views/profile/followers.blade.php +++ b/resources/views/profile/followers.blade.php @@ -57,12 +57,12 @@ {{$user->name}} @if(Auth::check() && Auth::id() != $user->user_id) - @if($user->followedBy(Auth::user()->profile) == false) + @if ($user->followedBy(Auth::user()->profile) == true) - @else @@ -70,7 +70,7 @@ @endif diff --git a/resources/views/profile/following.blade.php b/resources/views/profile/following.blade.php index 9f2c1b89f..56a372963 100644 --- a/resources/views/profile/following.blade.php +++ b/resources/views/profile/following.blade.php @@ -57,12 +57,12 @@ {{$user->name}} @if(Auth::check() && Auth::id() != $user->user_id) - @if($user->followedBy(Auth::user()->profile) == false) + @if ($user->followedBy(Auth::user()->profile) == true) - @else @@ -70,7 +70,7 @@ @endif From 71c90c8f49f84b02bcbb804f5c89a7ab99a71517 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Miko=C5=82ajczak?= Date: Fri, 1 Jun 2018 19:05:12 +0200 Subject: [PATCH 165/360] Do not recommend myself MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marcin Mikołajczak --- app/Http/Controllers/DiscoverController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/DiscoverController.php b/app/Http/Controllers/DiscoverController.php index d7c70e30a..8a64c9379 100644 --- a/app/Http/Controllers/DiscoverController.php +++ b/app/Http/Controllers/DiscoverController.php @@ -16,8 +16,8 @@ class DiscoverController extends Controller public function home() { $following = Follower::whereProfileId(Auth::user()->profile->id)->pluck('following_id'); - $people = Profile::inRandomOrder()->whereNotIn('id', $following)->take(3)->get(); - $posts = Status::whereHas('media')->whereNotIn('profile_id', $following)->orderBy('created_at', 'desc')->take('21')->get(); + $people = Profile::inRandomOrder()->where('id', '!=', Auth::user()->profile->id)->whereNotIn('id', $following)->take(3)->get(); + $posts = Status::whereHas('media')->where('profile_id', '!=', Auth::user()->profile->id)->whereNotIn('profile_id', $following)->orderBy('created_at', 'desc')->take('21')->get(); return view('discover.home', compact('people', 'posts')); } From 8071f113701b5b95dc7e9647c1093116c0130e7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xos=C3=A9=20M?= Date: Fri, 1 Jun 2018 19:19:56 +0200 Subject: [PATCH 166/360] =?UTF-8?q?primeira=20traduci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/lang/gl/README.md | 14 ++++ resources/lang/gl/auth.php | 19 +++++ resources/lang/gl/notification.php | 8 ++ resources/lang/gl/pagination.php | 19 +++++ resources/lang/gl/passwords.php | 22 ++++++ resources/lang/gl/profile.php | 8 ++ resources/lang/gl/timeline.php | 7 ++ resources/lang/gl/validation.php | 122 +++++++++++++++++++++++++++++ 8 files changed, 219 insertions(+) create mode 100644 resources/lang/gl/README.md create mode 100644 resources/lang/gl/auth.php create mode 100644 resources/lang/gl/notification.php create mode 100644 resources/lang/gl/pagination.php create mode 100644 resources/lang/gl/passwords.php create mode 100644 resources/lang/gl/profile.php create mode 100644 resources/lang/gl/timeline.php create mode 100644 resources/lang/gl/validation.php diff --git a/resources/lang/gl/README.md b/resources/lang/gl/README.md new file mode 100644 index 000000000..5e2ecfc95 --- /dev/null +++ b/resources/lang/gl/README.md @@ -0,0 +1,14 @@ +# Tradución ao galego (gl) PIXELFED + +## Notas + +_v 1_ + +traducindo a versión beta +_usuaria_ = persoa usuaria +e así todo + + +en _validator.php_ o uso do artigo _The_ é confuso no medio de tanta variable sin coñecer +o contexto, así que unha vez se inclúa a tradución haberá que melloralo. +En moitos casos quiteino cando o contido da variable (semella) actuar como nome. diff --git a/resources/lang/gl/auth.php b/resources/lang/gl/auth.php new file mode 100644 index 000000000..ee784a1cc --- /dev/null +++ b/resources/lang/gl/auth.php @@ -0,0 +1,19 @@ + 'As credenciais non constan nos nosos rexistros.', + 'throttle' => 'Demasiados intentos de conexión. Por favor, inténteo de novo en :seconds seconds.', + +]; diff --git a/resources/lang/gl/notification.php b/resources/lang/gl/notification.php new file mode 100644 index 000000000..f4d1e51fb --- /dev/null +++ b/resources/lang/gl/notification.php @@ -0,0 +1,8 @@ + 'gustoulle a súa foto.', + 'startedFollowingYou' => 'comezou a seguila.', + +]; diff --git a/resources/lang/gl/pagination.php b/resources/lang/gl/pagination.php new file mode 100644 index 000000000..afe74398c --- /dev/null +++ b/resources/lang/gl/pagination.php @@ -0,0 +1,19 @@ + '« Anterior', + 'next' => 'Seguinte »', + +]; diff --git a/resources/lang/gl/passwords.php b/resources/lang/gl/passwords.php new file mode 100644 index 000000000..236daa688 --- /dev/null +++ b/resources/lang/gl/passwords.php @@ -0,0 +1,22 @@ + 'Os contrasinais deben ser ao menos de seis caracteres e concordar na confirmación.', + 'reset' => 'Restableceuse o seu contrasinal!', + 'sent' => 'Acabamos de enviarlle unha ligazón para restablecer o contrasinal!', + 'token' => 'Este testemuño de restablecemento de contrasinal non é válido.', + 'user' => "Non atopamos unha usuaria con ese enderezo de correo.", + +]; diff --git a/resources/lang/gl/profile.php b/resources/lang/gl/profile.php new file mode 100644 index 000000000..321682294 --- /dev/null +++ b/resources/lang/gl/profile.php @@ -0,0 +1,8 @@ + 'Esta usuaria aínda non publicou!', + 'emptyFollowers' => 'Esta usuaria aínda non ten seguidoras!', + 'emptyFollowing' => 'Esta usuaria aínda non segue a ninguén!', + 'savedWarning' => 'Só vostede pode ver o que gardou', +]; diff --git a/resources/lang/gl/timeline.php b/resources/lang/gl/timeline.php new file mode 100644 index 000000000..2024b2029 --- /dev/null +++ b/resources/lang/gl/timeline.php @@ -0,0 +1,7 @@ + 'A súa liña temporal está baldeira.' + +]; diff --git a/resources/lang/gl/validation.php b/resources/lang/gl/validation.php new file mode 100644 index 000000000..caa7d2453 --- /dev/null +++ b/resources/lang/gl/validation.php @@ -0,0 +1,122 @@ + 'O :attribute debe aceptarse.', + 'active_url' => 'O :attribute non é un URL válido.', + 'after' => 'A :attribute debe ser unha data posterior :date.', + 'after_or_equal' => 'A :attribute debe ser unha data posterior ou igual a must be a date after or equal to :date.', + 'alpha' => 'O :attribute só pode conter letras.', + 'alpha_dash' => 'O :attribute podería conter só letras, números e guións.', + 'alpha_num' => 'O :attribute podería conter só letras e números.', + 'array' => 'A :attribute debe ser unha cadea.', + 'before' => 'A :attribute debe ser unha data anterior a :date.', + 'before_or_equal' => 'A :attribute debe ser unha data anterior ou igual a :date.', + 'between' => [ + 'numeric' => ' :attribute debe estar entre :min e :max.', + 'file' => 'O :attribute debe estar entre :min e :max kilobytes.', + 'string' => 'O :attribute debe ter entre :min e :max caracteres.', + 'array' => 'O :attribute debe ter entre :min e :max elementos.', + ], + 'boolean' => 'O campo :attribute debe ser verdadeiro ou falso.', + 'confirmed' => 'O :attribute de confirmación non coincide.', + 'date' => 'A :attribute non é unha data válida.', + 'date_format' => 'O :attribute non segue o formato :format.', + 'different' => ' :attribute e :other deben ser diferentes.', + 'digits' => ' :attribute deben ser :digits díxitos.', + 'digits_between' => ' :attribute debe ter entre :min e :max díxitos.', + 'dimensions' => 'The :attribute ten unhas dimensións de imaxe non válidas.', + 'distinct' => 'O campo :attribute ten un valor duplo.', + 'email' => 'The :attribute debe ser un enderezo de correo válido.', + 'exists' => 'O :attribute escollido non é válido.', + 'file' => ' :attribute debe ser un ficheiro.', + 'filled' => 'O campo :attribute debe ter un valor.', + 'image' => ' :attribute ten que ser unha imaxe.', + 'in' => ' :attribute escollido non é válido.', + 'in_array' => 'O campo :attribute non existe en :other.', + 'integer' => ' :attribute debe ser un enteiro.', + 'ip' => ' :attribute ten que ser un enderezo IP válido.', + 'ipv4' => ' :attribute ten que ser un enderezo IPv4 válido.', + 'ipv6' => ' :attribute ten que ser un enderezo IPv6 válido.', + 'json' => ' :attribute debe ser unha cadea JSON válida.', + 'max' => [ + 'numeric' => ' :attribute non pode ser maior de :max.', + 'file' => ' :attribute non pode ser maior de :max kilobytes.', + 'string' => ' :attribute non pode ser maior de :max caracteres.', + 'array' => 'O :attribute non pode ter máis de :max elementos.', + ], + 'mimes' => ' :attribute debe ser un ficheiro de tipo: :values.', + 'mimetypes' => ' :attribute debe ser un ficheiro de tipo: :values.', + 'min' => [ + 'numeric' => ' :attribute debe ser como mínimo :min.', + 'file' => ' :attribute debe ser como mínimo :min kilobytes.', + 'string' => ' :attribute debe ser como mínimo :min characters.', + 'array' => ' :attribute debe ter ao menos :min elementos.', + ], + 'not_in' => 'O :attribute escollido non é válido.', + 'not_regex' => 'O formato de :attribute non é válido', + 'numeric' => ' :attribute debe ser un número.', + 'present' => 'O campo :attribute debe estar presente.', + 'regex' => 'O formato de :attribute non é válido.', + 'required' => 'O campo :attribute é requerido.', + 'required_if' => 'O campo :attribute é requerido cando :other é :value.', + 'required_unless' => 'O campo :attribute é requerido a non ser que :other esté en :values.', + 'required_with' => 'O campo :attribute é requerido cando :values é presente.', + 'required_with_all' => 'O campo :attribute é requerido cando :values é presente.', + 'required_without' => 'O campo :attribute é requerido cando :values non está presente.', + 'required_without_all' => 'O campo :attribute é requerido cando non está presente :values.', + 'same' => ' :attribute e :other deben coincidir.', + 'size' => [ + 'numeric' => ' :attribute debe ser :size.', + 'file' => ' :attribute debe ser :size kilobytes.', + 'string' => ' :attribute debe ser :size caracteres.', + 'array' => ' :attribute debe conter :size elementos.', + ], + 'string' => ' :attribute debe ser unha cadea.', + 'timezone' => ' :attribute debe ser unha zona válida.', + 'unique' => 'O nome :attribute xa está collido.', + 'uploaded' => ' :attribute fallou ao subir.', + 'url' => 'O formato de :attribute non é válido.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +]; From 92939ed8670ef665ef24e3be1bd035a41daab1fb Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 1 Jun 2018 11:58:43 -0600 Subject: [PATCH 167/360] Add recaptcha to login/register form --- app/Http/Controllers/Auth/LoginController.php | 20 + .../Controllers/Auth/RegisterController.php | 11 +- composer.json | 1 + composer.lock | 351 +++++++++--------- config/app.php | 2 + config/pixelfed.php | 1 + config/recaptcha.php | 66 ++++ resources/views/auth/login.blade.php | 6 + resources/views/auth/register.blade.php | 6 + 9 files changed, 293 insertions(+), 171 deletions(-) create mode 100644 config/recaptcha.php diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index b2ea669a0..83f844da6 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -36,4 +36,24 @@ class LoginController extends Controller { $this->middleware('guest')->except('logout'); } + + /** + * Validate the user login request. + * + * @param \Illuminate\Http\Request $request + * @return void + */ + public function validateLogin($request) + { + $rules = [ + $this->username() => 'required|string', + 'password' => 'required|string', + ]; + + if(config('pixelfed.recaptcha')) { + $rules['g-recaptcha-response'] = 'required|recaptcha'; + } + + $this->validate($request, $rules); + } } diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index a2c36356f..1b9de0513 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -52,12 +52,19 @@ class RegisterController extends Controller { $this->validateUsername($data['username']); - return Validator::make($data, [ + + $rules = [ 'name' => 'required|string|max:255', 'username' => 'required|alpha_dash|min:2|max:15|unique:users', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:6|confirmed', - ]); + ]; + + if(config('pixelfed.recaptcha')) { + $rules['g-recaptcha-response'] = 'required|recaptcha'; + } + + return Validator::make($data, $rules); } /** diff --git a/composer.json b/composer.json index 2290917a5..17f6b01d6 100644 --- a/composer.json +++ b/composer.json @@ -9,6 +9,7 @@ "99designs/http-signatures-guzzlehttp": "^2.0", "bitverse/identicon": "^1.1", "fideloper/proxy": "^4.0", + "greggilbert/recaptcha": "dev-master", "intervention/image": "^2.4", "kitetail/zttp": "^0.3.0", "laravel/framework": "5.6.*", diff --git a/composer.lock b/composer.lock index 217cadc29..879680005 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "97f3eec3dc712904b69a71f92d0e3a3f", + "content-hash": "7be7e27683f56b7ec28eeef962cf2437", "packages": [ { "name": "99designs/http-signatures", @@ -571,6 +571,58 @@ ], "time": "2018-02-07T20:20:57+00:00" }, + { + "name": "greggilbert/recaptcha", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/greggilbert/recaptcha.git", + "reference": "c2ed383785a4fe20467ce470c97c303e5c5b85de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/greggilbert/recaptcha/zipball/c2ed383785a4fe20467ce470c97c303e5c5b85de", + "reference": "c2ed383785a4fe20467ce470c97c303e5c5b85de", + "shasum": "" + }, + "require": { + "illuminate/support": "~5.1", + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/migrations" + ], + "psr-4": { + "Greggilbert\\Recaptcha\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Gilbert", + "email": "greg@greg-gilbert.com" + } + ], + "description": "reCAPTCHA Validator for Laravel 5", + "homepage": "http://github.com/greggilbert/recaptcha", + "keywords": [ + "captcha", + "laravel", + "laravel5", + "recaptcha" + ], + "time": "2017-08-31T03:39:47+00:00" + }, { "name": "guzzlehttp/guzzle", "version": "6.3.3", @@ -754,16 +806,16 @@ }, { "name": "intervention/image", - "version": "2.4.1", + "version": "2.4.2", "source": { "type": "git", "url": "https://github.com/Intervention/image.git", - "reference": "3603dbcc9a17d307533473246a6c58c31cf17919" + "reference": "e82d274f786e3d4b866a59b173f42e716f0783eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Intervention/image/zipball/3603dbcc9a17d307533473246a6c58c31cf17919", - "reference": "3603dbcc9a17d307533473246a6c58c31cf17919", + "url": "https://api.github.com/repos/Intervention/image/zipball/e82d274f786e3d4b866a59b173f42e716f0783eb", + "reference": "e82d274f786e3d4b866a59b173f42e716f0783eb", "shasum": "" }, "require": { @@ -783,7 +835,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "2.4-dev" }, "laravel": { "providers": [ @@ -820,7 +872,7 @@ "thumbnail", "watermark" ], - "time": "2017-09-21T16:29:17+00:00" + "time": "2018-05-29T14:19:03+00:00" }, { "name": "jakub-onderka/php-console-color", @@ -2315,16 +2367,16 @@ }, { "name": "symfony/console", - "version": "v4.0.11", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "058f120b8e06ebcd7b211de5ffae07b2db00fbdd" + "reference": "2d5d973bf9933d46802b01010bd25c800c87c242" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/058f120b8e06ebcd7b211de5ffae07b2db00fbdd", - "reference": "058f120b8e06ebcd7b211de5ffae07b2db00fbdd", + "url": "https://api.github.com/repos/symfony/console/zipball/2d5d973bf9933d46802b01010bd25c800c87c242", + "reference": "2d5d973bf9933d46802b01010bd25c800c87c242", "shasum": "" }, "require": { @@ -2352,7 +2404,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -2379,20 +2431,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-05-16T09:05:32+00:00" + "time": "2018-05-30T07:26:09+00:00" }, { "name": "symfony/css-selector", - "version": "v4.0.11", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "0383a1a4eb1ffcac28719975d3e01bfa14be8ab3" + "reference": "03ac71606ecb0b0ce792faa17d74cc32c2949ef4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/0383a1a4eb1ffcac28719975d3e01bfa14be8ab3", - "reference": "0383a1a4eb1ffcac28719975d3e01bfa14be8ab3", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/03ac71606ecb0b0ce792faa17d74cc32c2949ef4", + "reference": "03ac71606ecb0b0ce792faa17d74cc32c2949ef4", "shasum": "" }, "require": { @@ -2401,7 +2453,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -2432,20 +2484,20 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2018-05-11T15:58:37+00:00" + "time": "2018-05-30T07:26:09+00:00" }, { "name": "symfony/debug", - "version": "v4.0.11", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "4e7c98de67cc4171d4c986554e09a511da40f3d8" + "reference": "449f8b00b28ab6e6912c3e6b920406143b27193b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/4e7c98de67cc4171d4c986554e09a511da40f3d8", - "reference": "4e7c98de67cc4171d4c986554e09a511da40f3d8", + "url": "https://api.github.com/repos/symfony/debug/zipball/449f8b00b28ab6e6912c3e6b920406143b27193b", + "reference": "449f8b00b28ab6e6912c3e6b920406143b27193b", "shasum": "" }, "require": { @@ -2461,7 +2513,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -2488,20 +2540,20 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2018-05-16T09:05:32+00:00" + "time": "2018-05-16T14:33:22+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.0.11", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "63353a71073faf08f62caab4e6889b06a787f07b" + "reference": "2391ed210a239868e7256eb6921b1bd83f3087b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/63353a71073faf08f62caab4e6889b06a787f07b", - "reference": "63353a71073faf08f62caab4e6889b06a787f07b", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/2391ed210a239868e7256eb6921b1bd83f3087b5", + "reference": "2391ed210a239868e7256eb6921b1bd83f3087b5", "shasum": "" }, "require": { @@ -2524,7 +2576,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -2551,20 +2603,20 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2018-04-06T07:35:43+00:00" + "time": "2018-04-06T07:35:57+00:00" }, { "name": "symfony/finder", - "version": "v4.0.11", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "8c633f5a815903a1fe6e3fc135f207267a8a79af" + "reference": "087e2ee0d74464a4c6baac4e90417db7477dc238" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8c633f5a815903a1fe6e3fc135f207267a8a79af", - "reference": "8c633f5a815903a1fe6e3fc135f207267a8a79af", + "url": "https://api.github.com/repos/symfony/finder/zipball/087e2ee0d74464a4c6baac4e90417db7477dc238", + "reference": "087e2ee0d74464a4c6baac4e90417db7477dc238", "shasum": "" }, "require": { @@ -2573,7 +2625,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -2600,20 +2652,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2018-05-16T09:05:32+00:00" + "time": "2018-05-16T14:33:22+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.0.11", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "277b757a2d3960170d99d372e171a8a18916467a" + "reference": "a916c88390fb861ee21f12a92b107d51bb68af99" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/277b757a2d3960170d99d372e171a8a18916467a", - "reference": "277b757a2d3960170d99d372e171a8a18916467a", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a916c88390fb861ee21f12a92b107d51bb68af99", + "reference": "a916c88390fb861ee21f12a92b107d51bb68af99", "shasum": "" }, "require": { @@ -2621,12 +2673,13 @@ "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { + "predis/predis": "~1.0", "symfony/expression-language": "~3.4|~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -2653,34 +2706,34 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2018-05-25T11:08:56+00:00" + "time": "2018-05-25T14:55:38+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.0.11", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "450a1bda817f2dce25a9e13f0f011336743f2a48" + "reference": "b5ab9d4cdbfd369083744b6b5dfbf454e31e5f90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/450a1bda817f2dce25a9e13f0f011336743f2a48", - "reference": "450a1bda817f2dce25a9e13f0f011336743f2a48", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b5ab9d4cdbfd369083744b6b5dfbf454e31e5f90", + "reference": "b5ab9d4cdbfd369083744b6b5dfbf454e31e5f90", "shasum": "" }, "require": { "php": "^7.1.3", "psr/log": "~1.0", "symfony/debug": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", - "symfony/http-foundation": "~3.4.4|~4.0.4", + "symfony/event-dispatcher": "~4.1", + "symfony/http-foundation": "~4.1", "symfony/polyfill-ctype": "~1.8" }, "conflict": { "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4.5|<4.0.5,>=4", - "symfony/var-dumper": "<3.4", + "symfony/dependency-injection": "<4.1", + "symfony/var-dumper": "<4.1", "twig/twig": "<1.34|<2.4,>=2" }, "provide": { @@ -2692,7 +2745,7 @@ "symfony/config": "~3.4|~4.0", "symfony/console": "~3.4|~4.0", "symfony/css-selector": "~3.4|~4.0", - "symfony/dependency-injection": "^3.4.5|^4.0.5", + "symfony/dependency-injection": "^4.1", "symfony/dom-crawler": "~3.4|~4.0", "symfony/expression-language": "~3.4|~4.0", "symfony/finder": "~3.4|~4.0", @@ -2701,7 +2754,7 @@ "symfony/stopwatch": "~3.4|~4.0", "symfony/templating": "~3.4|~4.0", "symfony/translation": "~3.4|~4.0", - "symfony/var-dumper": "~3.4|~4.0" + "symfony/var-dumper": "~4.1" }, "suggest": { "symfony/browser-kit": "", @@ -2713,7 +2766,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -2740,7 +2793,7 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2018-05-25T13:32:52+00:00" + "time": "2018-05-30T12:52:34+00:00" }, { "name": "symfony/polyfill-ctype", @@ -2913,16 +2966,16 @@ }, { "name": "symfony/process", - "version": "v4.0.11", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "3621fa74d0576a6f89d63bc44fabd376711bd0b0" + "reference": "73445bd33b0d337c060eef9652b94df72b6b3434" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/3621fa74d0576a6f89d63bc44fabd376711bd0b0", - "reference": "3621fa74d0576a6f89d63bc44fabd376711bd0b0", + "url": "https://api.github.com/repos/symfony/process/zipball/73445bd33b0d337c060eef9652b94df72b6b3434", + "reference": "73445bd33b0d337c060eef9652b94df72b6b3434", "shasum": "" }, "require": { @@ -2931,7 +2984,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -2958,20 +3011,20 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2018-05-16T09:05:32+00:00" + "time": "2018-05-30T07:26:09+00:00" }, { "name": "symfony/routing", - "version": "v4.0.11", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "e8833b64b139926cbe1610d53722185e55c18e44" + "reference": "180b51c66d10f09e562c9ebc395b39aacb2cf8a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/e8833b64b139926cbe1610d53722185e55c18e44", - "reference": "e8833b64b139926cbe1610d53722185e55c18e44", + "url": "https://api.github.com/repos/symfony/routing/zipball/180b51c66d10f09e562c9ebc395b39aacb2cf8a2", + "reference": "180b51c66d10f09e562c9ebc395b39aacb2cf8a2", "shasum": "" }, "require": { @@ -3003,7 +3056,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -3036,20 +3089,20 @@ "uri", "url" ], - "time": "2018-05-16T14:21:07+00:00" + "time": "2018-05-30T07:26:09+00:00" }, { "name": "symfony/translation", - "version": "v4.0.11", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "e1f5863d0a9e79cfec7f031421ced3fe1d403e66" + "reference": "16328f5b217cebc8dd4adfe4aeeaa8c377581f5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/e1f5863d0a9e79cfec7f031421ced3fe1d403e66", - "reference": "e1f5863d0a9e79cfec7f031421ced3fe1d403e66", + "url": "https://api.github.com/repos/symfony/translation/zipball/16328f5b217cebc8dd4adfe4aeeaa8c377581f5a", + "reference": "16328f5b217cebc8dd4adfe4aeeaa8c377581f5a", "shasum": "" }, "require": { @@ -3064,6 +3117,7 @@ "require-dev": { "psr/log": "~1.0", "symfony/config": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", "symfony/dependency-injection": "~3.4|~4.0", "symfony/finder": "~2.8|~3.0|~4.0", "symfony/intl": "~3.4|~4.0", @@ -3077,7 +3131,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -3104,20 +3158,20 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2018-05-21T10:09:47+00:00" + "time": "2018-05-30T07:26:09+00:00" }, { "name": "symfony/var-dumper", - "version": "v4.0.11", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "3c34cf3f4bbac9e003d9325225e9ef1a49180a18" + "reference": "bc88ad53e825ebacc7b190bbd360781fce381c64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3c34cf3f4bbac9e003d9325225e9ef1a49180a18", - "reference": "3c34cf3f4bbac9e003d9325225e9ef1a49180a18", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/bc88ad53e825ebacc7b190bbd360781fce381c64", + "reference": "bc88ad53e825ebacc7b190bbd360781fce381c64", "shasum": "" }, "require": { @@ -3126,20 +3180,26 @@ "symfony/polyfill-php72": "~1.5" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/console": "<3.4" }, "require-dev": { "ext-iconv": "*", + "symfony/process": "~3.4|~4.0", "twig/twig": "~1.34|~2.4" }, "suggest": { "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump" + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" }, + "bin": [ + "Resources/bin/var-dump-server" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -3173,7 +3233,7 @@ "debug", "dump" ], - "time": "2018-04-26T16:12:06+00:00" + "time": "2018-04-29T07:56:09+00:00" }, { "name": "tightenco/collect", @@ -3734,25 +3794,28 @@ }, { "name": "myclabs/deep-copy", - "version": "1.7.0", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + "reference": "478465659fd987669df0bd8a9bf22a8710e5f1b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/478465659fd987669df0bd8a9bf22a8710e5f1b6", + "reference": "478465659fd987669df0bd8a9bf22a8710e5f1b6", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" + "phpunit/phpunit": "^7.1" }, "type": "library", "autoload": { @@ -3775,7 +3838,7 @@ "object", "object graph" ], - "time": "2017-10-19T19:58:43+00:00" + "time": "2018-05-29T17:25:09+00:00" }, { "name": "nunomaduro/collision", @@ -4158,23 +4221,23 @@ }, { "name": "phpunit/php-code-coverage", - "version": "6.0.4", + "version": "6.0.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "52187754b0eed0b8159f62a6fa30073327e8c2ca" + "reference": "865662550c384bc1db7e51d29aeda1c2c161d69a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/52187754b0eed0b8159f62a6fa30073327e8c2ca", - "reference": "52187754b0eed0b8159f62a6fa30073327e8c2ca", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/865662550c384bc1db7e51d29aeda1c2c161d69a", + "reference": "865662550c384bc1db7e51d29aeda1c2c161d69a", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", "php": "^7.1", - "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-file-iterator": "^2.0", "phpunit/php-text-template": "^1.2.1", "phpunit/php-token-stream": "^3.0", "sebastian/code-unit-reverse-lookup": "^1.0.1", @@ -4217,29 +4280,29 @@ "testing", "xunit" ], - "time": "2018-04-29T14:59:09+00:00" + "time": "2018-06-01T07:51:50+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.5", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + "reference": "e20525b0c2945c7c317fff95660698cb3d2a53bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/e20525b0c2945c7c317fff95660698cb3d2a53bc", + "reference": "e20525b0c2945c7c317fff95660698cb3d2a53bc", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -4254,7 +4317,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -4264,7 +4327,7 @@ "filesystem", "iterator" ], - "time": "2017-11-27T13:52:08+00:00" + "time": "2018-05-28T12:13:49+00:00" }, { "name": "phpunit/php-text-template", @@ -4407,34 +4470,34 @@ }, { "name": "phpunit/phpunit", - "version": "7.1.5", + "version": "7.2.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "ca64dba53b88aba6af32aebc6b388068db95c435" + "reference": "3cf0836680bf5c365c627e8566d46c9e1f544db9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ca64dba53b88aba6af32aebc6b388068db95c435", - "reference": "ca64dba53b88aba6af32aebc6b388068db95c435", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3cf0836680bf5c365c627e8566d46c9e1f544db9", + "reference": "3cf0836680bf5c365c627e8566d46c9e1f544db9", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "^1.6.1", + "myclabs/deep-copy": "^1.7", "phar-io/manifest": "^1.0.1", "phar-io/version": "^1.0", "php": "^7.1", "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^6.0.1", - "phpunit/php-file-iterator": "^1.4.3", + "phpunit/php-code-coverage": "^6.0.7", + "phpunit/php-file-iterator": "^2.0", "phpunit/php-text-template": "^1.2.1", "phpunit/php-timer": "^2.0", - "phpunit/phpunit-mock-objects": "^6.1.1", "sebastian/comparator": "^3.0", "sebastian/diff": "^3.0", "sebastian/environment": "^3.1", @@ -4444,10 +4507,14 @@ "sebastian/resource-operations": "^1.0", "sebastian/version": "^2.0.1" }, + "conflict": { + "phpunit/phpunit-mock-objects": "*" + }, "require-dev": { "ext-pdo": "*" }, "suggest": { + "ext-soap": "*", "ext-xdebug": "*", "phpunit/php-invoker": "^2.0" }, @@ -4457,7 +4524,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "7.1-dev" + "dev-master": "7.2-dev" } }, "autoload": { @@ -4483,63 +4550,7 @@ "testing", "xunit" ], - "time": "2018-04-29T15:09:19+00:00" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "6.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "70c740bde8fd9ea9ea295be1cd875dd7b267e157" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/70c740bde8fd9ea9ea295be1cd875dd7b267e157", - "reference": "70c740bde8fd9ea9ea295be1cd875dd7b267e157", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.5", - "php": "^7.1", - "phpunit/php-text-template": "^1.2.1", - "sebastian/exporter": "^3.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2018-04-11T04:50:36+00:00" + "time": "2018-06-01T07:54:27+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -5197,7 +5208,9 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": [], + "stability-flags": { + "greggilbert/recaptcha": 20 + }, "prefer-stable": true, "prefer-lowest": false, "platform": { diff --git a/config/app.php b/config/app.php index b16e7f77e..99e219a52 100644 --- a/config/app.php +++ b/config/app.php @@ -150,6 +150,7 @@ return [ /* * Package Service Providers... */ + Greggilbert\Recaptcha\RecaptchaServiceProvider::class, /* * Application Service Providers... @@ -209,6 +210,7 @@ return [ 'Validator' => Illuminate\Support\Facades\Validator::class, 'View' => Illuminate\Support\Facades\View::class, + 'Recaptcha' => Greggilbert\Recaptcha\Facades\Recaptcha::class, ], ]; diff --git a/config/pixelfed.php b/config/pixelfed.php index 69a8f3dfb..9c33a56cf 100644 --- a/config/pixelfed.php +++ b/config/pixelfed.php @@ -71,6 +71,7 @@ return [ | */ 'open_registration' => env('OPEN_REGISTRATION', true), + 'recaptcha' => env('RECAPTCHA_ENABLED', false), 'remote_follow_enabled' => env('REMOTE_FOLLOW', false), diff --git a/config/recaptcha.php b/config/recaptcha.php new file mode 100644 index 000000000..5caa2c413 --- /dev/null +++ b/config/recaptcha.php @@ -0,0 +1,66 @@ + env('RECAPTCHA_PUBLIC_KEY', ''), + 'private_key' => env('RECAPTCHA_PRIVATE_KEY', ''), + + /* + |-------------------------------------------------------------------------- + | Template + |-------------------------------------------------------------------------- + | + | Set a template to use if you don't want to use the standard one. + | + */ + 'template' => '', + + /* + |-------------------------------------------------------------------------- + | Driver + |-------------------------------------------------------------------------- + | + | Determine how to call out to get response; values are 'curl' or 'native'. + | Only applies to v2. + | + */ + 'driver' => 'curl', + + /* + |-------------------------------------------------------------------------- + | Options + |-------------------------------------------------------------------------- + | + | Various options for the driver + | + */ + 'options' => [ + + 'curl_timeout' => 1, + 'curl_verify' => true, + + ], + + /* + |-------------------------------------------------------------------------- + | Version + |-------------------------------------------------------------------------- + | + | Set which version of ReCaptcha to use. + | + */ + + 'version' => 2, + +]; diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index c09b128f2..66d0cfa53 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -47,6 +47,12 @@ + @if(config('pixelfed.recaptcha')) +
+ {!! Recaptcha::render() !!} +
+ @endif +
+ @if(config('pixelfed.recaptcha')) +
+ {!! Recaptcha::render() !!} +
+ @endif +
- @elseif ($following == false) + @elseif ($is_following == false)
@endif
+ +
+
+
+
+
+

No more content

+

+ Maybe you could try + discovering + more people you can follow. +

+
+
+

Whoops, an error

+

+ Try reloading the page +

+
+
+
{{$timeline->links()}}
From 0381ac249ed009905b206f7c6a13c469ee58d158 Mon Sep 17 00:00:00 2001 From: Stasiek Michalski Date: Tue, 5 Jun 2018 08:29:38 +0200 Subject: [PATCH 273/360] Add infinite scroll messages to public timeline --- resources/views/timeline/public.blade.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/resources/views/timeline/public.blade.php b/resources/views/timeline/public.blade.php index e5b814f1a..6a75c944f 100644 --- a/resources/views/timeline/public.blade.php +++ b/resources/views/timeline/public.blade.php @@ -27,6 +27,27 @@ @endforeach + +
+
+
+
+
+

No more content

+

+ Maybe you could try + discovering + more people you can follow. +

+
+
+

Whoops, an error

+

+ Try reloading the page +

+
+
+
{{$timeline->links()}}
From fca898e7667ba58099a1604f765e8056af09ecd5 Mon Sep 17 00:00:00 2001 From: Stasiek Michalski Date: Tue, 5 Jun 2018 08:37:12 +0200 Subject: [PATCH 274/360] Add css for loading page routine --- resources/assets/sass/custom.scss | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/resources/assets/sass/custom.scss b/resources/assets/sass/custom.scss index 92f0ca5ad..1db518df5 100644 --- a/resources/assets/sass/custom.scss +++ b/resources/assets/sass/custom.scss @@ -202,3 +202,15 @@ body, button, input, textarea { z-index:1020 } } + +@keyframes loading-bar { + from { background-position: 0 0; } + to { background-position: 100vw 0; } +} + +.loading-page { + background-image: linear-gradient(to right, #6736dd, #10c5f8, #10c5f8, #6736dd); + width: 100vw; + height: .25rem; + animation: loading-bar 3s linear infinite; +} From cdc19d44195415db00686a15afed9eba6a053bb7 Mon Sep 17 00:00:00 2001 From: Stasiek Michalski Date: Tue, 5 Jun 2018 08:38:48 +0200 Subject: [PATCH 275/360] Add JS for page messages --- resources/assets/js/timeline.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/resources/assets/js/timeline.js b/resources/assets/js/timeline.js index 576b3e71e..72c59406c 100644 --- a/resources/assets/js/timeline.js +++ b/resources/assets/js/timeline.js @@ -1,12 +1,14 @@ $(document).ready(function() { $('.pagination').hide(); + $('.page-load-status').show(); let elem = document.querySelector('.timeline-feed'); let infScroll = new InfiniteScroll( elem, { path: '.pagination__next', append: '.timeline-feed', + status: '.page-load-status', history: false, }); infScroll.on( 'append', function( response, path, items ) { pixelfed.hydrateLikes(); }); -}); \ No newline at end of file +}); From be2f3873e960cd926daf7e306e64f0da19672885 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 5 Jun 2018 01:48:19 -0600 Subject: [PATCH 276/360] Update compiled assets --- public/css/app.css | Bin 164480 -> 164981 bytes public/js/timeline.js | Bin 763 -> 850 bytes public/mix-manifest.json | Bin 184 -> 184 bytes resources/assets/js/timeline.js | 1 + 4 files changed, 1 insertion(+) diff --git a/public/css/app.css b/public/css/app.css index 7ff4cb201ef958d2e560605513fff974b411a39b..1fa936751ebd072c87e5907b7c3bf7ee0290878f 100644 GIT binary patch delta 366 zcmZo@<@(ye)zHGYg~`8O&Ox_4H7Pr@L^nINGOZ{vH?>$HCqFSIGcR2?DY0m}LOr7d zqrr5WdPXUELj!}das`9hS_gt^)!}OOV5Su$rl(dXB_?O57v-1crRZkn0tKdbmojO% zm*f}dq!s1oYABnT8=Ix1XzC>A=j0dZ76T}MEcjJydulzCG&2DEu6Ypv delta 24 fcmey`!PU^p)zHGYg~`8u`ld!EvF%ZfOw!B%dn^dF diff --git a/public/js/timeline.js b/public/js/timeline.js index 548ff63d5fe390367b675cb6a4c24cd9efb28fc8..e6383f8c17aa758ed81a36d2439d0579c70c4521 100644 GIT binary patch literal 850 zcmaJin*l2_4mpVMNBaepA#Ud20=W~xG@QP>AHo9-9vAtn;M6%!{U$?vnL}kTg_E{e zuH}?0LX4XU1Q}FmYq_7X(#zW!MY`B>`ErXzREH8Is;Z>)t;<;z2T3yNLgn&NyuWYX zenLg6hQ=U#^{xX?QMKtPO_)Ot%-g2P#|?G4bOa|J(|Aeg?JMLI1_o zgN2V*1tQG8a#1~4ip4*YSNlmmC&@HRawX+*?yg)4&U}-T&O356cA#3_Z;v>8y0kEx z&KzCIJ}`+KRbQ?}I{-l9&|nOJ3CLD zsZQ?=>bxmTsMgfLg`DEBvQF2lo-_@8%J!{0a&cY_C}&#rdjLPaf=z>RJ`s{RfKB6C zH2^ge8-(NHQ<@bTg4fEsv??G&r>QOOtM7IQCt^}}9blbOk390C;sSXTCR@{|(qr0! pC{)^bcHv<1YISPbe|^c$oWM3vt9GotCirZALC;0nA`zq5`~{g!Eb#yU delta 394 zcmY*U!AiqG6eI=v5fvc~J?z2~TM!Qo`vW4xv*IBpFS;7vhRut%Y!{E7Oa9Ei5d8x$ zZi=Dxvdqq#H*e-+{Bx8}%NBD|8X0i=l9>>tb;&@6#0h*8|g1$WFYmjBWbw=ndS)O`h$0K4(%yt^K~cHg7f%s1k;Rx7AV VDB_28VKRbC^#l#$J|%aKC%+TQin0Iz diff --git a/public/mix-manifest.json b/public/mix-manifest.json index bae2339326ffd0e3dc19e43d320be30f7b82b650..c821c35ba81024fdc612648514213ba0557b8a2e 100644 GIT binary patch delta 54 zcmdnNxPx&*yoh;Hih)T=Vw#bqr9qN;VrpuVxxvI@J#h=uH1lLb^HkF$3j?Dh10#zx JgH$E1S^&rU54QjS delta 54 zcmdnNxPx&*yogz9Qd(-7fq|JpTC$08N@}X1x%tFmJ#oXtlvE3&#FUieWJ6QqRFkwc JGczTwS^(E75O)9o diff --git a/resources/assets/js/timeline.js b/resources/assets/js/timeline.js index 72c59406c..59aa60657 100644 --- a/resources/assets/js/timeline.js +++ b/resources/assets/js/timeline.js @@ -9,6 +9,7 @@ $(document).ready(function() { history: false, }); infScroll.on( 'append', function( response, path, items ) { + $('.page-load-status').show(); pixelfed.hydrateLikes(); }); }); From a8178750640e4e9368fa40159276c945fd70b506 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 5 Jun 2018 01:49:05 -0600 Subject: [PATCH 277/360] Add basic language picker --- app/Http/Controllers/SiteController.php | 10 +++++++++- .../views/layouts/partial/footer.blade.php | 2 +- resources/views/site/language.blade.php | 19 +++++++++++++++++++ .../views/site/partial/sidebar.blade.php | 3 +++ routes/web.php | 2 ++ 5 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 resources/views/site/language.blade.php diff --git a/app/Http/Controllers/SiteController.php b/app/Http/Controllers/SiteController.php index 7993f7838..31603176b 100644 --- a/app/Http/Controllers/SiteController.php +++ b/app/Http/Controllers/SiteController.php @@ -2,9 +2,17 @@ namespace App\Http\Controllers; +use App; use Illuminate\Http\Request; class SiteController extends Controller { - + public function changeLocale(Request $request, $locale) + { + if(!App::isLocale($locale)) { + return redirect()->back(); + } + App::setLocale($locale); + return redirect()->back(); + } } diff --git a/resources/views/layouts/partial/footer.blade.php b/resources/views/layouts/partial/footer.blade.php index 29cd2d2d1..b1c9d8944 100644 --- a/resources/views/layouts/partial/footer.blade.php +++ b/resources/views/layouts/partial/footer.blade.php @@ -10,7 +10,7 @@ Directory Profiles Hashtags - Language + Language © {{date('Y')}} PixelFed.org

diff --git a/resources/views/site/language.blade.php b/resources/views/site/language.blade.php new file mode 100644 index 000000000..f2c933638 --- /dev/null +++ b/resources/views/site/language.blade.php @@ -0,0 +1,19 @@ +@extends('site.partial.template') + +@section('section') + +
+

Language

+
+
+
We're still working on localization support!
+

Current Locale: {{App::getLocale()}}

+

Select from one of the supported languages:

+ +@endsection + +@push('meta') + +@endpush diff --git a/resources/views/site/partial/sidebar.blade.php b/resources/views/site/partial/sidebar.blade.php index 18aa8dfe2..b9bfa0e19 100644 --- a/resources/views/site/partial/sidebar.blade.php +++ b/resources/views/site/partial/sidebar.blade.php @@ -9,6 +9,9 @@ + diff --git a/routes/web.php b/routes/web.php index bac723e7d..160d9bd6b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -61,6 +61,7 @@ Route::domain(config('pixelfed.domain.app'))->group(function() { Route::post('like', 'LikeController@store'); Route::post('follow', 'FollowerController@store'); Route::post('bookmark', 'BookmarkController@store'); + Route::get('lang/{locale}', 'SiteController@changeLocale'); Route::group(['prefix' => 'report'], function() { Route::get('/', 'ReportController@showForm')->name('report.form'); @@ -123,6 +124,7 @@ Route::domain(config('pixelfed.domain.app'))->group(function() { Route::view('privacy', 'site.privacy')->name('site.privacy'); Route::view('platform', 'site.platform')->name('site.platform'); Route::view('libraries', 'site.libraries')->name('site.libraries'); + Route::view('language', 'site.language')->name('site.language'); }); Route::get('p/{username}/{id}/c/{cid}', 'CommentController@show'); From 1e5941285df95f8e1affb11ab6a1608d12b205e5 Mon Sep 17 00:00:00 2001 From: trwnh Date: Tue, 5 Jun 2018 06:24:22 -0500 Subject: [PATCH 278/360] Fix missing bootstrap prefix in activity page Fixes #210 - same issue as #163 but on a different page --- resources/views/account/activity.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/account/activity.blade.php b/resources/views/account/activity.blade.php index a6bd0c388..092063f90 100644 --- a/resources/views/account/activity.blade.php +++ b/resources/views/account/activity.blade.php @@ -2,7 +2,7 @@ @section('content')
-
+

-

Fediverse is a portmanteau of "federation" and "universe". It is a common, informal name for a somewhat broad federation of social network servers.

+

Fediverse is a portmanteau of “federation” and “universe”. It is a common, informal name for a somewhat broad federation of social network servers.

Supported Fediverse Projects

    -
  • Mastodon - A federated twitter alternative.
  • -
  • Pleroma - A federated twitter alternative.
  • +
  • Mastodon – A federated twitter alternative.
  • +
  • Pleroma – A federated twitter alternative.
@endsection @push('meta') - + @endpush diff --git a/resources/views/site/language.blade.php b/resources/views/site/language.blade.php index f2c933638..93c4158b2 100644 --- a/resources/views/site/language.blade.php +++ b/resources/views/site/language.blade.php @@ -6,7 +6,7 @@

Language


-
We're still working on localization support!
+
We’re still working on localization support!

Current Locale: {{App::getLocale()}}

Select from one of the supported languages:

    diff --git a/resources/views/site/privacy.blade.php b/resources/views/site/privacy.blade.php index 576f1af20..c263cd478 100644 --- a/resources/views/site/privacy.blade.php +++ b/resources/views/site/privacy.blade.php @@ -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.
  • - 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 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.
  • 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 @@

    Any of the information we collect from you may be used in the following ways:

    • - 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 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 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 @@

      You may irreversibly delete your account at any time.

      Do we use cookies?

      -

      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. +

      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.

      We use cookies to understand and save your preferences for future visits.

      @@ -66,8 +66,8 @@

      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.

      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.

      -

      Children's Online Privacy Protection Act Compliance

      -

      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.

      +

      Children’s Online Privacy Protection Act Compliance

      +

      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.

      Changes to our Privacy Policy

      If we decide to change our privacy policy, we will post those changes on this page.

      diff --git a/resources/views/status/template.blade.php b/resources/views/status/template.blade.php index b91ac18bc..0430a402e 100644 --- a/resources/views/status/template.blade.php +++ b/resources/views/status/template.blade.php @@ -97,7 +97,7 @@ @csrf - +
- \ No newline at end of file + From b5e8b9c2035a3e993b5ad707c9121611dfdcd2a5 Mon Sep 17 00:00:00 2001 From: Stasiek Michalski Date: Sat, 9 Jun 2018 21:46:29 +0200 Subject: [PATCH 311/360] Fix #244 and rounded corners in xs viewpoint --- resources/assets/sass/custom.scss | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/resources/assets/sass/custom.scss b/resources/assets/sass/custom.scss index 551d2571f..cfccee999 100644 --- a/resources/assets/sass/custom.scss +++ b/resources/assets/sass/custom.scss @@ -214,6 +214,10 @@ body, button, input, textarea { .max-hide-overflow { max-height: 600px!important; } + .card-md-rounded-0 { + border-width: 1px 0; + border-radius:0 !important; + } } @media (min-width: map-get($grid-breakpoints, "md")) { @@ -234,3 +238,8 @@ body, button, input, textarea { height: 32px; background-position: 50%; } + +.status-photo img { + object-fit: contain; + max-height: calc(100vh - (6rem)); +} From de0bb212a55ffe904c6d8377e9719911f71feb9b Mon Sep 17 00:00:00 2001 From: Stasiek Michalski Date: Sat, 9 Jun 2018 21:47:40 +0200 Subject: [PATCH 312/360] Make card so it wouldn't be rounded on mobile --- resources/views/status/show.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/status/show.blade.php b/resources/views/status/show.blade.php index 02448e34f..65de8f67a 100644 --- a/resources/views/status/show.blade.php +++ b/resources/views/status/show.blade.php @@ -3,7 +3,7 @@ @section('content')
-
+
From 0e316aabdc9a8ab2d6234e037aaecccfa3df54fa Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 9 Jun 2018 14:42:35 -0600 Subject: [PATCH 313/360] Add activity.js, infinite scroll for notifications --- public/js/activity.js | Bin 0 -> 768 bytes public/js/timeline.js | Bin 790 -> 790 bytes public/mix-manifest.json | Bin 184 -> 250 bytes resources/assets/js/activity.js | 10 ++++++++++ 4 files changed, 10 insertions(+) create mode 100644 public/js/activity.js create mode 100644 resources/assets/js/activity.js diff --git a/public/js/activity.js b/public/js/activity.js new file mode 100644 index 0000000000000000000000000000000000000000..be031f9af83935221c80bb31e21aa3f8bdcc4cd9 GIT binary patch literal 768 zcmaJfb9R@g{}Ri#?jr zd-L9m*29DyS&y7V`fcJ0b;|9MTmknY*@5GC|3gHeDdMWe3SNVcG`1BIbxrAH8!uh6 z-pNa`NjbL{5LHlToa1r9$|$cfh;ndxy}jl#sAo+QRHw0gd%dXQBvBS!pnMI*+uOs_ zPv}VXFj$1I(Fce$pRT3O<6sX{G*1pr+HiV?%V{eQK#k8L7k<3qUq(Uq_oViF7{B;_ za`5S0fk=z5+SE*ra`TVkyZs`cqhy8^xe{wTf77lc7ru*=5IuRC1E`}JA6{_rbRJk?)ER+Dv`kwAXBaa5a&m5WfeXa2zs)E?M|Rg!NW>9JJRM5{S=sJ5nfiG z%XZKbJa*BS$3Zd$L&xT}-+qtqN=%v%0Q*w6eGjrL<37hb0Z}kE(IV^($6Z^PfRY!EXypZ)XOSX jvceFu&rGp3H!@C1OR}^`N=iz$G)uHhF}6%o;;IDzn`j+> delta 30 kcmeyxxPx)RLh-Z|bJNrmLm*{loSI}}U~Xn$uEbRf0HfOpKL7v# diff --git a/resources/assets/js/activity.js b/resources/assets/js/activity.js new file mode 100644 index 000000000..b1b72d1b8 --- /dev/null +++ b/resources/assets/js/activity.js @@ -0,0 +1,10 @@ +$(document).ready(function() { + $('.pagination').hide(); + let elem = document.querySelector('.notification-page .list-group'); + let infScroll = new InfiniteScroll( elem, { + path: '.pagination__next', + append: '.notification-page .list-group', + status: '.page-load-status', + history: true, + }); +}); From 63343ae5033035d44b25ed4448cd498f8e762fbb Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 9 Jun 2018 16:29:36 -0600 Subject: [PATCH 314/360] Add basic CW/NSFW support --- app/Http/Controllers/StatusController.php | 6 +- public/css/app.css | Bin 200971 -> 202777 bytes public/mix-manifest.json | Bin 250 -> 250 bytes resources/assets/sass/_variables.scss | 14 ++ resources/assets/sass/app.scss | 4 +- resources/assets/sass/components/switch.scss | 152 ++++++++++++++++++ .../views/timeline/partial/new-form.blade.php | 12 +- 7 files changed, 185 insertions(+), 3 deletions(-) create mode 100644 resources/assets/sass/components/switch.scss diff --git a/app/Http/Controllers/StatusController.php b/app/Http/Controllers/StatusController.php index 27cf768f8..4e5c2e8d4 100644 --- a/app/Http/Controllers/StatusController.php +++ b/app/Http/Controllers/StatusController.php @@ -33,9 +33,11 @@ class StatusController extends Controller $this->validate($request, [ 'photo' => 'required|mimes:jpeg,png,bmp,gif|max:' . config('pixelfed.max_photo_size'), - 'caption' => 'string|max:' . config('pixelfed.max_caption_length') + 'caption' => 'string|max:' . config('pixelfed.max_caption_length'), + 'cw' => 'nullable|string' ]); + $cw = $request->filled('cw') && $request->cw == 'on' ? true : false; $monthHash = hash('sha1', date('Y') . date('m')); $userHash = hash('sha1', $user->id . (string) $user->created_at); $storagePath = "public/m/{$monthHash}/{$userHash}"; @@ -45,6 +47,8 @@ class StatusController extends Controller $status = new Status; $status->profile_id = $profile->id; $status->caption = $request->caption; + $status->is_nsfw = $cw; + $status->save(); $media = new Media; diff --git a/public/css/app.css b/public/css/app.css index 656378808792a6c58533bda671cf2adeefcb083e..4fc774d1919e744b4b6828b87f8a69419855ccb5 100644 GIT binary patch delta 3297 zcma)8TWl0%6waA;w=IyC(r%$ZaZ4?<&|UW0-JLCvifQ7dNEIrHD9rB6wga;}>+F=G zO)W|^Dk{Z3oM<9#X%&lHwiFnmLC_}%MlcfPfkb%m_CjJ*8iK@sF1y`r7bSh@&N=`8 zopZkPoinrd;G7SVbCS&?l%Jhw8KDZue=NzPmg9|fm_5*U*qT0sUYqj^qxkZBm%KdCGBuXqN*}|eAN_35b zWFBY&ccsq}@=f}n$@t%k}ER=geUjutG!xp8(DphO2QvrT#J_=g`<^4SnT})1I9fk$CXb85XP>D1=#c2{6 z>@IITZW|`N|1bp2=75v+Mk1=gt2{jn=O|T^<0H_5RU=S}(NX9&b$9YIhrf@4VmRyY z+mGScT+P1R%C27C>ae;xJves^7UJh4@DQ#&1VwoH6Ie5As^uzdo$6^VN*mES23G7J zA;erc1lv^n>M^LrHKXt@{_-i*7{Lj0Z>peyF$hj6`{o#21AQRQeg^AJ0Z)T7fNkwy z!DUClZalv?1`8DF2-LyU5Mc5sbZaw!O~>GkG$fWTCHnaF7;HAHb4J)nE`!=B9nBav z96Sy!sk7SUd&gm`NgFL3`uV7NhrqsC*eoq+7jG*3f`QZqE&72@Cm|z`!v+1ua#r`G+Z%m zRAESgXx5Dv71F&w6{ys1C?t?KvL}1(jKE2h|j8Y2o`DyJOSzkpD2y_{M#<=5A9uj*fgbC*!HiyRJ* z&*z?&tZu}31+@roo2Y8#dkgiO&rtdKQCNaETB!@up7WI}>#4srW-dKL?bMigbR%`% zOt?B!^c?k(%31LwwN~?Nn54c~&}dI|^K!VeCnCmVTY`U?qwN8*?t^hL!OOfDqa{vY zWPT^tYn-(5v3M7LRhU=a*U9l6oigo=?+SMFtlX*n3Nhgw9g^4;W9gU}>l{|?uRdt&=0ZDo*`~T|afTr9u>>dAc^$R&+W8qqaVIB51hJd$bdpiR%fIcBmLjmj>}>lC0{>LCVzPFnCVaA=Z4Xi9c=rs9eI?-W9 z2-oSvT5VQOd{=#n-y9yj9kXplKS=X&{}HGFeE^*gnin1J2=TazB zhjc28Br*rXnKc7m^=mMgJp{TfE$}{~PPe@=L*cojq!gW+KsC^R=Vi1eOG#SrEGd!2 zV`wSUcR%C@XubwB{l3uAGw|x^@@ZrX9rxkUqc0d^ak%WB=`e2pZ`PVfk(eE# sFPlX@%*Gxs7R-s990x#LdfGFVtvYjCz?%T;^P2 zOo(xY#5exXfgp^rtz>|o(IrA+G%;~;Ka7iU%`_&u_-nt~WkdaXdJZis<5$1Fm*>4c z@A-Ic^T=nL=XOjOJZ<4vZ2sX1X3~i#m7YKoZ5u$*=#ewB-XCu1psqNo<}aO@-=z!1 zVxuQ-*+#FWibwxi$^4d%{*Ve71F=X{fSA*dl^SJFSiI>}3X)N3aY;TOeQ1JHee;VZ zL}7`91|p4;+Z%}Y57s_dD;;{Xi8q?@+dXzg<8}LGujI>97MJ5Tv#D-=xowTkhIcgl zHL;f3;lce%fgRzYc(gy>92puIinrH$6yZ^K__c%0hvF{}687PNYLCYshz1Hw{Zb@C zPjsRe5{=EmMm;-GX7;$eYI&DB@wnseQOMhc)0G0F0N57^$LK~Eme&X7e{`eOu1saQ z3sz++bmV!_%WV2I-UmAw_Mu*6o|$4nfQ&F>Wuv91@o0XO;??wBZeLT@W_KSvYob+A zq7QQ$l_s#;>A-U$x$Av!QFkxO>Az;r5vTu5_R@A$E3NL7jRab}B96W`_geu$;Z4*^1w%1O>Obz3(^P6M% zhN&>gNi@>i6R7!U67LzEQcFzOzds3{)9(_hSIIDi3Qb=(g%NXh;G$!6byCnIIfbB> zigy~Hs{WU!@w4XU>19^xnSzmioyL}ohnWsep<8ov&!A&nHVn_;3iKH=QE(Q$Ca)yB zymElXXYr8shhLw?cHD(BobPVp2NHAMWtmoEEGJCy&8>=H^75SrB7YxhYI5=-2{EXk-x%Z8-)P#4NsF#CJKjd+F>K7|e5%HRA(c z!pes^_8YR+{PIQE+qEsW(ba^=raT3gvc)@6IH{rJb&In!_Fw}l@mFp_)*G{TiI!Fb zXTMrO-zIT4#F+|3U+SlSy5Z)J{EIzCok#YOXrrY%66yC95I-zO#igbn^~|ZBW=iW> zgRadd@j3&$U{uS#v6ET&-$iW3xKU!Cmoo!aBN`NN8n-bEl~~zU>T$4&%xhcDMEM-7 zn$*xw4(1dms#RoNaH29oDzdR^{->2~k~Q8WgX})C1=+W%fD1vTIsi)VW^d?3WBBk> ZY)LI
- + Max length: {{config('pixelfed.max_caption_length')}} characters.
+
+ +
+ + +
+ + Please mark all NSFW and controversial content, as per our content policy. + +
From 545efbeee3b82a64650a821e39088185ee0bca86 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 9 Jun 2018 17:30:54 -0600 Subject: [PATCH 315/360] Update AccountController, add pagination to notifications --- app/Http/Controllers/AccountController.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index 4a0b5bd5f..6f5eeea43 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; +use Carbon\Carbon; use Auth, Cache, Redis; use App\{Notification, Profile, User}; @@ -15,10 +16,17 @@ class AccountController extends Controller public function notifications(Request $request) { + $this->validate($request, [ + 'page' => 'nullable|min:1|max:3' + ]); $profile = Auth::user()->profile; - //$notifications = $this->fetchNotifications($profile->id); + $timeago = Carbon::now()->subMonths(6); $notifications = Notification::whereProfileId($profile->id) - ->orderBy('id','desc')->take(30)->simplePaginate(); + ->whereDate('created_at', '>', $timeago) + ->orderBy('id','desc') + ->take(30) + ->simplePaginate(); + return view('account.activity', compact('profile', 'notifications')); } From 40d1b5342a42066e6c43815e47e332aaff95cf8f Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 9 Jun 2018 17:31:14 -0600 Subject: [PATCH 316/360] Update ProfileController --- app/Http/Controllers/ProfileController.php | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index 9c7fa9041..4e25bd236 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -32,6 +32,7 @@ class ProfileController extends Controller // TODO: refactor this mess $owner = Auth::check() && Auth::id() === $user->user_id; $is_following = ($owner == false && Auth::check()) ? $user->followedBy(Auth::user()->profile) : false; + $is_admin = is_null($user->domain) ? $user->user->is_admin : false; $timeline = $user->statuses() ->whereHas('media') ->whereNull('in_reply_to_id') @@ -39,7 +40,7 @@ class ProfileController extends Controller ->withCount(['comments', 'likes']) ->simplePaginate(21); - return view('profile.show', compact('user', 'owner', 'is_following', 'timeline')); + return view('profile.show', compact('user', 'owner', 'is_following', 'is_admin', 'timeline')); } public function showActivityPub(Request $request, $user) @@ -66,7 +67,8 @@ class ProfileController extends Controller $owner = Auth::check() && Auth::id() === $user->user_id; $is_following = ($owner == false && Auth::check()) ? $user->followedBy(Auth::user()->profile) : false; $followers = $profile->followers()->orderBy('created_at','desc')->simplePaginate(12); - return view('profile.followers', compact('user', 'profile', 'followers', 'owner', 'is_following')); + $is_admin = is_null($user->domain) ? $user->user->is_admin : false; + return view('profile.followers', compact('user', 'profile', 'followers', 'owner', 'is_following', 'is_admin')); } public function following(Request $request, $username) @@ -77,7 +79,8 @@ class ProfileController extends Controller $owner = Auth::check() && Auth::id() === $user->user_id; $is_following = ($owner == false && Auth::check()) ? $user->followedBy(Auth::user()->profile) : false; $following = $profile->following()->orderBy('created_at','desc')->simplePaginate(12); - return view('profile.following', compact('user', 'profile', 'following', 'owner', 'is_following')); + $is_admin = is_null($user->domain) ? $user->user->is_admin : false; + return view('profile.following', compact('user', 'profile', 'following', 'owner', 'is_following', 'is_admin')); } public function savedBookmarks(Request $request, $username) @@ -88,7 +91,9 @@ class ProfileController extends Controller $user = Auth::user()->profile; $owner = true; $following = false; - $timeline = $user->bookmarks()->orderBy('created_at','desc')->simplePaginate(10); - return view('profile.show', compact('user', 'owner', 'following', 'timeline')); + $timeline = $user->bookmarks()->withCount(['likes','comments'])->orderBy('created_at','desc')->simplePaginate(10); + $is_following = ($owner == false && Auth::check()) ? $user->followedBy(Auth::user()->profile) : false; + $is_admin = is_null($user->domain) ? $user->user->is_admin : false; + return view('profile.show', compact('user', 'owner', 'following', 'timeline', 'is_following', 'is_admin')); } } From 0cc736d1099dc507c3420bdd210cb4235e7fdd46 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 9 Jun 2018 17:31:48 -0600 Subject: [PATCH 317/360] Update Profile model --- app/Profile.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/Profile.php b/app/Profile.php index 3c4b27cea..b0bcd3da3 100644 --- a/app/Profile.php +++ b/app/Profile.php @@ -14,6 +14,11 @@ class Profile extends Model protected $visible = ['id', 'username', 'name']; + public function user() + { + return $this->belongsTo(User::class); + } + public function url($suffix = '') { return url($this->username . $suffix); From 2726f905843edd7b9bf4c6292e6b8d0d8e3c3e46 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 9 Jun 2018 17:32:07 -0600 Subject: [PATCH 318/360] Update Status model --- app/Status.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/Status.php b/app/Status.php index 68e65410a..dd9bf98c4 100644 --- a/app/Status.php +++ b/app/Status.php @@ -25,6 +25,9 @@ class Status extends Model public function thumb() { + if($this->media->count() == 0) { + return "data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=="; + } return url(Storage::url($this->firstMedia()->thumbnail_path)); } From 0b85810a33fabb906496243b0cb2384bdd5c15a5 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 9 Jun 2018 17:32:44 -0600 Subject: [PATCH 319/360] Update master layout, remove line-icons --- resources/views/layouts/app.blade.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 83a10462a..b07d4a3f3 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -20,11 +20,9 @@ + - - - @stack('styles') From b6706b626a9145231b1851e92c630a10e4616bc9 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 9 Jun 2018 17:34:53 -0600 Subject: [PATCH 320/360] Replace line-icons with font awesome icons --- resources/views/profile/partial/user-info.blade.php | 11 ++++++++--- resources/views/profile/show.blade.php | 4 ++-- resources/views/status/template.blade.php | 13 ++++++++++++- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/resources/views/profile/partial/user-info.blade.php b/resources/views/profile/partial/user-info.blade.php index 4720c2da3..14575f18a 100644 --- a/resources/views/profile/partial/user-info.blade.php +++ b/resources/views/profile/partial/user-info.blade.php @@ -8,11 +8,16 @@
-
+
{{$user->username}} + @if($is_admin == true) + + ADMIN + + @endif @if($owner == true) - - + + @elseif ($is_following == true) diff --git a/resources/views/profile/show.blade.php b/resources/views/profile/show.blade.php index f731da04e..d9fa85c54 100644 --- a/resources/views/profile/show.blade.php +++ b/resources/views/profile/show.blade.php @@ -32,10 +32,10 @@
- {{$status->likes_count}} + {{$status->likes_count}} - {{$status->comments_count}} + {{$status->comments_count}}
diff --git a/resources/views/status/template.blade.php b/resources/views/status/template.blade.php index 09e3a6004..e43215bf8 100644 --- a/resources/views/status/template.blade.php +++ b/resources/views/status/template.blade.php @@ -7,7 +7,7 @@
+ @if($item->is_nsfw) +
+

+

NSFW / Hidden Image + + + +

+
+ @else + @endif
@endsection + +@push('scripts') + +@endpush diff --git a/webpack.mix.js b/webpack.mix.js index 27959585c..b99329cd3 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -12,6 +12,7 @@ let mix = require('laravel-mix'); */ mix.js('resources/assets/js/app.js', 'public/js') + .js('resources/assets/js/activity.js', 'public/js') .js('resources/assets/js/timeline.js', 'public/js') .sass('resources/assets/sass/app.scss', 'public/css') .version(); From 40872a41591ee347dd8f7bc32685313e550c3bd6 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 9 Jun 2018 17:36:45 -0600 Subject: [PATCH 324/360] Update status template --- resources/views/status/show.blade.php | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/resources/views/status/show.blade.php b/resources/views/status/show.blade.php index 02448e34f..80036fdfb 100644 --- a/resources/views/status/show.blade.php +++ b/resources/views/status/show.blade.php @@ -5,7 +5,7 @@
-
+
- -
+
@csrf @@ -87,9 +81,14 @@ +
-
+ @if($status->is_nsfw) +
+

+

NSFW / Hidden Image + + + +

+
+ @else + @endif
diff --git a/resources/views/status/template.blade.php b/resources/views/status/template.blade.php index e43215bf8..2e56e6ee5 100644 --- a/resources/views/status/template.blade.php +++ b/resources/views/status/template.blade.php @@ -29,7 +29,7 @@
@if($item->is_nsfw) -
+

NSFW / Hidden Image From 92c4e24666fd9e51f5a4d74a54a996a3de332e77 Mon Sep 17 00:00:00 2001 From: Tim Speckhals Date: Mon, 11 Jun 2018 12:38:23 +0200 Subject: [PATCH 328/360] Update German Translation --- resources/lang/de/navmenu.php | 13 +++++++++++++ resources/lang/de/notification.php | 1 + 2 files changed, 14 insertions(+) create mode 100644 resources/lang/de/navmenu.php diff --git a/resources/lang/de/navmenu.php b/resources/lang/de/navmenu.php new file mode 100644 index 000000000..bfaf81d23 --- /dev/null +++ b/resources/lang/de/navmenu.php @@ -0,0 +1,13 @@ + 'Mein Profil anschauen', + 'myTimeline' => 'Meine Timeline', + 'publicTimeline' => 'Öffentliche Timeline', + 'remoteFollow' => 'Aus der Ferne folgen', + 'settings' => 'Einstellungen', + 'admin' => 'Administration', + 'logout' => 'Abmelden', + +]; \ No newline at end of file diff --git a/resources/lang/de/notification.php b/resources/lang/de/notification.php index d393089f2..4f2040552 100644 --- a/resources/lang/de/notification.php +++ b/resources/lang/de/notification.php @@ -5,5 +5,6 @@ return [ 'likedPhoto' => 'gefällt dein Foto.', 'startedFollowingYou' => 'folgt dir nun.', 'commented' => 'hat deinen Post kommentiert.', + 'mentionedYou' => 'hat dich erwähnt.' ]; \ No newline at end of file From 668e0bd24b0e4e1746fbc5706569e82f60b165d3 Mon Sep 17 00:00:00 2001 From: j1t Date: Tue, 12 Jun 2018 08:56:43 +0000 Subject: [PATCH 329/360] Update notification.php --- resources/lang/he/notification.php | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/lang/he/notification.php b/resources/lang/he/notification.php index b529138df..40b51127d 100644 --- a/resources/lang/he/notification.php +++ b/resources/lang/he/notification.php @@ -5,5 +5,6 @@ return [ 'likedPhoto' => 'אהבו את התמונה שלך.', 'startedFollowingYou' => 'התחיל לעקוב אחריך.', 'commented' => 'הגיב על הפוסט שלך.', + 'mentionedYou' => 'הזכיר אותך.' ]; From 0e25dd449aa75cf9927bac782157ba130c66c995 Mon Sep 17 00:00:00 2001 From: j1t Date: Tue, 12 Jun 2018 09:00:46 +0000 Subject: [PATCH 330/360] Create navmenu.php --- resources/lang/he/navmenu.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 resources/lang/he/navmenu.php diff --git a/resources/lang/he/navmenu.php b/resources/lang/he/navmenu.php new file mode 100644 index 000000000..32d78da75 --- /dev/null +++ b/resources/lang/he/navmenu.php @@ -0,0 +1,13 @@ + 'צפה בפרופיל שלי', + 'myTimeline' => 'ציר הזמן שלי', + 'publicTimeline' => 'ציר הזמן הציבורי', + 'remoteFollow' => 'עקיבה מרחוק', + 'settings' => 'הגדרות', + 'admin' => 'מנהל', + 'logout' => 'התנתק', + +]; From 3f0ad3ffe2c3e192091a026644fe60a3ab46fa69 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Wed, 13 Jun 2018 17:14:10 -0600 Subject: [PATCH 331/360] Update StatusController, support multiple uploads --- app/Http/Controllers/StatusController.php | 42 ++++++++++++------- app/Jobs/StatusPipeline/NewStatusPipeline.php | 11 ++--- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/app/Http/Controllers/StatusController.php b/app/Http/Controllers/StatusController.php index 4e5c2e8d4..1ce080245 100644 --- a/app/Http/Controllers/StatusController.php +++ b/app/Http/Controllers/StatusController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers; use Auth, Cache; use App\Jobs\StatusPipeline\{NewStatusPipeline, StatusDelete}; +use App\Jobs\ImageOptimizePipeline\ImageOptimize; use Illuminate\Http\Request; use App\{Media, Profile, Status, User}; use Vinkla\Hashids\Facades\Hashids; @@ -14,7 +15,7 @@ class StatusController extends Controller { $user = Profile::whereUsername($username)->firstOrFail(); $status = Status::whereProfileId($user->id) - ->withCount(['likes', 'comments']) + ->withCount(['likes', 'comments', 'media']) ->findOrFail($id); if(!$status->media_path && $status->in_reply_to_id) { return redirect($status->url()); @@ -32,16 +33,16 @@ class StatusController extends Controller $user = Auth::user(); $this->validate($request, [ - 'photo' => 'required|mimes:jpeg,png,bmp,gif|max:' . config('pixelfed.max_photo_size'), + 'photo.*' => 'required|mimes:jpeg,png,bmp,gif|max:' . config('pixelfed.max_photo_size'), 'caption' => 'string|max:' . config('pixelfed.max_caption_length'), - 'cw' => 'nullable|string' + 'cw' => 'nullable|string', + 'filter_class' => 'nullable|string', + 'filter_name' => 'nullable|string', ]); $cw = $request->filled('cw') && $request->cw == 'on' ? true : false; $monthHash = hash('sha1', date('Y') . date('m')); $userHash = hash('sha1', $user->id . (string) $user->created_at); - $storagePath = "public/m/{$monthHash}/{$userHash}"; - $path = $request->photo->store($storagePath); $profile = $user->profile; $status = new Status; @@ -51,17 +52,28 @@ class StatusController extends Controller $status->save(); - $media = new Media; - $media->status_id = $status->id; - $media->profile_id = $profile->id; - $media->user_id = $user->id; - $media->media_path = $path; - $media->size = $request->file('photo')->getClientSize(); - $media->mime = $request->file('photo')->getClientMimeType(); - $media->save(); - NewStatusPipeline::dispatch($status, $media); + $photos = $request->file('photo'); + $order = 1; + foreach ($photos as $k => $v) { + $storagePath = "public/m/{$monthHash}/{$userHash}"; + $path = $v->store($storagePath); + $media = new Media; + $media->status_id = $status->id; + $media->profile_id = $profile->id; + $media->user_id = $user->id; + $media->media_path = $path; + $media->size = $v->getClientSize(); + $media->mime = $v->getClientMimeType(); + $media->filter_class = $request->input('filter_class'); + $media->filter_name = $request->input('filter_name'); + $media->order = $order; + $media->save(); + ImageOptimize::dispatch($media); + $order++; + } + + NewStatusPipeline::dispatch($status); - // TODO: Parse Caption // TODO: Send to subscribers return redirect($status->url()); diff --git a/app/Jobs/StatusPipeline/NewStatusPipeline.php b/app/Jobs/StatusPipeline/NewStatusPipeline.php index 01392aa47..8939dd9ad 100644 --- a/app/Jobs/StatusPipeline/NewStatusPipeline.php +++ b/app/Jobs/StatusPipeline/NewStatusPipeline.php @@ -16,17 +16,15 @@ class NewStatusPipeline implements ShouldQueue use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; protected $status; - protected $media; /** * Create a new job instance. * * @return void */ - public function __construct(Status $status, $media = false) + public function __construct(Status $status) { $this->status = $status; - $this->media = $media; } /** @@ -37,13 +35,10 @@ class NewStatusPipeline implements ShouldQueue public function handle() { $status = $this->status; - $media = $this->media; StatusEntityLexer::dispatch($status); - StatusActivityPubDeliver::dispatch($status); - if($media) { - ImageOptimize::dispatch($media); - } + //StatusActivityPubDeliver::dispatch($status); + Cache::forever('post.' . $status->id, $status); $redis = Redis::connection(); From 5cb3e5c17b488e2f261741175a3821964339bbfc Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Wed, 13 Jun 2018 17:14:44 -0600 Subject: [PATCH 332/360] Add new media migration --- ...6_11_030049_add_filters_to_media_table.php | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 database/migrations/2018_06_11_030049_add_filters_to_media_table.php diff --git a/database/migrations/2018_06_11_030049_add_filters_to_media_table.php b/database/migrations/2018_06_11_030049_add_filters_to_media_table.php new file mode 100644 index 000000000..5a3dbf73d --- /dev/null +++ b/database/migrations/2018_06_11_030049_add_filters_to_media_table.php @@ -0,0 +1,34 @@ +string('filter_name')->nullable()->after('orientation'); + $table->string('filter_class')->nullable()->after('filter_name'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('media', function (Blueprint $table) { + $table->dropColumn('filter_name'); + $table->dropColumn('filter_class'); + }); + } +} From 4e51fbd5eba9f3e4150af46ae3bdfb190126b554 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Wed, 13 Jun 2018 18:52:42 -0600 Subject: [PATCH 333/360] Add soft-deletes --- app/Avatar.php | 8 +++ app/Jobs/StatusPipeline/StatusDelete.php | 5 +- app/Like.php | 10 ++++ app/Media.php | 12 +++- app/Mention.php | 9 +++ app/Notification.php | 41 ++++++++----- app/Profile.php | 9 +++ app/Status.php | 18 +++++- app/User.php | 10 +++- ...6_14_001318_add_soft_deletes_to_models.php | 58 +++++++++++++++++++ 10 files changed, 159 insertions(+), 21 deletions(-) create mode 100644 database/migrations/2018_06_14_001318_add_soft_deletes_to_models.php diff --git a/app/Avatar.php b/app/Avatar.php index a7f8e4e67..b72510765 100644 --- a/app/Avatar.php +++ b/app/Avatar.php @@ -3,8 +3,16 @@ namespace App; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; class Avatar extends Model { + use SoftDeletes; + /** + * The attributes that should be mutated to dates. + * + * @var array + */ + protected $dates = ['deleted_at']; } diff --git a/app/Jobs/StatusPipeline/StatusDelete.php b/app/Jobs/StatusPipeline/StatusDelete.php index 571b41a55..30aecd7e2 100644 --- a/app/Jobs/StatusPipeline/StatusDelete.php +++ b/app/Jobs/StatusPipeline/StatusDelete.php @@ -2,7 +2,7 @@ namespace App\Jobs\StatusPipeline; -use App\{Media, StatusHashtag, Status}; +use App\{Media, Notification, StatusHashtag, Status}; use Illuminate\Bus\Queueable; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; @@ -60,6 +60,9 @@ class StatusDelete implements ShouldQueue } $status->likes()->delete(); + Notification::whereItemType('App\Status') + ->whereItemId($status->id) + ->delete(); StatusHashtag::whereStatusId($status->id)->delete(); $status->delete(); diff --git a/app/Like.php b/app/Like.php index a4ce9f0a8..c70b647bc 100644 --- a/app/Like.php +++ b/app/Like.php @@ -3,9 +3,19 @@ namespace App; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; class Like extends Model { + use SoftDeletes; + + /** + * The attributes that should be mutated to dates. + * + * @var array + */ + protected $dates = ['deleted_at']; + public function actor() { return $this->belongsTo(Profile::class, 'profile_id', 'id'); diff --git a/app/Media.php b/app/Media.php index 8cc2ffd1e..7c9138965 100644 --- a/app/Media.php +++ b/app/Media.php @@ -2,11 +2,21 @@ namespace App; -use Illuminate\Database\Eloquent\Model; use Storage; +use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; class Media extends Model { + use SoftDeletes; + + /** + * The attributes that should be mutated to dates. + * + * @var array + */ + protected $dates = ['deleted_at']; + public function url() { $path = $this->media_path; diff --git a/app/Mention.php b/app/Mention.php index 3473c2924..bc76bdc97 100644 --- a/app/Mention.php +++ b/app/Mention.php @@ -3,9 +3,18 @@ namespace App; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; class Mention extends Model { + use SoftDeletes; + + /** + * The attributes that should be mutated to dates. + * + * @var array + */ + protected $dates = ['deleted_at']; public function profile() { diff --git a/app/Notification.php b/app/Notification.php index c40e0a553..9aef5b197 100644 --- a/app/Notification.php +++ b/app/Notification.php @@ -3,28 +3,37 @@ namespace App; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; class Notification extends Model { + use SoftDeletes; - public function actor() - { - return $this->belongsTo(Profile::class, 'actor_id', 'id'); - } + /** + * The attributes that should be mutated to dates. + * + * @var array + */ + protected $dates = ['deleted_at']; + + public function actor() + { + return $this->belongsTo(Profile::class, 'actor_id', 'id'); + } - public function profile() - { - return $this->belongsTo(Profile::class, 'profile_id', 'id'); - } + public function profile() + { + return $this->belongsTo(Profile::class, 'profile_id', 'id'); + } - public function item() - { - return $this->morphTo(); - } + public function item() + { + return $this->morphTo(); + } - public function status() - { - return $this->belongsTo(Status::class, 'item_id', 'id'); - } + public function status() + { + return $this->belongsTo(Status::class, 'item_id', 'id'); + } } diff --git a/app/Profile.php b/app/Profile.php index b0bcd3da3..009ed2cbf 100644 --- a/app/Profile.php +++ b/app/Profile.php @@ -5,9 +5,18 @@ namespace App; use Storage; use App\Util\Lexer\PrettyNumber; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; class Profile extends Model { + use SoftDeletes; + + /** + * The attributes that should be mutated to dates. + * + * @var array + */ + protected $dates = ['deleted_at']; protected $hidden = [ 'private_key', ]; diff --git a/app/Status.php b/app/Status.php index 07879f510..fe3fc26d2 100644 --- a/app/Status.php +++ b/app/Status.php @@ -2,12 +2,21 @@ namespace App; -use Illuminate\Database\Eloquent\Model; use Storage; -use Vinkla\Hashids\Facades\Hashids; +use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; class Status extends Model { + use SoftDeletes; + + /** + * The attributes that should be mutated to dates. + * + * @var array + */ + protected $dates = ['deleted_at']; + public function profile() { return $this->belongsTo(Profile::class); @@ -43,6 +52,11 @@ class Status extends Model return url($path); } + public function editUrl() + { + return $this->url() . '/edit'; + } + public function mediaUrl() { $media = $this->firstMedia(); diff --git a/app/User.php b/app/User.php index 33297e481..38edc3e9d 100644 --- a/app/User.php +++ b/app/User.php @@ -3,11 +3,19 @@ namespace App; use Illuminate\Notifications\Notifiable; +use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { - use Notifiable; + use Notifiable, SoftDeletes; + + /** + * The attributes that should be mutated to dates. + * + * @var array + */ + protected $dates = ['deleted_at']; /** * The attributes that are mass assignable. diff --git a/database/migrations/2018_06_14_001318_add_soft_deletes_to_models.php b/database/migrations/2018_06_14_001318_add_soft_deletes_to_models.php new file mode 100644 index 000000000..a839ddf74 --- /dev/null +++ b/database/migrations/2018_06_14_001318_add_soft_deletes_to_models.php @@ -0,0 +1,58 @@ +softDeletes(); + }); + + Schema::table('likes', function ($table) { + $table->softDeletes(); + }); + + Schema::table('media', function ($table) { + $table->softDeletes(); + }); + + Schema::table('mentions', function ($table) { + $table->softDeletes(); + }); + + Schema::table('notifications', function ($table) { + $table->softDeletes(); + }); + + Schema::table('profiles', function ($table) { + $table->softDeletes(); + }); + + Schema::table('statuses', function ($table) { + $table->softDeletes(); + }); + + Schema::table('users', function ($table) { + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} From 231884c770e0371ad2f02f9f0f91e0573cd2a309 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Wed, 13 Jun 2018 18:54:27 -0600 Subject: [PATCH 334/360] Update view entity encoding --- app/Http/Controllers/CommentController.php | 4 +-- app/Http/Controllers/StatusController.php | 2 +- resources/views/status/show.blade.php | 39 +++++++++++++++++++--- resources/views/status/template.blade.php | 9 ++--- 4 files changed, 42 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php index 1ec7bbf4d..8b8eded8e 100644 --- a/app/Http/Controllers/CommentController.php +++ b/app/Http/Controllers/CommentController.php @@ -34,8 +34,8 @@ class CommentController extends Controller $reply = new Status(); $reply->profile_id = $profile->id; - $reply->caption = $comment; - $reply->rendered = e($comment); + $reply->caption = e(strip_tags($comment)); + $reply->rendered = $comment; $reply->in_reply_to_id = $status->id; $reply->in_reply_to_profile_id = $status->profile_id; $reply->save(); diff --git a/app/Http/Controllers/StatusController.php b/app/Http/Controllers/StatusController.php index 1ce080245..704beea6c 100644 --- a/app/Http/Controllers/StatusController.php +++ b/app/Http/Controllers/StatusController.php @@ -47,7 +47,7 @@ class StatusController extends Controller $status = new Status; $status->profile_id = $profile->id; - $status->caption = $request->caption; + $status->caption = strip_tags($request->caption); $status->is_nsfw = $cw; $status->save(); diff --git a/resources/views/status/show.blade.php b/resources/views/status/show.blade.php index 80e7e41d3..8d2e27d67 100644 --- a/resources/views/status/show.blade.php +++ b/resources/views/status/show.blade.php @@ -16,17 +16,46 @@
- @if($status->is_nsfw) + @if($status->is_nsfw && $status->media_count == 1)

NSFW / Hidden Image -
+

- @else - + @elseif(!$status->is_nsfw && $status->media_count == 1) +
+ +
+ @elseif($status->is_nsfw && $status->media_count > 1) + + @elseif(!$status->is_nsfw && $status->media_count > 1) + @endif
@@ -51,7 +80,7 @@ @foreach($status->comments->reverse()->take(10) as $item)

{{$item->profile->username}} - {!!$item->rendered!!} {{$item->created_at->diffForHumans(null, true, true ,true)}} + {!! $item->rendered ?? e($item->caption) !!} {{$item->created_at->diffForHumans(null, true, true ,true)}}

@endforeach
diff --git a/resources/views/status/template.blade.php b/resources/views/status/template.blade.php index 2e56e6ee5..7a3910887 100644 --- a/resources/views/status/template.blade.php +++ b/resources/views/status/template.blade.php @@ -15,6 +15,7 @@ Embed @if(Auth::check()) @if(Auth::user()->profile->id === $item->profile->id || Auth::user()->is_admin == true) + Edit
@csrf @@ -32,13 +33,13 @@

NSFW / Hidden Image - +

@else - + @endif @@ -84,7 +85,7 @@ {{$status->profile->username}} - {!!$status->rendered!!} + {!! $item->rendered ?? e($item->caption) !!} {{$status->created_at->diffForHumans(null, true, true, true)}} @@ -95,7 +96,7 @@ @foreach($item->comments->reverse()->take(3) as $comment)

{{$comment->profile->username}} - {{ str_limit($comment->caption, 125) }} + {!! str_limit($item->rendered ?? e($item->caption), 150) !!}

@endforeach @endif From 596f335dc6ddfb909b3233568590016eed6e42d1 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Wed, 13 Jun 2018 19:47:08 -0600 Subject: [PATCH 335/360] Update StatusEntityLexer --- app/Jobs/StatusPipeline/StatusEntityLexer.php | 78 +++++++++++++++---- 1 file changed, 62 insertions(+), 16 deletions(-) diff --git a/app/Jobs/StatusPipeline/StatusEntityLexer.php b/app/Jobs/StatusPipeline/StatusEntityLexer.php index c1d09ccb7..c9dff4d59 100644 --- a/app/Jobs/StatusPipeline/StatusEntityLexer.php +++ b/app/Jobs/StatusPipeline/StatusEntityLexer.php @@ -6,21 +6,28 @@ use Cache; use App\{ Hashtag, Media, + Mention, + Profile, Status, StatusHashtag }; use App\Util\Lexer\Hashtag as HashtagLexer; +use App\Util\Lexer\{Autolink, Extractor}; use Illuminate\Bus\Queueable; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; +use App\Jobs\MentionPipeline\MentionPipeline; class StatusEntityLexer implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; protected $status; + protected $entities; + protected $autolink; + /** * Create a new job instance. * @@ -39,22 +46,40 @@ class StatusEntityLexer implements ShouldQueue public function handle() { $status = $this->status; - $this->parseHashtags(); + $this->parseEntities(); } - public function parseHashtags() + public function parseEntities() + { + $this->extractEntities(); + } + + public function extractEntities() + { + $this->entities = Extractor::create()->extract($this->status->caption); + $this->autolinkStatus(); + } + + public function autolinkStatus() + { + $this->autolink = Autolink::create()->autolink($this->status->caption); + $this->storeEntities(); + } + + public function storeEntities() { $status = $this->status; - $text = e($status->caption); - $tags = HashtagLexer::getHashtags($text); - $rendered = $text; - if(count($tags) > 0) { - $rendered = HashtagLexer::replaceHashtagsWithLinks($text); - } - $status->rendered = $rendered; + $this->storeHashtags(); + $this->storeMentions(); + $status->rendered = $this->autolink; + $status->entities = json_encode($this->entities); $status->save(); - - Cache::forever('post.' . $status->id, $status); + } + + public function storeHashtags() + { + $tags = array_unique($this->entities['hashtags']); + $status = $this->status; foreach($tags as $tag) { $slug = str_slug($tag); @@ -64,11 +89,32 @@ class StatusEntityLexer implements ShouldQueue ['slug' => $slug] ); - $stag = new StatusHashtag; - $stag->status_id = $status->id; - $stag->hashtag_id = $htag->id; - $stag->save(); + StatusHashtag::firstOrCreate( + ['status_id' => $status->id], + ['hashtag_id' => $htag->id] + ); } - } + + public function storeMentions() + { + $mentions = array_unique($this->entities['mentions']); + $status = $this->status; + + foreach($mentions as $mention) { + $mentioned = Profile::whereUsername($mention)->first(); + + if(empty($mentioned) || !isset($mentioned->id)) { + continue; + } + + $m = new Mention; + $m->status_id = $status->id; + $m->profile_id = $mentioned->id; + $m->save(); + + MentionPipeline::dispatch($status, $m); + } + } + } From 47df007a7e5f8096298e2972fee04e55e3b4552b Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Wed, 13 Jun 2018 20:57:16 -0600 Subject: [PATCH 336/360] Add Photo Filters and Photo Albums --- app/Http/Controllers/StatusController.php | 4 + config/pixelfed.php | 10 + public/css/app.css | Bin 203269 -> 214298 bytes public/js/app.js | Bin 306988 -> 309793 bytes public/mix-manifest.json | Bin 250 -> 250 bytes resources/assets/js/bootstrap.js | 1 + resources/assets/js/components/statusform.js | 110 +++++ resources/assets/sass/app.scss | 2 + resources/assets/sass/components/filters.scss | 445 ++++++++++++++++++ resources/assets/sass/custom.scss | 15 + resources/views/profile/show.blade.php | 2 +- .../views/timeline/partial/new-form.blade.php | 66 ++- 12 files changed, 642 insertions(+), 13 deletions(-) create mode 100644 resources/assets/js/components/statusform.js create mode 100644 resources/assets/sass/components/filters.scss diff --git a/app/Http/Controllers/StatusController.php b/app/Http/Controllers/StatusController.php index 704beea6c..67f204cdf 100644 --- a/app/Http/Controllers/StatusController.php +++ b/app/Http/Controllers/StatusController.php @@ -40,6 +40,10 @@ class StatusController extends Controller 'filter_name' => 'nullable|string', ]); + if(count($request->file('photo')) > config('pixelfed.max_album_length')) { + return redirect()->back()->with('error', 'Too many files, max limit per post: ' . config('pixelfed.max_album_length')); + } + $cw = $request->filled('cw') && $request->cw == 'on' ? true : false; $monthHash = hash('sha1', date('Y') . date('m')); $userHash = hash('sha1', $user->id . (string) $user->created_at); diff --git a/config/pixelfed.php b/config/pixelfed.php index 9a872e74c..a3ec46783 100644 --- a/config/pixelfed.php +++ b/config/pixelfed.php @@ -96,5 +96,15 @@ return [ | */ 'max_caption_length' => env('MAX_CAPTION_LENGTH', 150), + + /* + |-------------------------------------------------------------------------- + | Album size limit + |-------------------------------------------------------------------------- + | + | The max number of photos allowed per post. + | + */ + 'max_album_length' => env('MAX_ALBUM_LENGTH', 4), ]; \ No newline at end of file diff --git a/public/css/app.css b/public/css/app.css index dee2a793158e645d59bf5df6ca61e432b492f17a..d3c5687bcf3ef461d54d06ad8a6c1303106209c3 100644 GIT binary patch delta 11092 zcmbta&5qkP5Jr<*(w|!oJ-G?CT?djPdDm;N7kz*L?X9<>2U(_V)w1ML@@||om>$wg zZ$%FQ`WylJRDFjIDTyK}QY(9rOV$vF^YhI&Khhr`KmF&=&whXZ$@@niAOH6`JbCi+ z#n*#ZX1m9Fa69_}3~f*88~^W!sm#I4bs(?80>P zGFHyMc==P5gn9nryJegdg#P??m*sI0XX%WRBrM`v@=ki<8}`U-PL>%ZZx?aCOTxo! zo@CMHW=-PNx|jvNe|Gb?_w*~sb~FFxE?yMt^2axBoG!@gS@6y)?{b6d$>gnjN9LQj zaLeCjIoZYGxi=mT)_da8tOyHo?q2u{vKkKZ5Y1pe1m5NFruzgKj)J`-s)1i7{A2ZNVddNVES;Fu{ zQXzLv!!!+T2)tB6HbPxhKuR(5uGKslu{0?Y18AK~50xjWon@QkVAGpv+Qb07mgejS zDXYhgvO-r?Mn4fP{dmLx8LFLR6DOEXoY83Fct=4mT8DH?atruOT7yg?>;VanEUzR- zxTkueOC&Jw3fENn_rWsis$*G#@*<=g3CUPIC{k0_#sri^&gioNMZbV*%zlc9cOFzl zMrdfaT>=G`6{fA3dUZaEDA|SI#EnpOY*0uOrj*Y+1OxY72QN?u{+kHHa|)%vJtZkbeUGbCEJ?)t<#55hV8Kx*HtP zpr!6SkKz6`SrR>fRr`)D2S{OJ{;(^L56dYR@W#Ckb|dgec_4;|QlJPVQ`_W=Q**(0 z*gsy`3R2c(PaoUO+P$El5;2vrHZhrTWpwjJU8q4D*R z=bPCv$(C_Tr)Cpp>Ep5gwm%~xp6nNQ@v0@g#G|G$<4+}flnR4+pbQXN{s-QD$2FZy zC_H9S2Qxjk+wj)9b<~KWTi3vww5oAS0M4IwXK@L_V6K?e-rm(%T@8S{4G+sOrh0H? zKGbw9CnvGvZHWDtGnH9DYXwY}_2LuLXoY=Ay{5&!wS!0C)X~axgPlOsrVp#>HY+N7;G$&UN4fV|-(R`c%y* z4h_Neg>w~z{8!`JLzh`(yB-2t@;?0fx}wV_jF<+t|wNUACk6ri~ObqXNE>t2bSSB|#mRDyWomHgpE=Kc-ycjLw1l#WhDNrXBsIWOa69V`+B*7(OYBk6 z@-^Qa7-h?}Cs+^8`4rxXZ}hTMtn@+Q`14Ifl09taq}Ad!O_ZK^vL5&K@EX_PpYp}* zUc>_MPcfw3eieYGO|>lu_`$E%pq=&ptag95e(%c#P zYwli5AP+WUtj`=X6$xOnTpv-XvH$6MBW06r&wUM%MTTFlSTl^RIph@6`4s;?c8S|d zga||drG9N-&dfcN^L*-G5`U@q98=rasP+&6=gk{}u5MDJ)LUGfrcvCp(%Ij|<<)C` z##ItEv=0c6)i;|w#`Y_61;@F<4wN#Hq4}!jmgG1{7^}qnn^?Jp!msJ{9!guUG<`Hw zpNZ+`8+*A{Hf!b2zR-sq=IYy|yD(uNu|fTYNm+iWi)U{tHH^ID!)QrF-TIbJv9|j( zuut)Xv87T5W7l~So?l%#lj}2QGCE_s(GFWR4!FbpL3XDHw&Y^T{{nw}*Dvhji@&;q z6LFQ8oHKi`!@|zjIElG2+lqqe>qV?UayGE!Q0`+xg3ynlO<^h1lEW&ow!eo+U3){A z%!H#8d{r*^@C`V9Gq_Z1_6Ky5rbeV!Z diff --git a/public/js/app.js b/public/js/app.js index 4dd9e901ced619ce6c1f590438f08a95f37a00e9..b5f3c56253be06589d17a5f74325ec86ee6d1dac 100644 GIT binary patch delta 15905 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

^htD)e(&?RHr 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 SE)Z??-Lh~QeeZ7hvi}Qc&#boq delta 13133 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 I^NGdn0GY%OC;$Ke delta 53 zcmeyx_=|CZig0qWd6I#-rG;UtMUuIBszFMU!9;Tn5p(mDG$V^7BNG!#12Yq|R8xaw Ii;2bU0JaDZxc~qF diff --git a/resources/assets/js/bootstrap.js b/resources/assets/js/bootstrap.js index 6d3eb91b6..4f95a589c 100644 --- a/resources/assets/js/bootstrap.js +++ b/resources/assets/js/bootstrap.js @@ -22,6 +22,7 @@ try { require('./components/commentform'); require('./components/searchform'); require('./components/bookmarkform'); + require('./components/statusform'); } catch (e) {} /** diff --git a/resources/assets/js/components/statusform.js b/resources/assets/js/components/statusform.js new file mode 100644 index 000000000..636afbca5 --- /dev/null +++ b/resources/assets/js/components/statusform.js @@ -0,0 +1,110 @@ +$(document).ready(function() { + + $('#statusForm .btn-filter-select').on('click', function(e) { + let el = $(this); + }); + + pixelfed.create = {}; + pixelfed.filters = {}; + pixelfed.create.hasGeneratedSelect = false; + pixelfed.create.selectedFilter = false; + pixelfed.create.currentFilterName = false; + pixelfed.create.currentFilterClass = false; + + pixelfed.filters.list = [ + ['1977','filter-1977'], + ['Aden','filter-aden'], + ['Amaro','filter-amaro'], + ['Ashby','filter-ashby'], + ['Brannan','filter-brannan'], + ['Brooklyn','filter-brooklyn'], + ['Charmes','filter-charmes'], + ['Clarendon','filter-clarendon'], + ['Crema','filter-crema'], + ['Dogpatch','filter-dogpatch'], + ['Earlybird','filter-earlybird'], + ['Gingham','filter-gingham'], + ['Ginza','filter-ginza'], + ['Hefe','filter-hefe'], + ['Helena','filter-helena'], + ['Hudson','filter-hudson'], + ['Inkwell','filter-inkwell'], + ['Kelvin','filter-kelvin'], + ['Kuno','filter-juno'], + ['Lark','filter-lark'], + ['Lo-Fi','filter-lofi'], + ['Ludwig','filter-ludwig'], + ['Maven','filter-maven'], + ['Mayfair','filter-mayfair'], + ['Moon','filter-moon'], + ['Nashville','filter-nashville'], + ['Perpetua','filter-perpetua'], + ['Poprocket','filter-poprocket'], + ['Reyes','filter-reyes'], + ['Rise','filter-rise'], + ['Sierra','filter-sierra'], + ['Skyline','filter-skyline'], + ['Slumber','filter-slumber'], + ['Stinson','filter-stinson'], + ['Sutro','filter-sutro'], + ['Toaster','filter-toaster'], + ['Valencia','filter-valencia'], + ['Vesper','filter-vesper'], + ['Walden','filter-walden'], + ['Willow','filter-willow'], + ['X-Pro II','filter-xpro-ii'] + ]; + + function previewImage(input) { + if (input.files && input.files[0]) { + var reader = new FileReader(); + reader.onload = function(e) { + $('.filterPreview').attr('src', e.target.result); + } + reader.readAsDataURL(input.files[0]); + } + } + + function generateFilterSelect() { + let filters = pixelfed.filters.list; + for(var i = 0, len = filters.length; i < len; i++) { + let filter = filters[i]; + let name = filter[0]; + let className = filter[1]; + let select = $('#filterSelectDropdown'); + var template = ''; + select.append(template); + } + pixelfed.create.hasGeneratedSelect = true; + } + + $('#fileInput').on('change', function() { + previewImage(this); + $('#statusForm .form-filters.d-none').removeClass('d-none'); + $('#statusForm .form-preview.d-none').removeClass('d-none'); + $('#statusForm #collapsePreview').collapse('show'); + if(!pixelfed.create.hasGeneratedSelect) { + generateFilterSelect(); + } + }); + + $('#filterSelectDropdown').on('change', function() { + let el = $(this); + let filter = el.val(); + let oldFilter = pixelfed.create.currentFilterClass; + if(filter == 'none') { + $('.filterContainer').removeClass(oldFilter); + pixelfed.create.currentFilterClass = false; + pixelfed.create.currentFilterName = 'None'; + $('.form-group.form-preview .form-text').text('Current Filter: No filter selected'); + return; + } + $('.filterContainer').removeClass(oldFilter).addClass(filter); + pixelfed.create.currentFilterClass = filter; + pixelfed.create.currentFilterName = el.find(':selected').text(); + $('.form-group.form-preview .form-text').text('Current Filter: ' + pixelfed.create.currentFilterName); + $('input[name=filter_class]').val(pixelfed.create.currentFilterClass); + $('input[name=filter_name]').val(pixelfed.create.currentFilterName); + }); + +}); \ No newline at end of file diff --git a/resources/assets/sass/app.scss b/resources/assets/sass/app.scss index a9369498b..88a18d470 100644 --- a/resources/assets/sass/app.scss +++ b/resources/assets/sass/app.scss @@ -11,6 +11,8 @@ @import "custom"; +@import "components/filters"; + @import "components/typeahead"; @import "components/notifications"; diff --git a/resources/assets/sass/components/filters.scss b/resources/assets/sass/components/filters.scss new file mode 100644 index 000000000..99d026a49 --- /dev/null +++ b/resources/assets/sass/components/filters.scss @@ -0,0 +1,445 @@ +/*! Instagram.css v0.1.3 | MIT License | github.com/picturepan2/instagram.css */ +[class*="filter"] { + position: relative; +} + +[class*="filter"]::before { + display: block; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; +} + +.filter-1977 { + -webkit-filter: sepia(.5) hue-rotate(-30deg) saturate(1.4); + filter: sepia(.5) hue-rotate(-30deg) saturate(1.4); +} + +.filter-aden { + -webkit-filter: sepia(.2) brightness(1.15) saturate(1.4); + filter: sepia(.2) brightness(1.15) saturate(1.4); +} + +.filter-aden::before { + background: rgba(125, 105, 24, .1); + content: ""; + mix-blend-mode: multiply; +} + +.filter-amaro { + -webkit-filter: sepia(.35) contrast(1.1) brightness(1.2) saturate(1.3); + filter: sepia(.35) contrast(1.1) brightness(1.2) saturate(1.3); +} + +.filter-amaro::before { + background: rgba(125, 105, 24, .2); + content: ""; + mix-blend-mode: overlay; +} + +.filter-ashby { + -webkit-filter: sepia(.5) contrast(1.2) saturate(1.8); + filter: sepia(.5) contrast(1.2) saturate(1.8); +} + +.filter-ashby::before { + background: rgba(125, 105, 24, .35); + content: ""; + mix-blend-mode: lighten; +} + +.filter-brannan { + -webkit-filter: sepia(.4) contrast(1.25) brightness(1.1) saturate(.9) hue-rotate(-2deg); + filter: sepia(.4) contrast(1.25) brightness(1.1) saturate(.9) hue-rotate(-2deg); +} + +.filter-brooklyn { + -webkit-filter: sepia(.25) contrast(1.25) brightness(1.25) hue-rotate(5deg); + filter: sepia(.25) contrast(1.25) brightness(1.25) hue-rotate(5deg); +} + +.filter-brooklyn::before { + background: rgba(127, 187, 227, .2); + content: ""; + mix-blend-mode: overlay; +} + +.filter-charmes { + -webkit-filter: sepia(.25) contrast(1.25) brightness(1.25) saturate(1.35) hue-rotate(-5deg); + filter: sepia(.25) contrast(1.25) brightness(1.25) saturate(1.35) hue-rotate(-5deg); +} + +.filter-charmes::before { + background: rgba(125, 105, 24, .25); + content: ""; + mix-blend-mode: darken; +} + +.filter-clarendon { + -webkit-filter: sepia(.15) contrast(1.25) brightness(1.25) hue-rotate(5deg); + filter: sepia(.15) contrast(1.25) brightness(1.25) hue-rotate(5deg); +} + +.filter-clarendon::before { + background: rgba(127, 187, 227, .4); + content: ""; + mix-blend-mode: overlay; +} + +.filter-crema { + -webkit-filter: sepia(.5) contrast(1.25) brightness(1.15) saturate(.9) hue-rotate(-2deg); + filter: sepia(.5) contrast(1.25) brightness(1.15) saturate(.9) hue-rotate(-2deg); +} + +.filter-crema::before { + background: rgba(125, 105, 24, .2); + content: ""; + mix-blend-mode: multiply; +} + +.filter-dogpatch { + -webkit-filter: sepia(.35) saturate(1.1) contrast(1.5); + filter: sepia(.35) saturate(1.1) contrast(1.5); +} + +.filter-earlybird { + -webkit-filter: sepia(.25) contrast(1.25) brightness(1.15) saturate(.9) hue-rotate(-5deg); + filter: sepia(.25) contrast(1.25) brightness(1.15) saturate(.9) hue-rotate(-5deg); +} + +.filter-earlybird::before { + background: radial-gradient(circle closest-corner, transparent 0, rgba(125, 105, 24, .2) 100%); + background: -o-radial-gradient(circle closest-corner, transparent 0, rgba(125, 105, 24, .2) 100%); + background: -moz-radial-gradient(circle closest-corner, transparent 0, rgba(125, 105, 24, .2) 100%); + background: -webkit-radial-gradient(circle closest-corner, transparent 0, rgba(125, 105, 24, .2) 100%); + content: ""; + mix-blend-mode: multiply; +} + +.filter-gingham { + -webkit-filter: contrast(1.1) brightness(1.1); + filter: contrast(1.1) brightness(1.1); +} + +.filter-gingham::before { + background: #e6e6e6; + content: ""; + mix-blend-mode: soft-light; +} + +.filter-ginza { + -webkit-filter: sepia(.25) contrast(1.15) brightness(1.2) saturate(1.35) hue-rotate(-5deg); + filter: sepia(.25) contrast(1.15) brightness(1.2) saturate(1.35) hue-rotate(-5deg); +} + +.filter-ginza::before { + background: rgba(125, 105, 24, .15); + content: ""; + mix-blend-mode: darken; +} + +.filter-hefe { + -webkit-filter: sepia(.4) contrast(1.5) brightness(1.2) saturate(1.4) hue-rotate(-10deg); + filter: sepia(.4) contrast(1.5) brightness(1.2) saturate(1.4) hue-rotate(-10deg); +} + +.filter-hefe::before { + background: radial-gradient(circle closest-corner, transparent 0, rgba(0, 0, 0, .25) 100%); + background: -o-radial-gradient(circle closest-corner, transparent 0, rgba(0, 0, 0, .25) 100%); + background: -moz-radial-gradient(circle closest-corner, transparent 0, rgba(0, 0, 0, .25) 100%); + background: -webkit-radial-gradient(circle closest-corner, transparent 0, rgba(0, 0, 0, .25) 100%); + content: ""; + mix-blend-mode: multiply; +} + +.filter-helena { + -webkit-filter: sepia(.5) contrast(1.05) brightness(1.05) saturate(1.35); + filter: sepia(.5) contrast(1.05) brightness(1.05) saturate(1.35); +} + +.filter-helena::before { + background: rgba(158, 175, 30, .25); + content: ""; + mix-blend-mode: overlay; +} + +.filter-hudson { + -webkit-filter: sepia(.25) contrast(1.2) brightness(1.2) saturate(1.05) hue-rotate(-15deg); + filter: sepia(.25) contrast(1.2) brightness(1.2) saturate(1.05) hue-rotate(-15deg); +} + +.filter-hudson::before { + background: radial-gradient(circle closest-corner, transparent 25%, rgba(25, 62, 167, .25) 100%); + background: -o-radial-gradient(circle closest-corner, transparent 25%, rgba(25, 62, 167, .25) 100%); + background: -moz-radial-gradient(circle closest-corner, transparent 25%, rgba(25, 62, 167, .25) 100%); + background: -webkit-radial-gradient(circle closest-corner, transparent 25%, rgba(25, 62, 167, .25) 100%); + content: ""; + mix-blend-mode: multiply; +} + +.filter-inkwell { + -webkit-filter: brightness(1.25) contrast(.85) grayscale(1); + filter: brightness(1.25) contrast(.85) grayscale(1); +} + +.filter-juno { + -webkit-filter: sepia(.35) contrast(1.15) brightness(1.15) saturate(1.8); + filter: sepia(.35) contrast(1.15) brightness(1.15) saturate(1.8); +} + +.filter-juno::before { + background: rgba(127, 187, 227, .2); + content: ""; + mix-blend-mode: overlay; +} + +.filter-kelvin { + -webkit-filter: sepia(.15) contrast(1.5) brightness(1.1) hue-rotate(-10deg); + filter: sepia(.15) contrast(1.5) brightness(1.1) hue-rotate(-10deg); +} + +.filter-kelvin::before { + background: radial-gradient(circle closest-corner, rgba(128, 78, 15, .25) 0, rgba(128, 78, 15, .5) 100%); + background: -o-radial-gradient(circle closest-corner, rgba(128, 78, 15, .25) 0, rgba(128, 78, 15, .5) 100%); + background: -moz-radial-gradient(circle closest-corner, rgba(128, 78, 15, .25) 0, rgba(128, 78, 15, .5) 100%); + background: -webkit-radial-gradient(circle closest-corner, rgba(128, 78, 15, .25) 0, rgba(128, 78, 15, .5) 100%); + content: ""; + mix-blend-mode: overlay; +} + +.filter-lark { + -webkit-filter: sepia(.25) contrast(1.2) brightness(1.3) saturate(1.25); + filter: sepia(.25) contrast(1.2) brightness(1.3) saturate(1.25); +} + +.filter-lofi { + -webkit-filter: saturate(1.1) contrast(1.5); + filter: saturate(1.1) contrast(1.5); +} + +.filter-ludwig { + -webkit-filter: sepia(.25) contrast(1.05) brightness(1.05) saturate(2); + filter: sepia(.25) contrast(1.05) brightness(1.05) saturate(2); +} + +.filter-ludwig::before { + background: rgba(125, 105, 24, .1); + content: ""; + mix-blend-mode: overlay; +} + +.filter-maven { + -webkit-filter: sepia(.35) contrast(1.05) brightness(1.05) saturate(1.75); + filter: sepia(.35) contrast(1.05) brightness(1.05) saturate(1.75); +} + +.filter-maven::before { + background: rgba(158, 175, 30, .25); + content: ""; + mix-blend-mode: darken; +} + +.filter-mayfair { + -webkit-filter: contrast(1.1) brightness(1.15) saturate(1.1); + filter: contrast(1.1) brightness(1.15) saturate(1.1); +} + +.filter-mayfair::before { + background: radial-gradient(circle closest-corner, transparent 0, rgba(175, 105, 24, .4) 100%); + background: -o-radial-gradient(circle closest-corner, transparent 0, rgba(175, 105, 24, .4) 100%); + background: -moz-radial-gradient(circle closest-corner, transparent 0, rgba(175, 105, 24, .4) 100%); + background: -webkit-radial-gradient(circle closest-corner, transparent 0, rgba(175, 105, 24, .4) 100%); + content: ""; + mix-blend-mode: multiply; +} + +.filter-moon { + -webkit-filter: brightness(1.4) contrast(.95) saturate(0) sepia(.35); + filter: brightness(1.4) contrast(.95) saturate(0) sepia(.35); +} + +.filter-nashville { + -webkit-filter: sepia(.25) contrast(1.5) brightness(.9) hue-rotate(-15deg); + filter: sepia(.25) contrast(1.5) brightness(.9) hue-rotate(-15deg); +} + +.filter-nashville::before { + background: radial-gradient(circle closest-corner, rgba(128, 78, 15, .5) 0, rgba(128, 78, 15, .65) 100%); + background: -o-radial-gradient(circle closest-corner, rgba(128, 78, 15, .5) 0, rgba(128, 78, 15, .65) 100%); + background: -moz-radial-gradient(circle closest-corner, rgba(128, 78, 15, .5) 0, rgba(128, 78, 15, .65) 100%); + background: -webkit-radial-gradient(circle closest-corner, rgba(128, 78, 15, .5) 0, rgba(128, 78, 15, .65) 100%); + content: ""; + mix-blend-mode: screen; +} + +.filter-perpetua { + -webkit-filter: contrast(1.1) brightness(1.25) saturate(1.1); + filter: contrast(1.1) brightness(1.25) saturate(1.1); +} + +.filter-perpetua::before { + background: linear-gradient(to bottom, rgba(0, 91, 154, .25), rgba(230, 193, 61, .25)); + background: -o-linear-gradient(top, rgba(0, 91, 154, .25), rgba(230, 193, 61, .25)); + background: -moz-linear-gradient(top, rgba(0, 91, 154, .25), rgba(230, 193, 61, .25)); + background: -webkit-linear-gradient(top, rgba(0, 91, 154, .25), rgba(230, 193, 61, .25)); + background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 91, 154, .25)), to(rgba(230, 193, 61, .25))); + content: ""; + mix-blend-mode: multiply; +} + +.filter-poprocket { + -webkit-filter: sepia(.15) brightness(1.2); + filter: sepia(.15) brightness(1.2); +} + +.filter-poprocket::before { + background: radial-gradient(circle closest-corner, rgba(206, 39, 70, .75) 40%, black 80%); + background: -o-radial-gradient(circle closest-corner, rgba(206, 39, 70, .75) 40%, black 80%); + background: -moz-radial-gradient(circle closest-corner, rgba(206, 39, 70, .75) 40%, black 80%); + background: -webkit-radial-gradient(circle closest-corner, rgba(206, 39, 70, .75) 40%, black 80%); + content: ""; + mix-blend-mode: screen; +} + +.filter-reyes { + -webkit-filter: sepia(.75) contrast(.75) brightness(1.25) saturate(1.4); + filter: sepia(.75) contrast(.75) brightness(1.25) saturate(1.4); +} + +.filter-rise { + -webkit-filter: sepia(.25) contrast(1.25) brightness(1.2) saturate(.9); + filter: sepia(.25) contrast(1.25) brightness(1.2) saturate(.9); +} + +.filter-rise::before { + background: radial-gradient(circle closest-corner, transparent 0, rgba(230, 193, 61, .25) 100%); + background: -o-radial-gradient(circle closest-corner, transparent 0, rgba(230, 193, 61, .25) 100%); + background: -moz-radial-gradient(circle closest-corner, transparent 0, rgba(230, 193, 61, .25) 100%); + background: -webkit-radial-gradient(circle closest-corner, transparent 0, rgba(230, 193, 61, .25) 100%); + content: ""; + mix-blend-mode: lighten; +} + +.filter-sierra { + -webkit-filter: sepia(.25) contrast(1.5) brightness(.9) hue-rotate(-15deg); + filter: sepia(.25) contrast(1.5) brightness(.9) hue-rotate(-15deg); +} + +.filter-sierra::before { + background: radial-gradient(circle closest-corner, rgba(128, 78, 15, .5) 0, rgba(0, 0, 0, .65) 100%); + background: -o-radial-gradient(circle closest-corner, rgba(128, 78, 15, .5) 0, rgba(0, 0, 0, .65) 100%); + background: -moz-radial-gradient(circle closest-corner, rgba(128, 78, 15, .5) 0, rgba(0, 0, 0, .65) 100%); + background: -webkit-radial-gradient(circle closest-corner, rgba(128, 78, 15, .5) 0, rgba(0, 0, 0, .65) 100%); + content: ""; + mix-blend-mode: screen; +} + +.filter-skyline { + -webkit-filter: sepia(.15) contrast(1.25) brightness(1.25) saturate(1.2); + filter: sepia(.15) contrast(1.25) brightness(1.25) saturate(1.2); +} + +.filter-slumber { + -webkit-filter: sepia(.35) contrast(1.25) saturate(1.25); + filter: sepia(.35) contrast(1.25) saturate(1.25); +} + +.filter-slumber::before { + background: rgba(125, 105, 24, .2); + content: ""; + mix-blend-mode: darken; +} + +.filter-stinson { + -webkit-filter: sepia(.35) contrast(1.25) brightness(1.1) saturate(1.25); + filter: sepia(.35) contrast(1.25) brightness(1.1) saturate(1.25); +} + +.filter-stinson::before { + background: rgba(125, 105, 24, .45); + content: ""; + mix-blend-mode: lighten; +} + +.filter-sutro { + -webkit-filter: sepia(.4) contrast(1.2) brightness(.9) saturate(1.4) hue-rotate(-10deg); + filter: sepia(.4) contrast(1.2) brightness(.9) saturate(1.4) hue-rotate(-10deg); +} + +.filter-sutro::before { + background: radial-gradient(circle closest-corner, transparent 50%, rgba(0, 0, 0, .5) 90%); + background: -o-radial-gradient(circle closest-corner, transparent 50%, rgba(0, 0, 0, .5) 90%); + background: -moz-radial-gradient(circle closest-corner, transparent 50%, rgba(0, 0, 0, .5) 90%); + background: -webkit-radial-gradient(circle closest-corner, transparent 50%, rgba(0, 0, 0, .5) 90%); + content: ""; + mix-blend-mode: darken; +} + +.filter-toaster { + -webkit-filter: sepia(.25) contrast(1.5) brightness(.95) hue-rotate(-15deg); + filter: sepia(.25) contrast(1.5) brightness(.95) hue-rotate(-15deg); +} + +.filter-toaster::before { + background: radial-gradient(circle, #804e0f, rgba(0, 0, 0, .25)); + background: -o-radial-gradient(circle, #804e0f, rgba(0, 0, 0, .25)); + background: -moz-radial-gradient(circle, #804e0f, rgba(0, 0, 0, .25)); + background: -webkit-radial-gradient(circle, #804e0f, rgba(0, 0, 0, .25)); + content: ""; + mix-blend-mode: screen; +} + +.filter-valencia { + -webkit-filter: sepia(.25) contrast(1.1) brightness(1.1); + filter: sepia(.25) contrast(1.1) brightness(1.1); +} + +.filter-valencia::before { + background: rgba(230, 193, 61, .1); + content: ""; + mix-blend-mode: lighten; +} + +.filter-vesper { + -webkit-filter: sepia(.35) contrast(1.15) brightness(1.2) saturate(1.3); + filter: sepia(.35) contrast(1.15) brightness(1.2) saturate(1.3); +} + +.filter-vesper::before { + background: rgba(125, 105, 24, .25); + content: ""; + mix-blend-mode: overlay; +} + +.filter-walden { + -webkit-filter: sepia(.35) contrast(.8) brightness(1.25) saturate(1.4); + filter: sepia(.35) contrast(.8) brightness(1.25) saturate(1.4); +} + +.filter-walden::before { + background: rgba(229, 240, 128, .5); + content: ""; + mix-blend-mode: darken; +} + +.filter-willow { + -webkit-filter: brightness(1.2) contrast(.85) saturate(.05) sepia(.2); + filter: brightness(1.2) contrast(.85) saturate(.05) sepia(.2); +} + +.filter-xpro-ii { + -webkit-filter: sepia(.45) contrast(1.25) brightness(1.75) saturate(1.3) hue-rotate(-5deg); + filter: sepia(.45) contrast(1.25) brightness(1.75) saturate(1.3) hue-rotate(-5deg); +} + +.filter-xpro-ii::before { + background: radial-gradient(circle closest-corner, rgba(0, 91, 154, .35) 0, rgba(0, 0, 0, .65) 100%); + background: -o-radial-gradient(circle closest-corner, rgba(0, 91, 154, .35) 0, rgba(0, 0, 0, .65) 100%); + background: -moz-radial-gradient(circle closest-corner, rgba(0, 91, 154, .35) 0, rgba(0, 0, 0, .65) 100%); + background: -webkit-radial-gradient(circle closest-corner, rgba(0, 91, 154, .35) 0, rgba(0, 0, 0, .65) 100%); + content: ""; + mix-blend-mode: multiply; +} \ No newline at end of file diff --git a/resources/assets/sass/custom.scss b/resources/assets/sass/custom.scss index 551d2571f..6b04d2ba2 100644 --- a/resources/assets/sass/custom.scss +++ b/resources/assets/sass/custom.scss @@ -234,3 +234,18 @@ body, button, input, textarea { height: 32px; background-position: 50%; } + +@keyframes fadeInDown { + 0% { + opacity: 0; + transform: translateY(-1.25em); + } + 100% { + opacity: 1; + transform: translateY(0); + } +} +.details-animated[open] { + animation-name: fadeInDown; + animation-duration: 0.5s; +} \ No newline at end of file diff --git a/resources/views/profile/show.blade.php b/resources/views/profile/show.blade.php index d9fa85c54..525f24d18 100644 --- a/resources/views/profile/show.blade.php +++ b/resources/views/profile/show.blade.php @@ -27,7 +27,7 @@ @foreach($timeline as $status)

-
+
diff --git a/resources/views/timeline/partial/new-form.blade.php b/resources/views/timeline/partial/new-form.blade.php index 37811d6a3..77425e2d5 100644 --- a/resources/views/timeline/partial/new-form.blade.php +++ b/resources/views/timeline/partial/new-form.blade.php @@ -1,13 +1,20 @@
New Post
+ @if (session('error')) +
+ {{ session('error') }} +
+ @endif @csrf + +
- + - Max Size: @maxFileSize(). Supported formats: jpeg, png, gif, bmp. + Max Size: @maxFileSize(). Supported formats: jpeg, png, gif, bmp. Limited to {{config('pixelfed.max_album_length')}} photos per post.
@@ -17,17 +24,52 @@ Max length: {{config('pixelfed.max_caption_length')}} characters.
- {{--
- -
- - +
+ +
+ +
+ +
+ + +
+ + Please mark all NSFW and controversial content, as per our content policy. + +
+ +{{--
+ +
+ + +
+ + Toggle this to limit this post to your followers only. + +
--}} + +
+ +
+ +
+ + No filter selected. + +
+
+ + +
- - Please mark all NSFW and controversial content, as per our content policy. - -
--}} +
-
\ No newline at end of file +
From faec46069bc9b94239f25209378f7e330c8d0f4a Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Wed, 13 Jun 2018 21:29:20 -0600 Subject: [PATCH 337/360] Update StatusDelete Pipeline --- app/Jobs/StatusPipeline/StatusDelete.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/Jobs/StatusPipeline/StatusDelete.php b/app/Jobs/StatusPipeline/StatusDelete.php index 30aecd7e2..f48b200a3 100644 --- a/app/Jobs/StatusPipeline/StatusDelete.php +++ b/app/Jobs/StatusPipeline/StatusDelete.php @@ -58,6 +58,14 @@ class StatusDelete implements ShouldQueue } } + $comments = Status::where('in_reply_to_id', $status->id)->get(); + foreach($comments as $comment) { + $comment->in_reply_to_id = null; + $comment->save(); + Notification::whereItemType('App\Status') + ->whereItemId($comment->id) + ->delete(); + } $status->likes()->delete(); Notification::whereItemType('App\Status') From a415b421cbc89e6d2cc63dc650f6256304f75127 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Wed, 13 Jun 2018 23:30:43 -0600 Subject: [PATCH 338/360] Add Email Verification --- app/EmailVerification.php | 15 +++++++ app/Http/Controllers/AccountController.php | 45 ++++++++++++++++++- app/Http/Kernel.php | 1 + .../Middleware/EmailVerificationCheck.php | 28 ++++++++++++ app/Mail/ConfirmEmail.php | 34 ++++++++++++++ config/pixelfed.php | 10 +++++ ...41422_create_email_verifications_table.php | 35 +++++++++++++++ .../views/account/verify_email.blade.php | 24 ++++++++++ .../views/emails/confirm_email.blade.php | 12 +++++ routes/web.php | 5 ++- 10 files changed, 206 insertions(+), 3 deletions(-) create mode 100644 app/EmailVerification.php create mode 100644 app/Http/Middleware/EmailVerificationCheck.php create mode 100644 app/Mail/ConfirmEmail.php create mode 100644 database/migrations/2018_06_14_041422_create_email_verifications_table.php create mode 100644 resources/views/account/verify_email.blade.php create mode 100644 resources/views/emails/confirm_email.blade.php diff --git a/app/EmailVerification.php b/app/EmailVerification.php new file mode 100644 index 000000000..cdc9b8bb1 --- /dev/null +++ b/app/EmailVerification.php @@ -0,0 +1,15 @@ +user_token . '/' . $this->random_token; + return "{$base}{$path}"; + } +} diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index 6f5eeea43..999f6b711 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -4,8 +4,9 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use Carbon\Carbon; -use Auth, Cache, Redis; -use App\{Notification, Profile, User}; +use App\Mail\ConfirmEmail; +use Auth, DB, Cache, Mail, Redis; +use App\{EmailVerification, Notification, Profile, User}; class AccountController extends Controller { @@ -30,6 +31,46 @@ class AccountController extends Controller return view('account.activity', compact('profile', 'notifications')); } + public function verifyEmail(Request $request) + { + return view('account.verify_email'); + } + + public function sendVerifyEmail(Request $request) + { + if(EmailVerification::whereUserId(Auth::id())->count() !== 0) { + return redirect()->back()->with('status', 'A verification email has already been sent! Please check your email.'); + } + + $user = User::whereNull('email_verified_at')->find(Auth::id()); + $utoken = hash('sha512', $user->id); + $rtoken = str_random(40); + + $verify = new EmailVerification; + $verify->user_id = $user->id; + $verify->email = $user->email; + $verify->user_token = $utoken; + $verify->random_token = $rtoken; + $verify->save(); + + Mail::to($user->email)->send(new ConfirmEmail($verify)); + + return redirect()->back()->with('status', 'Email verification email sent!'); + } + + public function confirmVerifyEmail(Request $request, $userToken, $randomToken) + { + $verify = EmailVerification::where(DB::raw('BINARY `user_token`'), $userToken) + ->where(DB::raw('BINARY `random_token`'), $randomToken) + ->firstOrFail(); + if(Auth::id() === $verify->user_id) { + $user = User::find(Auth::id()); + $user->email_verified_at = Carbon::now(); + $user->save(); + return redirect('/timeline'); + } + } + public function fetchNotifications($id) { $key = config('cache.prefix') . ":user.{$id}.notifications"; diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 52a072844..61e44822f 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -60,5 +60,6 @@ class Kernel extends HttpKernel 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'validemail' => \App\Http\Middleware\EmailVerificationCheck::class, ]; } diff --git a/app/Http/Middleware/EmailVerificationCheck.php b/app/Http/Middleware/EmailVerificationCheck.php new file mode 100644 index 000000000..04ee1fb1b --- /dev/null +++ b/app/Http/Middleware/EmailVerificationCheck.php @@ -0,0 +1,28 @@ +user() && + config('pixelfed.enforce_email_verification') && + is_null($request->user()->email_verified_at) && + !$request->is('i/verify-email') && !$request->is('login') && + !$request->is('i/confirm-email/*') + ) { + return redirect('/i/verify-email'); + } + return $next($request); + } +} diff --git a/app/Mail/ConfirmEmail.php b/app/Mail/ConfirmEmail.php new file mode 100644 index 000000000..83191f5fe --- /dev/null +++ b/app/Mail/ConfirmEmail.php @@ -0,0 +1,34 @@ +verify = $verify; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + return $this->markdown('emails.confirm_email')->with(['verify'=>$this->verify]); + } +} diff --git a/config/pixelfed.php b/config/pixelfed.php index a3ec46783..c825643a7 100644 --- a/config/pixelfed.php +++ b/config/pixelfed.php @@ -106,5 +106,15 @@ return [ | */ 'max_album_length' => env('MAX_ALBUM_LENGTH', 4), + + /* + |-------------------------------------------------------------------------- + | Email Verification + |-------------------------------------------------------------------------- + | + | Require email verification before a new user can do anything. + | + */ + 'enforce_email_verification' => env('ENFORCE_EMAIL_VERIFICATION', true), ]; \ No newline at end of file diff --git a/database/migrations/2018_06_14_041422_create_email_verifications_table.php b/database/migrations/2018_06_14_041422_create_email_verifications_table.php new file mode 100644 index 000000000..cbcc6ae3a --- /dev/null +++ b/database/migrations/2018_06_14_041422_create_email_verifications_table.php @@ -0,0 +1,35 @@ +bigIncrements('id'); + $table->bigInteger('user_id')->unsigned(); + $table->string('email')->nullable(); + $table->string('user_token')->index(); + $table->string('random_token')->index(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('email_verifications'); + } +} diff --git a/resources/views/account/verify_email.blade.php b/resources/views/account/verify_email.blade.php new file mode 100644 index 000000000..99ae26f3c --- /dev/null +++ b/resources/views/account/verify_email.blade.php @@ -0,0 +1,24 @@ +@extends('layouts.app') + +@section('content') +
+
+ @if (session('status')) +
+ {{ session('status') }} +
+ @endif +
+
Confirm Email Address
+
+

You need to confirm your email address ({{Auth::user()->email}}) before you can proceed.

+
+
+ @csrf + +
+
+
+
+
+@endsection \ No newline at end of file diff --git a/resources/views/emails/confirm_email.blade.php b/resources/views/emails/confirm_email.blade.php new file mode 100644 index 000000000..20d388b96 --- /dev/null +++ b/resources/views/emails/confirm_email.blade.php @@ -0,0 +1,12 @@ +@component('mail::message') +# Email Confirmation + +Please confirm your email address. + +@component('mail::button', ['url' => $verify->url()]) +Confirm Email +@endcomponent + +Thanks,
+{{ config('app.name') }} +@endcomponent diff --git a/routes/web.php b/routes/web.php index 160d9bd6b..eb9fe2ad1 100644 --- a/routes/web.php +++ b/routes/web.php @@ -25,7 +25,7 @@ Route::domain(config('pixelfed.domain.admin'))->group(function() { Route::get('media/list', 'AdminController@media')->name('admin.media'); }); -Route::domain(config('pixelfed.domain.app'))->group(function() { +Route::domain(config('pixelfed.domain.app'))->middleware('validemail')->group(function() { Route::view('/', 'welcome'); @@ -62,6 +62,9 @@ Route::domain(config('pixelfed.domain.app'))->group(function() { Route::post('follow', 'FollowerController@store'); Route::post('bookmark', 'BookmarkController@store'); Route::get('lang/{locale}', 'SiteController@changeLocale'); + Route::get('verify-email', 'AccountController@verifyEmail'); + Route::post('verify-email', 'AccountController@sendVerifyEmail'); + Route::get('confirm-email/{userToken}/{randomToken}', 'AccountController@confirmVerifyEmail'); Route::group(['prefix' => 'report'], function() { Route::get('/', 'ReportController@showForm')->name('report.form'); From 0be5a9ec5d1ac32e3282703720faa4dfbbfe1353 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Wed, 13 Jun 2018 23:36:21 -0600 Subject: [PATCH 339/360] Update compiled assets --- public/js/app.js | Bin 309793 -> 309837 bytes public/mix-manifest.json | Bin 250 -> 250 bytes resources/assets/js/components/commentform.js | 2 ++ 3 files changed, 2 insertions(+) diff --git a/public/js/app.js b/public/js/app.js index b5f3c56253be06589d17a5f74325ec86ee6d1dac..f24ff355008c7cce42088ed18dcedae84c2847bb 100644 GIT binary patch delta 76 zcmZ4ZMd<7op@uDt4nM>)^$Lpe3pA8cGK&+Fa#B;2bQBFVb+$YFVEoG{s)I$=u-)bt OBM>ufxB12VbUy%d7afKG delta 31 lcmX^6MQGs{p@uDt4nMYs{b2md*q-?dgqgNy{$hTz9{>nS5Q6{! diff --git a/public/mix-manifest.json b/public/mix-manifest.json index ba69dabfd26441d619899336861ac775b281b86a..e132fcbe8fb7e7b22a5247e1663b9ca943f4cc2e 100644 GIT binary patch delta 30 lcmeyx_=|CZvWTHUl2MYOp+%};Vxozefw`HHQOZQ~!vK`M31I*L delta 30 lcmeyx_=|CZvWT&{skxcCL0XcriGhKorAcy Date: Wed, 13 Jun 2018 23:37:45 -0600 Subject: [PATCH 340/360] Update nav --- resources/views/layouts/partial/nav.blade.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/resources/views/layouts/partial/nav.blade.php b/resources/views/layouts/partial/nav.blade.php index b2280fa57..29e3e63c6 100644 --- a/resources/views/layouts/partial/nav.blade.php +++ b/resources/views/layouts/partial/nav.blade.php @@ -6,11 +6,13 @@
+@auth +@endauth \ No newline at end of file From aa32b8020cbd78a29157a670d2fd0a636c07db9c Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 14 Jun 2018 01:42:47 -0600 Subject: [PATCH 341/360] Update status template --- app/Http/Controllers/AccountController.php | 6 +++--- resources/views/status/template.blade.php | 8 +------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index 999f6b711..9f03ef728 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -41,7 +41,7 @@ class AccountController extends Controller if(EmailVerification::whereUserId(Auth::id())->count() !== 0) { return redirect()->back()->with('status', 'A verification email has already been sent! Please check your email.'); } - + $user = User::whereNull('email_verified_at')->find(Auth::id()); $utoken = hash('sha512', $user->id); $rtoken = str_random(40); @@ -60,8 +60,8 @@ class AccountController extends Controller public function confirmVerifyEmail(Request $request, $userToken, $randomToken) { - $verify = EmailVerification::where(DB::raw('BINARY `user_token`'), $userToken) - ->where(DB::raw('BINARY `random_token`'), $randomToken) + $verify = EmailVerification::where(DB::raw('BINARY user_token'), $userToken) + ->where(DB::raw('BINARY random_token'), $randomToken) ->firstOrFail(); if(Auth::id() === $verify->user_id) { $user = User::find(Auth::id()); diff --git a/resources/views/status/template.blade.php b/resources/views/status/template.blade.php index 7a3910887..baf37c296 100644 --- a/resources/views/status/template.blade.php +++ b/resources/views/status/template.blade.php @@ -74,7 +74,7 @@
@if($item->comments()->count() > 3) @endif
@@ -93,12 +93,6 @@

@else - @foreach($item->comments->reverse()->take(3) as $comment) -

- {{$comment->profile->username}} - {!! str_limit($item->rendered ?? e($item->caption), 150) !!} -

- @endforeach @endif
From 56b18f3e08801dd6f4071eceae06d531a0a18c7c Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 14 Jun 2018 20:54:05 -0600 Subject: [PATCH 342/360] Update ImageOptimizePipeline, do not optimize gifs --- app/Jobs/ImageOptimizePipeline/ImageUpdate.php | 5 ++++- app/Util/Media/Image.php | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/Jobs/ImageOptimizePipeline/ImageUpdate.php b/app/Jobs/ImageOptimizePipeline/ImageUpdate.php index fab0975ba..5b21ea7e9 100644 --- a/app/Jobs/ImageOptimizePipeline/ImageUpdate.php +++ b/app/Jobs/ImageOptimizePipeline/ImageUpdate.php @@ -38,7 +38,10 @@ class ImageUpdate implements ShouldQueue $thumb = storage_path('app/'. $media->thumbnail_path); try { ImageOptimizer::optimize($thumb); - ImageOptimizer::optimize($path); + if($media->mime !== 'image/gif') + { + ImageOptimizer::optimize($path); + } } catch (Exception $e) { return; } diff --git a/app/Util/Media/Image.php b/app/Util/Media/Image.php index db7641fd3..3f67d43f5 100644 --- a/app/Util/Media/Image.php +++ b/app/Util/Media/Image.php @@ -103,6 +103,10 @@ class Image { $ratio = $this->getAspectRatio($file, $thumbnail); $aspect = $ratio['dimensions']; $orientation = $ratio['orientation']; + if($media->mime === 'image/gif' && !$thumbnail) + { + return; + } try { $img = Intervention::make($file)->orientate(); From 3adcedc1a6fe353b798d985dca1726fb0df2fc83 Mon Sep 17 00:00:00 2001 From: Stasiek Michalski Date: Fri, 15 Jun 2018 08:05:37 +0200 Subject: [PATCH 343/360] Fix #269 --- resources/views/status/show.blade.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/resources/views/status/show.blade.php b/resources/views/status/show.blade.php index 8d2e27d67..a28930c03 100644 --- a/resources/views/status/show.blade.php +++ b/resources/views/status/show.blade.php @@ -87,23 +87,23 @@
-
+
- +

@if(Auth::check()) @if(Auth::user()->profile->id === $status->profile->id || Auth::user()->is_admin == true)
@csrf -
@endif @@ -112,8 +112,8 @@
@csrf -
From 34e3839141a6095847782069aae1e61b5274b41d Mon Sep 17 00:00:00 2001 From: Stasiek Michalski Date: Fri, 15 Jun 2018 08:16:44 +0200 Subject: [PATCH 344/360] Fix #369 in status template --- resources/views/status/template.blade.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/resources/views/status/template.blade.php b/resources/views/status/template.blade.php index baf37c296..8b8f03481 100644 --- a/resources/views/status/template.blade.php +++ b/resources/views/status/template.blade.php @@ -44,20 +44,22 @@ @endif
-
- From 58685f3b0e15db1087b4acb44db23e430d626a3a Mon Sep 17 00:00:00 2001 From: Stasiek Michalski Date: Fri, 15 Jun 2018 08:34:08 +0200 Subject: [PATCH 345/360] Make cards flush on mobile --- resources/views/timeline/personal.blade.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/resources/views/timeline/personal.blade.php b/resources/views/timeline/personal.blade.php index 48a061a96..4ba2e9ca4 100644 --- a/resources/views/timeline/personal.blade.php +++ b/resources/views/timeline/personal.blade.php @@ -6,8 +6,8 @@ @section('content') -
-
+
+
@if ($errors->any())