Compare commits

..

632 Commits
master ... 2.3

Author SHA1 Message Date
James Brooks
7ed480dd64 Merge pull request #4203 from fiveai/fix-api-search-with-pagination
Fix API search with pagination when specifying page
2021-03-29 11:54:58 +01:00
Seb Dangerfield
c040fc334c Ensure only allowed searchable columns are used in DB Query 2021-01-15 18:38:29 +00:00
Seb Dangerfield
48fdf79a8f Test API Pagination and searching 2021-01-15 17:10:19 +00:00
James Brooks
fe3675ff33 Apply fixes from StyleCI (#4072) 2020-08-01 09:18:12 +01:00
James Brooks
94b4fe2d39 Merge pull request #3601 from CachetHQ/l10n_2.3
New Crowdin translations
2020-08-01 09:17:48 +01:00
Cachet Bot
23cd590815 New translations pagination.php (Afrikaans) 2020-07-16 18:01:00 +01:00
Cachet Bot
748962b1c6 New translations forms.php (Swedish) 2020-04-27 09:12:19 +01:00
Cachet Bot
6f0ccb7e76 New translations forms.php (Russian) 2020-04-27 09:12:16 +01:00
Cachet Bot
0c637cc683 New translations forms.php (Vietnamese) 2020-04-27 09:11:44 +01:00
Cachet Bot
ec26e01e8d New translations validation.php (Portuguese, Brazilian) 2020-04-27 09:11:41 +01:00
Cachet Bot
9caecd3268 New translations forms.php (Danish) 2020-04-27 09:11:27 +01:00
Cachet Bot
f7ab99483c New translations forms.php (Romanian) 2020-04-27 09:11:13 +01:00
Cachet Bot
b9c9d28b59 New translations pagination.php (Afrikaans) 2020-04-27 09:11:03 +01:00
Cachet Bot
1d32adb0e6 New translations dashboard.php (Norwegian) 2020-04-27 09:10:47 +01:00
Cachet Bot
e36abd5ce4 New translations forms.php (Polish) 2020-04-27 09:10:41 +01:00
Cachet Bot
735c722918 New translations dashboard.php (Korean) 2020-04-27 09:10:15 +01:00
Cachet Bot
a588cfbd0a New translations validation.php (Czech) 2020-02-18 13:00:12 +00:00
Cachet Bot
8f0e56873e New translations setup.php (Chinese Simplified) 2020-01-13 06:50:15 +00:00
Cachet Bot
dfcf9bd392 New translations forms.php (Chinese Simplified) 2020-01-13 06:50:13 +00:00
Cachet Bot
52c93a0dfe New translations dashboard.php (Chinese Simplified) 2020-01-13 06:50:12 +00:00
Cachet Bot
28a896bf02 New translations cachet.php (Chinese Simplified) 2020-01-13 06:50:11 +00:00
Cachet Bot
06faecf3a7 New translations dashboard.php (Chinese Simplified) 2019-12-10 14:40:22 +00:00
James Brooks
5dfeaa3b6a Merge pull request #3845 from tomecho/2.3-3844-fix
add is_object check for feed result, fixes #3844
2019-11-05 21:43:26 +00:00
Tom Peck
18f5c29a16 add is_object check for feed result, fixes #3844 2019-11-05 15:43:46 -05:00
Cachet Bot
3681d277a4 New translations forms.php (Portuguese, Brazilian) 2019-11-02 10:50:13 +00:00
James Brooks
6752596ba8 Merge pull request #3712 from sigv/bugfix/2.3/gravatar-lowercase
Lowercase email for Gravatar avatars
2019-08-14 07:23:52 +01:00
Cachet Bot
d02ec7f150 New translations cachet.php (Russian) 2019-08-02 23:40:12 +01:00
Valters Jansons
300961cad4 Lowercase email for Gravatar avatars
The Gravatar docs explicitly say that e-mail addresses have
to be lowercased before hashing. In the `2.4` branch this was
already resolved in `0f4c14ac0820562a3155d6f60ea4a7770d19084b`
back in 2016 so it is safe to backport that change to the
latest stable branch for a maintenance patch release.
2019-07-16 21:58:20 +03:00
Cachet Bot
12b6888feb New translations setup.php (Japanese) 2019-07-16 10:50:30 +01:00
Cachet Bot
dde38b08d3 New translations dashboard.php (Japanese) 2019-07-16 10:50:29 +01:00
Cachet Bot
0bdf3f35aa New translations cachet.php (Japanese) 2019-07-16 10:50:27 +01:00
Cachet Bot
1a053ff5b8 New translations forms.php (Polish) 2019-07-11 13:21:54 +01:00
Cachet Bot
7f54029bad New translations forms.php (Norwegian) 2019-07-11 13:21:49 +01:00
Cachet Bot
f50a2c717e New translations forms.php (Italian) 2019-07-11 13:21:46 +01:00
Cachet Bot
a4ab01d9dc New translations forms.php (German) 2019-07-11 13:21:41 +01:00
Cachet Bot
dfa1650936 New translations forms.php (Indonesian) 2019-07-11 13:21:36 +01:00
Cachet Bot
b3f4eb261a New translations forms.php (Swedish) 2019-07-11 13:21:25 +01:00
Cachet Bot
552c029682 New translations forms.php (Zulu) 2019-07-11 13:21:21 +01:00
Cachet Bot
ce833c52bc New translations cachet.php (Zulu) 2019-07-11 13:21:19 +01:00
Cachet Bot
61acfd5dab New translations forms.php (Romanian) 2019-07-11 13:21:13 +01:00
Cachet Bot
72f6b7185d New translations forms.php (Portuguese) 2019-07-11 13:21:07 +01:00
Cachet Bot
39e670edb5 New translations validation.php (Portuguese, Brazilian) 2019-07-11 13:21:05 +01:00
Cachet Bot
0f99a14bd6 New translations forms.php (Spanish) 2019-07-11 13:21:03 +01:00
Cachet Bot
18cccd9a76 New translations forms.php (Russian) 2019-07-11 13:20:57 +01:00
Cachet Bot
f15709850d New translations forms.php (Chinese Simplified) 2019-07-11 13:20:53 +01:00
Cachet Bot
a24604b169 New translations forms.php (Chinese Traditional) 2019-07-11 13:20:49 +01:00
Cachet Bot
5cb438a30b New translations forms.php (French) 2019-07-11 13:20:30 +01:00
Cachet Bot
b43974eb48 New translations forms.php (Danish) 2019-07-11 13:20:26 +01:00
Cachet Bot
c020fd50b7 New translations validation.php (Dutch) 2019-07-11 13:20:23 +01:00
Cachet Bot
b76acbeee1 New translations forms.php (Dutch) 2019-07-11 13:20:22 +01:00
Cachet Bot
f46371bde0 New translations dashboard.php (Czech) 2019-06-25 10:20:15 +01:00
Cachet Bot
5853b43da1 New translations dashboard.php (Czech) 2019-06-25 10:10:14 +01:00
Cachet Bot
d2f3572ffc New translations forms.php (Czech) 2019-06-25 10:00:12 +01:00
Cachet Bot
8b98141c61 New translations cachet.php (Czech) 2019-06-25 10:00:10 +01:00
James Brooks
59ef9023d5 Merge pull request #3645 from anthonybocci/feature/3618-setup-assets-path
Allow Cachet setup not to be at server's root
2019-06-23 08:14:14 +01:00
Cachet Bot
1c371e9fe3 New translations setup.php (Czech) 2019-06-20 15:20:21 +01:00
Cachet Bot
cb518d0d14 New translations validation.php (Czech) 2019-06-20 15:20:20 +01:00
Cachet Bot
64dd4cbf9c New translations pagination.php (Czech) 2019-06-20 15:20:19 +01:00
Cachet Bot
c0513da918 New translations forms.php (Czech) 2019-06-20 15:20:18 +01:00
Cachet Bot
393669beae New translations dashboard.php (Czech) 2019-06-20 15:20:16 +01:00
Cachet Bot
1dfc3683ce New translations forms.php (Czech) 2019-06-20 15:10:16 +01:00
Cachet Bot
99d95a8e11 New translations dashboard.php (Czech) 2019-06-20 15:10:14 +01:00
Cachet Bot
48e8bc84f8 New translations cachet.php (Czech) 2019-06-20 15:00:16 +01:00
Cachet Bot
3e065f6c9c New translations cachet.php (Czech) 2019-06-20 14:30:26 +01:00
Cachet Bot
249de039f6 New translations cachet.php (Czech) 2019-06-20 14:00:18 +01:00
Cachet Bot
cba2eece5f New translations cachet.php (Czech) 2019-06-20 13:50:26 +01:00
Anthony Bocci
fbf141c39d Allow Cachet setup not to be at server's root
Cachet may be installed at the root of its vhost or in a subdirectory,
for example in "/" or under "/status".

The URI we found pointing to some assets were usually not prefixed with
the path, so if Cachet was installed under "/status" the asset
URI pointed to the server root like "/my-asset.js".
It is a problem because that means the behaviour is broken in this case.
The problem was present from the setup, it was not possible to fill the
setup since the path to the scripts and CSS weres wrong.

The "asset" helper is now used and resolves the URI.

See: CachetHQ#3618
2019-06-19 11:20:04 +02:00
Cachet Bot
b639d1e5ab New translations cachet.php (Czech) 2019-06-18 08:50:13 +01:00
Graham Campbell
168e36f224 Updated with the latest cloudflare ips (#3650) 2019-06-15 18:04:26 +01:00
Graham Campbell
87b5b67be4 Upgraded deps (#3616) 2019-05-22 14:24:33 +01:00
James Brooks
f79eef0e88 Merge pull request #3615 from CachetHQ/extra-spaces
Removed extra spaces
2019-05-22 13:56:30 +01:00
Graham Campbell
30978bd125 Removed extra spaces 2019-05-22 13:44:45 +01:00
James Brooks
22b6135541 Bump version for dev 2019-05-14 13:27:46 +01:00
James Brooks
cc2f4de125 Fix version 2019-05-14 13:27:19 +01:00
James Brooks
baea4e9a03 Bump version 2019-05-14 13:25:42 +01:00
James Brooks
1bc48e0c60 Fix view import 2019-05-14 13:25:32 +01:00
Cachet Bot
0d5cfb17d4 New translations setup.php (Portuguese, Brazilian) 2019-05-14 01:50:12 +01:00
Cachet Bot
429719585f New translations dashboard.php (Portuguese, Brazilian) 2019-05-14 01:50:11 +01:00
Cachet Bot
63a2d9445b New translations dashboard.php (Portuguese, Brazilian) 2019-05-14 01:40:12 +01:00
Cachet Bot
967961787c New translations cachet.php (Portuguese, Brazilian) 2019-05-14 01:40:10 +01:00
Cachet Bot
e281597260 New translations cachet.php (Portuguese, Brazilian) 2019-05-14 01:30:09 +01:00
Cachet Bot
c6b4d9ed5e New translations cachet.php (Portuguese, Brazilian) 2019-05-14 01:20:10 +01:00
Cachet Bot
31eb7086a2 New translations dashboard.php (Portuguese, Brazilian) 2019-05-14 01:10:11 +01:00
Cachet Bot
ae874c704e New translations forms.php (Portuguese, Brazilian) 2019-05-14 01:00:15 +01:00
Cachet Bot
7b2b90a78d New translations cachet.php (Portuguese, Brazilian) 2019-05-14 01:00:13 +01:00
James Brooks
1d6b117a55 Bump for dev 2019-05-13 20:33:18 +01:00
James Brooks
7a08cfd00a Release v2.3.17 2019-05-13 20:32:54 +01:00
James Brooks
52fda22acc Apply fixes from StyleCI (#3599) 2019-05-13 20:31:04 +01:00
James Brooks
9531a909d4 Prevent calling of DashboardComposer 2019-05-13 20:30:39 +01:00
James Brooks
5fcc0ce2f6 Don't need to call all() 2019-05-13 20:30:28 +01:00
James Brooks
843eabbcc3 Fixes #3598 2019-05-13 20:29:47 +01:00
Graham Campbell
16f057500b Bumped version for dev (#3588) 2019-05-13 14:31:09 +01:00
Graham Campbell
e477de77be Release v2.3.16 (#3585) 2019-05-12 23:47:56 +01:00
Graham Campbell
e7066864e2 Cachet 2.3 is known to work on PHP 7.0 and 7.1 (#3584) 2019-05-12 20:01:52 +01:00
Graham Campbell
16932219a7 Upgraded deps (#3582) 2019-05-12 19:16:31 +01:00
James Brooks
512e1a6661 Apply fixes from StyleCI (#3565) 2019-04-25 13:10:55 +01:00
James Brooks
0e5bb00f44 Merge pull request #3564 from CachetHQ/l10n_2.3
New Crowdin translations
2019-04-25 13:10:05 +01:00
Cachet Bot
6aed3531dd New translations forms.php (German) 2019-04-25 10:21:43 +01:00
James Brooks
6e79575a1c Merge pull request #3530 from CachetHQ/l10n_2.3
New Crowdin translations
2019-04-01 08:18:00 +01:00
Cachet Bot
61a371520d New translations dashboard.php (German) 2019-03-28 08:10:26 +00:00
James Brooks
1f46e06e80 Apply fixes from StyleCI (#3511) 2019-03-11 20:42:33 +00:00
James Brooks
0e82925f95 Merge pull request #3510 from CachetHQ/l10n_2.3
New Crowdin translations
2019-03-11 20:42:15 +00:00
Cachet Bot
c3cfeeb14c New translations forms.php (Swedish) 2019-03-11 09:00:13 +00:00
James Brooks
7738c73860 Apply fixes from StyleCI (#3505) 2019-03-09 08:50:34 +00:00
James Brooks
d8eb86e4d2 Merge pull request #3501 from CachetHQ/l10n_2.3
New Crowdin translations
2019-03-09 08:49:51 +00:00
Cachet Bot
48ab04c425 New translations forms.php (Romanian) 2019-03-06 20:50:11 +00:00
James Brooks
035164fae6 2.3 is not compatible with PHP7 2019-02-01 22:37:23 +00:00
James Brooks
d4bcdf0e29 Apply fixes from StyleCI (#3436) 2019-01-26 17:06:21 +00:00
James Brooks
f41aa311c5 Merge pull request #3401 from CachetHQ/l10n_2.3
New Crowdin translations
2019-01-26 17:05:46 +00:00
Cachet Bot
ef7236c16b New translations setup.php (Slovenian) 2019-01-26 11:40:20 +00:00
Cachet Bot
84915404b9 New translations forms.php (Slovenian) 2019-01-26 11:40:19 +00:00
Cachet Bot
6dfadc2f94 New translations dashboard.php (Slovenian) 2019-01-26 11:40:18 +00:00
Cachet Bot
7f6effff96 New translations validation.php (Slovenian) 2019-01-26 11:40:16 +00:00
Cachet Bot
63589167f3 New translations pagination.php (Slovenian) 2019-01-26 11:40:15 +00:00
Cachet Bot
9e96f28ddf New translations cachet.php (Slovenian) 2019-01-26 11:40:14 +00:00
Cachet Bot
6d920b2111 New translations setup.php (Mongolian) 2019-01-26 11:40:13 +00:00
Cachet Bot
760a034c0c New translations forms.php (Mongolian) 2019-01-26 11:40:12 +00:00
Cachet Bot
0a9d1b313a New translations dashboard.php (Mongolian) 2019-01-26 11:40:11 +00:00
Cachet Bot
e9020d3e08 New translations validation.php (Mongolian) 2019-01-26 11:40:10 +00:00
Cachet Bot
d61c9d190f New translations pagination.php (Mongolian) 2019-01-26 11:40:09 +00:00
Cachet Bot
520785b5ca New translations cachet.php (Mongolian) 2019-01-26 11:40:08 +00:00
Cachet Bot
dd0052a50f New translations setup.php (German) 2019-01-15 13:10:13 +00:00
Cachet Bot
cd48270cad New translations cachet.php (German) 2019-01-15 13:10:11 +00:00
Cachet Bot
79b837d65f New translations setup.php (Dutch) 2019-01-03 18:00:13 +00:00
Cachet Bot
5f639b718f New translations dashboard.php (Dutch) 2019-01-03 18:00:12 +00:00
Cachet Bot
eb18e7d982 New translations cachet.php (Dutch) 2019-01-03 18:00:11 +00:00
Cachet Bot
cd70023bbe New translations forms.php (Dutch) 2019-01-03 18:00:10 +00:00
Cachet Bot
4277ec77e4 New translations cachet.php (Dutch) 2019-01-03 17:20:11 +00:00
James Brooks
1f1cf5a242 Merge pull request #3388 from CachetHQ/l10n_2.3
New Crowdin translations
2019-01-01 10:59:41 +00:00
Cachet Bot
495f118116 New translations cachet.php (Dutch) 2018-12-31 09:30:07 +00:00
James Brooks
171588c3a5 Merge pull request #3386 from CachetHQ/l10n_2.3
New Crowdin translations
2018-12-30 17:06:44 +00:00
Cachet Bot
72def0eb60 New translations forms.php (Afrikaans) 2018-12-30 11:00:09 +00:00
Cachet Bot
79a8026191 New translations dashboard.php (Afrikaans) 2018-12-30 11:00:08 +00:00
James Brooks
11bb77b944 Merge pull request #3380 from CachetHQ/l10n_2.3
New Crowdin translations
2018-12-29 18:56:41 +00:00
Cachet Bot
3f932a2ec2 Apply fixes from StyleCI 2018-12-29 17:50:13 +00:00
Cachet Bot
9f0a11eeb4 New translations forms.php (Dutch) 2018-12-29 17:50:07 +00:00
Cachet Bot
34f5775bd8 New translations dashboard.php (German) 2018-12-29 12:40:07 +00:00
Cachet Bot
2a4a7d72a2 New translations dashboard.php (German) 2018-12-29 12:30:08 +00:00
James Brooks
2dd7fba3e1 Merge pull request #3359 from CachetHQ/l10n_2.3
New Crowdin translations
2018-12-27 22:07:36 +00:00
Cachet Bot
ac91ba5d67 New translations setup.php (Swedish) 2018-12-10 23:50:10 +00:00
Cachet Bot
2a04e8907c New translations cachet.php (Swedish) 2018-12-10 23:50:08 +00:00
Cachet Bot
c66f66a6f4 New translations cachet.php (Swedish) 2018-12-10 23:40:08 +00:00
James Brooks
589f82af84 Merge pull request #3335 from CachetHQ/l10n_2.3
New Crowdin translations
2018-11-23 11:20:01 +00:00
Cachet Bot
ef91bacc35 Apply fixes from StyleCI 2018-11-19 17:41:38 +00:00
Cachet Bot
84f1f2fe0b New translations forms.php (German) 2018-11-19 17:41:33 +00:00
Cachet Bot
525563c3c0 New translations forms.php (French) 2018-11-19 17:41:30 +00:00
Cachet Bot
4b8bc99b5e Apply fixes from StyleCI 2018-11-19 17:41:28 +00:00
Cachet Bot
66a300cade New translations forms.php (Indonesian) 2018-11-19 17:41:22 +00:00
Cachet Bot
68f80c2f95 New translations forms.php (Dutch) 2018-11-19 17:41:05 +00:00
Cachet Bot
a087b2a21a New translations forms.php (Chinese Simplified) 2018-11-19 17:41:03 +00:00
Cachet Bot
f155bfa419 New translations forms.php (Danish) 2018-11-19 17:41:01 +00:00
Cachet Bot
255922804c New translations forms.php (Chinese Traditional) 2018-11-19 17:40:56 +00:00
Cachet Bot
7191bdacf8 New translations forms.php (Swedish) 2018-11-19 17:40:49 +00:00
Cachet Bot
491b07d498 New translations forms.php (Spanish) 2018-11-19 17:40:46 +00:00
Cachet Bot
467453c29d New translations forms.php (Russian) 2018-11-19 17:40:44 +00:00
Cachet Bot
8d42f0f97b New translations forms.php (Zulu) 2018-11-19 17:40:39 +00:00
Cachet Bot
fc170bea0a New translations cachet.php (Zulu) 2018-11-19 17:40:37 +00:00
Cachet Bot
d455f56243 New translations forms.php (Italian) 2018-11-19 17:40:32 +00:00
Cachet Bot
cef1d82d8c New translations forms.php (Norwegian) 2018-11-19 17:40:29 +00:00
Cachet Bot
e7caa3ca37 Apply fixes from StyleCI 2018-11-19 17:40:26 +00:00
Cachet Bot
2a320477e3 New translations forms.php (Romanian) 2018-11-19 17:40:19 +00:00
Cachet Bot
1c593bb2f1 New translations forms.php (Portuguese, Brazilian) 2018-11-19 17:40:17 +00:00
Cachet Bot
e557e5eb9b New translations forms.php (Portuguese) 2018-11-19 17:40:14 +00:00
Cachet Bot
33ed227c97 New translations forms.php (Polish) 2018-11-19 17:40:10 +00:00
James Brooks
f4dc5d09ab Merge pull request #3278 from CachetHQ/l10n_2.3
New Crowdin translations
2018-11-13 14:24:58 +00:00
Cachet Bot
d86d2e8201 New translations cachet.php (Japanese) 2018-11-05 07:00:07 +00:00
Cachet Bot
9ac9b5898e Apply fixes from StyleCI 2018-10-18 16:50:16 +00:00
Cachet Bot
1eea552d6e New translations forms.php (Russian) 2018-10-18 17:50:07 +01:00
Cachet Bot
3fd9bfe00d New translations setup.php (Estonian) 2018-10-15 12:40:15 +01:00
Cachet Bot
282ee9802d New translations forms.php (Estonian) 2018-10-15 12:40:14 +01:00
Cachet Bot
ce7104d679 New translations dashboard.php (Estonian) 2018-10-15 12:40:13 +01:00
Cachet Bot
bcdaec1d3a New translations validation.php (Estonian) 2018-10-15 12:40:12 +01:00
Cachet Bot
53e1837368 New translations pagination.php (Estonian) 2018-10-15 12:40:11 +01:00
Cachet Bot
b8324c3e7c New translations cachet.php (Estonian) 2018-10-15 12:40:09 +01:00
James Brooks
7ea832de8e Merge pull request #3248 from CachetHQ/l10n_2.3
New Crowdin translations
2018-10-15 12:39:05 +01:00
Cachet Bot
368045b418 Apply fixes from StyleCI 2018-10-09 11:01:37 +00:00
Cachet Bot
0bfaeaa4fc New translations forms.php (French) 2018-10-09 12:01:31 +01:00
Cachet Bot
3f9ba0ee97 New translations forms.php (Dutch) 2018-10-09 12:01:24 +01:00
Cachet Bot
045bbeeba0 New translations forms.php (German) 2018-10-09 12:01:23 +01:00
Cachet Bot
5cce6d4184 New translations forms.php (Indonesian) 2018-10-09 12:01:21 +01:00
Cachet Bot
9f1dd6fedc Apply fixes from StyleCI 2018-10-09 11:01:18 +00:00
Cachet Bot
ddb2972a4a New translations forms.php (Danish) 2018-10-09 12:01:03 +01:00
Cachet Bot
ba84e3ee23 New translations forms.php (Chinese Traditional) 2018-10-09 12:00:57 +01:00
Cachet Bot
400c94d06d New translations forms.php (Chinese Simplified) 2018-10-09 12:00:54 +01:00
Cachet Bot
ebe31e2070 New translations forms.php (Swedish) 2018-10-09 12:00:50 +01:00
Cachet Bot
7b29049dd7 New translations forms.php (Russian) 2018-10-09 12:00:45 +01:00
Cachet Bot
ee73222638 New translations forms.php (Spanish) 2018-10-09 12:00:42 +01:00
Cachet Bot
6f1cba91df New translations forms.php (Zulu) 2018-10-09 12:00:40 +01:00
Cachet Bot
b313c45cd2 New translations cachet.php (Zulu) 2018-10-09 12:00:38 +01:00
Cachet Bot
3e35d29d8f New translations forms.php (Romanian) 2018-10-09 12:00:31 +01:00
Cachet Bot
8ffa6c7996 New translations forms.php (Norwegian) 2018-10-09 12:00:29 +01:00
Cachet Bot
07750e9365 New translations forms.php (Italian) 2018-10-09 12:00:21 +01:00
Cachet Bot
63a79d9d19 New translations forms.php (Portuguese, Brazilian) 2018-10-09 12:00:17 +01:00
Cachet Bot
12efe8113e New translations forms.php (Portuguese) 2018-10-09 12:00:14 +01:00
Cachet Bot
d8c6be3f9e New translations forms.php (Polish) 2018-10-09 12:00:11 +01:00
Cachet Bot
8bffaa5c9a Apply fixes from StyleCI 2018-09-28 08:40:21 +00:00
Cachet Bot
6bf9221d74 New translations forms.php (Norwegian) 2018-09-28 09:40:13 +01:00
Cachet Bot
fa5875da76 New translations cachet.php (Afrikaans) 2018-09-20 13:40:05 +01:00
Cachet Bot
34a36bc6c1 New translations cachet.php (Afrikaans) 2018-09-20 13:30:05 +01:00
James Brooks
f8a35d71b4 Merge pull request #3198 from CachetHQ/l10n_2.3
New Crowdin translations
2018-08-07 08:51:02 +01:00
James Brooks
8a8edea07a Merge pull request #3209 from CachetHQ/update-deps
Update deps
2018-08-06 18:55:38 +01:00
Cachet Bot
e3973414cd Apply fixes from StyleCI 2018-08-04 08:50:14 +00:00
Cachet Bot
9bb670cb95 New translations forms.php (Dutch) 2018-08-04 09:50:07 +01:00
James Brooks
127996f08f Update deps. Closes #3207 2018-08-03 20:58:20 +01:00
Cachet Bot
a6768da7bb Apply fixes from StyleCI
[ci skip] [skip ci]
2018-08-03 18:00:48 +00:00
Cachet Bot
123f05bd84 New translations forms.php (Spanish) 2018-08-03 19:00:08 +01:00
Cachet Bot
ecc91abcae Apply fixes from StyleCI
[ci skip] [skip ci]
2018-07-27 23:40:13 +00:00
Cachet Bot
bb9def5821 New translations setup.php (French) 2018-07-28 00:40:07 +01:00
Cachet Bot
11cbbb42fb New translations forms.php (French) 2018-07-28 00:40:06 +01:00
Cachet Bot
b361618ec0 New translations dashboard.php (French) 2018-07-28 00:30:06 +01:00
Cachet Bot
ee288e0505 New translations cachet.php (French) 2018-07-28 00:30:05 +01:00
Cachet Bot
7c5e214b1c Apply fixes from StyleCI
[ci skip] [skip ci]
2018-07-25 14:51:56 +00:00
Cachet Bot
0e1d52b3bc New translations forms.php (Chinese Simplified) 2018-07-25 15:51:07 +01:00
James Brooks
77d576fd39 Merge pull request #3189 from CachetHQ/l10n_2.3
New Crowdin translations
2018-07-21 09:12:41 +01:00
James Brooks
73fb33d03e Update VERSION 2018-07-21 09:11:04 +01:00
Cachet Bot
2746001cdb Apply fixes from StyleCI
[ci skip] [skip ci]
2018-07-17 13:00:28 +00:00
Cachet Bot
036da9248d New translations forms.php (French) 2018-07-17 14:00:19 +01:00
James Brooks
2d72914205 Merge pull request #3184 from CachetHQ/l10n_2.3
New Crowdin translations
2018-07-17 07:52:46 +01:00
Cachet Bot
237ae7dcdc Apply fixes from StyleCI
[ci skip] [skip ci]
2018-07-13 02:30:14 +00:00
Cachet Bot
8408b92d0c New translations forms.php (Russian) 2018-07-13 03:30:06 +01:00
James Brooks
2da10d1694 Apply fixes from StyleCI (#3182)
[ci skip] [skip ci]
2018-07-12 08:36:35 +01:00
James Brooks
7ac2987809 Merge pull request #3181 from CachetHQ/l10n_2.3
New Crowdin translations
2018-07-12 08:36:03 +01:00
Cachet Bot
5f1c3c92c4 New translations forms.php (French) 2018-07-11 22:52:28 +01:00
Cachet Bot
48f68994ba New translations setup.php (Finnish) 2018-07-11 22:52:27 +01:00
Cachet Bot
adfa39f336 New translations forms.php (Finnish) 2018-07-11 22:52:26 +01:00
Cachet Bot
357389908f New translations validation.php (Finnish) 2018-07-11 22:52:25 +01:00
Cachet Bot
a2252707af New translations pagination.php (Finnish) 2018-07-11 22:52:24 +01:00
Cachet Bot
5057dee219 New translations cachet.php (Finnish) 2018-07-11 22:52:23 +01:00
Cachet Bot
430a80535c New translations dashboard.php (Finnish) 2018-07-11 22:52:20 +01:00
Cachet Bot
5c815756fe New translations forms.php (Dutch) 2018-07-11 22:52:19 +01:00
Cachet Bot
b1547b9d74 New translations forms.php (German) 2018-07-11 22:52:18 +01:00
Cachet Bot
42a2825a70 New translations cachet.php (Greek) 2018-07-11 22:52:17 +01:00
Cachet Bot
3dd7d9b41d New translations forms.php (Indonesian) 2018-07-11 22:52:16 +01:00
Cachet Bot
7552177585 New translations validation.php (Indonesian) 2018-07-11 22:52:14 +01:00
Cachet Bot
6120d9627e New translations setup.php (Hungarian) 2018-07-11 22:52:13 +01:00
Cachet Bot
22a7523347 New translations forms.php (Hungarian) 2018-07-11 22:52:12 +01:00
Cachet Bot
b4c052c5ad New translations dashboard.php (Hungarian) 2018-07-11 22:52:11 +01:00
Cachet Bot
0af0e01d31 New translations validation.php (Hungarian) 2018-07-11 22:52:10 +01:00
Cachet Bot
04ca418b32 New translations pagination.php (Hungarian) 2018-07-11 22:52:09 +01:00
Cachet Bot
8ca56c0a47 New translations cachet.php (Hungarian) 2018-07-11 22:52:08 +01:00
Cachet Bot
dccca87e2e New translations forms.php (Hebrew) 2018-07-11 22:52:07 +01:00
Cachet Bot
63b15530f0 New translations dashboard.php (Hebrew) 2018-07-11 22:52:06 +01:00
Cachet Bot
008b7ce3e3 New translations validation.php (Hebrew) 2018-07-11 22:52:05 +01:00
Cachet Bot
e173c616fc New translations pagination.php (Hebrew) 2018-07-11 22:52:04 +01:00
Cachet Bot
63e629df99 New translations cachet.php (Hebrew) 2018-07-11 22:52:04 +01:00
Cachet Bot
c930ecc568 New translations setup.php (Greek) 2018-07-11 22:52:03 +01:00
Cachet Bot
c542fe762c New translations forms.php (Greek) 2018-07-11 22:52:02 +01:00
Cachet Bot
5a6dfce84e New translations dashboard.php (Greek) 2018-07-11 22:52:01 +01:00
Cachet Bot
1fc399085c New translations pagination.php (Greek) 2018-07-11 22:52:00 +01:00
Cachet Bot
dfced9e81c New translations setup.php (Hebrew) 2018-07-11 22:51:59 +01:00
Cachet Bot
e6412e9be5 New translations setup.php (Catalan) 2018-07-11 22:51:57 +01:00
Cachet Bot
6c67e01297 New translations forms.php (Catalan) 2018-07-11 22:51:57 +01:00
Cachet Bot
e4a2ef3df7 New translations dashboard.php (Catalan) 2018-07-11 22:51:56 +01:00
Cachet Bot
560be25f99 New translations pagination.php (Catalan) 2018-07-11 22:51:55 +01:00
Cachet Bot
61a71166b3 New translations cachet.php (Catalan) 2018-07-11 22:51:54 +01:00
Cachet Bot
359cd934c0 New translations setup.php (Arabic) 2018-07-11 22:51:53 +01:00
Cachet Bot
4b45eed503 New translations forms.php (Arabic) 2018-07-11 22:51:52 +01:00
Cachet Bot
73a14d5980 New translations dashboard.php (Arabic) 2018-07-11 22:51:51 +01:00
Cachet Bot
c614bd8e2a New translations validation.php (Arabic) 2018-07-11 22:51:50 +01:00
Cachet Bot
bd26724f4a New translations cachet.php (Chinese Simplified) 2018-07-11 22:51:49 +01:00
Cachet Bot
d7650d1815 New translations pagination.php (Arabic) 2018-07-11 22:51:48 +01:00
Cachet Bot
9975ecab54 New translations setup.php (Albanian) 2018-07-11 22:51:48 +01:00
Cachet Bot
a508a326ca New translations forms.php (Albanian) 2018-07-11 22:51:47 +01:00
Cachet Bot
5d836619c6 New translations dashboard.php (Albanian) 2018-07-11 22:51:46 +01:00
Cachet Bot
4ff927968b New translations pagination.php (Albanian) 2018-07-11 22:51:45 +01:00
Cachet Bot
4a9e2be6ee New translations cachet.php (Albanian) 2018-07-11 22:51:44 +01:00
Cachet Bot
3f92f85cda New translations dashboard.php (Afrikaans) 2018-07-11 22:51:42 +01:00
Cachet Bot
6138a9c4ef New translations cachet.php (Arabic) 2018-07-11 22:51:41 +01:00
Cachet Bot
210ac14e73 New translations validation.php (Dutch) 2018-07-11 22:51:40 +01:00
Cachet Bot
e5b17f1ce7 New translations dashboard.php (Chinese Simplified) 2018-07-11 22:51:39 +01:00
Cachet Bot
3a31fb01d6 New translations setup.php (Danish) 2018-07-11 22:51:38 +01:00
Cachet Bot
ff97806361 New translations forms.php (Danish) 2018-07-11 22:51:37 +01:00
Cachet Bot
b12fdb61cb New translations dashboard.php (Danish) 2018-07-11 22:51:36 +01:00
Cachet Bot
75a12767e2 New translations validation.php (Danish) 2018-07-11 22:51:35 +01:00
Cachet Bot
b4df0d7aae New translations cachet.php (Danish) 2018-07-11 22:51:34 +01:00
Cachet Bot
b4a618f362 New translations setup.php (Czech) 2018-07-11 22:51:33 +01:00
Cachet Bot
0af3fbc86c New translations forms.php (Czech) 2018-07-11 22:51:32 +01:00
Cachet Bot
8ed5ea3174 New translations dashboard.php (Czech) 2018-07-11 22:51:31 +01:00
Cachet Bot
6f98fefb85 New translations validation.php (Czech) 2018-07-11 22:51:30 +01:00
Cachet Bot
4b0a1da1b9 New translations cachet.php (Czech) 2018-07-11 22:51:29 +01:00
Cachet Bot
89779d9e3c New translations setup.php (Chinese Traditional) 2018-07-11 22:51:28 +01:00
Cachet Bot
8b4ab5f09b New translations forms.php (Chinese Traditional) 2018-07-11 22:51:27 +01:00
Cachet Bot
c077c692ed New translations dashboard.php (Chinese Traditional) 2018-07-11 22:51:26 +01:00
Cachet Bot
dea9ebbfc9 New translations validation.php (Chinese Traditional) 2018-07-11 22:51:25 +01:00
Cachet Bot
0542cda408 New translations cachet.php (Chinese Traditional) 2018-07-11 22:51:24 +01:00
Cachet Bot
6041431d12 New translations setup.php (Chinese Simplified) 2018-07-11 22:51:23 +01:00
Cachet Bot
6703854224 New translations forms.php (Chinese Simplified) 2018-07-11 22:51:22 +01:00
Cachet Bot
aa8618c163 New translations pagination.php (Czech) 2018-07-11 22:51:21 +01:00
Cachet Bot
c040a42ee7 New translations validation.php (Italian) 2018-07-11 22:51:20 +01:00
Cachet Bot
983e1a781f New translations dashboard.php (Thai) 2018-07-11 22:51:19 +01:00
Cachet Bot
b5256a9558 New translations validation.php (Thai) 2018-07-11 22:51:18 +01:00
Cachet Bot
6058cad6e0 New translations pagination.php (Thai) 2018-07-11 22:51:17 +01:00
Cachet Bot
cb42bde85c New translations cachet.php (Thai) 2018-07-11 22:51:16 +01:00
Cachet Bot
e9104d6182 New translations setup.php (Swedish) 2018-07-11 22:51:15 +01:00
Cachet Bot
1153c0da76 New translations forms.php (Swedish) 2018-07-11 22:51:14 +01:00
Cachet Bot
4e1b1fe4ef New translations dashboard.php (Swedish) 2018-07-11 22:51:13 +01:00
Cachet Bot
0078f1dd1e New translations cachet.php (Swedish) 2018-07-11 22:51:12 +01:00
Cachet Bot
6ed0d2d4c2 New translations forms.php (Thai) 2018-07-11 22:51:11 +01:00
Cachet Bot
4b9a5e8e69 New translations validation.php (Spanish) 2018-07-11 22:51:09 +01:00
Cachet Bot
375c831391 New translations forms.php (Russian) 2018-07-11 22:51:08 +01:00
Cachet Bot
126c088863 New translations validation.php (Russian) 2018-07-11 22:51:07 +01:00
Cachet Bot
9f226eea9c New translations forms.php (Spanish) 2018-07-11 22:51:05 +01:00
Cachet Bot
4ad72633ea New translations setup.php (Thai) 2018-07-11 22:51:04 +01:00
Cachet Bot
2b18410a99 New translations pagination.php (Turkish) 2018-07-11 22:51:03 +01:00
Cachet Bot
2e353fc707 New translations forms.php (Zulu) 2018-07-11 22:51:02 +01:00
Cachet Bot
cb8d4282e4 New translations cachet.php (Zulu) 2018-07-11 22:51:01 +01:00
Cachet Bot
d7fd04b183 New translations setup.php (Vietnamese) 2018-07-11 22:51:00 +01:00
Cachet Bot
3f6b825692 New translations forms.php (Vietnamese) 2018-07-11 22:50:59 +01:00
Cachet Bot
7e95648ff9 New translations dashboard.php (Vietnamese) 2018-07-11 22:50:58 +01:00
Cachet Bot
1dfd481d95 New translations validation.php (Vietnamese) 2018-07-11 22:50:57 +01:00
Cachet Bot
a8f04914fa New translations pagination.php (Vietnamese) 2018-07-11 22:50:56 +01:00
Cachet Bot
1093d2169d New translations cachet.php (Turkish) 2018-07-11 22:50:56 +01:00
Cachet Bot
4098bfe641 New translations cachet.php (Vietnamese) 2018-07-11 22:50:55 +01:00
Cachet Bot
5c51806417 New translations forms.php (Ukrainian) 2018-07-11 22:50:54 +01:00
Cachet Bot
b616842ec0 New translations dashboard.php (Ukrainian) 2018-07-11 22:50:53 +01:00
Cachet Bot
6c693ea4d5 New translations validation.php (Ukrainian) 2018-07-11 22:50:52 +01:00
Cachet Bot
c6d9b62248 New translations pagination.php (Ukrainian) 2018-07-11 22:50:51 +01:00
Cachet Bot
2770036621 New translations cachet.php (Ukrainian) 2018-07-11 22:50:50 +01:00
Cachet Bot
54943af362 New translations setup.php (Turkish) 2018-07-11 22:50:49 +01:00
Cachet Bot
00eba028e5 New translations forms.php (Turkish) 2018-07-11 22:50:48 +01:00
Cachet Bot
421d8c5d05 New translations dashboard.php (Turkish) 2018-07-11 22:50:47 +01:00
Cachet Bot
c28e86c3fa New translations validation.php (Turkish) 2018-07-11 22:50:46 +01:00
Cachet Bot
a6706b7f3f New translations setup.php (Ukrainian) 2018-07-11 22:50:46 +01:00
Cachet Bot
d2fae69bf2 New translations forms.php (Romanian) 2018-07-11 22:50:44 +01:00
Cachet Bot
9abe4962a9 New translations cachet.php (Persian) 2018-07-11 22:50:43 +01:00
Cachet Bot
e009ae4754 New translations forms.php (Norwegian) 2018-07-11 22:50:42 +01:00
Cachet Bot
4213a9a2ca New translations dashboard.php (Norwegian) 2018-07-11 22:50:41 +01:00
Cachet Bot
5da83aed92 New translations validation.php (Norwegian) 2018-07-11 22:50:40 +01:00
Cachet Bot
a159600919 New translations cachet.php (Norwegian) 2018-07-11 22:50:39 +01:00
Cachet Bot
1b0e583a8a New translations setup.php (Korean) 2018-07-11 22:50:38 +01:00
Cachet Bot
1c496338cd New translations forms.php (Korean) 2018-07-11 22:50:38 +01:00
Cachet Bot
f7353c0c64 New translations dashboard.php (Korean) 2018-07-11 22:50:37 +01:00
Cachet Bot
090f4167f2 New translations pagination.php (Persian) 2018-07-11 22:50:36 +01:00
Cachet Bot
3fbf056056 New translations validation.php (Korean) 2018-07-11 22:50:35 +01:00
Cachet Bot
3a554d25ba New translations cachet.php (Korean) 2018-07-11 22:50:34 +01:00
Cachet Bot
dbd0fd57f2 New translations setup.php (Japanese) 2018-07-11 22:50:33 +01:00
Cachet Bot
226596d47b New translations forms.php (Japanese) 2018-07-11 22:50:32 +01:00
Cachet Bot
fa8f957631 New translations dashboard.php (Japanese) 2018-07-11 22:50:31 +01:00
Cachet Bot
e465295e48 New translations validation.php (Japanese) 2018-07-11 22:50:30 +01:00
Cachet Bot
94b5ad7b09 New translations pagination.php (Japanese) 2018-07-11 22:50:29 +01:00
Cachet Bot
9512346c0c New translations cachet.php (Japanese) 2018-07-11 22:50:28 +01:00
Cachet Bot
985119e125 New translations forms.php (Italian) 2018-07-11 22:50:27 +01:00
Cachet Bot
11b5df1499 New translations pagination.php (Korean) 2018-07-11 22:50:26 +01:00
Cachet Bot
76aa95389f New translations validation.php (Persian) 2018-07-11 22:50:25 +01:00
Cachet Bot
f346449714 New translations forms.php (Persian) 2018-07-11 22:50:22 +01:00
Cachet Bot
a2da594586 New translations setup.php (Portuguese, Brazilian) 2018-07-11 22:50:21 +01:00
Cachet Bot
6b3bb85d53 New translations forms.php (Portuguese, Brazilian) 2018-07-11 22:50:20 +01:00
Cachet Bot
5d28ea4e69 New translations dashboard.php (Portuguese, Brazilian) 2018-07-11 22:50:19 +01:00
Cachet Bot
f724248b1f New translations validation.php (Portuguese, Brazilian) 2018-07-11 22:50:18 +01:00
Cachet Bot
a70ecd9e6d New translations cachet.php (Portuguese, Brazilian) 2018-07-11 22:50:17 +01:00
Cachet Bot
828ea1c2d3 New translations setup.php (Portuguese) 2018-07-11 22:50:17 +01:00
Cachet Bot
c1f65347e5 New translations forms.php (Portuguese) 2018-07-11 22:50:16 +01:00
Cachet Bot
61abbcc367 New translations dashboard.php (Persian) 2018-07-11 22:50:15 +01:00
Cachet Bot
4bf980bc1a New translations dashboard.php (Portuguese) 2018-07-11 22:50:14 +01:00
Cachet Bot
b88354d261 New translations cachet.php (Portuguese) 2018-07-11 22:50:12 +01:00
Cachet Bot
5fb88b1936 New translations forms.php (Polish) 2018-07-11 22:50:11 +01:00
Cachet Bot
e0b2368342 New translations validation.php (Polish) 2018-07-11 22:50:10 +01:00
Cachet Bot
fc87437edc New translations setup.php (Persian) 2018-07-11 22:50:08 +01:00
Cachet Bot
7786f54ad3 New translations validation.php (Portuguese) 2018-07-11 22:50:08 +01:00
Cachet Bot
ee0d56d22b New translations cachet.php (Afrikaans) 2018-07-11 22:50:06 +01:00
James Brooks
51eb5917b6 Merge pull request #3175 from CachetHQ/l10n_2.3
New Crowdin translations
2018-07-11 22:34:12 +01:00
Cachet Bot
6433c48a5f Apply fixes from StyleCI
[ci skip] [skip ci]
2018-07-11 03:10:14 +00:00
Cachet Bot
d3af0d37be New translations setup.php (Danish) 2018-07-11 04:10:06 +01:00
Cachet Bot
0430086750 New translations forms.php (Danish) 2018-07-11 04:10:05 +01:00
Cachet Bot
e43516460b New translations dashboard.php (Danish) 2018-07-11 04:00:06 +01:00
Cachet Bot
036787f3e3 New translations cachet.php (Danish) 2018-07-11 04:00:05 +01:00
Cachet Bot
b20272d14a Apply fixes from StyleCI
[ci skip] [skip ci]
2018-07-10 16:16:19 +00:00
Cachet Bot
5c11c1ff72 New translations cachet.php (Norwegian) 2018-07-10 16:50:07 +01:00
Cachet Bot
5bde0dddff New translations setup.php (Zulu) 2018-07-10 14:35:34 +01:00
Cachet Bot
beee77d2e3 New translations validation.php (German) 2018-07-10 14:35:33 +01:00
Cachet Bot
4c6106e3a6 New translations pagination.php (German) 2018-07-10 14:35:31 +01:00
Cachet Bot
c4e7010cfc New translations cachet.php (German) 2018-07-10 14:35:31 +01:00
Cachet Bot
0b505b31c6 New translations setup.php (French) 2018-07-10 14:35:30 +01:00
Cachet Bot
87b31b2b54 New translations forms.php (French) 2018-07-10 14:35:29 +01:00
Cachet Bot
c0da527878 New translations dashboard.php (French) 2018-07-10 14:35:28 +01:00
Cachet Bot
539deaaea8 New translations validation.php (French) 2018-07-10 14:35:26 +01:00
Cachet Bot
c04a845c54 New translations pagination.php (French) 2018-07-10 14:35:26 +01:00
Cachet Bot
09347fc120 New translations cachet.php (French) 2018-07-10 14:35:25 +01:00
Cachet Bot
3c2ec3dbe6 New translations setup.php (Finnish) 2018-07-10 14:35:24 +01:00
Cachet Bot
843f69b9e1 New translations dashboard.php (German) 2018-07-10 14:35:23 +01:00
Cachet Bot
5c54286fb1 New translations forms.php (Finnish) 2018-07-10 14:35:21 +01:00
Cachet Bot
32fd6535c1 New translations validation.php (Finnish) 2018-07-10 14:35:19 +01:00
Cachet Bot
622a103b7b New translations pagination.php (Finnish) 2018-07-10 14:35:18 +01:00
Cachet Bot
b8a3614649 New translations cachet.php (Finnish) 2018-07-10 14:35:17 +01:00
Cachet Bot
98ac8383c9 New translations setup.php (English) 2018-07-10 14:35:16 +01:00
Cachet Bot
747c94ebd7 New translations forms.php (English) 2018-07-10 14:35:16 +01:00
Cachet Bot
4c1a7abb7a New translations dashboard.php (English) 2018-07-10 14:35:15 +01:00
Cachet Bot
0a5691a4c2 New translations validation.php (English) 2018-07-10 14:35:14 +01:00
Cachet Bot
9aa16286a5 New translations pagination.php (English) 2018-07-10 14:35:13 +01:00
Cachet Bot
d4a693f8fb New translations cachet.php (English) 2018-07-10 14:35:12 +01:00
Cachet Bot
0ea5990af6 New translations setup.php (Dutch) 2018-07-10 14:35:11 +01:00
Cachet Bot
22cdc45074 New translations dashboard.php (Finnish) 2018-07-10 14:35:10 +01:00
Cachet Bot
61ea95a403 New translations forms.php (Dutch) 2018-07-10 14:35:09 +01:00
Cachet Bot
0dcf3f958f New translations forms.php (German) 2018-07-10 14:35:08 +01:00
Cachet Bot
b672f42635 New translations cachet.php (Greek) 2018-07-10 14:35:07 +01:00
Cachet Bot
7f6c7f7a71 New translations forms.php (Indonesian) 2018-07-10 14:35:06 +01:00
Cachet Bot
54ed6eda60 New translations dashboard.php (Indonesian) 2018-07-10 14:35:05 +01:00
Cachet Bot
877b25cfbb New translations validation.php (Indonesian) 2018-07-10 14:35:03 +01:00
Cachet Bot
8048c02286 New translations pagination.php (Indonesian) 2018-07-10 14:35:01 +01:00
Cachet Bot
082367793c New translations cachet.php (Indonesian) 2018-07-10 14:35:00 +01:00
Cachet Bot
518d28f07b New translations setup.php (Hungarian) 2018-07-10 14:34:59 +01:00
Cachet Bot
a01ccbf953 New translations forms.php (Hungarian) 2018-07-10 14:34:58 +01:00
Cachet Bot
a69c72ef40 New translations dashboard.php (Hungarian) 2018-07-10 14:34:57 +01:00
Cachet Bot
87b51835cc New translations validation.php (Hungarian) 2018-07-10 14:34:56 +01:00
Cachet Bot
edecc98cbf New translations pagination.php (Hungarian) 2018-07-10 14:34:55 +01:00
Cachet Bot
a1a78df602 New translations setup.php (German) 2018-07-10 14:34:54 +01:00
Cachet Bot
2b5127505f New translations cachet.php (Hungarian) 2018-07-10 14:34:53 +01:00
Cachet Bot
cd029e0a79 New translations forms.php (Hebrew) 2018-07-10 14:34:52 +01:00
Cachet Bot
4a0e12645c New translations dashboard.php (Hebrew) 2018-07-10 14:34:51 +01:00
Cachet Bot
18c12cf9b0 New translations validation.php (Hebrew) 2018-07-10 14:34:50 +01:00
Cachet Bot
a2b6141b55 New translations pagination.php (Hebrew) 2018-07-10 14:34:49 +01:00
Cachet Bot
3305628b16 New translations cachet.php (Hebrew) 2018-07-10 14:34:48 +01:00
Cachet Bot
81b6fd95e9 New translations setup.php (Greek) 2018-07-10 14:34:48 +01:00
Cachet Bot
cf2a9454c8 New translations forms.php (Greek) 2018-07-10 14:34:47 +01:00
Cachet Bot
d220823d8e New translations dashboard.php (Greek) 2018-07-10 14:34:45 +01:00
Cachet Bot
81d4cf89e6 New translations validation.php (Greek) 2018-07-10 14:34:44 +01:00
Cachet Bot
e0a5e4df9b New translations pagination.php (Greek) 2018-07-10 14:34:43 +01:00
Cachet Bot
090a80992a New translations setup.php (Hebrew) 2018-07-10 14:34:43 +01:00
Cachet Bot
a659db17ae New translations setup.php (Indonesian) 2018-07-10 14:34:42 +01:00
Cachet Bot
67d8a1ca35 New translations dashboard.php (Dutch) 2018-07-10 14:34:41 +01:00
Cachet Bot
220d1a1fe5 New translations pagination.php (Dutch) 2018-07-10 14:34:40 +01:00
Cachet Bot
d8bc1cd517 New translations setup.php (Catalan) 2018-07-10 14:34:39 +01:00
Cachet Bot
e7768a1cec New translations forms.php (Catalan) 2018-07-10 14:34:38 +01:00
Cachet Bot
4b1bd76ff6 New translations dashboard.php (Catalan) 2018-07-10 14:34:37 +01:00
Cachet Bot
37e778585a New translations validation.php (Catalan) 2018-07-10 14:34:36 +01:00
Cachet Bot
2646963a2e New translations pagination.php (Catalan) 2018-07-10 14:34:35 +01:00
Cachet Bot
ebe162fe71 New translations cachet.php (Catalan) 2018-07-10 14:34:34 +01:00
Cachet Bot
071159ffa1 New translations setup.php (Arabic) 2018-07-10 14:34:33 +01:00
Cachet Bot
b9549829c2 New translations forms.php (Arabic) 2018-07-10 14:34:32 +01:00
Cachet Bot
8c6be5006d New translations dashboard.php (Arabic) 2018-07-10 14:34:31 +01:00
Cachet Bot
cae3a54b50 New translations validation.php (Arabic) 2018-07-10 14:34:30 +01:00
Cachet Bot
0b3e29e8dd New translations cachet.php (Chinese Simplified) 2018-07-10 14:34:29 +01:00
Cachet Bot
a5d690abdd New translations pagination.php (Arabic) 2018-07-10 14:34:29 +01:00
Cachet Bot
31137c71d4 New translations setup.php (Albanian) 2018-07-10 14:34:28 +01:00
Cachet Bot
76963a186c New translations forms.php (Albanian) 2018-07-10 14:34:27 +01:00
Cachet Bot
3c2d85188b New translations dashboard.php (Albanian) 2018-07-10 14:34:26 +01:00
Cachet Bot
db407e81ea New translations validation.php (Albanian) 2018-07-10 14:34:25 +01:00
Cachet Bot
9dda8d5ae7 New translations pagination.php (Albanian) 2018-07-10 14:34:24 +01:00
Cachet Bot
ad637fbb81 New translations cachet.php (Albanian) 2018-07-10 14:34:23 +01:00
Cachet Bot
6805e75f63 New translations setup.php (Afrikaans) 2018-07-10 14:34:22 +01:00
Cachet Bot
bc5ae22165 New translations forms.php (Afrikaans) 2018-07-10 14:34:21 +01:00
Cachet Bot
6696465d45 New translations dashboard.php (Afrikaans) 2018-07-10 14:34:20 +01:00
Cachet Bot
58bb80efc9 New translations validation.php (Afrikaans) 2018-07-10 14:34:19 +01:00
Cachet Bot
e6b7b41f24 New translations cachet.php (Arabic) 2018-07-10 14:34:18 +01:00
Cachet Bot
682ac8ac5d New translations validation.php (Dutch) 2018-07-10 14:34:17 +01:00
Cachet Bot
9687384709 New translations pagination.php (Chinese Simplified) 2018-07-10 14:34:16 +01:00
Cachet Bot
347f443d4e New translations dashboard.php (Chinese Simplified) 2018-07-10 14:34:14 +01:00
Cachet Bot
548d9f8c3a New translations cachet.php (Dutch) 2018-07-10 14:34:13 +01:00
Cachet Bot
eeb85c1815 New translations setup.php (Danish) 2018-07-10 14:34:12 +01:00
Cachet Bot
1112c17306 New translations forms.php (Danish) 2018-07-10 14:34:10 +01:00
Cachet Bot
aa421830bb New translations dashboard.php (Danish) 2018-07-10 14:34:09 +01:00
Cachet Bot
99982566b8 New translations validation.php (Danish) 2018-07-10 14:34:08 +01:00
Cachet Bot
115b5b7013 New translations pagination.php (Danish) 2018-07-10 14:34:07 +01:00
Cachet Bot
65a263a2dd New translations cachet.php (Danish) 2018-07-10 14:34:06 +01:00
Cachet Bot
98e0a7b7b4 New translations setup.php (Czech) 2018-07-10 14:34:05 +01:00
Cachet Bot
7581d96c54 New translations forms.php (Czech) 2018-07-10 14:34:03 +01:00
Cachet Bot
8e7c0f3f0d New translations dashboard.php (Czech) 2018-07-10 14:34:02 +01:00
Cachet Bot
50c5b23f96 New translations validation.php (Chinese Simplified) 2018-07-10 14:34:01 +01:00
Cachet Bot
d77c53b5eb New translations validation.php (Czech) 2018-07-10 14:34:00 +01:00
Cachet Bot
cda30429be New translations cachet.php (Czech) 2018-07-10 14:33:59 +01:00
Cachet Bot
8cfb1282d3 New translations forms.php (Chinese Traditional) 2018-07-10 14:33:58 +01:00
Cachet Bot
9faa4b77cd New translations dashboard.php (Chinese Traditional) 2018-07-10 14:33:57 +01:00
Cachet Bot
6a5c5776a9 New translations validation.php (Chinese Traditional) 2018-07-10 14:33:56 +01:00
Cachet Bot
c63a76c86d New translations cachet.php (Chinese Traditional) 2018-07-10 14:33:54 +01:00
Cachet Bot
89718f5fbc New translations setup.php (Chinese Simplified) 2018-07-10 14:33:54 +01:00
Cachet Bot
8e84278a24 New translations forms.php (Chinese Simplified) 2018-07-10 14:33:53 +01:00
Cachet Bot
16470d548e New translations pagination.php (Czech) 2018-07-10 14:33:52 +01:00
Cachet Bot
320203262f New translations pagination.php (Afrikaans) 2018-07-10 14:33:51 +01:00
Cachet Bot
ae3b2e44b5 New translations cachet.php (Italian) 2018-07-10 14:33:50 +01:00
Cachet Bot
755b8143cb New translations validation.php (Italian) 2018-07-10 14:33:49 +01:00
Cachet Bot
4667948949 New translations dashboard.php (Thai) 2018-07-10 14:33:48 +01:00
Cachet Bot
0f7bee9c61 New translations validation.php (Thai) 2018-07-10 14:33:47 +01:00
Cachet Bot
10430ddad3 New translations pagination.php (Thai) 2018-07-10 14:33:46 +01:00
Cachet Bot
6e06e6a4dd New translations cachet.php (Thai) 2018-07-10 14:33:45 +01:00
Cachet Bot
393a1119da New translations forms.php (Swedish) 2018-07-10 14:33:44 +01:00
Cachet Bot
47fb5b2789 New translations dashboard.php (Swedish) 2018-07-10 14:33:43 +01:00
Cachet Bot
00caff7ecf New translations cachet.php (Swedish) 2018-07-10 14:33:41 +01:00
Cachet Bot
e1fccf1b26 New translations forms.php (Thai) 2018-07-10 14:33:40 +01:00
Cachet Bot
1a1e914d59 New translations setup.php (Spanish) 2018-07-10 14:33:39 +01:00
Cachet Bot
f2e995513f New translations dashboard.php (Spanish) 2018-07-10 14:33:38 +01:00
Cachet Bot
e780735987 New translations validation.php (Spanish) 2018-07-10 14:33:35 +01:00
Cachet Bot
1eaa4594af New translations pagination.php (Spanish) 2018-07-10 14:33:35 +01:00
Cachet Bot
9d51a34bd4 New translations cachet.php (Spanish) 2018-07-10 14:33:34 +01:00
Cachet Bot
d1681beae4 New translations setup.php (Russian) 2018-07-10 14:33:33 +01:00
Cachet Bot
0254d3df00 New translations forms.php (Russian) 2018-07-10 14:33:32 +01:00
Cachet Bot
2d15c27191 New translations dashboard.php (Russian) 2018-07-10 14:33:31 +01:00
Cachet Bot
17f12a0cb7 New translations validation.php (Russian) 2018-07-10 14:33:30 +01:00
Cachet Bot
e17400be21 New translations pagination.php (Russian) 2018-07-10 14:33:29 +01:00
Cachet Bot
62d7cb615d New translations cachet.php (Russian) 2018-07-10 14:33:28 +01:00
Cachet Bot
89759bb0ea New translations forms.php (Spanish) 2018-07-10 14:33:27 +01:00
Cachet Bot
7ee6cc91e7 New translations setup.php (Romanian) 2018-07-10 14:33:26 +01:00
Cachet Bot
bf2809bf50 New translations setup.php (Thai) 2018-07-10 14:33:26 +01:00
Cachet Bot
fcbd5b68b2 New translations pagination.php (Turkish) 2018-07-10 14:33:25 +01:00
Cachet Bot
1b1490f8bd New translations forms.php (Zulu) 2018-07-10 14:33:24 +01:00
Cachet Bot
019cafbbf5 New translations dashboard.php (Zulu) 2018-07-10 14:33:23 +01:00
Cachet Bot
a5a66e0de6 New translations validation.php (Zulu) 2018-07-10 14:33:22 +01:00
Cachet Bot
018aa8b0f0 New translations pagination.php (Zulu) 2018-07-10 14:33:21 +01:00
Cachet Bot
abcfdcdd0e New translations cachet.php (Zulu) 2018-07-10 14:33:20 +01:00
Cachet Bot
ceb95c30c4 New translations setup.php (Vietnamese) 2018-07-10 14:33:19 +01:00
Cachet Bot
08f9936e1d New translations forms.php (Vietnamese) 2018-07-10 14:33:19 +01:00
Cachet Bot
1647c4fc45 New translations dashboard.php (Vietnamese) 2018-07-10 14:33:18 +01:00
Cachet Bot
0eaf24febf New translations validation.php (Vietnamese) 2018-07-10 14:33:16 +01:00
Cachet Bot
544a6900bb New translations pagination.php (Vietnamese) 2018-07-10 14:33:15 +01:00
Cachet Bot
b6cbf817ab New translations cachet.php (Turkish) 2018-07-10 14:33:14 +01:00
Cachet Bot
1dab6c0f08 New translations cachet.php (Vietnamese) 2018-07-10 14:33:13 +01:00
Cachet Bot
9dfd47b1e9 New translations forms.php (Ukrainian) 2018-07-10 14:33:12 +01:00
Cachet Bot
0f26675767 New translations dashboard.php (Ukrainian) 2018-07-10 14:33:10 +01:00
Cachet Bot
24f2bb7fd4 New translations validation.php (Ukrainian) 2018-07-10 14:33:09 +01:00
Cachet Bot
4be32a6112 New translations pagination.php (Ukrainian) 2018-07-10 14:33:08 +01:00
Cachet Bot
0b23c86dd2 New translations cachet.php (Ukrainian) 2018-07-10 14:33:08 +01:00
Cachet Bot
22a6e70cfd New translations setup.php (Turkish) 2018-07-10 14:33:07 +01:00
Cachet Bot
8e6569b63d New translations forms.php (Turkish) 2018-07-10 14:33:06 +01:00
Cachet Bot
2c8c13cd82 New translations dashboard.php (Turkish) 2018-07-10 14:33:05 +01:00
Cachet Bot
3aabf285a9 New translations validation.php (Turkish) 2018-07-10 14:33:04 +01:00
Cachet Bot
d07e58d3db New translations setup.php (Ukrainian) 2018-07-10 14:33:03 +01:00
Cachet Bot
0d88d80d48 New translations pagination.php (Italian) 2018-07-10 14:33:02 +01:00
Cachet Bot
ea638ef2ae New translations forms.php (Romanian) 2018-07-10 14:33:01 +01:00
Cachet Bot
b31d30dd10 New translations validation.php (Romanian) 2018-07-10 14:33:00 +01:00
Cachet Bot
a5494b6559 New translations cachet.php (Persian) 2018-07-10 14:32:59 +01:00
Cachet Bot
909a67fe93 New translations setup.php (Norwegian) 2018-07-10 14:32:58 +01:00
Cachet Bot
2a8a4027d6 New translations forms.php (Norwegian) 2018-07-10 14:32:57 +01:00
Cachet Bot
27bc034691 New translations dashboard.php (Norwegian) 2018-07-10 14:32:56 +01:00
Cachet Bot
433093a012 New translations validation.php (Norwegian) 2018-07-10 14:32:55 +01:00
Cachet Bot
fde7ad65f6 New translations pagination.php (Norwegian) 2018-07-10 14:32:54 +01:00
Cachet Bot
172228fdb3 New translations cachet.php (Norwegian) 2018-07-10 14:32:53 +01:00
Cachet Bot
d287b10bc1 New translations setup.php (Korean) 2018-07-10 14:32:52 +01:00
Cachet Bot
db8fddf378 New translations forms.php (Korean) 2018-07-10 14:32:51 +01:00
Cachet Bot
fc45fb60ec New translations dashboard.php (Korean) 2018-07-10 14:32:50 +01:00
Cachet Bot
b11b5f2cf9 New translations pagination.php (Persian) 2018-07-10 14:32:49 +01:00
Cachet Bot
951250f1d1 New translations validation.php (Korean) 2018-07-10 14:32:48 +01:00
Cachet Bot
c9bdbf38d8 New translations cachet.php (Korean) 2018-07-10 14:32:47 +01:00
Cachet Bot
7449d44bc8 New translations setup.php (Japanese) 2018-07-10 14:32:46 +01:00
Cachet Bot
db5ce4397b New translations forms.php (Japanese) 2018-07-10 14:32:45 +01:00
Cachet Bot
3256ad8660 New translations dashboard.php (Japanese) 2018-07-10 14:32:44 +01:00
Cachet Bot
486198872a New translations validation.php (Japanese) 2018-07-10 14:32:43 +01:00
Cachet Bot
de12ccf291 New translations pagination.php (Japanese) 2018-07-10 14:32:42 +01:00
Cachet Bot
e1f5aa0639 New translations cachet.php (Japanese) 2018-07-10 14:32:40 +01:00
Cachet Bot
a70db4c031 New translations setup.php (Italian) 2018-07-10 14:32:40 +01:00
Cachet Bot
c1daf0ae0a New translations forms.php (Italian) 2018-07-10 14:32:39 +01:00
Cachet Bot
fad9e5fd92 New translations dashboard.php (Italian) 2018-07-10 14:32:38 +01:00
Cachet Bot
c224b5d05b New translations pagination.php (Korean) 2018-07-10 14:32:37 +01:00
Cachet Bot
78cc258d96 New translations dashboard.php (Romanian) 2018-07-10 14:32:36 +01:00
Cachet Bot
c87c37ad73 New translations validation.php (Persian) 2018-07-10 14:32:35 +01:00
Cachet Bot
ab02399ca6 New translations forms.php (Persian) 2018-07-10 14:32:34 +01:00
Cachet Bot
c3cf0b9e81 New translations pagination.php (Romanian) 2018-07-10 14:32:33 +01:00
Cachet Bot
2e5ead7886 New translations cachet.php (Romanian) 2018-07-10 14:32:32 +01:00
Cachet Bot
5a444d2c03 New translations forms.php (Portuguese, Brazilian) 2018-07-10 14:32:31 +01:00
Cachet Bot
34cf7428df New translations dashboard.php (Portuguese, Brazilian) 2018-07-10 14:32:30 +01:00
Cachet Bot
e3fa11d917 New translations validation.php (Portuguese, Brazilian) 2018-07-10 14:32:29 +01:00
Cachet Bot
6153d08880 New translations forms.php (Portuguese) 2018-07-10 14:32:27 +01:00
Cachet Bot
521c69b39e New translations dashboard.php (Persian) 2018-07-10 14:32:26 +01:00
Cachet Bot
9caf55d92e New translations dashboard.php (Portuguese) 2018-07-10 14:32:25 +01:00
Cachet Bot
357a1b4e86 New translations cachet.php (Portuguese) 2018-07-10 14:32:24 +01:00
Cachet Bot
c3ad824def New translations setup.php (Polish) 2018-07-10 14:32:23 +01:00
Cachet Bot
abeb6fd917 New translations forms.php (Polish) 2018-07-10 14:32:22 +01:00
Cachet Bot
be794d4ef2 New translations dashboard.php (Polish) 2018-07-10 14:32:21 +01:00
Cachet Bot
fe8ff219ef New translations validation.php (Polish) 2018-07-10 14:32:20 +01:00
Cachet Bot
e01993e5b8 New translations pagination.php (Polish) 2018-07-10 14:32:19 +01:00
Cachet Bot
6138ba99b8 New translations cachet.php (Polish) 2018-07-10 14:32:18 +01:00
Cachet Bot
6efe83c6b4 New translations setup.php (Persian) 2018-07-10 14:32:17 +01:00
Cachet Bot
1b152eb0fe New translations validation.php (Portuguese) 2018-07-10 14:32:17 +01:00
Cachet Bot
62012f4dab New translations cachet.php (Afrikaans) 2018-07-10 14:32:15 +01:00
James Brooks
5c39be5b2c Update deps 2018-07-06 08:29:21 +01:00
James Brooks
1e73861e15 Make file like 2.4 2018-07-04 21:12:30 +01:00
Cachet Bot
4099a8f4e6 Update Crowdin configuration file 2018-07-04 21:01:54 +01:00
James Brooks
163f57397d Update deps 2018-06-17 09:46:48 +01:00
James Brooks
494badb00a Merge pull request #3069 from CachetHQ/fix-component-group-status
Fix the component group status
2018-06-17 09:43:58 +01:00
James Brooks
84bea58f99 Merge branch '2.3' into fix-component-group-status 2018-06-14 21:02:26 +01:00
James Brooks
d7ffbeef0c Don't run tests on HHVM 2018-06-14 21:02:08 +01:00
James Brooks
4aff0ddec0 Fix the component group status. Closes #2731 2018-06-14 07:31:22 +01:00
James Brooks
749c83169c Merge pull request #3016 from hensur/stylesheet-fix-23
Backport stylesheet fix #3014 to 2.3
2018-04-19 08:47:32 +01:00
Henning Surmeier
58a212c2e4 Backport stylesheet fix #3014 to 2.3 2018-04-18 16:27:19 +02:00
James Brooks
0c72e5eec8 Apply fixes from StyleCI (#2962)
[ci skip] [skip ci]
2018-03-26 19:18:30 +01:00
James Brooks
83bc743d79 Merge pull request #2960 from anthonybocci/metric-points-prefix-table-2925
Use the table prefix on metric_points
2018-03-26 19:18:07 +01:00
Anthony Bocci
35dcc8c928 Use the table prefix on metric_points
In the '.env' file, a 'DB_PREFIX' sets the prefix that should be used
on every table name. When writing an SQL query the 'DB_PREFIX' value
has to be prefixed to the table name.

The repository PgSqlRepository, MySqlRepository and SqliteRepository,
located in 'app/Repositories/Metric/' did not apply this prefix on
the 'metric_points' table. The problem occured only when we set a
'DB_PREFIX' not null, the rest of the application worked correctly but
the part about 'metric_points' couldn't work, saying the table was
inexistant.

A method was added in the repository AbstractMetricRepository to get
the 'metric_points' table name with the prefix if there is one.
This method is used in the three repositories to get the right table
name.

Note: This problem was present in 2.3, but was already fixed in 2.4 so
there is no need to apply this commit on the 2.4 branch.

See: CachetHQ/Cachet/#2955
2018-03-23 20:56:41 +01:00
James Brooks
93d1f8784a Merge pull request #2864 from snowflakeOps/2.3
use a better and smaller image for open graph (e.g for slack)
2018-01-11 21:33:49 +00:00
Markus Ritzmann
0450f2f330 #2853 use a better and smaller image for og 2018-01-11 16:49:01 +01:00
James Brooks
595b152db5 Merge pull request #2671 from checkitonus/bug/invalid-template-23
Quick check to make sure the template exists
2017-09-30 11:38:19 +01:00
Graham Campbell
cc15d078bf Removed old links 2017-09-10 18:24:01 +01:00
Graham Campbell
3b568bbc07 Mail password non-required 2017-09-10 18:11:23 +01:00
Graham Campbell
ae4c414a82 Upgraded exceptions package 2017-09-10 17:54:18 +01:00
Graham Campbell
5358cf5e1e Upgraded deps 2017-09-10 17:20:07 +01:00
Andrew Judd
6dedacad57 Removing a helper method 2017-07-30 08:48:45 -04:00
Andrew Judd
29c9211935 Quick check to make sure the template exists 2017-07-29 11:13:41 -04:00
James Brooks
7d47546650 Switch to dev 2017-07-17 21:50:00 +01:00
James Brooks
f5a9941903 Update deps again 2017-07-17 21:49:42 +01:00
James Brooks
52b7bf74b9 Update version 2017-07-17 21:46:30 +01:00
James Brooks
6a59d5ac4d Update deps 2017-07-17 21:44:45 +01:00
James Brooks
19b7b0c3b2 Require predis/predis. Fixes #2611 2017-07-17 21:44:43 +01:00
Graham Campbell
d4507e0722 Back to dev 2017-06-28 23:42:10 +01:00
Graham Campbell
47bc73f9e9 Release v2.3.12 2017-06-28 23:41:31 +01:00
Graham Campbell
81fc6479d5 Revert to original travis config 2017-06-28 22:53:06 +01:00
Graham Campbell
c9ca99990c Update .travis.yml 2017-06-28 22:49:07 +01:00
Graham Campbell
e0d35d6e64 Merge branch '2.3' of https://github.com/CachetHQ/Cachet into 2.3 2017-06-28 22:39:55 +01:00
Graham Campbell
813be34f25 Upgraded dependencies 2017-06-28 22:39:41 +01:00
Graham Campbell
900723105b Update .travis.yml 2017-06-28 22:38:44 +01:00
Graham Campbell
8012a201b9 Update .travis.yml 2017-06-28 22:00:28 +01:00
Graham Campbell
706e7765e1 Update .travis.yml 2017-06-28 21:52:45 +01:00
Guido Hendriks
bcff3d0730 Improve testCreateSubscriberWithSubscriptions test case (#2487) 2017-06-28 21:45:27 +01:00
James Brooks
db5bf005bc Apply fixes from StyleCI (#2606)
[ci skip] [skip ci]
2017-06-28 20:52:41 +01:00
James Brooks
dac88efce6 Merge pull request #2601 from Daniel15/2.3-with-patches
Backport API endpoint to get system status to v2.3
2017-06-28 20:52:08 +01:00
James Brooks
38ef2630ee Add system status to /status endpoint 2017-06-20 17:18:38 +10:00
James Brooks
c215ad4111 Implement the system status api endpoint. Closes #1936 2017-06-20 17:09:03 +10:00
James Brooks
c899839a7f Back to dev 2017-04-12 23:05:32 +01:00
James Brooks
2e5e8b1545 Bump version to 2.3.11 2017-04-12 23:05:09 +01:00
James Brooks
7e556d5dba Apply fixes from StyleCI (#2486)
[ci skip] [skip ci]
2017-04-12 23:04:21 +01:00
James Brooks
331e176fbc Updated deps 2017-03-25 11:42:25 +00:00
James Brooks
bde0abe472 Fix handling of individual component subscriptions via API 2016-09-21 18:35:58 +01:00
James Brooks
f2bf2eff68 Test creating a subscriber returns subscriptions 2016-09-21 18:17:22 +01:00
James Brooks
50ab96fc4f Load subscriptions when creating a subscriber 2016-09-21 18:16:08 +01:00
James Brooks
3cbee1302e Update deps 2016-09-21 18:08:56 +01:00
Graham Campbell
8d74923e3f Back to dev 2016-08-11 12:16:50 +01:00
Graham Campbell
dbf6fe528c Release v2.3.10 2016-08-11 12:16:14 +01:00
Graham Campbell
2a9d1b4897 Backport new command tests 2016-08-11 12:09:28 +01:00
Graham Campbell
c2192d7ef7 Backport readme changes 2016-08-11 12:03:28 +01:00
Graham Campbell
1b580360ac Updated deps 2016-08-10 21:04:17 +01:00
James Brooks
15407ad9a3 Remove dump and die 2016-08-10 20:28:32 +01:00
James Brooks
14127de3ca Back to dev 2016-08-07 22:05:34 +01:00
James Brooks
57988f0009 Release v2.3.9 2016-08-07 22:05:16 +01:00
Graham Campbell
7ac7344b5e Updated dep 2016-08-07 22:01:00 +01:00
James Brooks
472dcfe85a Merge pull request #2036 from CachetHQ/analysis-8KggM3
Applied fixes from StyleCI

[ci skip] [skip ci]
2016-08-07 21:10:17 +01:00
James Brooks
77409abc5a Applied fixes from StyleCI
[ci skip] [skip ci]
2016-08-07 16:10:12 -04:00
James Brooks
7548ae7e58 Disable fixedStepSize 2016-08-07 21:09:47 +01:00
James Brooks
074d3457c6 Fix Italian translation issues. Closes #2034 2016-08-07 19:45:13 +01:00
James Brooks
205748b182 Improve metric labels 2016-08-07 19:22:19 +01:00
James Brooks
1f4bee67d6 Back to dev 2016-08-05 07:52:10 +01:00
James Brooks
2f0df5ab7b Bump version 2016-08-05 07:51:44 +01:00
James Brooks
8fe75f7112 Update deps 2016-08-05 07:51:25 +01:00
Graham Campbell
b3ee389ca5 Merge pull request #2021 from CachetHQ/require-xml
Require the ext-xml extension
2016-08-02 11:13:29 +01:00
James Brooks
a40bfd12b7 Removed blank line 2016-08-02 11:02:31 +01:00
James Brooks
8d86c5e072 Ignore SQLite databases when backing up the db 2016-08-02 11:00:39 +01:00
James Brooks
20ca9ceade Require the ext-xml extension 2016-08-02 10:55:33 +01:00
411 changed files with 26901 additions and 2359 deletions

View File

@@ -1,13 +1,17 @@
language: php
sudo: false
dist: trusty
php:
- 5.5.9
- 5.5
- 5.6
- 7.0
- hhvm
- 7.1
sudo: false
before_install: cp .env.example .env
install: travis_retry composer install --no-interaction --no-scripts --prefer-source

View File

@@ -1,18 +1,14 @@
# Cachet
[![StyleCI](https://styleci.io/repos/26730195/shield)](https://styleci.io/repos/26730195/)
[![Build Status](https://img.shields.io/travis/CachetHQ/Cachet/master.svg?style=flat-square)](https://travis-ci.org/CachetHQ/Cachet)
[![Build Status](https://img.shields.io/travis/CachetHQ/Cachet/2.3.svg?style=flat-square)](https://travis-ci.org/CachetHQ/Cachet)
[![Software License](https://img.shields.io/badge/license-BSD3-brightgreen.svg?style=flat-square)](LICENSE)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/cachet/localized.svg)](http://translate.cachethq.io/project/cachet)
[![Packagist](https://img.shields.io/packagist/v/cachethq/cachet.svg?style=flat-square)](https://packagist.org/packages/cachethq/cachet)
![Screenshot](https://cachethq.io/img/main-interface.jpg)
Cachet is a beautiful and powerful open source status page system, a free replacement to services such as StatusPage.io, Status.io and others.
## Show your support
Cachet is a BSD-3-licensed open source project. If you'd like to support future development, check out the [Patreon campaign](https://patreon.com/jbrooksuk).
Cachet is a beautiful and powerful open source status page system.
## Features
@@ -25,21 +21,17 @@ Cachet is a BSD-3-licensed open source project. If you'd like to support future
- Metrics
- Cross-database support: MySQL, PostgreSQL and SQLite
- Subscriber notifications via Email
- Two factor authentication, with Google Authenticator
## Usage in production
Use of `master` in a production environment is not recommended as it may change at any time.
- Two factor authentication using Google Authenticator
## Requirements
- PHP 5.5.9+ or newer
- PHP 5.5.9 - 7.1
- Apache or Nginx server
- [Composer](https://getcomposer.org)
## How to contribute
## I'm looking to contribute to this awesome project!
We're always looking for contributions that improve Cachet. It's easy to get started and you don't even need to know how to write a single line of code!
Sweet, we're always looking for contributions that improve Cachet! It's easy to get started and you don't even need to know how to write a single line of code!
### Contributing as a non-developer/non-designer
@@ -71,11 +63,13 @@ We use these extra dependencies to develop Cachet:
- Gulp
- Git
Once cloned to your local machine, you'll need some demo data! Run `php artisan cachet:seed` to get the demo installation on the go.
Once cloned to your local machine, you'll need some demo data! Run `php artisan cachet:seed` to get the demo installation ready for action.
## Installation, Upgrades and Documentation
You can now find our documentation at [https://docs.cachethq.io](https://docs.cachethq.io).
Documentation is found at [https://docs.cachethq.io](https://docs.cachethq.io).
Here are some useful quick links:
- [Installing Cachet](https://docs.cachethq.io/docs/installing-cachet)
- [Getting started with Docker](https://docs.cachethq.io/docs/get-started-with-docker)
@@ -84,8 +78,8 @@ You can now find our documentation at [https://docs.cachethq.io](https://docs.ca
To test out the demo, you may login to the [Dashboard](https://demo.cachethq.io/dashboard) with the following:
- **Username:** test or test@test.com
- **Password:** test123
- **Username:** `test` or `test@test.com`
- **Password:** `test123`
The demo is reset every half hour.
@@ -95,14 +89,18 @@ We list releases on the [Releases page](https://github.com/CachetHQ/Cachet/relea
## Translations
A special thank you to our [translators](https://crowdin.com/project/cachet/activity_stream), who have allowed us to share Cachet with the world. If you'd like to contribute translations, please check out our [CrowdIn project](https://crowdin.com/project/cachet).
If you'd like to contribute translations, please check out our [CrowdIn project](https://crowdin.com/project/cachet).
> Thank you to our [translators](https://crowdin.com/project/cachet/activity_stream), who have allowed us to share Cachet with the world!
## Show your support
Cachet is a BSD-3-licensed open source project.
## Professional Installation Service
We offer a professional installation service. To find out more, email us at [support@alt-three.com](mailto:support@alt-three.com?Cachet Installation)
## Security Vulnerabilities
If you discover a security vulnerability within Cachet, please send an e-mail to us at support@alt-three.com. We handle all security vulnerabilities on a case-by-case basis.
## Installations
We offer a paid installation service, which starts at $99 but is subject to change, dependant on your setup and infrastructure.
To find out more, email us at support@alt-three.com

View File

@@ -1 +1 @@
2.5.0-dev
2.3.19-dev

View File

@@ -11,12 +11,7 @@
namespace CachetHQ\Cachet\Bus\Commands\User;
/**
* This is the add user command.
*
* @author James Brooks <james@alt-three.com>
*/
final class AddUserCommand
final class AddTeamMemberCommand
{
/**
* The user username.

View File

@@ -11,12 +11,7 @@
namespace CachetHQ\Cachet\Bus\Commands\User;
/**
* This is the invite user command.
*
* @author James Brooks <james@alt-three.com>
*/
final class InviteUserCommand
final class InviteTeamMemberCommand
{
/**
* The invite emails.
@@ -35,7 +30,7 @@ final class InviteUserCommand
];
/**
* Create a new invite user command instance.
* Create a new invite team member command instance.
*
* @param string[] $emails
*

View File

@@ -70,7 +70,7 @@ class ReportIncidentCommandHandler
'visible' => $command->visible,
];
if ($command->template) {
if (IncidentTemplate::where('slug', '=', $command->template)->first()) {
$data['message'] = $this->parseIncidentTemplate($command->template, $command->template_vars);
} else {
$data['message'] = $command->message;

View File

@@ -44,17 +44,17 @@ class SubscribeSubscriberCommandHandler
// Decide what to subscribe the subscriber to.
if ($subscriptions = $command->subscriptions) {
$subscriptions = Component::whereIn('id', $subscriptions);
$components = Component::whereIn('id', $subscriptions)->get();
} else {
$subscriptions = Component::all();
$components = Component::all();
}
foreach ($subscriptions as $component) {
$components->map(function ($component) use ($subscriber) {
Subscription::create([
'subscriber_id' => $subscriber->id,
'component_id' => $component->id,
]);
}
});
if ($command->verified) {
dispatch(new VerifySubscriberCommand($subscriber));
@@ -62,6 +62,8 @@ class SubscribeSubscriberCommandHandler
event(new SubscriberHasSubscribedEvent($subscriber));
}
$subscriber->load('subscriptions');
return $subscriber;
}
}

View File

@@ -13,7 +13,6 @@ namespace CachetHQ\Cachet\Bus\Handlers\Commands\Subscriber;
use CachetHQ\Cachet\Bus\Commands\Subscriber\UnsubscribeSubscriberCommand;
use CachetHQ\Cachet\Bus\Events\Subscriber\SubscriberHasUnsubscribedEvent;
use CachetHQ\Cachet\Models\Subscriber;
class UnsubscribeSubscriberCommandHandler
{

View File

@@ -11,25 +11,20 @@
namespace CachetHQ\Cachet\Bus\Handlers\Commands\User;
use CachetHQ\Cachet\Bus\Commands\User\AddUserCommand;
use CachetHQ\Cachet\Bus\Commands\User\AddTeamMemberCommand;
use CachetHQ\Cachet\Bus\Events\User\UserWasAddedEvent;
use CachetHQ\Cachet\Models\User;
/**
* This is the add user command handler.
*
* @author James Brooks <james@alt-three.com>
*/
class AddUserCommandHandler
class AddTeamMemberCommandHandler
{
/**
* Handle the add user command.
* Handle the add team member command.
*
* @param \CachetHQ\Cachet\Bus\Commands\User\AddUserCommand $command
* @param \CachetHQ\Cachet\Bus\Commands\User\AddTeamMemberCommand $command
*
* @return \CachetHQ\Cachet\Models\User
*/
public function handle(AddUserCommand $command)
public function handle(AddTeamMemberCommand $command)
{
$user = User::create([
'username' => $command->username,

View File

@@ -11,25 +11,20 @@
namespace CachetHQ\Cachet\Bus\Handlers\Commands\User;
use CachetHQ\Cachet\Bus\Commands\User\InviteUserCommand;
use CachetHQ\Cachet\Bus\Commands\User\InviteTeamMemberCommand;
use CachetHQ\Cachet\Bus\Events\User\UserWasInvitedEvent;
use CachetHQ\Cachet\Models\Invite;
/**
* This is the invite user command handler.
*
* @author James Brooks <james@alt-three.com>
*/
class InviteUserCommandHandler
class InviteTeamMemberCommandHandler
{
/**
* Handle the invite team member command.
*
* @param \CachetHQ\Cachet\Bus\Commands\User\InviteUserCommand $command
* @param \CachetHQ\Cachet\Bus\Commands\User\InviteTeamMemberCommand $command
*
* @return void
*/
public function handle(InviteUserCommand $command)
public function handle(InviteTeamMemberCommand $command)
{
foreach ($command->emails as $email) {
$invite = Invite::create([

View File

@@ -106,8 +106,8 @@ class SendIncidentEmailNotificationHandler
$component = AutoPresenter::decorate($event->incident->component);
$mail = [
'email' => $subscriber->email,
'subject' => trans('cachet.subscriber.email.incident.subject', [
'email' => $subscriber->email,
'subject' => trans('cachet.subscriber.email.incident.subject', [
'status' => $incident->human_status,
'name' => $incident->name,
]),

View File

@@ -106,9 +106,9 @@ class SendMaintenanceEmailNotificationHandler
$component = AutoPresenter::decorate($event->incident->component);
$mail = [
'email' => $subscriber->email,
'subject' => trans('cachet.subscriber.email.maintenance.subject', [
'name' => $incident->name,
'email' => $subscriber->email,
'subject' => trans('cachet.subscriber.email.maintenance.subject', [
'name' => $incident->name,
]),
'has_component' => ($event->incident->component) ? true : false,
'component_name' => $component ? $component->name : null,

View File

@@ -46,9 +46,9 @@ class SendInviteUserEmailHandler
public function handle(UserWasInvitedEvent $event)
{
$mail = [
'email' => $event->invite->email,
'subject' => 'You have been invited.',
'link' => route('signup.invite', ['code' => $event->invite->code]),
'email' => $event->invite->email,
'subject' => 'You have been invited.',
'link' => route('signup.invite', ['code' => $event->invite->code]),
];
$this->mailer->queue([

View File

@@ -11,41 +11,12 @@
namespace CachetHQ\Cachet\Composers;
use CachetHQ\Cachet\Dates\DateFactory;
use GrahamCampbell\Markdown\Facades\Markdown;
use Illuminate\Contracts\Config\Repository;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Facades\Config;
class AppComposer
{
/**
* The date factory instance.
*
* @var \CachetHQ\Cachet\Dates\DateFactory
*/
protected $dates;
/**
* The illuminate config instance.
*
* @var \Illuminate\Contracts\Config\Repository
*/
protected $config;
/**
* Create a new app composer instance.
*
* @param \CachetHQ\Cachet\Dates\DateFactory $dates
* @param \Illuminate\Contracts\Config\Repository $config
*
* @return void
*/
public function __construct(DateFactory $dates, Repository $config)
{
$this->dates = $dates;
$this->config = $config;
}
/**
* Index page view composer.
*
@@ -55,28 +26,25 @@ class AppComposer
*/
public function compose(View $view)
{
$view->withAboutApp(Markdown::convertToHtml($this->config->get('setting.app_about')));
$view->withAppAnalytics($this->config->get('setting.app_analytics'));
$view->withAppAnalyticsGoSquared($this->config->get('setting.app_analytics_gs'));
$view->withAppAnalyticsPiwikUrl($this->config->get('setting.app_analytics_piwik_url'));
$view->withAppAnalyticsPiwikSiteId($this->config->get('setting.app_analytics_piwik_site_id'));
$view->withAppBanner($this->config->get('setting.app_banner'));
$view->withAppBannerStyleFullWidth($this->config->get('setting.style_fullwidth_header'));
$view->withAppBannerType($this->config->get('setting.app_banner_type'));
$view->withAppDomain($this->config->get('setting.app_domain'));
$view->withAppGraphs($this->config->get('setting.display_graphs'));
$view->withAppLocale($this->config->get('setting.app_locale'));
$view->withAppStylesheet($this->config->get('setting.stylesheet'));
$view->withAppUrl($this->config->get('app.url'));
$view->withAppHeader($this->config->get('setting.header'));
$view->withAppFooter($this->config->get('setting.footer'));
$view->withAppName($this->config->get('setting.app_name'));
$view->withShowSupport($this->config->get('setting.show_support'));
$view->withAutomaticLocalization($this->config->get('setting.automatic_localization'));
$view->withEnableExternalDependencies($this->config->get('setting.enable_external_dependencies'));
$view->withShowTimezone($this->config->get('setting.show_timezone'));
$view->withTimezone($this->dates->getTimezone());
$view->withSiteTitle($this->config->get('setting.app_name'));
$view->withFontSubset($this->config->get('langs.'.$this->config->get('app.locale').'.subset', 'latin'));
$view->withAboutApp(Markdown::convertToHtml(Config::get('setting.app_about')));
$view->withAppAnalytics(Config::get('setting.app_analytics'));
$view->withAppAnalyticsGoSquared(Config::get('setting.app_analytics_gs'));
$view->withAppAnalyticsPiwikUrl(Config::get('setting.app_analytics_piwik_url'));
$view->withAppAnalyticsPiwikSiteId(Config::get('setting.app_analytics_piwik_site_id'));
$view->withAppBanner(Config::get('setting.app_banner'));
$view->withAppBannerStyleFullWidth(Config::get('setting.style_fullwidth_header'));
$view->withAppBannerType(Config::get('setting.app_banner_type'));
$view->withAppDomain(Config::get('setting.app_domain'));
$view->withAppGraphs(Config::get('setting.display_graphs'));
$view->withAppLocale(Config::get('setting.app_locale'));
$view->withAppStylesheet(Config::get('setting.stylesheet'));
$view->withAppUrl(Config::get('app.url'));
$view->withAppHeader(Config::get('setting.header'));
$view->withAppFooter(Config::get('setting.footer'));
$view->withAppName(Config::get('setting.app_name'));
$view->withShowSupport($support = Config::get('setting.show_support'));
$view->withAutomaticLocalization(Config::get('setting.automatic_localization'));
$view->withSiteTitle(Config::get('setting.app_name'));
$view->withFontSubset(Config::get('langs.'.Config::get('app.locale').'.subset', 'latin'));
}
}

View File

@@ -30,7 +30,7 @@ class DashboardComposer
{
$view->withIncidentCount(Incident::notScheduled()->count());
$view->withIncidentTemplateCount(IncidentTemplate::count());
$view->withComponentCount(Component::all()->count());
$view->withComponentCount(Component::count());
$view->withSubscriberCount(Subscriber::isVerified()->count());
}
}

View File

@@ -12,30 +12,11 @@
namespace CachetHQ\Cachet\Composers;
use CachetHQ\Cachet\Models\Metric;
use Illuminate\Contracts\Config\Repository;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Facades\Config;
class MetricsComposer
{
/**
* The illuminate config instance.
*
* @var \Illuminate\Contracts\Config\Repository
*/
protected $config;
/**
* Create a new metrics composer.
*
* @param \Illuminate\Contracts\Config\Repository $config
*
* @return void
*/
public function __construct(Repository $config)
{
$this->config = $config;
}
/**
* Metrics view composer.
*
@@ -46,7 +27,7 @@ class MetricsComposer
public function compose(View $view)
{
$metrics = null;
if ($displayMetrics = $this->config->get('setting.display_graphs')) {
if ($displayMetrics = Config::get('setting.display_graphs')) {
$metrics = Metric::displayable()->orderBy('order')->orderBy('id')->get();
}

View File

@@ -11,30 +11,11 @@
namespace CachetHQ\Cachet\Composers;
use Illuminate\Contracts\Config\Repository;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Facades\Config;
class ThemeComposer
{
/**
* The illuminate config instance.
*
* @var \Illuminate\Contracts\Config\Repository
*/
protected $config;
/**
* Create a new theme composer.
*
* @param \Illuminate\Contracts\Config\Repository $config
*
* @return void
*/
public function __construct(Repository $config)
{
$this->config = $config;
}
/**
* Bind data to the view.
*
@@ -45,17 +26,17 @@ class ThemeComposer
public function compose(View $view)
{
// Theme colors.
$view->withThemeBackgroundColor($this->config->get('setting.style_background_color', '#F0F3F4'));
$view->withThemeBackgroundFills($this->config->get('setting.style_background_fills', '#FFFFFF'));
$view->withThemeBannerBackgroundColor($this->config->get('setting.style_banner_background_color', ''));
$view->withThemeBannerPadding($this->config->get('setting.style_banner_padding', '40px 0'));
$view->withThemeTextColor($this->config->get('setting.style_text_color', '#333333'));
$view->withThemeReds($this->config->get('setting.style_reds', '#ff6f6f'));
$view->withThemeBlues($this->config->get('setting.style_blues', '#3498db'));
$view->withThemeGreens($this->config->get('setting.style_greens', '#7ED321'));
$view->withThemeYellows($this->config->get('setting.style_yellows', '#F7CA18'));
$view->withThemeOranges($this->config->get('setting.style_oranges', '#FF8800'));
$view->withThemeMetrics($this->config->get('setting.style_metrics', '#0dccc0'));
$view->withThemeLinks($this->config->get('setting.style_links', '#7ED321'));
$view->withThemeBackgroundColor(Config::get('setting.style_background_color', '#F0F3F4'));
$view->withThemeBackgroundFills(Config::get('setting.style_background_fills', '#FFFFFF'));
$view->withThemeBannerBackgroundColor(Config::get('setting.style_banner_background_color', ''));
$view->withThemeBannerPadding(Config::get('setting.style_banner_padding', '40px 0'));
$view->withThemeTextColor(Config::get('setting.style_text_color', '#333333'));
$view->withThemeReds(Config::get('setting.style_reds', '#ff6f6f'));
$view->withThemeBlues(Config::get('setting.style_blues', '#3498db'));
$view->withThemeGreens(Config::get('setting.style_greens', '#7ED321'));
$view->withThemeYellows(Config::get('setting.style_yellows', '#F7CA18'));
$view->withThemeOranges(Config::get('setting.style_oranges', '#FF8800'));
$view->withThemeMetrics(Config::get('setting.style_metrics', '#0dccc0'));
$view->withThemeLinks(Config::get('setting.style_links', '#7ED321'));
}
}

View File

@@ -13,30 +13,12 @@ namespace CachetHQ\Cachet\Composers;
use DateTime;
use DateTimeZone;
use Illuminate\Contracts\Config\Repository;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Config;
class TimezoneLocaleComposer
{
/**
* The illuminate config instance.
*
* @var \Illuminate\Contracts\Config\Repository
*/
protected $config;
/**
* Create a new timezone locale composer.
*
* @param \Illuminate\Contracts\Config\Repository $config
*
* @return void
*/
public function __construct(Repository $config)
{
$this->config = $config;
}
/**
* Timezones and Locales composer.
*
@@ -46,12 +28,12 @@ class TimezoneLocaleComposer
*/
public function compose(View $view)
{
$enabledLangs = $this->config->get('langs');
$enabledLangs = Config::get('langs');
$langs = array_map(function ($lang) use ($enabledLangs) {
$locale = basename($lang);
return [$locale => $enabledLangs[$locale]];
return [$locale => Arr::get($enabledLangs, $locale)];
}, glob(base_path('resources/lang').'/*'));
$langs = call_user_func_array('array_merge', $langs);

View File

@@ -163,13 +163,6 @@ class DemoSeederCommand extends Command
'order' => 1,
'group_id' => 2,
'link' => 'https://styleci.io',
], [
'name' => 'Patreon Page',
'description' => 'Support future development of Cachet.',
'status' => 1,
'order' => 0,
'group_id' => 0,
'link' => 'https://patreon.com/jbrooksuk',
],
];

View File

@@ -11,7 +11,6 @@
namespace CachetHQ\Cachet\Dates;
use DateTimeZone;
use Jenssegers\Date\Date;
class DateFactory
@@ -89,17 +88,4 @@ class DateFactory
{
return (new Date($time))->setTimezone($this->cachetTimezone);
}
/**
* Return the abbreviated timezone.
*
* @return string
*/
public function getTimezone()
{
$dateTime = new Date();
$dateTime->setTimeZone(new DateTimeZone($this->cachetTimezone));
return $dateTime->format('T');
}
}

View File

@@ -14,6 +14,9 @@ namespace CachetHQ\Cachet\Foundation\Providers;
use AltThree\Bus\Dispatcher;
use CachetHQ\Cachet\Bus\Middleware\UseDatabaseTransactions;
use CachetHQ\Cachet\Dates\DateFactory;
use CachetHQ\Cachet\Integrations\Credits;
use CachetHQ\Cachet\Integrations\Feed;
use CachetHQ\Cachet\Integrations\Releases;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Str;
@@ -52,6 +55,9 @@ class AppServiceProvider extends ServiceProvider
public function register()
{
$this->registerDateFactory();
$this->registerCredits();
$this->registerFeed();
$this->registerReleases();
}
/**
@@ -68,4 +74,47 @@ class AppServiceProvider extends ServiceProvider
return new DateFactory($appTimezone, $cacheTimezone);
});
}
/**
* Register the credits class.
*
* @return void
*/
protected function registerCredits()
{
$this->app->singleton(Credits::class, function ($app) {
$cache = $app['cache.store'];
return new Credits($cache);
});
}
/**
* Register the feed class.
*
* @return void
*/
protected function registerFeed()
{
$this->app->singleton(Feed::class, function ($app) {
$cache = $app['cache.store'];
return new Feed($cache);
});
}
/**
* Register the releases class.
*
* @return void
*/
protected function registerReleases()
{
$this->app->singleton(Releases::class, function ($app) {
$cache = $app['cache.store'];
$token = $app['config']->get('services.github.token');
return new Releases($cache, $token);
});
}
}

View File

@@ -48,9 +48,6 @@ class EventServiceProvider extends ServiceProvider
'CachetHQ\Cachet\Bus\Events\Incident\IncidentWasUpdatedEvent' => [
//
],
'CachetHQ\Cachet\Bus\Events\Incident\IncidentWasRemovedEvent' => [
//
],
'CachetHQ\Cachet\Bus\Events\Incident\MaintenanceWasScheduledEvent' => [
'CachetHQ\Cachet\Bus\Handlers\Events\Incident\SendMaintenanceEmailNotificationHandler',
],
@@ -93,8 +90,5 @@ class EventServiceProvider extends ServiceProvider
'CachetHQ\Cachet\Bus\Events\User\UserWasInvitedEvent' => [
'CachetHQ\Cachet\Bus\Handlers\Events\User\SendInviteUserEmailHandler',
],
'CachetHQ\Cachet\Bus\Events\User\UserWasRemovedEvent' => [
//
],
];
}

View File

@@ -11,14 +11,8 @@
namespace CachetHQ\Cachet\Foundation\Providers;
use CachetHQ\Cachet\Integrations\Contracts\Credits as CreditsContract;
use CachetHQ\Cachet\Integrations\Contracts\Feed as FeedContract;
use CachetHQ\Cachet\Integrations\Contracts\Releases as ReleasesContract;
use CachetHQ\Cachet\Integrations\Contracts\System as SystemContract;
use CachetHQ\Cachet\Integrations\Core\Credits;
use CachetHQ\Cachet\Integrations\Core\Feed;
use CachetHQ\Cachet\Integrations\Core\System;
use CachetHQ\Cachet\Integrations\GitHub\Releases;
use Illuminate\Contracts\Container\Container;
use Illuminate\Support\ServiceProvider;
@@ -36,39 +30,7 @@ class IntegrationServiceProvider extends ServiceProvider
*/
public function register()
{
$this->registerCredits();
$this->registerFeed();
$this->registerSystem();
$this->registerReleases();
}
/**
* Register the credits class.
*
* @return void
*/
protected function registerCredits()
{
$this->app->singleton(CreditsContract::class, function ($app) {
$cache = $app['cache.store'];
return new Credits($cache);
});
}
/**
* Register the feed class.
*
* @return void
*/
protected function registerFeed()
{
$this->app->singleton(FeedContract::class, function ($app) {
$cache = $app['cache.store'];
return new Feed($cache);
});
}
/**
@@ -82,19 +44,4 @@ class IntegrationServiceProvider extends ServiceProvider
return new System();
});
}
/**
* Register the releases class.
*
* @return void
*/
protected function registerReleases()
{
$this->app->singleton(ReleasesContract::class, function ($app) {
$cache = $app['cache.store'];
$token = $app['config']->get('services.github.token');
return new Releases($cache, $token);
});
}
}

View File

@@ -88,7 +88,7 @@ class ComponentController extends AbstractApiController
$tags = preg_split('/ ?, ?/', Binput::get('tags'));
// For every tag, do we need to create it?
$componentTags = array_map(function ($taggable) use ($component) {
$componentTags = array_map(function ($taggable) {
return Tag::firstOrCreate([
'name' => $taggable,
])->id;
@@ -128,7 +128,7 @@ class ComponentController extends AbstractApiController
$tags = preg_split('/ ?, ?/', Binput::get('tags'));
// For every tag, do we need to create it?
$componentTags = array_map(function ($taggable) use ($component) {
$componentTags = array_map(function ($taggable) {
return Tag::firstOrCreate(['name' => $taggable])->id;
}, $tags);

View File

@@ -11,8 +11,8 @@
namespace CachetHQ\Cachet\Http\Controllers\Api;
use CachetHQ\Cachet\Integrations\Contracts\Releases;
use CachetHQ\Cachet\Integrations\Contracts\System;
use CachetHQ\Cachet\Integrations\Releases;
/**
* This is the general api controller.
@@ -38,7 +38,7 @@ class GeneralController extends AbstractApiController
*/
public function version()
{
$latest = app()->make(Releases::class)->latest();
$latest = app(Releases::class)->latest();
return $this->setMetaData([
'on_latest' => version_compare(CACHET_VERSION, $latest['tag_name']) === 1,
@@ -55,6 +55,9 @@ class GeneralController extends AbstractApiController
{
$system = app()->make(System::class)->getStatus();
return $this->item($system['system_message']);
return $this->item([
'status' => $system['system_status'],
'message' => $system['system_message'],
]);
}
}

View File

@@ -17,7 +17,6 @@ use CachetHQ\Cachet\Bus\Commands\Subscriber\UnsubscribeSubscriptionCommand;
use CachetHQ\Cachet\Models\Subscriber;
use CachetHQ\Cachet\Models\Subscription;
use GrahamCampbell\Binput\Facades\Binput;
use Illuminate\Contracts\Config\Repository;
use Illuminate\Database\QueryException;
use Illuminate\Support\Facades\Request;
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
@@ -49,10 +48,12 @@ class SubscriberController extends AbstractApiController
*/
public function postSubscribers()
{
$verified = Binput::get('verify', app(Repository::class)->get('setting.skip_subscriber_verification'));
try {
$subscriber = dispatch(new SubscribeSubscriberCommand(Binput::get('email'), $verified, Binput::get('components')));
$subscriber = dispatch(new SubscribeSubscriberCommand(
Binput::get('email'),
Binput::get('verify', false),
Binput::get('components', null)
));
} catch (QueryException $e) {
throw new BadRequestHttpException();
}

View File

@@ -148,7 +148,7 @@ class ComponentController extends Controller
$tags = preg_split('/ ?, ?/', $tags);
// For every tag, do we need to create it?
$componentTags = array_map(function ($taggable) use ($component) {
$componentTags = array_map(function ($taggable) {
return Tag::firstOrCreate(['name' => $taggable])->id;
}, $tags);
@@ -201,7 +201,7 @@ class ComponentController extends Controller
$tags = preg_split('/ ?, ?/', $tags);
// For every tag, do we need to create it?
$componentTags = array_map(function ($taggable) use ($component) {
$componentTags = array_map(function ($taggable) {
return Tag::firstOrCreate(['name' => $taggable])->id;
}, $tags);

View File

@@ -11,7 +11,7 @@
namespace CachetHQ\Cachet\Http\Controllers\Dashboard;
use CachetHQ\Cachet\Integrations\Contracts\Feed;
use CachetHQ\Cachet\Integrations\Feed;
use CachetHQ\Cachet\Models\Component;
use CachetHQ\Cachet\Models\ComponentGroup;
use CachetHQ\Cachet\Models\Incident;
@@ -85,7 +85,9 @@ class DashboardController extends Controller
$entries = null;
if ($feed = $this->feed->latest()) {
$entries = array_slice($feed->channel->item, 0, 5);
if (is_object($feed)) {
$entries = array_slice($feed->channel->item, 0, 5);
}
}
return View::make('dashboard.index')

View File

@@ -11,7 +11,7 @@
namespace CachetHQ\Cachet\Http\Controllers\Dashboard;
use CachetHQ\Cachet\Integrations\Contracts\Credits;
use CachetHQ\Cachet\Integrations\Credits;
use CachetHQ\Cachet\Models\User;
use CachetHQ\Cachet\Settings\Repository;
use Exception;
@@ -274,6 +274,14 @@ class SettingsController extends Controller
}
}
if (isset($parameters['stylesheet'])) {
if ($stylesheet = Binput::get('stylesheet', null, false, false)) {
$setting->set('stylesheet', $stylesheet);
} else {
$setting->delete('stylesheet');
}
}
if (Binput::hasFile('app_banner')) {
$this->handleUpdateBanner($setting);
}
@@ -284,6 +292,7 @@ class SettingsController extends Controller
'remove_banner',
'header',
'footer',
'stylesheet',
];
try {

View File

@@ -16,7 +16,6 @@ use CachetHQ\Cachet\Bus\Commands\Subscriber\SubscribeSubscriberCommand;
use CachetHQ\Cachet\Bus\Commands\Subscriber\UnsubscribeSubscriberCommand;
use CachetHQ\Cachet\Models\Subscriber;
use GrahamCampbell\Binput\Facades\Binput;
use Illuminate\Contracts\Config\Repository;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\View;
@@ -53,13 +52,11 @@ class SubscriberController extends Controller
*/
public function createSubscriberAction()
{
$verified = app(Repository::class)->get('setting.skip_subscriber_verification');
try {
$subscribers = preg_split("/\r\n|\n|\r/", Binput::get('email'));
foreach ($subscribers as $subscriber) {
dispatch(new SubscribeSubscriberCommand($subscriber, $verified));
dispatch(new SubscribeSubscriberCommand($subscriber));
}
} catch (ValidationException $e) {
return Redirect::route('dashboard.subscribers.add')

View File

@@ -12,8 +12,8 @@
namespace CachetHQ\Cachet\Http\Controllers\Dashboard;
use AltThree\Validator\ValidationException;
use CachetHQ\Cachet\Bus\Commands\User\AddUserCommand;
use CachetHQ\Cachet\Bus\Commands\User\InviteUserCommand;
use CachetHQ\Cachet\Bus\Commands\User\AddTeamMemberCommand;
use CachetHQ\Cachet\Bus\Commands\User\InviteTeamMemberCommand;
use CachetHQ\Cachet\Bus\Commands\User\RemoveUserCommand;
use CachetHQ\Cachet\Models\User;
use GrahamCampbell\Binput\Facades\Binput;
@@ -81,7 +81,7 @@ class TeamController extends Controller
public function postAddUser()
{
try {
dispatch(new AddUserCommand(
dispatch(new AddTeamMemberCommand(
Binput::get('username'),
Binput::get('password'),
Binput::get('email'),
@@ -130,7 +130,7 @@ class TeamController extends Controller
public function postInviteUser()
{
try {
dispatch(new InviteUserCommand(
dispatch(new InviteTeamMemberCommand(
array_unique(array_filter((array) Binput::get('emails')))
));
} catch (ValidationException $e) {

View File

@@ -48,11 +48,11 @@ class SetupController extends Controller
* @var string[]
*/
protected $mailDrivers = [
'smtp' => 'SMTP',
'mail' => 'Mail',
'sendmail' => 'Sendmail',
'mailgun' => 'Mailgun',
'mandrill' => 'Mandrill',
'smtp' => 'SMTP',
'mail' => 'Mail',
'sendmail' => 'Sendmail',
'mailgun' => 'Mailgun',
'mandrill' => 'Mandrill',
// 'ses' => 'Amazon SES', this will be available only if aws/aws-sdk-php is installed
'sparkpost' => 'SparkPost',
'log' => 'Log (Testing)',
@@ -149,7 +149,7 @@ class SetupController extends Controller
return $input->mail_driver === 'smtp';
});
$v->sometimes(['env.mail_address', 'env.mail_username', 'env.mail_password'], 'required', function ($input) {
$v->sometimes(['env.mail_address', 'env.mail_username'], 'required', function ($input) {
return $input->mail_driver !== 'log';
});
@@ -254,7 +254,9 @@ class SetupController extends Controller
$envValue = env($envKey) ?: 'null';
file_put_contents($path, str_replace(
$envKey.'='.$envValue, $envKey.'='.$value, file_get_contents($path)
$envKey.'='.$envValue,
$envKey.'='.$value,
file_get_contents($path)
));
} catch (InvalidPathException $e) {
//

View File

@@ -18,12 +18,10 @@ use CachetHQ\Cachet\Bus\Commands\Subscriber\UnsubscribeSubscriptionCommand;
use CachetHQ\Cachet\Bus\Commands\Subscriber\UpdateSubscriberSubscriptionCommand;
use CachetHQ\Cachet\Bus\Commands\Subscriber\VerifySubscriberCommand;
use CachetHQ\Cachet\Models\Component;
use CachetHQ\Cachet\Models\ComponentGroup;
use CachetHQ\Cachet\Models\Subscriber;
use CachetHQ\Cachet\Models\Subscription;
use GrahamCampbell\Binput\Facades\Binput;
use GrahamCampbell\Markdown\Facades\Markdown;
use Illuminate\Contracts\Config\Repository;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Redirect;
@@ -58,9 +56,10 @@ class SubscribeController extends Controller
{
$email = Binput::get('email');
$subscriptions = Binput::get('subscriptions');
$verified = app(Repository::class)->get('setting.skip_subscriber_verification');
try {
$verified = false;
$subscription = dispatch(new SubscribeSubscriberCommand($email, $verified));
} catch (ValidationException $e) {
return Redirect::route('status-page')
@@ -148,19 +147,15 @@ class SubscribeController extends Controller
}
$subscriber = Subscriber::where('verify_code', '=', $code)->first();
$usedComponentGroups = Component::enabled()->where('group_id', '>', 0)->groupBy('group_id')->pluck('group_id');
$componentGroups = ComponentGroup::whereIn('id', $usedComponentGroups)->orderBy('order')->get();
$ungroupedComponents = Component::enabled()->where('group_id', 0)->orderBy('order')->orderBy('created_at')->get();
if (!$subscriber) {
throw new BadRequestHttpException();
}
return View::make('subscribe.manage')
->withUngroupedComponents($ungroupedComponents)
->withComponents(Component::all())
->withSubscriber($subscriber)
->withSubscriptions($subscriber->subscriptions->pluck('component_id')->all())
->withComponentGroups($componentGroups);
->withSubscriptions($subscriber->subscriptions->pluck('component_id')->all());
}
/**
@@ -185,8 +180,6 @@ class SubscribeController extends Controller
try {
dispatch(new UpdateSubscriberSubscriptionCommand($subscriber, Binput::get('subscriptions')));
} catch (ValidationException $e) {
dd($e->getMessageBag());
return Redirect::route('subscribe.manage', $subscriber->verify_code)
->withInput(Binput::all())
->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('cachet.subscriber.email.failure')))

View File

@@ -131,7 +131,7 @@ class DashboardRoutes
$router->delete('{incident_template}/delete', 'IncidentController@deleteTemplateAction');
});
$router->group(['as' => 'subscribers.', 'prefix' => 'subscribers'], function (Registrar $router) {
$router->group(['as' => 'subscribers.', 'prefix' => 'subscribers'], function (Registrar $router) {
$router->get('/', [
'as' => 'index',
'uses' => 'SubscriberController@showSubscribers',
@@ -144,7 +144,7 @@ class DashboardRoutes
$router->delete('{subscriber}/delete', 'SubscriberController@deleteSubscriberAction');
});
$router->group(['as' => 'metrics.', 'prefix' => 'metrics'], function (Registrar $router) {
$router->group(['as' => 'metrics.', 'prefix' => 'metrics'], function (Registrar $router) {
$router->get('/', [
'as' => 'index',
'uses' => 'MetricController@showMetrics',

View File

@@ -1,27 +0,0 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Integrations\Contracts;
/**
* This is the credits interface.
*
* @author James Brooks <james@alt-three.com>
*/
interface Credits
{
/**
* Returns the latest credits.
*
* @return array|null
*/
public function latest();
}

View File

@@ -1,27 +0,0 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Integrations\Contracts;
/**
* This is the feed interface.
*
* @author James Brooks <james@alt-three.com>
*/
interface Feed
{
/**
* Returns the latest entries.
*
* @return array|null
*/
public function latest();
}

View File

@@ -1,27 +0,0 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Integrations\Contracts;
/**
* This is the releases interface.
*
* @author James Brooks <james@alt-three.com>
*/
interface Releases
{
/**
* Returns the latest release.
*
* @return string
*/
public function latest();
}

View File

@@ -9,14 +9,13 @@
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Integrations\Core;
namespace CachetHQ\Cachet\Integrations;
use CachetHQ\Cachet\Integrations\Contracts\Credits as CreditsContract;
use Exception;
use GuzzleHttp\Client;
use Illuminate\Contracts\Cache\Repository;
class Credits implements CreditsContract
class Credits
{
/**
* The default url.

View File

@@ -9,9 +9,8 @@
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Integrations\Core;
namespace CachetHQ\Cachet\Integrations;
use CachetHQ\Cachet\Integrations\Contracts\Feed as FeedContract;
use Exception;
use GuzzleHttp\Client;
use Illuminate\Contracts\Cache\Repository;
@@ -21,7 +20,7 @@ use Illuminate\Contracts\Cache\Repository;
*
* @author James Brooks <james@alt-three.com>
*/
class Feed implements FeedContract
class Feed
{
/**
* The default url.

View File

@@ -9,13 +9,12 @@
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Integrations\GitHub;
namespace CachetHQ\Cachet\Integrations;
use CachetHQ\Cachet\Integrations\Contracts\Releases as ReleasesContract;
use GuzzleHttp\Client;
use Illuminate\Contracts\Cache\Repository;
class Releases implements ReleasesContract
class Releases
{
/**
* The default url.

View File

@@ -22,7 +22,10 @@ use McCool\LaravelAutoPresenter\HasPresenter;
class Component extends Model implements HasPresenter
{
use SearchableTrait, SoftDeletes, SortableTrait, ValidatingTrait;
use SearchableTrait;
use SoftDeletes;
use SortableTrait;
use ValidatingTrait;
/**
* List of attributes that have default values.

View File

@@ -20,7 +20,9 @@ use McCool\LaravelAutoPresenter\HasPresenter;
class ComponentGroup extends Model implements HasPresenter
{
use SearchableTrait, SortableTrait, ValidatingTrait;
use SearchableTrait;
use SortableTrait;
use ValidatingTrait;
/**
* The model's attributes.
@@ -99,7 +101,7 @@ class ComponentGroup extends Model implements HasPresenter
*/
public function components()
{
return $this->hasMany(Component::class, 'group_id', 'id')->orderBy('order');
return $this->hasMany(Component::class, 'group_id', 'id');
}
/**
@@ -119,7 +121,7 @@ class ComponentGroup extends Model implements HasPresenter
*/
public function enabled_components()
{
return $this->components()->enabled();
return $this->components()->enabled()->orderBy('order');
}
/**

View File

@@ -23,7 +23,10 @@ use McCool\LaravelAutoPresenter\HasPresenter;
class Incident extends Model implements HasPresenter
{
use SearchableTrait, SoftDeletes, SortableTrait, ValidatingTrait;
use SearchableTrait;
use SoftDeletes;
use SortableTrait;
use ValidatingTrait;
/**
* The attributes that should be casted to native types.

View File

@@ -12,7 +12,6 @@
namespace CachetHQ\Cachet\Models;
use AltThree\Validator\ValidatingTrait;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;
@@ -67,7 +66,7 @@ class IncidentTemplate extends Model
*
* @return \Illuminate\Database\Query\Builder
*/
public function scopeForSlug(Builder $query, $slug)
public function scopeForSlug($query, $slug)
{
return $query->where('slug', $slug);
}

View File

@@ -20,7 +20,8 @@ use McCool\LaravelAutoPresenter\HasPresenter;
class Metric extends Model implements HasPresenter
{
use SortableTrait, ValidatingTrait;
use SortableTrait;
use ValidatingTrait;
/**
* The calculation type of sum.

View File

@@ -34,10 +34,11 @@ trait SearchableTrait
return $query;
}
if (!array_intersect(array_keys($search), $this->searchable)) {
$allowed_search = array_intersect_key($search, array_flip($this->searchable));
if (!$allowed_search) {
return $query;
}
return $query->where($search);
return $query->where($allowed_search);
}
}

View File

@@ -22,7 +22,9 @@ use Illuminate\Support\Facades\Hash;
class User extends Model implements AuthenticatableContract, CanResetPasswordContract
{
use Authenticatable, CanResetPassword, ValidatingTrait;
use Authenticatable;
use CanResetPassword;
use ValidatingTrait;
/**
* The admin level of user.
@@ -116,7 +118,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon
*/
public function getGravatarAttribute($size = 200)
{
return sprintf('https://www.gravatar.com/avatar/%s?size=%d', md5($this->email), $size);
return sprintf('https://www.gravatar.com/avatar/%s?size=%d', md5(strtolower($this->email)), $size);
}
/**

View File

@@ -97,27 +97,4 @@ class ComponentGroupPresenter extends BasePresenter implements Arrayable
'lowest_human_status' => $this->lowest_human_status(),
]);
}
/**
* Determine if any of the contained components have active subscriptions.
*
* @return bool
*/
public function has_subscriber($subscriptions)
{
$enabled_components = $this->wrappedObject->enabled_components()->orderBy('order')->pluck('id')->toArray();
$intersected = array_intersect($enabled_components, $subscriptions);
return count($intersected) != 0;
}
/**
* Determine the class for collapsed/uncollapsed groups on the subscription form.
*
* @return string
*/
public function collapse_class_with_subscriptions($subscriptions)
{
return $this->has_subscriber($subscriptions) ? 'ion-ios-minus-outline' : 'ion-ios-plus-outline';
}
}

View File

@@ -47,6 +47,20 @@ abstract class AbstractMetricRepository
$this->config = $config;
}
/**
* Get the table names prefix.
*
* @return string
*/
protected function getPrefix()
{
$driver = $this->config->get('database.default');
$connection = $this->config->get('database.connections.'.$driver);
$prefix = $connection['prefix'];
return $prefix;
}
/**
* Get the metrics table name.
*
@@ -54,10 +68,20 @@ abstract class AbstractMetricRepository
*/
protected function getTableName()
{
$driver = $this->config->get('database.default');
$connection = $this->config->get('database.connections.'.$driver);
$prefix = $connection['prefix'];
$prefix = $this->getPrefix();
return $prefix.'metrics';
}
/**
* Get the metric points table name.
*
* @return string
*/
protected function getMetricPointsTableName()
{
$prefix = $this->getPrefix();
return $prefix.'metric_points';
}
}

View File

@@ -36,6 +36,7 @@ class MySqlRepository extends AbstractMetricRepository implements MetricInterfac
{
$dateTime = (new Date())->sub(new DateInterval('PT'.$hour.'H'))->sub(new DateInterval('PT'.$minute.'M'));
$timeInterval = $dateTime->format('YmdHi');
$metricPointsTableName = $this->getMetricPointsTableName();
if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) {
$queryType = 'SUM(mp.`value` * mp.`counter`) AS `value`';
@@ -45,7 +46,7 @@ class MySqlRepository extends AbstractMetricRepository implements MetricInterfac
$value = 0;
$points = DB::select("SELECT {$queryType} FROM {$this->getTableName()} m INNER JOIN metric_points mp ON m.id = mp.metric_id WHERE m.id = :metricId AND DATE_FORMAT(mp.`created_at`, '%Y%m%d%H%i') = :timeInterval GROUP BY HOUR(mp.`created_at`), MINUTE(mp.`created_at`)", [
$points = DB::select("SELECT {$queryType} FROM {$this->getTableName()} m INNER JOIN $metricPointsTableName mp ON m.id = mp.metric_id WHERE m.id = :metricId AND DATE_FORMAT(mp.`created_at`, '%Y%m%d%H%i') = :timeInterval GROUP BY HOUR(mp.`created_at`), MINUTE(mp.`created_at`)", [
'metricId' => $metric->id,
'timeInterval' => $timeInterval,
]);
@@ -73,6 +74,7 @@ class MySqlRepository extends AbstractMetricRepository implements MetricInterfac
{
$dateTime = (new Date())->sub(new DateInterval('PT'.$hour.'H'));
$hourInterval = $dateTime->format('YmdH');
$metricPointsTableName = $this->getMetricPointsTableName();
if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) {
$queryType = 'SUM(mp.`value` * mp.`counter`) AS `value`';
@@ -82,7 +84,7 @@ class MySqlRepository extends AbstractMetricRepository implements MetricInterfac
$value = 0;
$points = DB::select("SELECT {$queryType} FROM {$this->getTableName()} m INNER JOIN metric_points mp ON m.id = mp.metric_id WHERE m.id = :metricId AND DATE_FORMAT(mp.`created_at`, '%Y%m%d%H') = :hourInterval GROUP BY HOUR(mp.`created_at`)", [
$points = DB::select("SELECT {$queryType} FROM {$this->getTableName()} m INNER JOIN $metricPointsTableName mp ON m.id = mp.metric_id WHERE m.id = :metricId AND DATE_FORMAT(mp.`created_at`, '%Y%m%d%H') = :hourInterval GROUP BY HOUR(mp.`created_at`)", [
'metricId' => $metric->id,
'hourInterval' => $hourInterval,
]);
@@ -108,6 +110,7 @@ class MySqlRepository extends AbstractMetricRepository implements MetricInterfac
public function getPointsForDayInWeek(Metric $metric, $day)
{
$dateTime = (new Date())->sub(new DateInterval('P'.$day.'D'));
$metricPointsTableName = $this->getMetricPointsTableName();
if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) {
$queryType = 'SUM(mp.`value` * mp.`counter`) AS `value`';
@@ -117,7 +120,7 @@ class MySqlRepository extends AbstractMetricRepository implements MetricInterfac
$value = 0;
$points = DB::select("SELECT {$queryType} FROM {$this->getTableName()} m INNER JOIN metric_points mp ON m.id = mp.metric_id WHERE m.id = :metricId AND mp.`created_at` BETWEEN DATE_SUB(mp.`created_at`, INTERVAL 1 WEEK) AND DATE_ADD(NOW(), INTERVAL 1 DAY) AND DATE_FORMAT(mp.`created_at`, '%Y%m%d') = :timeInterval GROUP BY DATE_FORMAT(mp.`created_at`, '%Y%m%d')", [
$points = DB::select("SELECT {$queryType} FROM {$this->getTableName()} m INNER JOIN $metricPointsTableName mp ON m.id = mp.metric_id WHERE m.id = :metricId AND mp.`created_at` BETWEEN DATE_SUB(mp.`created_at`, INTERVAL 1 WEEK) AND DATE_ADD(NOW(), INTERVAL 1 DAY) AND DATE_FORMAT(mp.`created_at`, '%Y%m%d') = :timeInterval GROUP BY DATE_FORMAT(mp.`created_at`, '%Y%m%d')", [
'metricId' => $metric->id,
'timeInterval' => $dateTime->format('Ymd'),
]);

View File

@@ -34,19 +34,20 @@ class PgSqlRepository extends AbstractMetricRepository implements MetricInterfac
*/
public function getPointsLastHour(Metric $metric, $hour, $minute)
{
$metricPointsTableName = $this->getMetricPointsTableName();
$dateTime = (new Date())->sub(new DateInterval('PT'.$hour.'H'))->sub(new DateInterval('PT'.$minute.'M'));
// Default metrics calculations.
if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
} elseif ($metric->calc_type == Metric::CALC_AVG) {
$queryType = 'avg(metric_points.value * metric_points.counter)';
$queryType = "avg($metricPointsTableName.value * $metricPointsTableName.counter)";
} else {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
}
$value = 0;
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN metric_points ON metric_points.metric_id = m.id WHERE m.id = :metricId AND to_char(metric_points.created_at, 'YYYYMMDDHH24MI') = :timeInterval GROUP BY to_char(metric_points.created_at, 'HHMI')", [
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN $metricPointsTableName ON $metricPointsTableName.metric_id = m.id WHERE m.id = :metricId AND to_char($metricPointsTableName.created_at, 'YYYYMMDDHH24MI') = :timeInterval GROUP BY to_char($metricPointsTableName.created_at, 'HHMI')", [
'metricId' => $metric->id,
'timeInterval' => $dateTime->format('YmdHi'),
]);
@@ -73,18 +74,19 @@ class PgSqlRepository extends AbstractMetricRepository implements MetricInterfac
public function getPointsByHour(Metric $metric, $hour)
{
$dateTime = (new Date())->sub(new DateInterval('PT'.$hour.'H'));
$metricPointsTableName = $this->getMetricPointsTableName();
// Default metrics calculations.
if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
} elseif ($metric->calc_type == Metric::CALC_AVG) {
$queryType = 'avg(metric_points.value * metric_points.counter)';
$queryType = "avg($metricPointsTableName.value * $metricPointsTableName.counter)";
} else {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
}
$value = 0;
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN metric_points ON metric_points.metric_id = m.id WHERE metric_points.metric_id = :metricId AND to_char(metric_points.created_at, 'YYYYMMDDHH24') = :timeInterval GROUP BY to_char(metric_points.created_at, 'H')", [
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN $metricPointsTableName ON $metricPointsTableName.metric_id = m.id WHERE $metricPointsTableName.metric_id = :metricId AND to_char($metricPointsTableName.created_at, 'YYYYMMDDHH24') = :timeInterval GROUP BY to_char($metricPointsTableName.created_at, 'H')", [
'metricId' => $metric->id,
'timeInterval' => $dateTime->format('YmdH'),
]);
@@ -110,6 +112,7 @@ class PgSqlRepository extends AbstractMetricRepository implements MetricInterfac
public function getPointsForDayInWeek(Metric $metric, $day)
{
$dateTime = (new Date())->sub(new DateInterval('P'.$day.'D'));
$metricPointsTableName = $this->getMetricPointsTableName();
if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) {
$queryType = 'sum(mp.value * mp.counter) AS value';
@@ -118,7 +121,7 @@ class PgSqlRepository extends AbstractMetricRepository implements MetricInterfac
}
$value = 0;
$points = DB::select("SELECT {$queryType} FROM {$this->getTableName()} m INNER JOIN metric_points mp ON m.id = mp.metric_id WHERE m.id = :metricId AND mp.created_at BETWEEN (mp.created_at - interval '1 week') AND (now() + interval '1 day') AND to_char(mp.created_at, 'YYYYMMDD') = :timeInterval GROUP BY to_char(mp.created_at, 'YYYYMMDD')", [
$points = DB::select("SELECT {$queryType} FROM {$this->getTableName()} m INNER JOIN $metricPointsTableName mp ON m.id = mp.metric_id WHERE m.id = :metricId AND mp.created_at BETWEEN (mp.created_at - interval '1 week') AND (now() + interval '1 day') AND to_char(mp.created_at, 'YYYYMMDD') = :timeInterval GROUP BY to_char(mp.created_at, 'YYYYMMDD')", [
'metricId' => $metric->id,
'timeInterval' => $dateTime->format('Ymd'),
]);

View File

@@ -30,18 +30,19 @@ class SqliteRepository extends AbstractMetricRepository implements MetricInterfa
public function getPointsLastHour(Metric $metric, $hour, $minute)
{
$dateTime = (new Date())->sub(new DateInterval('PT'.$hour.'H'))->sub(new DateInterval('PT'.$minute.'M'));
$metricPointsTableName = $this->getMetricPointsTableName();
// Default metrics calculations.
if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
} elseif ($metric->calc_type == Metric::CALC_AVG) {
$queryType = 'avg(metric_points.value * metric_points.counter)';
$queryType = "avg($metricPointsTableName.value * $metricPointsTableName.counter)";
} else {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
}
$value = 0;
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN metric_points ON metric_points.metric_id = m.id WHERE m.id = :metricId AND strftime('%Y%m%d%H%M', metric_points.created_at) = :timeInterval GROUP BY strftime('%H%M', metric_points.created_at)", [
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN $metricPointsTableName ON $metricPointsTableName.metric_id = m.id WHERE m.id = :metricId AND strftime('%Y%m%d%H%M', $metricPointsTableName.created_at) = :timeInterval GROUP BY strftime('%H%M', $metricPointsTableName.created_at)", [
'metricId' => $metric->id,
'timeInterval' => $dateTime->format('YmdHi'),
]);
@@ -68,18 +69,19 @@ class SqliteRepository extends AbstractMetricRepository implements MetricInterfa
public function getPointsByHour(Metric $metric, $hour)
{
$dateTime = (new Date())->sub(new DateInterval('PT'.$hour.'H'));
$metricPointsTableName = $this->getMetricPointsTableName();
// Default metrics calculations.
if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
} elseif ($metric->calc_type == Metric::CALC_AVG) {
$queryType = 'avg(metric_points.value * metric_points.counter)';
$queryType = "avg($metricPointsTableName.value * $metricPointsTableName.counter)";
} else {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
}
$value = 0;
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN metric_points ON metric_points.metric_id = m.id WHERE m.id = :metricId AND strftime('%Y%m%d%H', metric_points.created_at) = :timeInterval GROUP BY strftime('%H', metric_points.created_at)", [
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN $metricPointsTableName ON $metricPointsTableName.metric_id = m.id WHERE m.id = :metricId AND strftime('%Y%m%d%H', $metricPointsTableName.created_at) = :timeInterval GROUP BY strftime('%H', $metricPointsTableName.created_at)", [
'metricId' => $metric->id,
'timeInterval' => $dateTime->format('YmdH'),
]);
@@ -105,18 +107,19 @@ class SqliteRepository extends AbstractMetricRepository implements MetricInterfa
public function getPointsForDayInWeek(Metric $metric, $day)
{
$dateTime = (new Date())->sub(new DateInterval('P'.$day.'D'));
$metricPointsTableName = $this->getMetricPointsTableName();
// Default metrics calculations.
if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
} elseif ($metric->calc_type == Metric::CALC_AVG) {
$queryType = 'avg(metric_points.value * metric_points.counter)';
$queryType = "avg($metricPointsTableName.value * $metricPointsTableName.counter)";
} else {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
}
$value = 0;
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN metric_points ON metric_points.metric_id = m.id WHERE m.id = :metricId AND metric_points.created_at > date('now', '-7 day') AND strftime('%Y%m%d', metric_points.created_at) = :timeInterval GROUP BY strftime('%Y%m%d', metric_points.created_at)", [
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN $metricPointsTableName ON $metricPointsTableName.metric_id = m.id WHERE m.id = :metricId AND $metricPointsTableName.created_at > date('now', '-7 day') AND strftime('%Y%m%d', $metricPointsTableName.created_at) = :timeInterval GROUP BY strftime('%Y%m%d', $metricPointsTableName.created_at)", [
'metricId' => $metric->id,
'timeInterval' => $dateTime->format('Ymd'),
]);

View File

@@ -83,6 +83,13 @@ class CommandSubscriber
$command->line('Settings cache cleared!');
// SQLite does not backup.
if ($this->config->get('database.default') === 'sqlite') {
$command->line('Backup skipped: SQLite is not supported.');
return;
}
$command->line('Backing up database...');
try {

View File

@@ -14,7 +14,6 @@ use Illuminate\Support\Facades\Request;
use Jenssegers\Date\Date;
if (!function_exists('set_active')) {
/**
* Set active class if request is in path.
*

View File

@@ -20,26 +20,29 @@
],
"require": {
"php": ">=5.5.9",
"laravel/framework": "5.2.39",
"ext-xml": "*",
"alt-three/badger": "^3.1",
"alt-three/bus": "^1.1",
"alt-three/emoji": "^3.1",
"alt-three/throttle": "^1.0",
"alt-three/validator": "^1.5",
"aws/aws-sdk-php": "^3.7",
"backup-manager/laravel": "^1.1",
"backup-manager/laravel": "dev-master#df53f9c9d8c6be5d7a2638f45d54b8fb7bc51e2b",
"barryvdh/laravel-cors": "^0.8",
"doctrine/dbal": "^2.5",
"fedeisas/laravel-mail-css-inliner": "^1.5",
"fideloper/proxy": "^3.1",
"graham-campbell/binput": "^3.4",
"graham-campbell/core": "^5.1",
"graham-campbell/exceptions": "^8.6",
"graham-campbell/exceptions": "^9.4",
"graham-campbell/markdown": "^6.1",
"guzzlehttp/guzzle": "^6.2.1",
"guzzlehttp/guzzle": "6.3.3",
"guzzlehttp/psr7": "1.4.2",
"jenssegers/date": "^3.2",
"laravel/framework": "5.2.39",
"mccool/laravel-auto-presenter": "^4.3",
"pragmarx/google2fa": "^0.7.1",
"predis/predis": "^1.1",
"rcrowe/twigbridge": "^0.9.2",
"roumen/feed": "^2.10.4"
},
@@ -48,7 +51,7 @@
"filp/whoops": "^2.1",
"fzaninotto/faker": "^1.6",
"graham-campbell/testbench-core": "^1.1",
"mockery/mockery": "0.9.5",
"mockery/mockery": "0.9.9",
"phpunit/phpunit": "4.8.21",
"symfony/css-selector": "^3.0",
"symfony/dom-crawler": "^3.0"
@@ -98,7 +101,7 @@
},
"extra": {
"branch-alias": {
"dev-master": "2.5-dev"
"dev-master": "2.3-dev"
}
},
"minimum-stability": "dev",

1124
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -234,8 +234,8 @@ return [
'Validator' => 'Illuminate\Support\Facades\Validator',
'View' => 'Illuminate\Support\Facades\View',
'Binput' => 'GrahamCampbell\Binput\Facades\Binput',
'Str' => 'Illuminate\Support\Str',
'Binput' => 'GrahamCampbell\Binput\Facades\Binput',
'Str' => 'Illuminate\Support\Str',
],

View File

@@ -76,25 +76,25 @@ return [
],
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', null),
'database' => env('DB_DATABASE', null),
'username' => env('DB_USERNAME', null),
'password' => env('DB_PASSWORD', null),
'port' => env('DB_PORT', '5432'),
'charset' => 'utf8',
'prefix' => env('DB_PREFIX', null),
'schema' => env('DB_SCHEMA', 'public'),
'driver' => 'pgsql',
'host' => env('DB_HOST', null),
'database' => env('DB_DATABASE', null),
'username' => env('DB_USERNAME', null),
'password' => env('DB_PASSWORD', null),
'port' => env('DB_PORT', '5432'),
'charset' => 'utf8',
'prefix' => env('DB_PREFIX', null),
'schema' => env('DB_SCHEMA', 'public'),
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', null),
'database' => env('DB_DATABASE', null),
'username' => env('DB_USERNAME', null),
'password' => env('DB_PASSWORD', null),
'port' => env('DB_PORT', null),
'prefix' => env('DB_PREFIX', null),
'driver' => 'sqlsrv',
'host' => env('DB_HOST', null),
'database' => env('DB_DATABASE', null),
'username' => env('DB_USERNAME', null),
'password' => env('DB_PASSWORD', null),
'port' => env('DB_PORT', null),
'prefix' => env('DB_PREFIX', null),
],
],

View File

@@ -11,35 +11,35 @@
return [
// Enabled langs
'af' => [
'af' => [
'name' => 'Afrikaans',
'subset' => 'latin',
],
'ar' => [
'ar' => [
'name' => 'Arabic',
'subset' => 'latin',
],
'ca' => [
'ca' => [
'name' => 'Catalan',
'subset' => 'latin',
],
'cs' => [
'cs' => [
'name' => 'Czech',
'subset' => 'latin,latin-ext',
],
'da' => [
'da' => [
'name' => 'Danish',
'subset' => 'latin,latin-ext',
],
'de' => [
'de' => [
'name' => 'Deutsch',
'subset' => 'latin,latin-ext',
],
'el' => [
'el' => [
'name' => 'Greek',
'subset' => 'greek,greek-ext',
],
'en' => [
'en' => [
'name' => 'English',
'subset' => 'latin',
],
@@ -47,55 +47,55 @@ return [
'name' => 'CrowdIn - InContext Localization',
'subset' => 'latin',
],
'es' => [
'es' => [
'name' => 'Español',
'subset' => 'latin,latin-ext',
],
'fa' => [
'fa' => [
'name' => 'Persian',
'subset' => 'latin',
],
'fi' => [
'fi' => [
'name' => 'Finnish',
'subset' => 'latin,latin-ext',
],
'fr' => [
'fr' => [
'name' => 'Français',
'subset' => 'latin,latin-ext',
],
'he' => [
'he' => [
'name' => 'Hebrew',
'subset' => 'latin',
],
'hu' => [
'hu' => [
'name' => 'Hungarian',
'subset' => 'latin,latin-ext',
],
'id' => [
'id' => [
'name' => 'Indonesian',
'subset' => 'latin',
],
'it' => [
'it' => [
'name' => 'Italiano',
'subset' => 'latin,latin-ext',
],
'ja' => [
'ja' => [
'name' => 'Japanese',
'subset' => 'latin',
],
'ko' => [
'ko' => [
'name' => '한글',
'subset' => 'latin',
],
'nl' => [
'nl' => [
'name' => 'Nederlands',
'subset' => 'latin,latin-ext',
],
'no' => [
'no' => [
'name' => 'Norwegian',
'subset' => 'latin,latin-ext',
],
'pl' => [
'pl' => [
'name' => 'Polski',
'subset' => 'latin,latin-ext',
],
@@ -107,19 +107,19 @@ return [
'name' => 'Portuguese, Portugal',
'subset' => 'latin,latin-ext',
],
'ro' => [
'ro' => [
'name' => 'Romanian',
'subset' => 'latin,latin-ext',
],
'ru' => [
'ru' => [
'name' => 'Русский',
'subset' => 'latin,cyrillic',
],
'sq' => [
'sq' => [
'name' => 'Albanian',
'subset' => 'latin,latin-ext',
],
'sr' => [
'sr' => [
'name' => 'Sebrian (Cyrillic)',
'subset' => 'latin,cyrillic,cyrillic-ext',
],
@@ -127,15 +127,15 @@ return [
'name' => 'Swedish',
'subset' => 'latin,latin-ext',
],
'tr' => [
'tr' => [
'name' => 'Turkish',
'subset' => 'latin,latin-ext',
],
'uk' => [
'uk' => [
'name' => 'Ukranian',
'subset' => 'latin,cyrillic-ext',
],
'vi' => [
'vi' => [
'name' => 'Vietnamese',
'subset' => 'latin,vietnamese',
],

View File

@@ -23,27 +23,27 @@ return [
|
*/
'github' => [
'github' => [
'token' => env('GITHUB_TOKEN'),
],
'mailgun' => [
'domain' => env('MAIL_USERNAME'),
'secret' => env('MAIL_PASSWORD'),
],
'mailgun' => [
'domain' => env('MAIL_USERNAME'),
'secret' => env('MAIL_PASSWORD'),
],
'mandrill' => [
'secret' => env('MAIL_PASSWORD'),
],
'mandrill' => [
'secret' => env('MAIL_PASSWORD'),
],
'ses' => [
'key' => env('MAIL_USERNAME'),
'secret' => env('MAIL_PASSWORD'),
'region' => 'us-east-1',
],
'ses' => [
'key' => env('MAIL_USERNAME'),
'secret' => env('MAIL_PASSWORD'),
'region' => 'us-east-1',
],
'sparkpost' => [
'secret' => env('MAIL_PASSWORD'),
],
'sparkpost' => [
'secret' => env('MAIL_PASSWORD'),
],
];

View File

@@ -43,7 +43,7 @@ return [
|
*/
'automatic_localization' => false,
'automatic_localization' => false,
/*
|--------------------------------------------------------------------------
@@ -56,36 +56,4 @@ return [
'show_support' => true,
/*
|--------------------------------------------------------------------------
| Enable External Dependencies
|--------------------------------------------------------------------------
|
| Whether to disable third-party dependencies.
|
*/
'enable_external_dependencies' => true,
/*
|--------------------------------------------------------------------------
| Show the timezone
|--------------------------------------------------------------------------
|
| Whether to show the status page timezone in the footer.
|
*/
'show_timezone' => false,
/*
|--------------------------------------------------------------------------
| Skip subscriber verifications
|--------------------------------------------------------------------------
|
| Whether to allow skipping of subscriber verifications.
|
*/
'skip_subscriber_verification' => false,
];

View File

@@ -28,26 +28,27 @@ return [
*/
'proxies' => [
'173.245.48.0/20',
'103.21.244.0/22',
'103.22.200.0/22',
'103.31.4.0/22',
'104.16.0.0/12',
'108.162.192.0/18',
'131.0.72.0/22',
'141.101.64.0/18',
'162.158.0.0/15',
'172.64.0.0/13',
'173.245.48.0/20',
'188.114.96.0/20',
'108.162.192.0/18',
'190.93.240.0/20',
'188.114.96.0/20',
'197.234.240.0/22',
'198.41.128.0/17',
'199.27.128.0/21',
'162.158.0.0/15',
'104.16.0.0/12',
'172.64.0.0/13',
'131.0.72.0/22',
'2400:cb00::/32',
'2405:8100::/32',
'2405:b500::/32',
'2606:4700::/32',
'2803:f800::/32',
'2405:b500::/32',
'2405:8100::/32',
'2a06:98c0::/29',
'2c0f:f248::/32',
],
/*

10
crowdin.yml Normal file
View File

@@ -0,0 +1,10 @@
files:
-
source: '/resources/lang/en/*.php'
translation: '/resources/lang/%locale%/%original_file_name%'
languages_mapping:
locale:
'en-ES': 'es'
'fa-IR': 'fa'
'ko-KR': 'kr'
'de-DE': 'de'

View File

@@ -1,5 +1,8 @@
var elixir = require('laravel-elixir');
elixir.config.production = true;
elixir.config.sourcemaps = false;
elixir(function (mix) {
mix
.sass('app.scss', 'public/dist/css/app.css')

View File

@@ -27,7 +27,6 @@
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="APP_DEBUG" value="true"/>
<env name="APP_URL" value="http://localhost"/>
<env name="APP_KEY" value="GCvcgDKMRIN498g52zfVEd9CxDs6PR7q"/>
<env name="DB_DRIVER" value="sqlite"/>

23
public/build/dist/js/all-83303e6904.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
{
"dist/css/all.css": "dist/css/all-2812406e36.css",
"dist/js/all.js": "dist/js/all-b2c62d4294.js"
}
"dist/js/all.js": "dist/js/all-83303e6904.js"
}

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 11 KiB

BIN
public/img/ogimage.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -277,24 +277,6 @@ $(function() {
$this.next('.group-items').toggleClass('hide');
});
$('.select-group').on('click', function () {
var $parentGroup = $(this).closest('ul.list-group');
$parentGroup.find('input[type=checkbox]').prop('checked', true);
$parentGroup.find('.group-items').removeClass('hide')
$parentGroup.find('.group-toggle').addClass('ion-ios-minus-outline').removeClass('ion-ios-plus-outline');
event.stopPropagation();
return false;
});
$('.deselect-group').on('click', function () {
var $parentGroup = $(this).closest('ul.list-group');
$parentGroup.find('input[type=checkbox]').prop('checked', false);
$parentGroup.find('.group-items').addClass('hide');
$parentGroup.find('.group-toggle').removeClass('ion-ios-minus-outline').addClass('ion-ios-plus-outline');
event.stopPropagation();
return false;
});
// Setup wizard
$('.wizard-next').on('click', function () {
var $form = $('#setup-form'),
@@ -307,6 +289,8 @@ $(function() {
// Only validate going forward. If current group is invalid, do not go further
if (next > current) {
var url = '/setup/step' + current;
var currentUrl = window.location.href.replace(/step\d/, '');
var url = currentUrl + '/step' + current;
$.post(url, $form.serializeObject())
.done(function(response) {
goToStep(current, next);

View File

@@ -15,7 +15,7 @@ $tooltip-bg: #333 !default;
$tooltip-opacity: .9 !default;
$base-background-color: #f1f1f1;
$base-font-family: -apple-system, BlinkMacSystemFont, "Open Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
$base-font-family: "Open Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
$base-font-weight: 400;
$base-letter-spacing: 0.08em;
$base-font-size: 15px;

View File

@@ -0,0 +1,144 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Components
'components' => [
'last_updated' => 'Last updated :timestamp',
'status' => [
1 => 'Operasioneel',
2 => 'Prestasieprobleme',
3 => 'Gedeeltelike Onderbreking',
4 => 'Groot Onderbreking',
],
'group' => [
'other' => 'Other Components',
],
],
// Incidents
'incidents' => [
'none' => 'No incidents reported',
'past' => 'Past Incidents',
'previous_week' => 'Vorige Week',
'next_week' => 'Volgende Week',
'scheduled' => 'Scheduled Maintenance',
'scheduled_at' => ', scheduled :timestamp',
'status' => [
0 => 'Geskeduleerd', // TODO: Hopefully remove this.
1 => 'Investigating',
2 => 'Identified',
3 => 'Hou Dop',
4 => 'Opgelos',
],
],
// Service Status
'service' => [
'good' => '[0,1] System operational|[2,Inf] All systems are operational',
'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues',
'major' => '[0,1] The service experiencing a major outage|[2,Inf] Some systems are experiencing a major outage',
],
'api' => [
'regenerate' => 'Regenerate API Key',
'revoke' => 'Revoke API Key',
],
// Metrics
'metrics' => [
'filter' => [
'last_hour' => 'Last Hour',
'hourly' => 'Afgelope 12 Uur',
'weekly' => 'Weekliks',
'monthly' => 'Maandeliks',
],
],
// Subscriber
'subscriber' => [
'subscribe' => 'Subscribe to get the most recent updates',
'button' => 'Teken aan',
'manage' => [
'no_subscriptions' => 'You\'re currently subscribed to all updates.',
'my_subscriptions' => 'You\'re currently subscribed to the following updates.',
],
'email' => [
'subscribe' => 'Subscribe to email updates.',
'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.',
'verified' => 'Your email subscription has been confirmed. Thank you!',
'manage' => 'Bestuur Subskripsies',
'unsubscribe' => 'Unsubscribe from email updates.',
'unsubscribed' => 'Your email subscription has been cancelled.',
'failure' => 'Something went wrong with the subscription.',
'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.',
'verify' => [
'text' => "Please confirm your email subscription to :app_name status updates.\n:link",
'html' => '<p>Please confirm your email subscription to :app_name status updates.</p>',
'button' => 'Confirm Subscription',
],
'maintenance' => [
'subject' => '[Maintenance Scheduled] :name',
],
'incident' => [
'subject' => '[New Incident] :status: :name',
],
'component' => [
'subject' => 'Component Status Update',
'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name',
'html' => '<p>The component :component_name has seen a status change. The component is now at :component_human_status.</p><p>Thank you, :app_name</p>',
'tooltip-title' => 'Subscribe to notifications for :component_name.',
],
],
],
'users' => [
'email' => [
'invite' => [
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
],
],
],
'signup' => [
'title' => 'Teken Aan',
'username' => 'Username',
'email' => 'EPos',
'password' => 'Wagwoord',
'success' => 'U rekening is geskep.',
'failure' => 'Something went wrong with the signup.',
],
'system' => [
'update' => 'There is a newer version of Cachet available. You can learn how to update <a href="https://docs.cachethq.io/docs/updating-cachet">here</a>!',
],
// Modal
'modal' => [
'close' => 'Maak toe',
'subscribe' => [
'title' => 'Subscribe to component updates',
'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.',
'button' => 'Teken aan',
],
],
// Other
'home' => 'Tuiste',
'description' => 'Stay up to date with the latest service updates from :app.',
'powered_by' => 'Powered by <a href="https://cachethq.io" class="links">Cachet</a>.',
'about_this_site' => 'Aangaande Hierdie Webwerf',
'rss-feed' => 'RSS',
'atom-feed' => 'Atom',
'feed' => 'Status Feed',
];

View File

@@ -0,0 +1,273 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'dashboard' => 'Dashboard',
// Incidents
'incidents' => [
'title' => 'Incidents &amp; Schedule',
'incidents' => 'Incidents',
'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported <strong>:count</strong> incidents.',
'incident-create-template' => 'Create Template',
'incident-templates' => 'Incident Templates',
'add' => [
'title' => 'Report an incident',
'success' => 'Incident added.',
'failure' => 'There was an error adding the incident, please try again.',
],
'edit' => [
'title' => 'Edit an incident',
'success' => 'Incident updated.',
'failure' => 'There was an error editing the incident, please try again.',
],
'delete' => [
'success' => 'The incident has been deleted and will not show on your status page.',
'failure' => 'The incident could not be deleted, please try again.',
],
// Incident templates
'templates' => [
'title' => 'Incident Templates',
'add' => [
'title' => 'Create an incident template',
'message' => 'You should add an incident template.',
'success' => 'Your new incident template has been created.',
'failure' => 'Something went wrong with the incident template.',
],
'edit' => [
'title' => 'Edit Template',
'success' => 'The incident template has been updated.',
'failure' => 'Something went wrong updating the incident template',
],
'delete' => [
'success' => 'The incident template has been deleted.',
'failure' => 'The incident template could not be deleted, please try again.',
],
],
],
// Incident Maintenance
'schedule' => [
'schedule' => 'Scheduled Maintenance',
'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported <strong>:count</strong> schedules.',
'scheduled_at' => 'Scheduled at :timestamp',
'add' => [
'title' => 'Add Scheduled Maintenance',
'success' => 'Schedule added.',
'failure' => 'Something went wrong adding the schedule, please try again.',
],
'edit' => [
'title' => 'Edit Scheduled Maintenance',
'success' => 'Schedule has been updated!',
'failure' => 'Something went wrong editing the schedule, please try again.',
],
'delete' => [
'success' => 'The scheduled maintenance has been deleted and will not show on your status page.',
'failure' => 'The scheduled maintenance could not be deleted, please try again.',
],
],
// Components
'components' => [
'components' => 'Components',
'component_statuses' => 'Component Statuses',
'listed_group' => 'Grouped under :name',
'add' => [
'title' => 'Add a component',
'message' => 'You should add a component.',
'success' => 'Component created.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'edit' => [
'title' => 'Edit a component',
'success' => 'Component updated.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'delete' => [
'success' => 'The component has been deleted!',
'failure' => 'The component could not be deleted, please try again.',
],
// Component groups
'groups' => [
'groups' => 'Component group|Component groups',
'no_components' => 'You should add a component group.',
'add' => [
'title' => 'Add a component group',
'success' => 'Component group added.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'edit' => [
'title' => 'Edit a component group',
'success' => 'Component group updated.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'delete' => [
'success' => 'Component group has been deleted!',
'failure' => 'The component group could not be deleted, please try again.',
],
],
],
// Metrics
'metrics' => [
'metrics' => 'Metrics',
'add' => [
'title' => 'Create a metric',
'message' => 'You should add a metric.',
'success' => 'Metric created.',
'failure' => 'Something went wrong with the metric, please try again.',
],
'edit' => [
'title' => 'Edit a metric',
'success' => 'Metric updated.',
'failure' => 'Something went wrong with the metric, please try again.',
],
'delete' => [
'success' => 'The metric has been deleted and will no longer display on your status page.',
'failure' => 'The metric could not be deleted, please try again.',
],
],
// Subscribers
'subscribers' => [
'subscribers' => 'Subscribers',
'description' => 'Subscribers will receive email updates when incidents are created or components are updated.',
'verified' => 'Verified',
'not_verified' => 'Not verified',
'subscriber' => ':email, subscribed :date',
'no_subscriptions' => 'Subscribed to all updates',
'add' => [
'title' => 'Add a new subscriber',
'success' => 'Subscriber has been added!',
'failure' => 'Something went wrong adding the subscriber, please try again.',
'help' => 'Enter each subscriber on a new line.',
],
'edit' => [
'title' => 'Update subscriber',
'success' => 'Subscriber has been updated!',
'failure' => 'Something went wrong editing the subscriber, please try again.',
],
],
// Team
'team' => [
'team' => 'Span',
'member' => 'Lid',
'profile' => 'Profiel',
'description' => 'Team Members will be able to add, modify &amp; edit components and incidents.',
'add' => [
'title' => 'Add a new team member',
'success' => 'Spanlid bygevoeg.',
'failure' => 'The team member could not be added, please try again.',
],
'edit' => [
'title' => 'Update profile',
'success' => 'Profile updated.',
'failure' => 'Something went wrong updating the profile, please try again.',
],
'delete' => [
'success' => 'Team member has been deleted and will no longer have access to the dashboard!',
'failure' => 'The team member could not be added, please try again.',
],
'invite' => [
'title' => 'Invite a new team member',
'success' => 'An invite has been sent',
'failure' => 'The invite could not be sent, please try again.',
],
],
// Settings
'settings' => [
'settings' => 'Instellings',
'app-setup' => [
'app-setup' => 'Application Setup',
'images-only' => 'Only images may be uploaded.',
'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size',
],
'analytics' => [
'analytics' => 'Analytics',
],
'localization' => [
'localization' => 'Localization',
],
'customization' => [
'customization' => 'Customization',
'header' => 'Custom Header HTML',
'footer' => 'Custom Footer HTML',
],
'security' => [
'security' => 'Security',
'two-factor' => 'Users without two-factor authentication',
],
'stylesheet' => [
'stylesheet' => 'Stylesheet',
],
'theme' => [
'theme' => 'Tema',
],
'edit' => [
'success' => 'Settings saved.',
'failure' => 'Settings could not be saved.',
],
'credits' => [
'credits' => 'Credits',
'contributors' => 'Contributors',
'license' => 'Cachet is a BSD-3-licensed open source project, released by <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Backers & Sponsors',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Thank you to each and every one of the :count contributors.',
],
],
// Login
'login' => [
'login' => 'Teken In',
'logged_in' => 'You\'re logged in.',
'welcome' => 'Welcome Back!',
'two-factor' => 'Please enter your token.',
],
// Sidebar footer
'help' => 'Help',
'status_page' => 'Status Page',
'logout' => 'Teken Uit',
// Notifications
'notifications' => [
'notifications' => 'Notifications',
'awesome' => 'Awesome.',
'whoops' => 'Whoops.',
],
// Widgets
'widgets' => [
'news' => 'Latest News',
'news_subtitle' => 'Get the latest update',
],
// Welcome modal
'welcome' => [
'welcome' => 'Welcome to your new Status page!',
'message' => 'Your status page is almost ready! You might want to configure these extra settings',
'close' => 'Take me straight to my dashboard',
'steps' => [
'component' => 'Create components',
'incident' => 'Create incidents',
'customize' => 'Customize',
'team' => 'Voeg gebruikers by',
'api' => 'Generate API token',
'two-factor' => 'Two Factor Authentication',
],
],
];

View File

@@ -0,0 +1,192 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Setup form fields
'setup' => [
'email' => 'EPos',
'username' => 'Gebruikersnaam',
'password' => 'Wagwoord',
'site_name' => 'Site Name',
'site_domain' => 'Site Domain',
'site_timezone' => 'Select your timezone',
'site_locale' => 'Kies taal',
'enable_google2fa' => 'Enable Google Two Factor Authentication',
'cache_driver' => 'Cache Driver',
'session_driver' => 'Session Driver',
'mail_driver' => 'Mail Driver',
'mail_host' => 'Mail Host',
'mail_address' => 'Mail From Address',
'mail_username' => 'Mail Username',
'mail_password' => 'Mail Password',
],
// Login form fields
'login' => [
'login' => 'Username or Email',
'email' => 'EPos',
'password' => 'Wagwoord',
'2fauth' => 'Authentication Code',
'invalid' => 'Ongeldige gebruikernaam of wagwoord',
'invalid-token' => 'Invalid token',
'cookies' => 'You must enable cookies to login.',
'rate-limit' => 'Rate limit exceeded.',
],
// Incidents form fields
'incidents' => [
'name' => 'Name',
'status' => 'Status',
'component' => 'Komponente',
'message' => 'Boodskap',
'message-help' => 'You may also use Markdown.',
'scheduled_at' => 'When to schedule the maintenance for?',
'incident_time' => 'When did this incident occur?',
'notify_subscribers' => 'Notify subscribers?',
'visibility' => 'Incident Visibility',
'public' => 'Viewable by public',
'logged_in_only' => 'Only visible to logged in users',
'templates' => [
'name' => 'Name',
'template' => 'Templaat',
'twig' => 'Incident Templates can make use of the <a href="http://twig.sensiolabs.org/" target="_blank">Twig</a> templating language.',
],
],
// Components form fields
'components' => [
'name' => 'Name',
'status' => 'Status',
'group' => 'Group',
'description' => 'Beskrywing',
'link' => 'Link',
'tags' => 'Tags',
'tags-help' => 'Comma separated.',
'enabled' => 'Component enabled?',
'groups' => [
'name' => 'Name',
'collapsing' => 'Choose visibility of the group',
'visible' => 'Always expanded',
'collapsed' => 'Collapse the group by default',
'collapsed_incident' => 'Collapse the group, but expand if there are issues',
],
],
// Metric form fields
'metrics' => [
'name' => 'Name',
'suffix' => 'Suffix',
'description' => 'Beskrywing',
'description-help' => 'You may also use Markdown.',
'display-chart' => 'Display chart on status page?',
'default-value' => 'Default value',
'calc_type' => 'Calculation of metrics',
'type_sum' => 'Sum',
'type_avg' => 'Average',
'places' => 'Decimal places',
'default_view' => 'Default view',
'threshold' => 'How many minutes of threshold between metric points?',
'points' => [
'value' => 'Value',
],
],
// Settings
'settings' => [
/// Application setup
'app-setup' => [
'site-name' => 'Site Name',
'site-url' => 'Site URL',
'display-graphs' => 'Display graphs on status page?',
'about-this-page' => 'About this page',
'days-of-incidents' => 'How many days of incidents to show?',
'banner' => 'Banner Image',
'banner-help' => "It's recommended that you upload files no bigger than 930px wide .",
'subscribers' => 'Allow people to signup to email notifications?',
'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?',
],
'analytics' => [
'analytics_google' => 'Google Analytics code',
'analytics_gosquared' => 'GoSquared Analytics code',
'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)',
'analytics_piwik_siteid' => 'Piwik\'s site id',
],
'localization' => [
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
],
'security' => [
'allowed-domains' => 'Allowed domains',
'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.',
],
'stylesheet' => [
'custom-css' => 'Custom Stylesheet',
],
'theme' => [
'background-color' => 'Background Color',
'background-fills' => 'Background fills (components, incidents, footer)',
'banner-background-color' => 'Banner background color',
'banner-padding' => 'Banner padding',
'fullwidth-banner' => 'Enable fullwidth banner?',
'text-color' => 'Text Color',
'dashboard-login' => 'Show dashboard button in the footer?',
'reds' => 'Red (used for errors)',
'blues' => 'Blue (used for information)',
'greens' => 'Green (used for success)',
'yellows' => 'Yellow (used for alerts)',
'oranges' => 'Orange (used for notices)',
'metrics' => 'Metrics fill',
'links' => 'Links',
],
],
'user' => [
'username' => 'Username',
'email' => 'EPos',
'password' => 'Wagwoord',
'api-token' => 'API Token',
'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.',
'gravatar' => 'Change your profile picture at Gravatar.',
'user_level' => 'User Level',
'levels' => [
'admin' => 'Admin',
'user' => 'User',
],
'2fa' => [
'help' => 'Enabling two factor authentication increases security of your account. You will need to download <a href="https://support.google.com/accounts/answer/1066447?hl=en">Google Authenticator</a> or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.',
],
'team' => [
'description' => 'Invite your team members by entering their email addresses here.',
'email' => 'Email #:id',
],
],
// Buttons
'add' => 'Add',
'save' => 'Save',
'update' => 'Update',
'create' => 'Create',
'edit' => 'Edit',
'delete' => 'Delete',
'submit' => 'Submit',
'cancel' => 'Cancel',
'remove' => 'Remove',
'invite' => 'Invite',
'signup' => 'Teken Aan',
// Other
'optional' => '* Optional',
];

View File

@@ -0,0 +1,28 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
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' => '&laquo; Vorige',
'next' => 'Volgende &raquo;',
];

View File

@@ -0,0 +1,23 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'setup' => 'Setup',
'title' => 'Setup Cachet',
'service_details' => 'Service Details',
'env_setup' => 'Environment Setup',
'status_page_setup' => 'Status Page Setup',
'show_support' => 'Show support for Cachet?',
'admin_account' => 'Administrator Account',
'complete_setup' => 'Complete Setup',
'completed' => 'Cachet has been configured successfully!',
'finish_setup' => 'Go to dashboard',
];

View File

@@ -0,0 +1,122 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
'accepted' => 'The :attribute must be accepted.',
'active_url' => 'The :attribute is not a valid URL.',
'after' => 'The :attribute must be a date after :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.',
'between' => [
'numeric' => 'The :attribute must be a date before :date.',
'file' => 'The :attribute must be between :min and :max.',
'string' => 'The :attribute must be between :min and :max kilobytes.',
'array' => 'The :attribute must have between :min and :max items.',
],
'boolean' => 'The :attribute must have between :min and :max items.',
'confirmed' => 'The :attribute field must be true or false.',
'date' => 'The :attribute confirmation does not match.',
'date_format' => 'The :attribute is not a valid date.',
'different' => 'The :attribute does not match the format :format.',
'digits' => 'The :attribute and :other must be different.',
'digits_between' => 'The :attribute must be :digits digits.',
'email' => 'The :attribute must be between :min and :max digits.',
'exists' => 'The :attribute must be a valid email address.',
'distinct' => 'The :attribute field has a duplicate value.',
'filled' => 'The :attribute format is invalid.',
'image' => 'The :attribute must be an image.',
'in' => 'The :attribute must be an image.',
'in_array' => 'The :attribute field does not exist in :other.',
'integer' => 'The selected :attribute is invalid.',
'ip' => 'The :attribute must be an integer.',
'json' => 'The :attribute must be a valid JSON string.',
'max' => [
'numeric' => 'The :attribute must be a valid IP address.',
'file' => 'The :attribute may not be greater than :max.',
'string' => 'The :attribute may not be greater than :max kilobytes.',
'array' => 'The :attribute may not have more than :max items.',
],
'mimes' => 'The :attribute may not have more than :max items.',
'min' => [
'numeric' => 'The :attribute must be a file of type: :values.',
'file' => 'The :attribute must be at least :min kilobytes.',
'string' => 'The :attribute must be at least :min kilobytes.',
'array' => 'The :attribute must be at least :min characters.',
],
'not_in' => 'The :attribute must have at least :min items.',
'numeric' => 'The selected :attribute is invalid.',
'present' => 'The :attribute field must be present.',
'regex' => 'The :attribute must be a number.',
'required' => 'The :attribute format is invalid.',
'required_if' => 'The :attribute field is required.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :other is :value.',
'required_with_all' => 'The :attribute field is required when :values is present.',
'required_without' => 'The :attribute field is required when :values is present.',
'required_without_all' => 'The :attribute field is required when :values is not present.',
'same' => 'The :attribute field is required when none of :values are present.',
'size' => [
'numeric' => 'The :attribute and :other must match.',
'file' => 'The :attribute must be :size kilobytes.',
'string' => 'The :attribute must be :size characters.',
'array' => 'The :attribute must be :size characters.',
],
'string' => 'The :attribute must contain :size items.',
'timezone' => 'The :attribute must be a valid zone.',
'unique' => 'The :attribute has already been taken.',
'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' => [],
];

View File

@@ -103,8 +103,8 @@ return [
'users' => [
'email' => [
'invite' => [
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
],
],
],

View File

@@ -224,7 +224,7 @@ return [
'contributors' => 'Contributors',
'license' => 'Cachet is a BSD-3-licensed open source project, released by <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Backers & Sponsors',
'backers' => 'If you\'d like to support future development, check out the <a href="https://patreon.com/jbrooksuk" target="_blank">Cachet Patreon</a> campaign.',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Thank you to each and every one of the :count contributors.',
],
],
@@ -251,8 +251,6 @@ return [
// Widgets
'widgets' => [
'support' => 'Support Cachet',
'support_subtitle' => 'Check out our <strong><a href="https://patreon.com/jbrooksuk" target="_blank">Patreon</a></strong> page!',
'news' => 'Latest News',
'news_subtitle' => 'Get the latest updates',
],

View File

@@ -118,10 +118,10 @@ return [
'analytics_piwik_siteid' => 'Piwik\'s site id',
],
'localization' => [
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
],
'security' => [
'allowed-domains' => 'Allowed domains',

View File

@@ -0,0 +1,144 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Components
'components' => [
'last_updated' => 'Last updated :timestamp',
'status' => [
1 => 'Operational',
2 => 'Performance Issues',
3 => 'Partial Outage',
4 => 'Major Outage',
],
'group' => [
'other' => 'Other Components',
],
],
// Incidents
'incidents' => [
'none' => 'No incidents reported',
'past' => 'Past Incidents',
'previous_week' => 'Previous Week',
'next_week' => 'Next Week',
'scheduled' => 'Scheduled Maintenance',
'scheduled_at' => ', scheduled :timestamp',
'status' => [
0 => 'Scheduled', // TODO: Hopefully remove this.
1 => 'Investigating',
2 => 'Identified',
3 => 'Watching',
4 => 'Fixed',
],
],
// Service Status
'service' => [
'good' => '[0,1] System operational|[2,Inf] All systems are operational',
'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues',
'major' => '[0,1] The service experiencing a major outage|[2,Inf] Some systems are experiencing a major outage',
],
'api' => [
'regenerate' => 'Regenerate API Key',
'revoke' => 'Revoke API Key',
],
// Metrics
'metrics' => [
'filter' => [
'last_hour' => 'Last Hour',
'hourly' => 'Last 12 Hours',
'weekly' => 'Week',
'monthly' => 'Month',
],
],
// Subscriber
'subscriber' => [
'subscribe' => 'Subscribe to get the most recent updates',
'button' => 'Subscribe',
'manage' => [
'no_subscriptions' => 'You\'re currently subscribed to all updates.',
'my_subscriptions' => 'You\'re currently subscribed to the following updates.',
],
'email' => [
'subscribe' => 'Subscribe to email updates.',
'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.',
'verified' => 'Your email subscription has been confirmed. Thank you!',
'manage' => 'Manage your subscription',
'unsubscribe' => 'Unsubscribe from email updates.',
'unsubscribed' => 'Your email subscription has been cancelled.',
'failure' => 'Something went wrong with the subscription.',
'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.',
'verify' => [
'text' => "Please confirm your email subscription to :app_name status updates.\n:link",
'html' => '<p>Please confirm your email subscription to :app_name status updates.</p>',
'button' => 'Confirm Subscription',
],
'maintenance' => [
'subject' => '[Maintenance Scheduled] :name',
],
'incident' => [
'subject' => '[New Incident] :status: :name',
],
'component' => [
'subject' => 'Component Status Update',
'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name',
'html' => '<p>The component :component_name has seen a status change. The component is now at :component_human_status.</p><p>Thank you, :app_name</p>',
'tooltip-title' => 'Subscribe to notifications for :component_name.',
],
],
],
'users' => [
'email' => [
'invite' => [
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
],
],
],
'signup' => [
'title' => 'Sign Up',
'username' => 'Username',
'email' => 'Email',
'password' => 'Password',
'success' => 'Your account has been created.',
'failure' => 'Something went wrong with the signup.',
],
'system' => [
'update' => 'There is a newer version of Cachet available. You can learn how to update <a href="https://docs.cachethq.io/docs/updating-cachet">here</a>!',
],
// Modal
'modal' => [
'close' => 'Close',
'subscribe' => [
'title' => 'Subscribe to component updates',
'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.',
'button' => 'Subscribe',
],
],
// Other
'home' => 'Home',
'description' => 'Stay up to date with the latest service updates from :app.',
'powered_by' => 'Powered by <a href="https://cachethq.io" class="links">Cachet</a>.',
'about_this_site' => 'About This Site',
'rss-feed' => 'RSS',
'atom-feed' => 'Atom',
'feed' => 'Status Feed',
];

View File

@@ -0,0 +1,273 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'dashboard' => 'Dashboard',
// Incidents
'incidents' => [
'title' => 'Incidents &amp; Schedule',
'incidents' => 'Incidents',
'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported <strong>:count</strong> incidents.',
'incident-create-template' => 'Create Template',
'incident-templates' => 'Incident Templates',
'add' => [
'title' => 'Report an incident',
'success' => 'Incident added.',
'failure' => 'There was an error adding the incident, please try again.',
],
'edit' => [
'title' => 'Edit an incident',
'success' => 'Incident updated.',
'failure' => 'There was an error editing the incident, please try again.',
],
'delete' => [
'success' => 'The incident has been deleted and will not show on your status page.',
'failure' => 'The incident could not be deleted, please try again.',
],
// Incident templates
'templates' => [
'title' => 'Incident Templates',
'add' => [
'title' => 'Create an incident template',
'message' => 'You should add an incident template.',
'success' => 'Your new incident template has been created.',
'failure' => 'Something went wrong with the incident template.',
],
'edit' => [
'title' => 'Edit Template',
'success' => 'The incident template has been updated.',
'failure' => 'Something went wrong updating the incident template',
],
'delete' => [
'success' => 'The incident template has been deleted.',
'failure' => 'The incident template could not be deleted, please try again.',
],
],
],
// Incident Maintenance
'schedule' => [
'schedule' => 'Scheduled Maintenance',
'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported <strong>:count</strong> schedules.',
'scheduled_at' => 'Scheduled at :timestamp',
'add' => [
'title' => 'Add Scheduled Maintenance',
'success' => 'Schedule added.',
'failure' => 'Something went wrong adding the schedule, please try again.',
],
'edit' => [
'title' => 'Edit Scheduled Maintenance',
'success' => 'Schedule has been updated!',
'failure' => 'Something went wrong editing the schedule, please try again.',
],
'delete' => [
'success' => 'The scheduled maintenance has been deleted and will not show on your status page.',
'failure' => 'The scheduled maintenance could not be deleted, please try again.',
],
],
// Components
'components' => [
'components' => 'Components',
'component_statuses' => 'Component Statuses',
'listed_group' => 'Grouped under :name',
'add' => [
'title' => 'Add a component',
'message' => 'You should add a component.',
'success' => 'Component created.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'edit' => [
'title' => 'Edit a component',
'success' => 'Component updated.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'delete' => [
'success' => 'The component has been deleted!',
'failure' => 'The component could not be deleted, please try again.',
],
// Component groups
'groups' => [
'groups' => 'Component group|Component groups',
'no_components' => 'You should add a component group.',
'add' => [
'title' => 'Add a component group',
'success' => 'Component group added.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'edit' => [
'title' => 'Edit a component group',
'success' => 'Component group updated.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'delete' => [
'success' => 'Component group has been deleted!',
'failure' => 'The component group could not be deleted, please try again.',
],
],
],
// Metrics
'metrics' => [
'metrics' => 'Metrics',
'add' => [
'title' => 'Create a metric',
'message' => 'You should add a metric.',
'success' => 'Metric created.',
'failure' => 'Something went wrong with the metric, please try again.',
],
'edit' => [
'title' => 'Edit a metric',
'success' => 'Metric updated.',
'failure' => 'Something went wrong with the metric, please try again.',
],
'delete' => [
'success' => 'The metric has been deleted and will no longer display on your status page.',
'failure' => 'The metric could not be deleted, please try again.',
],
],
// Subscribers
'subscribers' => [
'subscribers' => 'Subscribers',
'description' => 'Subscribers will receive email updates when incidents are created or components are updated.',
'verified' => 'Verified',
'not_verified' => 'Not verified',
'subscriber' => ':email, subscribed :date',
'no_subscriptions' => 'Subscribed to all updates',
'add' => [
'title' => 'Add a new subscriber',
'success' => 'Subscriber has been added!',
'failure' => 'Something went wrong adding the subscriber, please try again.',
'help' => 'Enter each subscriber on a new line.',
],
'edit' => [
'title' => 'Update subscriber',
'success' => 'Subscriber has been updated!',
'failure' => 'Something went wrong editing the subscriber, please try again.',
],
],
// Team
'team' => [
'team' => 'Team',
'member' => 'Member',
'profile' => 'Profile',
'description' => 'Team Members will be able to add, modify &amp; edit components and incidents.',
'add' => [
'title' => 'Add a new team member',
'success' => 'Team member added.',
'failure' => 'The team member could not be added, please try again.',
],
'edit' => [
'title' => 'Update profile',
'success' => 'Profile updated.',
'failure' => 'Something went wrong updating the profile, please try again.',
],
'delete' => [
'success' => 'Team member has been deleted and will no longer have access to the dashboard!',
'failure' => 'The team member could not be added, please try again.',
],
'invite' => [
'title' => 'Invite a new team member',
'success' => 'An invite has been sent',
'failure' => 'The invite could not be sent, please try again.',
],
],
// Settings
'settings' => [
'settings' => 'Settings',
'app-setup' => [
'app-setup' => 'Application Setup',
'images-only' => 'Only images may be uploaded.',
'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size',
],
'analytics' => [
'analytics' => 'Analytics',
],
'localization' => [
'localization' => 'Localization',
],
'customization' => [
'customization' => 'Customization',
'header' => 'Custom Header HTML',
'footer' => 'Custom Footer HTML',
],
'security' => [
'security' => 'Security',
'two-factor' => 'Users without two-factor authentication',
],
'stylesheet' => [
'stylesheet' => 'Stylesheet',
],
'theme' => [
'theme' => 'Theme',
],
'edit' => [
'success' => 'Settings saved.',
'failure' => 'Settings could not be saved.',
],
'credits' => [
'credits' => 'Credits',
'contributors' => 'Contributors',
'license' => 'Cachet is a BSD-3-licensed open source project, released by <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Backers & Sponsors',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Thank you to each and every one of the :count contributors.',
],
],
// Login
'login' => [
'login' => 'Login',
'logged_in' => 'You\'re logged in.',
'welcome' => 'Welcome Back!',
'two-factor' => 'Please enter your token.',
],
// Sidebar footer
'help' => 'Help',
'status_page' => 'Status Page',
'logout' => 'Logout',
// Notifications
'notifications' => [
'notifications' => 'Notifications',
'awesome' => 'Awesome.',
'whoops' => 'Whoops.',
],
// Widgets
'widgets' => [
'news' => 'Latest News',
'news_subtitle' => 'Get the latest update',
],
// Welcome modal
'welcome' => [
'welcome' => 'Welcome to your new Status page!',
'message' => 'Your status page is almost ready! You might want to configure these extra settings',
'close' => 'Take me straight to my dashboard',
'steps' => [
'component' => 'Create components',
'incident' => 'Create incidents',
'customize' => 'Customize',
'team' => 'Add users',
'api' => 'Generate API token',
'two-factor' => 'Two Factor Authentication',
],
],
];

View File

@@ -0,0 +1,192 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Setup form fields
'setup' => [
'email' => 'Email',
'username' => 'Username',
'password' => 'Password',
'site_name' => 'Site Name',
'site_domain' => 'Site Domain',
'site_timezone' => 'Select your timezone',
'site_locale' => 'Select your language',
'enable_google2fa' => 'Enable Google Two Factor Authentication',
'cache_driver' => 'Cache Driver',
'session_driver' => 'Session Driver',
'mail_driver' => 'Mail Driver',
'mail_host' => 'Mail Host',
'mail_address' => 'Mail From Address',
'mail_username' => 'Mail Username',
'mail_password' => 'Mail Password',
],
// Login form fields
'login' => [
'login' => 'Username or Email',
'email' => 'Email',
'password' => 'Password',
'2fauth' => 'Authentication Code',
'invalid' => 'Invalid username or password',
'invalid-token' => 'Invalid token',
'cookies' => 'You must enable cookies to login.',
'rate-limit' => 'Rate limit exceeded.',
],
// Incidents form fields
'incidents' => [
'name' => 'Name',
'status' => 'Status',
'component' => 'Component',
'message' => 'Message',
'message-help' => 'You may also use Markdown.',
'scheduled_at' => 'When to schedule the maintenance for?',
'incident_time' => 'When did this incident occur?',
'notify_subscribers' => 'Notify subscribers?',
'visibility' => 'Incident Visibility',
'public' => 'Viewable by public',
'logged_in_only' => 'Only visible to logged in users',
'templates' => [
'name' => 'Name',
'template' => 'Template',
'twig' => 'Incident Templates can make use of the <a href="http://twig.sensiolabs.org/" target="_blank">Twig</a> templating language.',
],
],
// Components form fields
'components' => [
'name' => 'Name',
'status' => 'Status',
'group' => 'Group',
'description' => 'Description',
'link' => 'Link',
'tags' => 'Tags',
'tags-help' => 'Comma separated.',
'enabled' => 'Component enabled?',
'groups' => [
'name' => 'Name',
'collapsing' => 'Choose visibility of the group',
'visible' => 'Always expanded',
'collapsed' => 'Collapse the group by default',
'collapsed_incident' => 'Collapse the group, but expand if there are issues',
],
],
// Metric form fields
'metrics' => [
'name' => 'Name',
'suffix' => 'Suffix',
'description' => 'Description',
'description-help' => 'You may also use Markdown.',
'display-chart' => 'Display chart on status page?',
'default-value' => 'Default value',
'calc_type' => 'Calculation of metrics',
'type_sum' => 'Sum',
'type_avg' => 'Average',
'places' => 'Decimal places',
'default_view' => 'Default view',
'threshold' => 'How many minutes of threshold between metric points?',
'points' => [
'value' => 'Value',
],
],
// Settings
'settings' => [
/// Application setup
'app-setup' => [
'site-name' => 'Site Name',
'site-url' => 'Site URL',
'display-graphs' => 'Display graphs on status page?',
'about-this-page' => 'About this page',
'days-of-incidents' => 'How many days of incidents to show?',
'banner' => 'Banner Image',
'banner-help' => "It's recommended that you upload files no bigger than 930px wide .",
'subscribers' => 'Allow people to signup to email notifications?',
'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?',
],
'analytics' => [
'analytics_google' => 'Google Analytics code',
'analytics_gosquared' => 'GoSquared Analytics code',
'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)',
'analytics_piwik_siteid' => 'Piwik\'s site id',
],
'localization' => [
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
],
'security' => [
'allowed-domains' => 'Allowed domains',
'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.',
],
'stylesheet' => [
'custom-css' => 'Custom Stylesheet',
],
'theme' => [
'background-color' => 'Background Color',
'background-fills' => 'Background fills (components, incidents, footer)',
'banner-background-color' => 'Banner background color',
'banner-padding' => 'Banner padding',
'fullwidth-banner' => 'Enable fullwidth banner?',
'text-color' => 'Text Color',
'dashboard-login' => 'Show dashboard button in the footer?',
'reds' => 'Red (used for errors)',
'blues' => 'Blue (used for information)',
'greens' => 'Green (used for success)',
'yellows' => 'Yellow (used for alerts)',
'oranges' => 'Orange (used for notices)',
'metrics' => 'Metrics fill',
'links' => 'Links',
],
],
'user' => [
'username' => 'Username',
'email' => 'Email',
'password' => 'Password',
'api-token' => 'API Token',
'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.',
'gravatar' => 'Change your profile picture at Gravatar.',
'user_level' => 'User Level',
'levels' => [
'admin' => 'Admin',
'user' => 'User',
],
'2fa' => [
'help' => 'Enabling two factor authentication increases security of your account. You will need to download <a href="https://support.google.com/accounts/answer/1066447?hl=en">Google Authenticator</a> or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.',
],
'team' => [
'description' => 'Invite your team members by entering their email addresses here.',
'email' => 'Email #:id',
],
],
// Buttons
'add' => 'Add',
'save' => 'Save',
'update' => 'Update',
'create' => 'Create',
'edit' => 'Edit',
'delete' => 'Delete',
'submit' => 'Submit',
'cancel' => 'Cancel',
'remove' => 'Remove',
'invite' => 'Invite',
'signup' => 'Sign Up',
// Other
'optional' => '* Optional',
];

View File

@@ -0,0 +1,28 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
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' => '&laquo; Previous',
'next' => 'Next &raquo;',
];

View File

@@ -0,0 +1,23 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'setup' => 'Setup',
'title' => 'Setup Cachet',
'service_details' => 'Service Details',
'env_setup' => 'Environment Setup',
'status_page_setup' => 'Status Page Setup',
'show_support' => 'Show support for Cachet?',
'admin_account' => 'Administrator Account',
'complete_setup' => 'Complete Setup',
'completed' => 'Cachet has been configured successfully!',
'finish_setup' => 'Go to dashboard',
];

View File

@@ -0,0 +1,122 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
'accepted' => 'The :attribute must be accepted.',
'active_url' => 'The :attribute is not a valid URL.',
'after' => 'The :attribute must be a date after :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.',
'between' => [
'numeric' => 'The :attribute must be a date before :date.',
'file' => 'The :attribute must be between :min and :max.',
'string' => 'The :attribute must be between :min and :max kilobytes.',
'array' => 'The :attribute must have between :min and :max items.',
],
'boolean' => 'The :attribute must have between :min and :max items.',
'confirmed' => 'The :attribute field must be true or false.',
'date' => 'The :attribute confirmation does not match.',
'date_format' => 'The :attribute is not a valid date.',
'different' => 'The :attribute does not match the format :format.',
'digits' => 'The :attribute and :other must be different.',
'digits_between' => 'The :attribute must be :digits digits.',
'email' => 'The :attribute must be between :min and :max digits.',
'exists' => 'The :attribute must be a valid email address.',
'distinct' => 'The :attribute field has a duplicate value.',
'filled' => 'The :attribute format is invalid.',
'image' => 'The :attribute must be an image.',
'in' => 'The :attribute must be an image.',
'in_array' => 'The :attribute field does not exist in :other.',
'integer' => 'The selected :attribute is invalid.',
'ip' => 'The :attribute must be an integer.',
'json' => 'The :attribute must be a valid JSON string.',
'max' => [
'numeric' => 'The :attribute must be a valid IP address.',
'file' => 'The :attribute may not be greater than :max.',
'string' => 'The :attribute may not be greater than :max kilobytes.',
'array' => 'The :attribute may not have more than :max items.',
],
'mimes' => 'The :attribute may not have more than :max items.',
'min' => [
'numeric' => 'The :attribute must be a file of type: :values.',
'file' => 'The :attribute must be at least :min kilobytes.',
'string' => 'The :attribute must be at least :min kilobytes.',
'array' => 'The :attribute must be at least :min characters.',
],
'not_in' => 'The :attribute must have at least :min items.',
'numeric' => 'The selected :attribute is invalid.',
'present' => 'The :attribute field must be present.',
'regex' => 'The :attribute must be a number.',
'required' => 'The :attribute format is invalid.',
'required_if' => 'The :attribute field is required.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :other is :value.',
'required_with_all' => 'The :attribute field is required when :values is present.',
'required_without' => 'The :attribute field is required when :values is present.',
'required_without_all' => 'The :attribute field is required when :values is not present.',
'same' => 'The :attribute field is required when none of :values are present.',
'size' => [
'numeric' => 'The :attribute and :other must match.',
'file' => 'The :attribute must be :size kilobytes.',
'string' => 'The :attribute must be :size characters.',
'array' => 'The :attribute must be :size characters.',
],
'string' => 'The :attribute must contain :size items.',
'timezone' => 'The :attribute must be a valid zone.',
'unique' => 'The :attribute has already been taken.',
'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' => [],
];

View File

@@ -103,8 +103,8 @@ return [
'users' => [
'email' => [
'invite' => [
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
],
],
],

View File

@@ -224,7 +224,7 @@ return [
'contributors' => 'Contributors',
'license' => 'Cachet is a BSD-3-licensed open source project, released by <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Backers & Sponsors',
'backers' => 'If you\'d like to support future development, check out the <a href="https://patreon.com/jbrooksuk" target="_blank">Cachet Patreon</a> campaign.',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Thank you to each and every one of the :count contributors.',
],
],
@@ -251,8 +251,6 @@ return [
// Widgets
'widgets' => [
'support' => 'Support Cachet',
'support_subtitle' => 'Check out our <strong><a href="https://patreon.com/jbrooksuk" target="_blank">Patreon</a></strong> page!',
'news' => 'Latest News',
'news_subtitle' => 'Get the latest updates',
],

View File

@@ -118,10 +118,10 @@ return [
'analytics_piwik_siteid' => 'Piwik\'s site id',
],
'localization' => [
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
],
'security' => [
'allowed-domains' => 'Allowed domains',

View File

@@ -0,0 +1,144 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Components
'components' => [
'last_updated' => 'Last updated :timestamp',
'status' => [
1 => 'Operational',
2 => 'Performance Issues',
3 => 'Partial Outage',
4 => 'Major Outage',
],
'group' => [
'other' => 'Other Components',
],
],
// Incidents
'incidents' => [
'none' => 'No incidents reported',
'past' => 'Past Incidents',
'previous_week' => 'Previous Week',
'next_week' => 'Next Week',
'scheduled' => 'Scheduled Maintenance',
'scheduled_at' => ', scheduled :timestamp',
'status' => [
0 => 'Scheduled', // TODO: Hopefully remove this.
1 => 'Investigating',
2 => 'Identified',
3 => 'Watching',
4 => 'Fixed',
],
],
// Service Status
'service' => [
'good' => '[0,1] System operational|[2,Inf] All systems are operational',
'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues',
'major' => '[0,1] The service experiencing a major outage|[2,Inf] Some systems are experiencing a major outage',
],
'api' => [
'regenerate' => 'Regenerate API Key',
'revoke' => 'Revoke API Key',
],
// Metrics
'metrics' => [
'filter' => [
'last_hour' => 'Last Hour',
'hourly' => 'Last 12 Hours',
'weekly' => 'Week',
'monthly' => 'Month',
],
],
// Subscriber
'subscriber' => [
'subscribe' => 'Subscribe to get the most recent updates',
'button' => 'Subscribe',
'manage' => [
'no_subscriptions' => 'You\'re currently subscribed to all updates.',
'my_subscriptions' => 'You\'re currently subscribed to the following updates.',
],
'email' => [
'subscribe' => 'Subscribe to email updates.',
'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.',
'verified' => 'Your email subscription has been confirmed. Thank you!',
'manage' => 'Manage your subscription',
'unsubscribe' => 'Unsubscribe from email updates.',
'unsubscribed' => 'Your email subscription has been cancelled.',
'failure' => 'Something went wrong with the subscription.',
'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.',
'verify' => [
'text' => "Please confirm your email subscription to :app_name status updates.\n:link",
'html' => '<p>Please confirm your email subscription to :app_name status updates.</p>',
'button' => 'Confirm Subscription',
],
'maintenance' => [
'subject' => '[Maintenance Scheduled] :name',
],
'incident' => [
'subject' => '[New Incident] :status: :name',
],
'component' => [
'subject' => 'Component Status Update',
'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name',
'html' => '<p>The component :component_name has seen a status change. The component is now at :component_human_status.</p><p>Thank you, :app_name</p>',
'tooltip-title' => 'Subscribe to notifications for :component_name.',
],
],
],
'users' => [
'email' => [
'invite' => [
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
],
],
],
'signup' => [
'title' => 'Sign Up',
'username' => 'Username',
'email' => 'Email',
'password' => 'Password',
'success' => 'Your account has been created.',
'failure' => 'Something went wrong with the signup.',
],
'system' => [
'update' => 'There is a newer version of Cachet available. You can learn how to update <a href="https://docs.cachethq.io/docs/updating-cachet">here</a>!',
],
// Modal
'modal' => [
'close' => 'Close',
'subscribe' => [
'title' => 'Subscribe to component updates',
'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.',
'button' => 'Subscribe',
],
],
// Other
'home' => 'Home',
'description' => 'Stay up to date with the latest service updates from :app.',
'powered_by' => 'Powered by <a href="https://cachethq.io" class="links">Cachet</a>.',
'about_this_site' => 'About This Site',
'rss-feed' => 'RSS',
'atom-feed' => 'Atom',
'feed' => 'Status Feed',
];

View File

@@ -0,0 +1,273 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'dashboard' => 'Dashboard',
// Incidents
'incidents' => [
'title' => 'Incidents &amp; Schedule',
'incidents' => 'Incidents',
'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported <strong>:count</strong> incidents.',
'incident-create-template' => 'Create Template',
'incident-templates' => 'Incident Templates',
'add' => [
'title' => 'Report an incident',
'success' => 'Incident added.',
'failure' => 'There was an error adding the incident, please try again.',
],
'edit' => [
'title' => 'Edit an incident',
'success' => 'Incident updated.',
'failure' => 'There was an error editing the incident, please try again.',
],
'delete' => [
'success' => 'The incident has been deleted and will not show on your status page.',
'failure' => 'The incident could not be deleted, please try again.',
],
// Incident templates
'templates' => [
'title' => 'Incident Templates',
'add' => [
'title' => 'Create an incident template',
'message' => 'You should add an incident template.',
'success' => 'Your new incident template has been created.',
'failure' => 'Something went wrong with the incident template.',
],
'edit' => [
'title' => 'Edit Template',
'success' => 'The incident template has been updated.',
'failure' => 'Something went wrong updating the incident template',
],
'delete' => [
'success' => 'The incident template has been deleted.',
'failure' => 'The incident template could not be deleted, please try again.',
],
],
],
// Incident Maintenance
'schedule' => [
'schedule' => 'Scheduled Maintenance',
'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported <strong>:count</strong> schedules.',
'scheduled_at' => 'Scheduled at :timestamp',
'add' => [
'title' => 'Add Scheduled Maintenance',
'success' => 'Schedule added.',
'failure' => 'Something went wrong adding the schedule, please try again.',
],
'edit' => [
'title' => 'Edit Scheduled Maintenance',
'success' => 'Schedule has been updated!',
'failure' => 'Something went wrong editing the schedule, please try again.',
],
'delete' => [
'success' => 'The scheduled maintenance has been deleted and will not show on your status page.',
'failure' => 'The scheduled maintenance could not be deleted, please try again.',
],
],
// Components
'components' => [
'components' => 'Components',
'component_statuses' => 'Component Statuses',
'listed_group' => 'Grouped under :name',
'add' => [
'title' => 'Add a component',
'message' => 'You should add a component.',
'success' => 'Component created.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'edit' => [
'title' => 'Edit a component',
'success' => 'Component updated.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'delete' => [
'success' => 'The component has been deleted!',
'failure' => 'The component could not be deleted, please try again.',
],
// Component groups
'groups' => [
'groups' => 'Component group|Component groups',
'no_components' => 'You should add a component group.',
'add' => [
'title' => 'Add a component group',
'success' => 'Component group added.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'edit' => [
'title' => 'Edit a component group',
'success' => 'Component group updated.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'delete' => [
'success' => 'Component group has been deleted!',
'failure' => 'The component group could not be deleted, please try again.',
],
],
],
// Metrics
'metrics' => [
'metrics' => 'Metrics',
'add' => [
'title' => 'Create a metric',
'message' => 'You should add a metric.',
'success' => 'Metric created.',
'failure' => 'Something went wrong with the metric, please try again.',
],
'edit' => [
'title' => 'Edit a metric',
'success' => 'Metric updated.',
'failure' => 'Something went wrong with the metric, please try again.',
],
'delete' => [
'success' => 'The metric has been deleted and will no longer display on your status page.',
'failure' => 'The metric could not be deleted, please try again.',
],
],
// Subscribers
'subscribers' => [
'subscribers' => 'Subscribers',
'description' => 'Subscribers will receive email updates when incidents are created or components are updated.',
'verified' => 'Verified',
'not_verified' => 'Not verified',
'subscriber' => ':email, subscribed :date',
'no_subscriptions' => 'Subscribed to all updates',
'add' => [
'title' => 'Add a new subscriber',
'success' => 'Subscriber has been added!',
'failure' => 'Something went wrong adding the subscriber, please try again.',
'help' => 'Enter each subscriber on a new line.',
],
'edit' => [
'title' => 'Update subscriber',
'success' => 'Subscriber has been updated!',
'failure' => 'Something went wrong editing the subscriber, please try again.',
],
],
// Team
'team' => [
'team' => 'Team',
'member' => 'Member',
'profile' => 'Profile',
'description' => 'Team Members will be able to add, modify &amp; edit components and incidents.',
'add' => [
'title' => 'Add a new team member',
'success' => 'Team member added.',
'failure' => 'The team member could not be added, please try again.',
],
'edit' => [
'title' => 'Update profile',
'success' => 'Profile updated.',
'failure' => 'Something went wrong updating the profile, please try again.',
],
'delete' => [
'success' => 'Team member has been deleted and will no longer have access to the dashboard!',
'failure' => 'The team member could not be added, please try again.',
],
'invite' => [
'title' => 'Invite a new team member',
'success' => 'An invite has been sent',
'failure' => 'The invite could not be sent, please try again.',
],
],
// Settings
'settings' => [
'settings' => 'Settings',
'app-setup' => [
'app-setup' => 'Application Setup',
'images-only' => 'Only images may be uploaded.',
'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size',
],
'analytics' => [
'analytics' => 'Analytics',
],
'localization' => [
'localization' => 'Localization',
],
'customization' => [
'customization' => 'Customization',
'header' => 'Custom Header HTML',
'footer' => 'Custom Footer HTML',
],
'security' => [
'security' => 'Security',
'two-factor' => 'Users without two-factor authentication',
],
'stylesheet' => [
'stylesheet' => 'Stylesheet',
],
'theme' => [
'theme' => 'Theme',
],
'edit' => [
'success' => 'Settings saved.',
'failure' => 'Settings could not be saved.',
],
'credits' => [
'credits' => 'Credits',
'contributors' => 'Contributors',
'license' => 'Cachet is a BSD-3-licensed open source project, released by <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Backers & Sponsors',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Thank you to each and every one of the :count contributors.',
],
],
// Login
'login' => [
'login' => 'Login',
'logged_in' => 'You\'re logged in.',
'welcome' => 'Welcome Back!',
'two-factor' => 'Please enter your token.',
],
// Sidebar footer
'help' => 'Help',
'status_page' => 'Status Page',
'logout' => 'Logout',
// Notifications
'notifications' => [
'notifications' => 'Notifications',
'awesome' => 'Awesome.',
'whoops' => 'Whoops.',
],
// Widgets
'widgets' => [
'news' => 'Latest News',
'news_subtitle' => 'Get the latest update',
],
// Welcome modal
'welcome' => [
'welcome' => 'Welcome to your new Status page!',
'message' => 'Your status page is almost ready! You might want to configure these extra settings',
'close' => 'Take me straight to my dashboard',
'steps' => [
'component' => 'Create components',
'incident' => 'Create incidents',
'customize' => 'Customize',
'team' => 'Add users',
'api' => 'Generate API token',
'two-factor' => 'Two Factor Authentication',
],
],
];

View File

@@ -0,0 +1,192 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Setup form fields
'setup' => [
'email' => 'Email',
'username' => 'Username',
'password' => 'Password',
'site_name' => 'Site Name',
'site_domain' => 'Site Domain',
'site_timezone' => 'Select your timezone',
'site_locale' => 'Select your language',
'enable_google2fa' => 'Enable Google Two Factor Authentication',
'cache_driver' => 'Cache Driver',
'session_driver' => 'Session Driver',
'mail_driver' => 'Mail Driver',
'mail_host' => 'Mail Host',
'mail_address' => 'Mail From Address',
'mail_username' => 'Mail Username',
'mail_password' => 'Mail Password',
],
// Login form fields
'login' => [
'login' => 'Username or Email',
'email' => 'Email',
'password' => 'Password',
'2fauth' => 'Authentication Code',
'invalid' => 'Invalid username or password',
'invalid-token' => 'Invalid token',
'cookies' => 'Heu d\'habilitar les galetes (cookies) per poder iniciar sessió.',
'rate-limit' => 'Rate limit exceeded.',
],
// Incidents form fields
'incidents' => [
'name' => 'Name',
'status' => 'Status',
'component' => 'Component',
'message' => 'Message',
'message-help' => 'You may also use Markdown.',
'scheduled_at' => 'When to schedule the maintenance for?',
'incident_time' => 'When did this incident occur?',
'notify_subscribers' => 'Notify subscribers?',
'visibility' => 'Incident Visibility',
'public' => 'Viewable by public',
'logged_in_only' => 'Only visible to logged in users',
'templates' => [
'name' => 'Name',
'template' => 'Template',
'twig' => 'Incident Templates can make use of the <a href="http://twig.sensiolabs.org/" target="_blank">Twig</a> templating language.',
],
],
// Components form fields
'components' => [
'name' => 'Name',
'status' => 'Status',
'group' => 'Group',
'description' => 'Description',
'link' => 'Link',
'tags' => 'Tags',
'tags-help' => 'Comma separated.',
'enabled' => 'Component enabled?',
'groups' => [
'name' => 'Name',
'collapsing' => 'Choose visibility of the group',
'visible' => 'Always expanded',
'collapsed' => 'Collapse the group by default',
'collapsed_incident' => 'Collapse the group, but expand if there are issues',
],
],
// Metric form fields
'metrics' => [
'name' => 'Name',
'suffix' => 'Suffix',
'description' => 'Description',
'description-help' => 'You may also use Markdown.',
'display-chart' => 'Display chart on status page?',
'default-value' => 'Default value',
'calc_type' => 'Calculation of metrics',
'type_sum' => 'Sum',
'type_avg' => 'Average',
'places' => 'Decimal places',
'default_view' => 'Default view',
'threshold' => 'How many minutes of threshold between metric points?',
'points' => [
'value' => 'Value',
],
],
// Settings
'settings' => [
/// Application setup
'app-setup' => [
'site-name' => 'Site Name',
'site-url' => 'Site URL',
'display-graphs' => 'Display graphs on status page?',
'about-this-page' => 'About this page',
'days-of-incidents' => 'How many days of incidents to show?',
'banner' => 'Banner Image',
'banner-help' => "It's recommended that you upload files no bigger than 930px wide .",
'subscribers' => 'Allow people to signup to email notifications?',
'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?',
],
'analytics' => [
'analytics_google' => 'Google Analytics code',
'analytics_gosquared' => 'GoSquared Analytics code',
'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)',
'analytics_piwik_siteid' => 'Piwik\'s site id',
],
'localization' => [
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
],
'security' => [
'allowed-domains' => 'Allowed domains',
'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.',
],
'stylesheet' => [
'custom-css' => 'Custom Stylesheet',
],
'theme' => [
'background-color' => 'Background Color',
'background-fills' => 'Background fills (components, incidents, footer)',
'banner-background-color' => 'Banner background color',
'banner-padding' => 'Farciment (padding) del banner',
'fullwidth-banner' => 'Enable fullwidth banner?',
'text-color' => 'Text Color',
'dashboard-login' => 'Show dashboard button in the footer?',
'reds' => 'Red (used for errors)',
'blues' => 'Blue (used for information)',
'greens' => 'Green (used for success)',
'yellows' => 'Yellow (used for alerts)',
'oranges' => 'Orange (used for notices)',
'metrics' => 'Metrics fill',
'links' => 'Links',
],
],
'user' => [
'username' => 'Username',
'email' => 'Email',
'password' => 'Password',
'api-token' => 'API Token',
'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.',
'gravatar' => 'Change your profile picture at Gravatar.',
'user_level' => 'User Level',
'levels' => [
'admin' => 'Admin',
'user' => 'User',
],
'2fa' => [
'help' => 'Enabling two factor authentication increases security of your account. You will need to download <a href="https://support.google.com/accounts/answer/1066447?hl=en">Google Authenticator</a> or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.',
],
'team' => [
'description' => 'Invite your team members by entering their email addresses here.',
'email' => 'Email #:id',
],
],
// Buttons
'add' => 'Add',
'save' => 'Save',
'update' => 'Update',
'create' => 'Create',
'edit' => 'Edit',
'delete' => 'Delete',
'submit' => 'Submit',
'cancel' => 'Cancel',
'remove' => 'Remove',
'invite' => 'Invite',
'signup' => 'Sign Up',
// Other
'optional' => '* Optional',
];

View File

@@ -0,0 +1,28 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
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' => '&laquo; Previous',
'next' => 'Next &raquo;',
];

View File

@@ -0,0 +1,23 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'setup' => 'Setup',
'title' => 'Setup Cachet',
'service_details' => 'Service Details',
'env_setup' => 'Environment Setup',
'status_page_setup' => 'Status Page Setup',
'show_support' => 'Show support for Cachet?',
'admin_account' => 'Administrator Account',
'complete_setup' => 'Complete Setup',
'completed' => 'Cachet has been configured successfully!',
'finish_setup' => 'Go to dashboard',
];

View File

@@ -0,0 +1,122 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
'accepted' => 'The :attribute must be accepted.',
'active_url' => 'The :attribute is not a valid URL.',
'after' => 'The :attribute must be a date after :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.',
'between' => [
'numeric' => 'The :attribute must be a date before :date.',
'file' => 'The :attribute must be between :min and :max.',
'string' => 'The :attribute must be between :min and :max kilobytes.',
'array' => 'The :attribute must have between :min and :max items.',
],
'boolean' => 'The :attribute must have between :min and :max items.',
'confirmed' => 'The :attribute field must be true or false.',
'date' => 'The :attribute confirmation does not match.',
'date_format' => 'The :attribute is not a valid date.',
'different' => 'The :attribute does not match the format :format.',
'digits' => 'The :attribute and :other must be different.',
'digits_between' => 'The :attribute must be :digits digits.',
'email' => 'The :attribute must be between :min and :max digits.',
'exists' => 'The :attribute must be a valid email address.',
'distinct' => 'The :attribute field has a duplicate value.',
'filled' => 'The :attribute format is invalid.',
'image' => 'The :attribute must be an image.',
'in' => 'The :attribute must be an image.',
'in_array' => 'The :attribute field does not exist in :other.',
'integer' => 'The selected :attribute is invalid.',
'ip' => 'The :attribute must be an integer.',
'json' => 'The :attribute must be a valid JSON string.',
'max' => [
'numeric' => 'The :attribute must be a valid IP address.',
'file' => 'The :attribute may not be greater than :max.',
'string' => 'The :attribute may not be greater than :max kilobytes.',
'array' => 'The :attribute may not have more than :max items.',
],
'mimes' => 'The :attribute may not have more than :max items.',
'min' => [
'numeric' => 'The :attribute must be a file of type: :values.',
'file' => 'The :attribute must be at least :min kilobytes.',
'string' => 'The :attribute must be at least :min kilobytes.',
'array' => 'The :attribute must be at least :min characters.',
],
'not_in' => 'The :attribute must have at least :min items.',
'numeric' => 'The selected :attribute is invalid.',
'present' => 'The :attribute field must be present.',
'regex' => 'The :attribute must be a number.',
'required' => 'The :attribute format is invalid.',
'required_if' => 'The :attribute field is required.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :other is :value.',
'required_with_all' => 'The :attribute field is required when :values is present.',
'required_without' => 'The :attribute field is required when :values is present.',
'required_without_all' => 'The :attribute field is required when :values is not present.',
'same' => 'The :attribute field is required when none of :values are present.',
'size' => [
'numeric' => 'The :attribute and :other must match.',
'file' => 'The :attribute must be :size kilobytes.',
'string' => 'The :attribute must be :size characters.',
'array' => 'The :attribute must be :size characters.',
],
'string' => 'The :attribute must contain :size items.',
'timezone' => 'The :attribute must be a valid zone.',
'unique' => 'The :attribute has already been taken.',
'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' => [],
];

View File

@@ -103,8 +103,8 @@ return [
'users' => [
'email' => [
'invite' => [
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
],
],
],

View File

@@ -224,7 +224,7 @@ return [
'contributors' => 'Contributors',
'license' => 'Cachet is a BSD-3-licensed open source project, released by <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Backers & Sponsors',
'backers' => 'If you\'d like to support future development, check out the <a href="https://patreon.com/jbrooksuk" target="_blank">Cachet Patreon</a> campaign.',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Thank you to each and every one of the :count contributors.',
],
],
@@ -251,8 +251,6 @@ return [
// Widgets
'widgets' => [
'support' => 'Support Cachet',
'support_subtitle' => 'Check out our <strong><a href="https://patreon.com/jbrooksuk" target="_blank">Patreon</a></strong> page!',
'news' => 'Latest News',
'news_subtitle' => 'Get the latest updates',
],

View File

@@ -118,10 +118,10 @@ return [
'analytics_piwik_siteid' => 'Identificador de lloc del Piwik',
],
'localization' => [
'site-timezone' => 'Seleccioneu el fus horari',
'site-locale' => 'Idioma del lloc',
'date-format' => 'Format de la data',
'incident-date-format' => 'Format del fus horari dels incidents',
'site-timezone' => 'Seleccioneu el fus horari',
'site-locale' => 'Idioma del lloc',
'date-format' => 'Format de la data',
'incident-date-format' => 'Format del fus horari dels incidents',
],
'security' => [
'allowed-domains' => 'Dominis permesos',

View File

@@ -0,0 +1,144 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Components
'components' => [
'last_updated' => 'Poslední aktualizace :timestamp',
'status' => [
1 => 'V provozu',
2 => 'Problémy s výkonem',
3 => 'Částečný výpadek',
4 => 'Závažný výpadek',
],
'group' => [
'other' => 'Ostatní služby',
],
],
// Incidents
'incidents' => [
'none' => 'Nejsou nahlášeny žádné incidenty',
'past' => 'Minulé incidenty',
'previous_week' => 'Předchozí týden',
'next_week' => 'Následující týden',
'scheduled' => 'Plánovaná údržba',
'scheduled_at' => ', plánované na :timestamp',
'status' => [
0 => 'Naplánováno', // TODO: Hopefully remove this.
1 => 'Zkoumání příčiny',
2 => 'Problém identifikován',
3 => 'Sledování',
4 => 'Opraveno',
],
],
// Service Status
'service' => [
'good' => '[0,1] Služba je v provozu|[2,Inf] Všechny služby fungují bez problémů',
'bad' => '[0,1] Služba má problémy|[2,Inf] Některá ze služeb má problémy',
'major' => '[0,1] Služba má celkový výpadek|[2,Inf] Některé služby mají celkový výpadek',
],
'api' => [
'regenerate' => 'Obnovit API klíč',
'revoke' => 'Zrušit API klíč',
],
// Metrics
'metrics' => [
'filter' => [
'last_hour' => 'Během poslední hodiny',
'hourly' => 'Posledních 12 hodin',
'weekly' => 'Týden',
'monthly' => 'Měsíc',
],
],
// Subscriber
'subscriber' => [
'subscribe' => 'Přihlásit se k odběru upozornění',
'button' => 'Přihlásit',
'manage' => [
'no_subscriptions' => 'Aktuálně jsi přihlášen(a) ke všem upozorněním.',
'my_subscriptions' => 'Aktuálně jsi přihlášen(a) k následujícím upozorněním.',
],
'email' => [
'subscribe' => 'Přihlásit se k zasílání upozornění e-mailem.',
'subscribed' => 'Proběhlo přihlášení k e-mailovým upozorněním, potvrďte ho prosím na vašem e-mailu.',
'verified' => 'E-mail pro zasílání upozornění byl ověřen. Děkujeme!',
'manage' => 'Spravovat e-mailové odběry',
'unsubscribe' => 'Odhlásit z odběru e-mailových upozornění.',
'unsubscribed' => 'Odběr e-mailových upozornění byl zrušen.',
'failure' => 'Došlo k chybě při nastavení odběru e-mailů.',
'already-subscribed' => 'Nelze přihlásit k odběru :email, protože je již přihlášen.',
'verify' => [
'text' => "Potvrď prosím svůj email k odběru upozornění od :app_name.\n:link",
'html' => '<p>Prosím potvrď svůj email k odběru upozornění pro :app_name.</p>',
'button' => 'Potvrdit odběr',
],
'maintenance' => [
'subject' => '[Naplánovaná odstávka] :name',
],
'incident' => [
'subject' => '[Nový incident] :status: :name',
],
'component' => [
'subject' => 'Aktualizace stavu služby',
'text' => 'Byl změněn stav služby :component_name. Služba má nyní stav :component_human_status.\nDěkujeme, :app_name',
'html' => '<p>Byl změněn stav služby :component_name. Služba má nyní stav :component_human_status.</p><p>Děkujeme, :app_name</p>',
'tooltip-title' => 'Přihlásit se k odběru upozornění pro :component_name.',
],
],
],
'users' => [
'email' => [
'invite' => [
'text' => "Byl(a) jsi pozván(a) do teamu :app_name, k registraci klikni na následující odkaz.\n:link\nDěkujeme, :app_name",
'html' => '<p>Byl(a) jsi pozván(a) do teamu :app_name, k registraci klikni na následující odkaz.</p><p><a href=":link">:link</a></p><p>Děkujeme, :app_name</p>',
],
],
],
'signup' => [
'title' => 'Registrovat se',
'username' => 'Uživatelské jméno',
'email' => 'E-mail',
'password' => 'Heslo',
'success' => 'Tvůj účet byl vytvořen.',
'failure' => 'Něco je špatně, nelze se registrovat.',
],
'system' => [
'update' => 'Je k dispozici nová verze Cachet. Jak provést update najdeš <a href="https://docs.cachethq.io/docs/updating-cachet">zde</a>!',
],
// Modal
'modal' => [
'close' => 'Zavřít',
'subscribe' => [
'title' => 'Přihlásit se k odběru upozornění',
'body' => 'Zadej svůj email pro odběr upozornění této služby. Pokud již odebíráš upozornění, budeš nadále dostávat emaily pro tuto službu.',
'button' => 'Přihlásit',
],
],
// Other
'home' => 'Hlavní stránka',
'description' => 'Držte krok s nejnovějšími aktualizacemi od: app.',
'powered_by' => 'Vytvořeno pomocí <a href="https://cachethq.io" class="links">Cachet</a>.',
'about_this_site' => 'O tomto webu',
'rss-feed' => 'RSS',
'atom-feed' => 'Atom',
'feed' => 'Kanál stavů',
];

Some files were not shown because too many files have changed in this diff Show More