Zach Copley
0ed572ff3f
Fix missing close of comment block
2010-11-11 10:39:05 -08:00
Zach Copley
09aaf21e8d
Fix missing close of comment block
2010-11-11 10:33:26 -08:00
Evan Prodromou
3afb031d92
Missing one close-paren in newgroup.php
2010-11-09 17:08:11 -05:00
Evan Prodromou
a988e2e97b
hook points for the email settings form
2010-11-09 15:00:30 -05:00
Brion Vibber
f25accc43e
split out InlineAttachmentList from AttachmentList
2010-11-09 10:45:19 -08:00
Brion Vibber
6d7f02ff31
Pass file attachment thumbnails along with oEmbed data.
2010-11-08 17:22:01 -08:00
Brion Vibber
551b196a35
doomy doom doom
2010-11-08 15:32:41 -08:00
Evan Prodromou
719b480eaa
use subclassing to change notice list output for single notice
2010-11-08 13:08:59 -05:00
Siebrand Mazeland
f5b037c169
Update translator documentation.
2010-11-07 22:32:52 +01:00
Siebrand Mazeland
66e34a28f7
screen_name -> nick names. Spotted by The Evil IP address.
2010-11-07 22:31:02 +01:00
Brion Vibber
51a756c211
Fix ticket #2860 : clarify API doc comments for 'source' parameter's interaction with OAuth on api/statuses/update
2010-11-03 14:58:33 -07:00
Brion Vibber
6e03456753
Migrate some more code from manually constructing "fullname (nickname)" to using Profile->getFancyName(). Encapsulates common logic and allows for localization of the parens.
2010-11-03 13:10:42 -07:00
Brion Vibber
dc4fafbbd1
General cleanup & part of ticket #2864 : use User_group->getFancyName() instead of replicating the logic in various places. Encapsulates and allows for localization of parens.
2010-11-03 12:59:19 -07:00
Siebrand Mazeland
973a48bded
i18n/L10n fixes and translator documentation addded/updated.
2010-11-02 23:48:36 +01:00
Siebrand Mazeland
a65362f7fa
Add context for different uses of "%1$s (%2$s)"
2010-11-02 23:08:59 +01:00
Brion Vibber
81e0653080
Merge branch 'pretty-title2' into 0.9.x
2010-11-02 14:21:23 -07:00
Brion Vibber
6a181bb128
Unrolled tagged vs untagged, page 1 vs page N message variants for showstream title. #2668
2010-11-02 14:20:06 -07:00
Brion Vibber
bc85f6914b
fix syntax error introduced in i18n tweaks: newgroup action
2010-11-02 14:03:50 -07:00
Brion Vibber
426cda5e1f
Alternate pretty-title tweaks for #2668
2010-11-02 13:42:44 -07:00
Siebrand Mazeland
760a1c27bc
Update translator documentation.
2010-11-01 16:49:36 +01:00
Siebrand Mazeland
6ab34fd8e8
* i18n/L10n updates.
...
* translator documentation added.
* superfluous whitespace removed.
2010-11-01 16:49:35 +01:00
Siebrand Mazeland
5c6732c4bb
Update translator documentation.
2010-11-01 16:49:35 +01:00
Siebrand Mazeland
1c0e84f066
Add forgotten translator documentation.
2010-10-31 01:26:39 +02:00
Siebrand Mazeland
5406873007
* translator documentation updated.
...
* superfluous whitespace removed.
* added FIXMEs for missing documentation and un-i18n-able timestamps.
2010-10-31 01:16:59 +02:00
Siebrand Mazeland
08edd1fedf
* i18n/L10n updates.
...
* translator documentation added/updated.
* superfluous whitespace removed.
2010-10-31 00:58:35 +02:00
Siebrand Mazeland
234b03d945
* translator documentation updates.
...
* added FIXMEs in actions/showgroup.php.
* superfluous whitespace removed.
2010-10-30 14:36:54 +02:00
Brion Vibber
8d0c014ced
Merge branch 'master' into 0.9.x
2010-10-28 13:01:10 -07:00
Brion Vibber
9ea7cafd27
Fix for regression: fatal error on group page display when not logged in.
...
Bug was introduced with group deletion feature.
2010-10-28 12:19:19 -07:00
Siebrand Mazeland
796d7b4939
Update translator documentation.
2010-10-28 01:42:09 +02:00
Siebrand Mazeland
04ae500749
* i18n/L10n fixes.
...
* translator documentation updated.
* superfluous whitespace removed.
2010-10-28 01:21:21 +02:00
Siebrand Mazeland
a12474a99d
* i18n/L10n fixes.
...
* translator documentation updated.
* superfluous whitespace removed.
2010-10-28 01:21:09 +02:00
Zach Copley
b3cd558fe7
Fix OAuth verifier display page title and msgs for i18n
2010-10-26 13:19:23 -07:00
Zach Copley
1a1ca22aca
Supress header, footer, sidebar on OAuth verifier pin page when in "desktop" mode
2010-10-25 13:30:38 -07:00
Zach Copley
82c280979d
Add special CSS classes to OAuth authorization and pin pages when
...
in desktop mode
2010-10-25 11:25:35 -07:00
Zach Copley
479096c8d7
Less scary OAuth authorization messages when using anonymous consumer
2010-10-25 10:38:40 -07:00
Evan Prodromou
e6ba379c8b
navigation links in user timeline (for AtomPub)
2010-10-25 11:08:10 -04:00
Evan Prodromou
59a7d78acb
Atom Service Document
2010-10-24 23:43:26 -04:00
Evan Prodromou
c0664599aa
allow posting to user timeline using AtomPub
2010-10-24 22:50:13 -04:00
Evan Prodromou
292e789584
delete a notice using AtomPub
2010-10-24 21:24:23 -04:00
Evan Prodromou
43a67b150a
show a single notice in atom entry format
2010-10-24 15:58:53 -04:00
Siebrand Mazeland
0b6cc7c33d
* translator documentation added.
...
* superfluous whitespace removed.
2010-10-23 19:20:51 +02:00
Zach Copley
3913b6a5d8
Updated styling for OAuth authorization page's desktop mode.
...
TODO: move these styles into the main CSS file.
2010-10-22 11:21:44 -07:00
Zach Copley
131c339c5a
Pass OAuth authorize page's mode paramater to OpenID plugin so it can create a correct
...
returnto URL
2010-10-22 02:08:38 +00:00
Zach Copley
ac45f661f6
Fix regression (whoops!)
2010-10-21 18:38:54 -07:00
Zach Copley
c5a84ef76f
Merge branch '0.9.x' of gitorious.org:statusnet/mainline into 0.9.x
2010-10-21 18:16:35 -07:00
Zach Copley
0b134d3e69
Re-camelcase ApiOauthAuthorizeAction so it will be accessible when
...
a site is in pivate mode
2010-10-21 18:15:11 -07:00
Zach Copley
aa6ec40c51
Fix syntax errors
2010-10-22 00:48:26 +00:00
Zach Copley
ce0d81c190
OAuth - inform consumer when user refused to authorize a request token
...
http://status.net/open-source/issues/2848
2010-10-21 17:11:59 -07:00
Zach Copley
94f7bfa50a
Don't show 'anonymous' app in OAuth application list.
2010-10-21 16:42:59 -07:00
Zach Copley
4ab110e071
Fix bad reference.
2010-10-21 14:52:41 -07:00
Zach Copley
a548861dbf
OAuth - proper callback handling and better styling for authorization
...
page when in desktop mode
2010-10-21 14:45:42 -07:00
Zach Copley
648f79be10
Change OAuth authorization page's action name to be inline with
...
other web page action names so the body id outputs correctly. Fix
some other bugs.
2010-10-21 13:00:59 -07:00
Zach Copley
bab012bd67
New "desktop" mode for the OAuth authorization page. If mode=deskstop
...
is specified in the request the page is probably meant to be displayed
in a small webview of another application, so suppress header, aside
and footer.
2010-10-21 12:23:04 -07:00
Siebrand Mazeland
cb74822e7a
i18n/L10n consistency updates.
2010-10-21 13:20:21 +02:00
Siebrand Mazeland
fb12094f61
i18n/L10n updates, translator docs updated, superfluous whitespace removed.
2010-10-21 03:10:46 +02:00
Zach Copley
bfdb8385ec
Merge branch '0.9.x' of gitorious.org:statusnet/mainline into 0.9.x
...
Conflicts:
actions/apioauthauthorize.php
lib/apioauthstore.php
2010-10-20 17:28:28 -07:00
Zach Copley
e56385a7bb
Use a new table (oauth_token_association) to associate authorized
...
request tokins with OAuth client applications and profiles.
2010-10-20 17:21:04 -07:00
Siebrand Mazeland
1603b7afc9
i18n/L10n updates, translator comments added/fixed, superfluous whitespace removed.
2010-10-21 01:53:42 +02:00
Brion Vibber
c24f4ddfdb
Pretty up the OpenID variant of the OAuth login form a bit; change the 'Allow' button to 'Continue' so we're not confused why we get the form again after authenticating.
2010-10-20 16:14:32 -07:00
Brion Vibber
bcc06d05e8
Initial OpenID+OAuth thingy.
2010-10-20 15:59:27 -07:00
Siebrand Mazeland
ac4afb31e8
Consistent punctuation.
2010-10-20 20:29:59 +02:00
Siebrand Mazeland
59d0be4761
* i18n for many missing messages (???)
...
* add translator documentation.
2010-10-20 20:28:04 +02:00
Siebrand Mazeland
dc62cf1c0b
* i18n/L10n fixes.
...
* translator documentation updated/added.
* superfluous whitespace removed.
2010-10-20 19:34:27 +02:00
Zach Copley
2760ef07f5
Stick OAuth developer help info in a section
2010-10-19 21:24:19 -07:00
Zach Copley
5ca29ab0de
Merge branch 'anon-consumer' into 0.9.x
2010-10-19 21:01:53 -07:00
Zach Copley
e8b6d7c946
Add support for an anonymous OAuth consumer. Note: this requires a
...
small DB tweak. Oauth_application_user needs to have the primary
compound key: (profile_id, application_id, token).
http://status.net/open-source/issues/2761
This should also make it possible to have multiple access tokens
per application.
http://status.net/open-source/issues/2788
2010-10-19 20:54:53 -07:00
Siebrand Mazeland
0157df7396
Add missing "address"
2010-10-20 00:49:12 +02:00
Siebrand Mazeland
4b4894b121
Many i18n/L10n updates and lots of descriptions for translators added.
2010-10-20 00:35:39 +02:00
Brion Vibber
d358c88f94
Merge branch 'master' of gitorious.org:statusnet/mainline into 0.9.x
2010-10-19 15:10:47 -07:00
Brion Vibber
e13eb797c7
Fix PHP notice when submitting 'design' admin panel on a browser that doesn't support file uploads such as Mobile Safari
2010-10-19 15:09:45 -07:00
Zach Copley
d48f4a81d6
Relax restrictions on URL validation for oauth_callback. We need to
...
allow custom schemes like mustard:// etc.
2010-10-19 19:29:21 +00:00
Zach Copley
5ac694c74f
Merge branch '0.9.x' of gitorious.org:statusnet/mainline into 0.9.x
2010-10-19 12:08:48 -07:00
Zach Copley
5866493cae
OAuth - better log messages
2010-10-19 12:07:59 -07:00
Brion Vibber
53d45d7ffb
Merge branch '0.9.x'
2010-10-18 15:21:02 -07:00
Siebrand Mazeland
24b94ebb2c
* fix bugs in parameter numbering for two messages
...
* add translator documentation
2010-10-18 22:47:50 +02:00
Evan Prodromou
7c05b0dafc
options to nofollow external links in notices
2010-10-18 11:29:52 -04:00
Siebrand Mazeland
505ac6eba0
* add plural support where missing
...
* update translator documentation.
2010-10-16 14:38:12 +02:00
Siebrand Mazeland
31415b5853
Update translator documentation.
2010-10-16 14:31:41 +02:00
Brion Vibber
9a35e48ee2
Fix for ticket #2837 : white screen when hitting 'make admin' button on group members list.
...
RedirectingAction->returnToArgs() has been renamed to returnToPrevious() to avoid confusion with the existing Action->returnToArgs which gives the arguments that would be used to pass to one of those. :)
Switching to the correct function call gets it working.
Thanks to Siebrand for catching it when I could debug it live!
2010-10-15 15:33:54 -07:00
Evan Prodromou
9b9ba29791
add SSL servers and paths to pathadminpanel.php
2010-10-15 13:46:21 -04:00
Evan Prodromou
fc6711327b
let users set their SSL logo through the admin panel
2010-10-14 15:06:11 -04:00
Zach Copley
04f3f57e2e
Merge branch 'oauth-1.0a' into 0.9.x
2010-10-12 17:52:04 -07:00
Zach Copley
d8e06e66e9
Print a proper error message
2010-10-12 16:19:53 -07:00
Brion Vibber
f4f16af8ac
Add a basic group deletion for moderator users.
2010-10-12 15:49:20 -07:00
Zach Copley
a77bc11326
Output a log message when issuing a request token
2010-10-12 12:25:34 -07:00
Brion Vibber
f62e7c461f
Fix PHP fatal error in DeletenoticeAction: died when we had a valid notice, but weren't logged in due to accessing $this->user before the login check. Moved check up to prepare() from handle() so it's done before usage
2010-10-08 10:33:43 -07:00
Zach Copley
459727bd61
Update ApiOauthAccessTokenAction to OAuth 1.0a
2010-10-07 18:32:27 -07:00
Zach Copley
f8808b0761
Added a comment about an open question: Should we allow pin-based
...
workflow for clients registered as web applications?
2010-10-07 14:19:42 -07:00
Zach Copley
b8f2cc4e6f
Make the verifier pin display a little nicer
2010-10-07 13:51:47 -07:00
Zach Copley
69e621a3e8
- Update ApiOauthAuthorizeAction to 1.0a
...
- Fix enumerable bugs
- New page for displaying 1.0a verifier (still needs work)
2010-10-06 19:20:47 -07:00
Zach Copley
f97b863fd7
Update ApiOauthRequestTokenAction to support OAuth 1.0a
2010-10-06 13:40:03 -07:00
Brion Vibber
5c19d33b27
Bugfix in FB-sharing header for empty profile avatar
2010-10-01 14:42:12 -07:00
Brion Vibber
12f68c4ff2
Throw in a quick event hook to override the profile list type on showstream (should be made more general in future).
...
Replace with a NoticeList to have output include avatar and username -- but CSS still hides them in default theme.
Event::addHandler('ShowStreamNoticeList', 'awesome');
function awesome($notice, $action, &$pnl)
{
$pnl = new NoticeList($notice, $action);
return false;
}
2010-10-01 11:05:15 -07:00
Brion Vibber
8b8450f9ad
Add helper metadata on individual notice pages to aid sharing to Facebook (use poster's avatar as image, indicate the text content)
2010-09-30 18:21:38 -07:00
Zach Copley
fd779009b8
Add Start/EndShowNoticeItem event hooks to single notice page
2010-09-29 16:35:12 -07:00
Brion Vibber
a6469aeed8
Fix PHP syntax errors introduced during localization fixups in a few files.
2010-09-25 12:10:36 -07:00
Zach Copley
da04858902
Update OAuth actions in show application page so it will display the right endpoint URLs
2010-09-23 16:16:32 -07:00
Evan Prodromou
0f1fc36a05
Merge branch '0.9.x'
2010-09-23 09:50:46 -04:00
Zach Copley
84331ca7bd
Fix for ticket 2756 - Calls to OAuth endpoints are redirected to the
...
login page when a site is in private mode
2010-09-22 23:33:06 +00:00
Zach Copley
77609e0c4a
Fix for ticket 2756 - Calls to OAuth endpoints are redirected to the
...
login page when a site is in private mode
2010-09-22 23:30:50 +00:00
Zach Copley
da4463cb76
License admin panel should allow empty or valid URLs for (license
...
URL and license image URL) when selecting private or allrightsreserved
licenses.
2010-09-21 13:06:23 -07:00
Brion Vibber
42dd460d3b
Merge branch 'master' into 0.9.x
2010-09-21 12:48:16 -07:00
Brion Vibber
d342899677
Fix #2323 : typo on oauth connections page
2010-09-20 18:07:19 -07:00
Brion Vibber
85bf20d95a
Fix error when editing OAuth app registration and only changing the icon.
2010-09-20 16:57:07 -07:00
Brion Vibber
a47e664094
Fix for #2419 : There is no function maxDescription in Oauth_application class (broke the 'description too long' error message when editing oauth app registrations)
2010-09-20 16:43:00 -07:00
Brion Vibber
64cdbe6c55
Ticket #2750 : fixes to HTTP caching behavior across login/logout boundaries
...
* now ignoring if-modified-since if we failed an etag if-none-match comparison, per spec
* now including a hash of user id/nickname in most etags, so we'll update the view properly after login/logout
For API methods, checking the API-auth'ed user. (Many change results to include things like 'you're subscribed to this user' or 'this is one of your favorites', so user info is again needed)
There'll still be some last-modified stamps that aren't including user info properly, probably.
2010-09-20 13:42:58 -07:00
Zach Copley
55ad954b15
Basic license admin panel (maybe we can make it fancier later)
2010-09-17 16:38:12 -07:00
Zach Copley
afc799ddf8
Removed periods from instructions on some admin panels for consistency
2010-09-17 14:32:18 -07:00
Zach Copley
f4a1858b33
Fixed typo, and updated copyright dates while I was there
2010-09-17 14:20:05 -07:00
Brion Vibber
ead2f3375a
Ticket #2701 : old color settings now get reset when changing themes, so you don't end up with the previous theme's colors.
2010-09-13 13:37:13 -07:00
Siebrand Mazeland
bb2a4e7aac
Update translator documentation.
2010-09-12 17:43:43 +02:00
Siebrand Mazeland
6b010ac79c
Update/add translator documentation.
2010-09-12 17:27:38 +02:00
Siebrand Mazeland
a9fad9a7ac
Add translator hint.
2010-09-12 17:08:49 +02:00
Evan Prodromou
255e96d3b5
add a hook for when someone deletes their own notice
2010-09-08 16:37:12 -04:00
Evan Prodromou
21bf50bad6
Merge branch 'noticetitle' into 0.9.x
2010-08-14 12:03:25 -07:00
Evan Prodromou
7dd46222a8
add StartNoticeSaveWeb and EndNoticeSaveWeb to hook web-based UI for notices
2010-08-13 11:21:07 -07:00
Brion Vibber
d9942a558a
Fix regression in replies made from web (was saving reply_to value in wrong array key)
2010-08-12 15:18:16 -07:00
Brion Vibber
6ee3f35302
work in progress: prettier attachment mode for tinymce?
2010-08-11 15:56:40 -07:00
Brion Vibber
527561cd93
TinyMCE: core tweak; switching order of input processing so length limit is applied to stripped version of the text
2010-08-11 14:41:31 -07:00
Brion Vibber
3a85318bd0
First stab redoing argument loading for TinyMCE (to avoid hacking checks for all notice saves everywhere)
2010-08-10 16:55:03 -07:00
Siebrand Mazeland
46bffe3d69
Tweak message per suggestion of The Evil IP Address[1].
...
[1] http://translatewiki.net/w/i.php?title=Thread:Translating_talk:StatusNet/to_their_attention%3F&oldid=2220913
2010-08-01 00:16:39 +02:00
Zach Copley
0faa988e91
Fix for issue ID 2290: make sure errors are returned in the right
...
format, and use callback for errors when the request is JSONP
2010-07-29 20:31:22 +00:00
Zach Copley
4e8e77f6b0
Return HTTP 403 instead of 400 when silenced users try to post via API
2010-07-29 18:47:28 +00:00
Eric Helgeson
9b899eea75
Make some messages gender neutral.
2010-07-19 21:09:09 -05:00
Zach Copley
923d9ef71c
- Fix bugs with block and friendship API methods
...
- Friendship API methods now use a Profile instead of User for target
2010-06-28 16:54:39 -07:00
Brion Vibber
696e4ba393
Merge branch 'testing' of gitorious.org:statusnet/mainline into 0.9.x
...
Conflicts:
plugins/OpenID/openidserver.php (cleaned up mismatched comment)
2010-06-26 10:17:36 -04:00
Brion Vibber
d9e56e15cc
Merge branch 'master' into testing
2010-06-26 10:16:27 -04:00
Zach Copley
9eb5a976b0
Have API methods for search subclass ApiPrivateAuthAction
2010-06-24 18:11:50 -07:00
Brion Vibber
9d890e2be0
Catch a couple of missing XML namespace declarations on API XML output. Missing NS declarations were breaking XML parsing for some clients since beaecb18d5
2010-06-18 09:59:11 -07:00
Zach Copley
d3d499879c
- More useful group info from api/statusnet/group/show
...
- Add statusnet:group_info tag to group Atom feeds
2010-06-16 14:29:24 -07:00
Brion Vibber
7f3b3620af
Merge branch 'testing' of gitorious.org:statusnet/mainline into 0.9.x
2010-06-11 12:05:53 -07:00
Brion Vibber
47665e845a
Merge branch 'testing' of gitorious.org:statusnet/mainline into testing
2010-06-11 12:04:03 -07:00
Brion Vibber
352a3edfb3
Ticket #2350 : fix for incorrect FOAF sioc:follows entries for users who are followed by, but don't themselves follow the user whose FOAF we're displaying.
2010-06-10 11:42:58 -07:00
Brenda Wallace
5afd07e5e8
added missing author
2010-06-08 16:46:32 +12:00
Brenda Wallace
4617545ece
added missing authors
2010-06-08 16:34:16 +12:00
Brenda Wallace
dc0f7189f2
added missing authors
2010-06-08 16:32:53 +12:00
Brion Vibber
09208f8d65
Basic custom CSS and theme uploading features. 'local' subdir can now be customized to a distinct directory and URL path to make it easier to separate custom themes for a multi-site farm running a common code base.
...
Currently only one custom theme may be uploaded per site, saved with the name 'custom' and stored into the local/themes subdirectory.
Administrators can upload a .ZIP archive containing a theme through the design admin panel; its contents are validated to ensure that only legit files are saved, and a 5M size quota is enforced.
Theme upload requires the zip extension for PHP; if not present, theme uploading is disabled by default.
Uploading and the custom CSS can be controlled via $config['theme_upload']['enabled'] and $config['custom_css']['enabled'].
Configurable directory/path/server for 'local' subdirectory (currently only as used for themes; local plugins not yet switched over)
Can set $config['local']['dir'] etc; not currently exposed in the admin panels.
Per-site directories on a separate themes server could be set up such as:
$config['local']['dir'] = '/path/to/themes/local/' . $_nickname;
$config['local']['server'] = 'themes.example.com';
$config['local']['path'] = '/local/' . $_nickname;
$config['local']['ssl'] = 'never';
2010-06-07 18:14:16 -07:00
Brion Vibber
8e33cdd36a
break up the giant form function in design admin panel into individual sections to make it a little more manageable
2010-06-07 18:14:15 -07:00
Brion Vibber
d88b208edc
Merge branch 'testing' of gitorious.org:statusnet/mainline into 0.9.x
...
Conflicts:
plugins/OpenID/openid.php
2010-06-07 10:19:40 -07:00
Evan Prodromou
135b398d4b
Merge branch 'master' of gitorious.org:statusnet/mainline
2010-06-03 14:50:52 -04:00
Zach Copley
4bbb259baf
- Fix bad argument being passed (error code) when invalid format specified
...
- Reformat whitespace
2010-06-03 10:52:16 -07:00
Evan Prodromou
a5de215267
Merge branch 'master' of gitorious.org:statusnet/mainline
2010-06-01 13:51:41 -07:00
Brion Vibber
3ba165cfab
Merge branch 'master' into testing
2010-05-28 16:18:40 -07:00
Zach Copley
cef302cacd
Bugfix: api/statuses/destroy.:format was outputting deleted notice
...
twice, causing parsers to fail.
2010-05-28 06:24:10 +00:00
Craig Andrews
6317f7d92b
Assigning my copyrights to the Free Software Foundation
2010-05-27 18:27:33 -04:00
Brion Vibber
696aeea113
Merge branch 'testing' of gitorious.org:statusnet/mainline into 0.9.x
...
Conflicts:
lib/language.php
plugins/OpenID/finishaddopenid.php
2010-05-27 14:57:32 -07:00
Brion Vibber
2f2fa10071
Merge branch 'master' of gitorious.org:statusnet/mainline into testing
2010-05-27 14:54:43 -07:00
Zach Copley
c5b61078e1
Pass auth user into Atom feed generators (needed for outputting favorited status in statusnet:notice_info tag)
2010-05-27 13:49:23 -07:00
Evan Prodromou
6d8e01ad13
Merge branch 'master' of gitorious.org:statusnet/mainline
2010-05-21 16:47:57 -04:00
Brion Vibber
6eae5d6a7e
Merge branch 'testing' into 0.9.x
2010-05-21 13:15:08 -07:00