Commit graph

2061 commits

Author SHA1 Message Date
Shane Kilkelly
36d969e6e6 Set invites to be an empty array if missing 2016-08-15 15:22:23 +01:00
Shane Kilkelly
158afbb157 Merge branch 'master' into pr-email-tokens
Conflicts:
	app/coffee/Features/Notifications/NotificationsBuilder.coffee
	public/coffee/ide/share/controllers/ShareController.coffee
2016-08-15 10:29:21 +01:00
Shane Kilkelly
f92767f7b5 Address feedback, add ? checks where appropriate 2016-08-12 15:26:20 +01:00
Shane Kilkelly
e53394919f Rework how invite expiry functions. 2016-08-12 14:40:59 +01:00
Shane Kilkelly
d547bff4e5 Blur the resend button after response 2016-08-12 11:25:03 +01:00
Shane Kilkelly
a7bc8bffe0 Update markAsReadByKeyOnly url. 2016-08-12 09:59:25 +01:00
Shane Kilkelly
a9042ff324 Enable enter key on share dialog button 2016-08-11 15:24:35 +01:00
Shane Kilkelly
ce039f8cd3 Remove the email when user id is added to project 2016-08-11 14:17:01 +01:00
Paulo Reis
9bf9df9a4a Track login events. 2016-08-11 14:09:45 +01:00
Shane Kilkelly
826295167f Mark Notification as read by key alone 2016-08-11 14:04:11 +01:00
Brian Gough
9a399d3dd3 move "run syntax check" compile option out of beta 2016-08-11 13:55:47 +01:00
Brian Gough
a862592138 added syntax check to beta page, removed mendeley 2016-08-11 13:43:33 +01:00
Paulo Reis
6a210978fe Track registration events. 2016-08-11 12:29:58 +01:00
James Allen
0270d34d0f Use JSONB not JSON column type 2016-08-11 10:19:07 +01:00
Paulo Reis
b405b4dce6 Remove Countly integration. 2016-08-10 17:34:32 +01:00
James Allen
4886e8ba0e Rename metadata -> segmentation in Events table to play well with metabase 2016-08-10 17:22:35 +01:00
James Allen
056bb6b0f4 Use a JSON column for metadata 2016-08-10 17:17:59 +01:00
James Allen
93cd511211 Send events to custom DB backend 2016-08-10 16:42:56 +01:00
Brian Gough
abcfb2dd16 Merge pull request #290 from sharelatex/enable-chktex
Enable chktex
2016-08-10 11:49:31 +01:00
Shane Kilkelly
0e0ccb41ff cancel notification when accepting invite 2016-08-08 13:57:33 +01:00
Shane Kilkelly
110082390e Test the _trySendInviteNotfification helper 2016-08-08 10:34:54 +01:00
Shane Kilkelly
e0444cfc62 Make notification column layout explicit. 2016-08-05 16:41:11 +01:00
Shane Kilkelly
9b46c1b1f7 WIP: notification when user is sent an invite 2016-08-05 16:11:03 +01:00
Shane Kilkelly
eafd61a90e Refresh members and invites in client when status changes 2016-08-05 14:01:08 +01:00
Shane Kilkelly
8f7603c324 Add an endpoint to access project members 2016-08-04 16:47:48 +01:00
Shane Kilkelly
092c036406 Rate-limit calls to invite api 2016-08-04 09:50:47 +01:00
Paulo Jorge Reis
60f8e577a8 Merge pull request #293 from sharelatex/pr-wrap-long-words-chat
Wrap long words chat
2016-08-03 16:32:36 +01:00
Shane Kilkelly
721ea88bd0 If email is already invited, resend the invite 2016-08-03 16:30:34 +01:00
Brian Gough
42388f8b76 fix missing space in pdf jade template 2016-08-03 16:30:33 +01:00
Brian Gough
7ce406dd38 switch the compile dropdown menu to left, to avoid overflow into editor 2016-08-03 16:30:18 +01:00
Brian Gough
4d3629e5db add beta feature badge to syntax check 2016-08-03 16:29:46 +01:00
Paulo Reis
73f115fc57 Add i18n keys. 2016-08-03 16:09:45 +01:00
Paulo Reis
cf5c8e27e1 UI fix - do not allow multiple clicks to restore a deleted file. 2016-08-03 16:05:19 +01:00
Shane Kilkelly
a5ddcc3df7 Allow resending of invites 2016-08-03 15:42:19 +01:00
Shane Kilkelly
e7251aab53 Small wording changes 2016-08-03 14:06:08 +01:00
Paulo Reis
e6898d64c9 Track hovering of header features. 2016-08-03 12:17:19 +01:00
Shane Kilkelly
8cb93511df Update UI of share modal 2016-08-03 11:55:24 +01:00
Shane Kilkelly
6ea690225f Refactor view-invite to not use model calls. 2016-08-03 10:23:34 +01:00
Henry Oswald
892511820e fix logging on groupPlan invite notification 2016-08-02 17:09:42 +01:00
Shane Kilkelly
3a3688d3d0 Include invites count in canAddXCollaborators 2016-08-02 15:42:50 +01:00
Shane Kilkelly
2494026b85 Move Helpers/EmailHelpers to Helpers/EmailHelper 2016-08-02 15:42:26 +01:00
Henry Oswald
418d1c56da nullcheck qqfile on upload files 2016-08-02 15:36:59 +01:00
Henry Oswald
928777b61c add null check to redis return value for getValueFromTokenAndExpire 2016-08-02 15:34:44 +01:00
Henry Oswald
2ad0bab976 use underscore.each so it doesn’t blow up on non array. 2016-08-02 15:33:41 +01:00
Brian Gough
38f76b305b change message to "Run syntax check" 2016-08-02 14:43:09 +01:00
Shane Kilkelly
13fe000176 Move email parsing code to Helpers/EmailHelpers 2016-08-02 14:30:42 +01:00
Shane Kilkelly
abbd059eae Refactor to existing addUserIdToProject function 2016-08-02 13:51:00 +01:00
Shane Kilkelly
63f8fe453a Use UserGetter rather than User model 2016-08-02 09:48:09 +01:00
Shane Kilkelly
dca1c9be5d Load invites on project load, rather than asynchronously. 2016-08-01 17:05:37 +01:00
Paulo Reis
ff62e50530 Integrate word wrapping filter in the chat component. 2016-08-01 16:42:54 +01:00
Shane Kilkelly
291a26595c Remove referal id from invite email link 2016-08-01 15:56:07 +01:00
Brian Gough
e508f7b8a9 don't try to display a log hint link if there isn't one 2016-07-29 15:11:34 +01:00
Brian Gough
0742db7732 enable validation option only for beta programme users 2016-07-29 15:11:34 +01:00
Brian Gough
5da1b90418 use validate as keyword for syntax checks 2016-07-29 14:59:48 +01:00
Brian Gough
ef85f1014c add menu option for checking with chktex 2016-07-29 14:59:48 +01:00
Brian Gough
e0d5075fdb include check option when compiling 2016-07-29 14:59:48 +01:00
Shane Kilkelly
f3a1f32bb1 Test the invalid-invite page 2016-07-29 11:54:08 +01:00
Shane Kilkelly
563247044b Start testing the invite page 2016-07-29 09:52:55 +01:00
Shane Kilkelly
9c6195fbec Factor out link builder 2016-07-28 15:59:59 +01:00
Shane Kilkelly
7b18f88145 Merge branch 'master' into pr-email-tokens 2016-07-28 14:53:36 +01:00
Shane Kilkelly
ed65e16e54 If user is member of project, redirect to project.
Leave invite in place to expire naturally.
2016-07-28 11:15:11 +01:00
Shane Kilkelly
1cb9c3582d Don't return early if user is already member. 2016-07-28 09:47:07 +01:00
Shane Kilkelly
e70f121461 Correct name of expireAfterSeconds index 2016-07-27 15:55:31 +01:00
Shane Kilkelly
62d544ccfc Redirect to project if user is already member.
If invite is missing, and current user is already a member
of the project, then just redirect to the project page
2016-07-27 15:28:22 +01:00
Paulo Reis
f4d78a856c Disable page view and session tracking. 2016-07-27 14:20:39 +01:00
Shane Kilkelly
46ec17f2c4 Add redir query string to login link 2016-07-27 13:51:52 +01:00
Shane Kilkelly
e1af171534 Add a dot to end of sentence. 2016-07-27 11:07:26 +01:00
Shane Kilkelly
6f39813a56 Add translations 2016-07-27 10:56:22 +01:00
Shane Kilkelly
78948251a1 Change the Close button color 2016-07-27 10:28:01 +01:00
Shane Kilkelly
827629a74a Invalid-invite page, and re-jigg the share modal 2016-07-27 10:10:44 +01:00
Paulo Reis
6d0779b8f8 Add forgotten name attribute. 2016-07-26 14:47:48 +01:00
Paulo Reis
ab305ea07e Merge branch 'master' into pr-log-hints-negative-feedback 2016-07-26 14:27:15 +01:00
Shane Kilkelly
6162c5ec60 Merge branch 'master' of github.com:sharelatex/web-sharelatex 2016-07-26 14:23:08 +01:00
Shane Kilkelly
e46901a21b Send an empty keys array when there is no data 2016-07-26 14:23:00 +01:00
Shane Kilkelly
855cc28483 Finish adding project and owner details to the accept-invite page 2016-07-26 14:14:14 +01:00
Paulo Reis
a3ee3134b1 Support for i18n. 2016-07-26 11:56:15 +01:00
Shane Kilkelly
2dede5f793 WIP: Working "accept invite" page 2016-07-26 11:46:41 +01:00
Paulo Reis
bfe3e160c9 Integrate with UI. 2016-07-26 11:37:51 +01:00
Henry Oswald
81744e4301 use cdn for blog 2016-07-26 11:11:28 +01:00
Shane Kilkelly
41755212f0 Update the register page with new message 2016-07-26 09:06:21 +01:00
Shane Kilkelly
b898c62e91 Add appropriate query strings to the end of invite link 2016-07-25 16:14:41 +01:00
Paulo Reis
32b57f228c Integrate feedback UI with wufoo service. 2016-07-25 16:12:56 +01:00
Shane Kilkelly
16dcbe2cd4 WIP: wire up share-modal frontend to invite system 2016-07-25 15:07:14 +01:00
Shane Kilkelly
b3add65de1 Start integrating invites into share frontend 2016-07-25 14:27:02 +01:00
Shane Kilkelly
73fed8b0bf Add a getAllInvites api endpoint 2016-07-25 11:17:47 +01:00
Shane Kilkelly
5438f39f9e Start testing acceptInvite 2016-07-25 09:58:08 +01:00
Shane Kilkelly
78a410c39d Remove expiresAt logic from acceptInvite 2016-07-25 09:07:47 +01:00
Paulo Reis
37eb6252d2 Rewording + animation when shown the feedback panel. 2016-07-22 16:33:19 +01:00
Shane Kilkelly
78570817d5 Render a separate template if the invite is not found. 2016-07-22 16:28:00 +01:00
Shane Kilkelly
9e0c44573a Remove expiresAt, use mongo TTL instead. 2016-07-22 16:08:56 +01:00
Shane Kilkelly
b201f1a37a Test getInviteByToken. 2016-07-22 14:21:34 +01:00
Paulo Reis
b6cd6c2d7d UI logic to show or hide the negative feedback panel. 2016-07-22 14:14:58 +01:00
Henry Oswald
8492ea7d28 Merge pull request #285 from sharelatex/file-path-checks
add file path check on element names
2016-07-22 13:54:05 +01:00
Henry Oswald
f7a0860f0b Merge pull request #286 from sharelatex/ha-editor-close
fix close editor button
2016-07-22 13:49:26 +01:00
Paulo Reis
54eadf3256 Add textarea for 'other' feedback + styles. 2016-07-22 12:20:26 +01:00
Paulo Reis
95db6ba934 Basic mark-up for the extra log hint feedback. 2016-07-22 11:56:45 +01:00
Shane Kilkelly
9fba98cd45 Accept invite, and start testing the invite handler. 2016-07-22 11:38:00 +01:00
Shane Kilkelly
1139444790 add token to body of acceptInvite action. 2016-07-22 09:27:00 +01:00
Henry Oswald
ef6eefe1b1 add comment not to fingerprint worker 2016-07-22 09:05:39 +01:00
Henry Oswald
c7a3de45bb Merge branch 'master' of https://github.com/sharelatex/web-sharelatex 2016-07-22 09:05:14 +01:00
Henry Oswald
3029fb6335 add dark host option and don’t load pdfjs worker via cdn 2016-07-21 19:06:53 +01:00
Paulo Jorge Reis
50ad3a107f Merge pull request #287 from sharelatex/pr-highlight-biblio-search
A|B test for bib search pop-up
2016-07-21 17:06:59 +01:00
Paulo Reis
6a46b46cf4 Expose sign-up date as an user attribute in the editor. 2016-07-21 16:42:22 +01:00
Shane Kilkelly
546517db90 revokeInvite and getInviteByToken functions. 2016-07-21 16:19:15 +01:00
Shane Kilkelly
d9c6df0e47 start adding the ProjectInvite workflow. 2016-07-21 15:56:41 +01:00
Henry Oswald
6aca798a45 don’t use cdn on dark 2016-07-21 15:34:23 +01:00
Shane Kilkelly
e0562a2301 Update ProjectInvite model 2016-07-21 14:20:09 +01:00
Shane Kilkelly
3311b43644 more tests for invite controller 2016-07-21 13:31:54 +01:00
Shane Kilkelly
23a9aadba5 start tests for invite controller 2016-07-21 10:08:22 +01:00
Shane Kilkelly
c3e51dd773 Revert "copy helper functions from CollaboratorsHandler"
This reverts commit 0d5acd7bade584e4ff119dc22e5d5d3b3175dae2.
2016-07-21 09:50:52 +01:00
Shane Kilkelly
049cced4fd copy helper functions from CollaboratorsHandler 2016-07-21 09:42:37 +01:00
Henry Oswald
ad60268707 clean up vars for buildjs path and change default to cdn.sharelatex.dev:3000 2016-07-21 09:38:24 +01:00
Shane Kilkelly
0f2600b198 finish out skeleton of invite controller 2016-07-21 09:32:14 +01:00
Shane Kilkelly
f7c2fa37ab Fill out getInviteByToken 2016-07-20 16:44:22 +01:00
Henry Oswald
e27d5ce969 use Url for lib name 2016-07-20 16:10:33 +01:00
Henry Oswald
97b42478d1 don’t fingerprint sentry 2016-07-20 16:03:01 +01:00
Shane Kilkelly
0dc4e2c0c1 Merge branch 'master' into pr-email-tokens 2016-07-20 15:23:37 +01:00
Shane Kilkelly
5b22be8a0b Further scaffolding 2016-07-20 15:22:48 +01:00
Henry Oswald
e8aad2abb1 don’t fingerprint main.js and ide.js 2016-07-20 15:17:01 +01:00
Henry Oswald
596fc2525b simplified buildJSPath 2016-07-20 14:48:58 +01:00
Henry Oswald
a3e40adbaf Merge pull request #283 from sharelatex/ho-cdn
Ho cdn
2016-07-20 14:19:37 +01:00
Shane Kilkelly
a4c7db5f20 skeleton of inviteToProject function 2016-07-20 14:14:56 +01:00
Shane Kilkelly
e383e49161 Add CollaboratorsInviteController and routes 2016-07-20 14:04:14 +01:00
Henry Oswald
6c78ab4ace got requirejs working nicely with cdn 2016-07-20 12:58:32 +01:00
Henry Oswald
b589ab388f fix close editor button
- only evaulate close on web router, not api/static assets
- allow /admin pages to still be available
2016-07-19 17:15:20 +01:00
Henry Oswald
f8c38f30a8 got build js path working with mathjax 2016-07-19 15:41:33 +01:00
Brian Gough
13d6448ab8 Merge pull request #284 from sharelatex/fix-synctex-subdir-path
work around for synctex paths containing /./
2016-07-19 12:24:31 +01:00
Brian Gough
a93efde1ae add file path check on element names 2016-07-19 11:58:10 +01:00
Henry Oswald
0cbd9d0ff9 use url.resolve to adding https:// part 2016-07-19 11:41:36 +01:00
Shane Kilkelly
4e1df9f476 Fix wording of userHasSubscription to userHasNoSubscription 2016-07-19 11:37:58 +01:00
Shane Kilkelly
3aea3a68d1 Check the truth of subscription.customAccount, rather than definition. 2016-07-19 10:28:43 +01:00
Shane Kilkelly
effc3727be Don’t show upgrade prompts for users with custom subscription accounts.
Set `hasValidSubscription` to true if user subscription is custom.
2016-07-19 10:15:45 +01:00
Henry Oswald
a2a8b7123b created buildCssPath img and js path funcs 2016-07-18 17:18:51 +01:00
Brian Gough
1d74e6750c work around for synctex paths containing /./ 2016-07-18 17:00:34 +01:00
James Allen
62a444082d Add in /dev/csrf endpoint for easy automated testing 2016-07-18 16:47:54 +01:00
Henry Oswald
715ffcfbf2 changed ordering on static assets path, just tidying. 2016-07-18 16:24:48 +01:00
Brian Gough
a3c97533ae Merge pull request #281 from sharelatex/stop-compile
add support for stopping compile
2016-07-18 15:01:26 +01:00
Brian Gough
ded9bcaa11 remove unwanted styling on 'stop compile' button 2016-07-18 15:00:16 +01:00
Henry Oswald
c21549220c mvp for cdn 2016-07-18 14:05:07 +01:00
Brian Gough
92d41dd74e added comment for per-user route to top-level directory 2016-07-18 11:16:09 +01:00
Brian Gough
5a02e8c656 add support for stopping compile 2016-07-15 16:28:52 +01:00
Henry Oswald
0576380811 allow placeholder for sharing project to be changed 2016-07-14 11:40:32 +01:00
Paulo Reis
c23091da94 Always set feature flags, if available. 2016-07-14 11:07:10 +01:00
Paulo Reis
ab995671fc Namespace feature flags. 2016-07-14 10:10:14 +01:00
Paulo Reis
5d5bc57535 Add user name. 2016-07-14 09:55:11 +01:00
Paulo Reis
fee22db567 Refactor user blocks into a single script tag. 2016-07-14 09:47:25 +01:00
Paulo Reis
a261de9eb1 Set feature flags. 2016-07-14 09:37:04 +01:00
Paulo Reis
68906cb0c5 Avoid unneeded change_id event; id can be set as a Countly property, before initializing. 2016-07-13 16:29:53 +01:00
Henry Oswald
713f2110c1 use translations for title and meta description (google) 2016-07-12 14:25:25 +01:00
Paulo Reis
1e62ce679b Make 'knowledge base' a link to the KB index page. 2016-07-12 11:44:48 +01:00
Paulo Reis
785bf1b5a2 New key for the message label. 2016-07-11 16:24:06 +01:00
Paulo Reis
af93ac4413 Track suggestions usage. 2016-07-11 14:27:07 +01:00
Paulo Reis
9ef78b4bc2 Merge branch 'master' into pr-contact-form-suggestions 2016-07-11 13:54:06 +01:00
Paulo Reis
7eafa5ca3f Make Countly server configurable via settings. 2016-07-11 11:02:52 +01:00
Henry Oswald
94d760e32d import bootstrap font awseome via less not html 2016-07-10 11:10:43 +01:00
Paulo Reis
444120f8b1 Merge branch 'master' into pr-contact-form-suggestions 2016-07-08 13:55:08 +01:00
Shane Kilkelly
0e9beb5653 remove daft redundancy. 2016-07-07 09:42:01 +01:00
Shane Kilkelly
896cbb5f4c Merge branch 'master' of github.com:sharelatex/web-sharelatex 2016-07-07 09:35:53 +01:00
Shane Kilkelly
9e35bdcaea Refactor: add ? suffix to truth tests. 2016-07-07 09:35:44 +01:00
Paulo Jorge Reis
efacd9e7f2 Merge pull request #267 from sharelatex/pr-log-dropdown
"Other logs & files" dropdown / dropup
2016-07-06 16:06:10 +01:00
Shane Kilkelly
21eb104928 Merge branch 'master' of github.com:sharelatex/web-sharelatex 2016-07-06 15:39:12 +01:00
Shane Kilkelly
dda0841af3 Return early if there are no keys to delete 2016-07-06 15:39:03 +01:00
Paulo Reis
b867c37d49 Merge branch 'master' into pr-log-dropdown 2016-07-06 15:35:28 +01:00
Paulo Jorge Reis
59065395ef Merge pull request #273 from sharelatex/pr-countly-integration
Countly integration
2016-07-06 15:00:47 +01:00
Paulo Reis
7a3d3d3ffd Make Countly track by internal ids. 2016-07-06 14:44:28 +01:00
Paulo Reis
8e2475afdc Track hints feedback in both GA and Countly; clean-up. 2016-07-06 14:24:50 +01:00
Shane Kilkelly
fc6cf75ad5 Merge branch 'master' into sk-session-revocation 2016-07-06 13:19:15 +01:00
Paulo Reis
5c121a5f05 Track user log in and sign up. 2016-07-06 12:12:54 +01:00
Paulo Reis
7e1c1f7414 Remove heap integration. 2016-07-06 12:12:22 +01:00
Paulo Reis
c9b1faa1a1 Add user info to correlate with events. 2016-07-06 11:59:33 +01:00
Paulo Reis
909f7c15b5 Track log-related actions. 2016-07-05 16:27:14 +01:00
Paulo Reis
d5efe81a46 Track recompiles. 2016-07-05 16:02:46 +01:00
Shane Kilkelly
3f1a47eccb map the 'retain' values to session ids 2016-07-05 14:54:26 +01:00
Shane Kilkelly
5b9903551a add an array of session ids to retain. 2016-07-05 14:20:47 +01:00
Shane Kilkelly
6e282ab308 clear sessions on password reset 2016-07-05 14:19:59 +01:00
Paulo Reis
fac3698c40 Better namespacing of sprite CSS classes. 2016-07-05 11:08:58 +01:00
Paulo Reis
7dd1906eaf Initial Countly integration. 2016-07-04 16:51:31 +01:00
Shane Kilkelly
df0a7bc547 test the _checkSessions function. 2016-07-04 14:04:10 +01:00
Shane Kilkelly
2ae2e6ed4f Test trackSession 2016-07-04 10:37:01 +01:00
Shane Kilkelly
a869c99c60 Begin testing UserSessionsManager. 2016-07-04 10:05:34 +01:00
Shane Kilkelly
5a1af9a5f3 check sessions on login and logout. 2016-07-04 09:27:38 +01:00
Paulo Reis
11f198d970 Merge branch 'master' into sprites 2016-07-01 16:27:09 +01:00
Paulo Reis
4f49a25639 Use a figure element instead of an img, as there is no src attribute. 2016-07-01 16:02:01 +01:00
Shane Kilkelly
6f20f565fe Add early-return guards 2016-07-01 15:55:50 +01:00
Shane Kilkelly
0ac9b05d02 Add ip_address and session_created to the session user object. 2016-07-01 15:49:07 +01:00
Shane Kilkelly
f1653d01b7 Refactor method names in UserSessionsManager 2016-07-01 15:33:59 +01:00
Henry Oswald
6f4a7f4779 mvp for using sprites for flags, needs border removing 2016-07-01 15:04:39 +01:00
Shane Kilkelly
6938f1d055 No need to build extra string 2016-07-01 15:04:13 +01:00
Shane Kilkelly
8855d0fa0f Clear out sessions 2016-07-01 13:38:13 +01:00
Shane Kilkelly
5ae0aeaf94 Fix logging. 2016-07-01 13:37:56 +01:00
Shane Kilkelly
d8ffa5b4b1 set expiry on the user sessions set. 2016-07-01 11:24:46 +01:00
Shane Kilkelly
88bef5c5ea Add revokeAllSessions handler, when password is reset 2016-07-01 09:51:22 +01:00
Brian Gough
ea942fe255 Merge pull request #269 from sharelatex/remove-migration-to-per-user-containers
remove scaffolding for per-user compiles so that it is always by default
2016-06-30 15:16:28 +01:00
Brian Gough
c04e00026b remove scaffolding for per-user compiles so that it is always by default 2016-06-30 14:43:03 +01:00
James Allen
882e28a811 Don't choke on null projects 2016-06-30 14:30:04 +01:00
James Allen
b76cc7e314 Remove a user from being a collaborator when their account is deleted 2016-06-30 14:21:44 +01:00
James Allen
a0fcc7e3ed Skip null user objects when getting collaborators 2016-06-30 13:56:21 +01:00
Paulo Reis
c5f53ef431 Track log hints feedback. 2016-06-30 11:30:30 +01:00
Henry Oswald
000c862ae1 return 404 if blog returns 403, caused by file not existing 2016-06-29 15:36:33 +01:00
Shane Kilkelly
03fedafaf5 save the session key string, rather than just the id 2016-06-29 15:12:12 +01:00