Commit Graph

374 Commits

Author SHA1 Message Date
Penar Musaraj 005e1ecb9b
FEATURE: Update Font Awesome to v5.4.1 and SVGs (#6557)
* First take on subsetting svg icons

* FontAwesome 5 svg subset WIP

* Include icons from plugins/badges into svg sprite subset

* add svg icon support to themes

* Add spec for SvgSprite

* Misc. SVG icon fixes

* Use FA5 svgs in local-dates plugin

* CSS adjustments, fix SVG icons in group flair

* Use SVG icons in poll plugin

* Add SVG icons to /wizard
2018-11-07 13:05:43 -05:00
Maja Komel ae9eddb002 FIX: don't allow adding a value containing vertical bar char to the secret list 2018-11-05 12:14:56 +01:00
David Taylor 37b7afa522 FIX: Sanitize tags before creation 2018-10-22 10:53:42 +01:00
David Taylor 0dd717e641 Revert "FIX: Sanitize tags before creation"
This reverts commit 18ae8de9e5.
2018-10-19 15:49:05 +01:00
David Taylor 18ae8de9e5 FIX: Sanitize tags before creation 2018-10-19 15:43:31 +01:00
Maja Komel 27e732a58d FEATURE: allow multiple secrets for Discourse SSO provider
This splits off the logic between SSO keys used incoming vs outgoing, it allows to far better restrict who is allowed to log in using a site.

This allows for better auditing of the SSO provider feature
2018-10-15 16:03:53 +11:00
Guo Xiang Tan 43512e9865
Merge pull request #6457 from pmusaraj/yarn-manage-test-vendor-dependencies
DEV: Use Yarn managed test vendor dependencies
2018-10-08 09:26:26 +08:00
David Taylor 9bf522f227
FEATURE: Mixed case tagging (#6454)
- By default, behaviour is not changed: tags are made lowercase upon creation and edit.

- If force_lowercase_tags is disabled, then mixed case tags are allowed.

- Tags must remain case-insensitively unique. This is enforced by ActiveRecord and Postgres.

- A migration is added to provide a `UNIQUE` index on `lower(name)`. Migration includes a safety to correct any current tags that do not meet the criteria.

- A `where_name` scope is added to `models/tag.rb`, to allow easy case-insensitive lookups. This is used instead of `Tag.where(name: "blah")`.

- URLs remain lowercase. Mixed case URLs are functional, but have the lowercase equivalent as the canonical.
2018-10-05 10:23:52 +01:00
Penar Musaraj cd82107976 use yarn to manage test vendor dependencies, upgrade sinon to v6.3.5 2018-10-04 11:06:14 -04:00
Kris cb519a3bec Fix test 2018-10-02 15:20:11 -04:00
Bianca Nenciu 719a433c03 FIX: Sync client & server rules regarding tag names. (#6400) 2018-10-01 21:45:44 -07:00
Joffrey JAFFEUX a713c0d366
FIX: ensures onSelect/onDeselect are called
This commit also add a FIX and a test for toolbar-popup-menu-options which had a behavior slightly specific.
2018-09-18 11:31:23 +02:00
Joffrey JAFFEUX 2ff2c49908 Revert "FIX: ensures onSelect/onDeselect are called"
This reverts commit 52eed73294.
2018-09-17 22:14:41 +02:00
Joffrey JAFFEUX 52eed73294
FIX: ensures onSelect/onDeselect are called 2018-09-17 10:36:14 +02:00
Sam e15a1e7c38 lint code 2018-09-17 11:10:09 +10:00
pmusaraj 03edb31a4d add tag-drop component test 2018-09-17 10:40:47 +10:00
Joffrey JAFFEUX 754d5b62a8
makes mini-tag-chooser test use can_create_tag (#6402) 2018-09-14 13:30:55 +02:00
Joffrey JAFFEUX d2ea618af1
adds a test for mini-tag-chooser 2018-09-14 12:13:00 +02:00
Joffrey JAFFEUX 38668818a5
FIX: allows forcing unsafe string in select-kit (#6386)
forceEscape will be defaulted to true before next release.
2018-09-12 12:19:04 +02:00
Joffrey JAFFEUX 17087eff2a
FIX: Reset tags on category change (#6363) 2018-09-05 17:18:52 +02:00
Joffrey JAFFEUX 82dcc5cbfa
FEATURE: makes reports loadable in bulk (#6309) 2018-08-24 15:28:01 +02:00
Joffrey JAFFEUX 599cebf8ad
FIX: better message if request for report is rate limited (#6298) 2018-08-22 11:25:12 +02:00
Joffrey JAFFEUX 37d4f27c44
FIX: quality/bugfix dashboard/reports pass (#6283) 2018-08-17 16:19:25 +02:00
Joffrey JAFFEUX c301111461
FIX: display select kit body if no choices (#6237) 2018-08-06 11:22:48 -04:00
Joffrey JAFFEUX 066010db7d
FEATURE: introduces list/compact_list components 2018-08-03 16:41:37 -04:00
Joffrey JAFFEUX 2b2a506a7b
FIX: makes dashboard more resilient to errors (#6217)
This commit is an attempt to limit cases where the dashboard will generate a full exception page and also make it easier to track the error.
2018-07-31 21:23:28 -04:00
Joffrey JAFFEUX 37252c1a5e
UI: improves dashboard table reports
- support for avatars
- support for topic/post/user type in reports
- improved totals row UI
- minor css tweaks
2018-07-31 17:35:13 -04:00
Maja Komel 04baddf731 DEV: migrate tests to async/await 2018-07-30 12:21:05 +02:00
Joffrey JAFFEUX ad95c24307
FEATURE: displays a notice if report has no data (#6178) 2018-07-25 14:28:41 -04:00
Dan Ungureanu 44a5c29d42 Clear old text and URL when showing up the "Insert Hyperink" modal. (#6138) 2018-07-25 17:12:49 +10:00
Maja Komel d16a2c776a DEV: migrate components tests to async/await 2018-07-24 22:41:14 +02:00
Joffrey JAFFEUX 1a78e12f4e
FEATURE: part 2 of dashboard improvements
- moderation tab
- sorting/pagination
- improved third party reports support
- trending charts
- better perf
- many fixes
- refactoring
- new reports

Co-Authored-By: Simon Cossar <scossar@users.noreply.github.com>
2018-07-19 14:33:11 -04:00
Jeff Atwood 7dce8290ed copyedit on category drop down 2018-06-26 12:43:45 -07:00
OsamaSayegh d81f8ea378
fix prettier 2018-06-26 15:31:43 +03:00
OsamaSayegh bfe0178270 FIX: use the correct notification levels titles for PMs 2018-06-26 14:01:52 +02:00
Joffrey JAFFEUX eb9b99e519
FIX: makes select-kit match searches with accents (filter and content) 2018-06-26 12:19:14 +02:00
Joffrey JAFFEUX 60ff0e9b8c
missing prettified files 2018-06-15 18:42:20 +02:00
Joffrey JAFFEUX 03a7d532cf
DEV: introduces prettier for es6 files 2018-06-15 17:03:24 +02:00
OsamaSayegh 629a2fbc2b add JS tests 2018-06-15 14:04:14 +10:00
Joffrey JAFFEUX 1be76d066c
FIX: forces boolean when content is only "true" && "false" 2018-05-24 23:41:39 +02:00
Joffrey JAFFEUX db91d71bf1
fix category chooser spec 2018-05-23 21:07:39 +02:00
Claas Augner ba905b24ca FIX: differentiate one/other select-kit maximumLabel/minimumLabel 2018-04-09 09:12:01 +02:00
Joffrey JAFFEUX f0fe16d824
FEATURE: implements minimum selection for select-kit 2018-04-05 16:45:19 +02:00
Joffrey JAFFEUX 3287ac77e0
FIX: reverts combobox placeholder and introduces noneLabel
noneLabels works almost like none but instead of actually adding a row in the list, it will only change the text displayed in the header, when there's no selection.
2018-03-29 13:42:00 +02:00
Joffrey JAFFEUX 15aa712227
fix category-row regressions 2018-03-27 14:11:05 +02:00
Joffrey JAFFEUX d48542796e
FIX: select-kit refactoring
- improve mini-tag-chooser keyboard behavior
- all multil select now respond to select all and left/right arrows
- improve events handling
- many minor tweaks
2018-03-22 11:29:55 +01:00
Guo Xiang Tan 2b7fb43d84 Fix the build. 2018-03-19 18:47:17 +08:00
Joffrey JAFFEUX 97ddaeeae8
FIX: use css instead of js to fix select-kit-collection max-height 2018-02-01 16:56:07 +01:00
scossar 41f1e7430c Refactor code; add tests 2018-01-29 17:42:19 -08:00
Vinoth Kannan 86e142b39f UX: Copy selected text to the link building modal 2018-01-24 02:02:12 +05:30
Joffrey JAFFEUX 3ee7b18886
FIX: disable by default limitMatches 2018-01-11 09:54:39 +01:00
Joffrey JAFFEUX 3ec2024466
select-kit refactoring
* improve events naming/handling
* do not explicitly check for true/Fasle
* make sure header is re-computed on toggle
2018-01-11 09:39:51 +01:00
Joffrey JAFFEUX c9921869f1
FIX: adds select-kit api to modify header computed content (#5476)
This api would allow to simply modify header text or icons, eg:

```
      api.modifySelectKit("select-kit")
        .modifyHeaderComputedContent((context, computedContent) => {
          computedContent.title = "Not so evil";
          return computedContent;
        });
```
2018-01-09 10:52:32 +01:00
Joffrey JAFFEUX 315b9d796d
select-kit refactoring
* better test helper
* more reliable tests
* more consistent use of data-value/data-name/title/aria-label everywhere: header and rows
2017-12-22 13:08:12 +01:00
Joffrey JAFFEUX c1c31b99ce
Replaces toolbar popup-menu with select-kit 2017-12-13 10:49:32 +01:00
Joffrey JAFFEUX dbadebacd1
FIX: allows select-kit to search by null value 2017-12-01 20:02:00 +01:00
Joffrey JAFFEUX 96cdc4e66e
FIX: makes allowInitialValueMutation more restrictive 2017-11-24 13:15:02 +01:00
Joffrey JAFFEUX 9208909b26 tweak icon-library generation 2017-11-23 18:24:26 +01:00
Joffrey JAFFEUX b14d9529b8
FIX: adds support for name changes tracking 2017-11-22 13:49:45 +01:00
Joffrey JAFFEUX b2b565c2fb
select-kit initial plugin api implementation (0.8.13)
```
api.modifySelectKit("identifier-of-the-select-targeted")
  .modifyContent((context, existingContent) => {})
  .appendContent(() => {})
  .prependContent(() => {})
  .onSelect((context, val) => {});
```
2017-11-22 10:34:12 +01:00
Joffrey JAFFEUX 39f3dbd945
Introduces select-kit
* renames `select-box-kit` into `select-kit`
* introduces `single-select` and `multi-select` as base components
* introduces {{search-advanced-category-chooser}} as a better component for selecting category in advanced search
* improves events handling in select-kit
* recreates color selection inputs using {{multi-select}} and a custom {{selected-color}} component
* replaces category-selector by a component using select-kit and based on multi-select
* improves positioning of wrapper
* removes the need for offscreen, and instead use `select-kit-header` as a base focus point for all select-kit based components
* introduces a formal plugin api for select-kit based components
* introduces a formal pattern for loading and updating select-kit based components:

```
computeValue()
computeContent()
mutateValue()
```
2017-11-21 11:53:09 +01:00
Robin Ward b9595966d4 FIX: Error applying quotes with blank lines in front 2017-11-20 13:46:19 -05:00
Joffrey JAFFEUX 6d3ed966cd
FEATURE: replace admin flags modal by a select-box 2017-11-09 12:33:36 -08:00
Joffrey JAFFEUX 0da529010a
FEATURE: support for multi-combo-box 2017-11-09 10:57:53 -08:00
OsamaSayegh 55095bc44e FEATURE: Use ACE for badge queries (#5269)
* FEATURE: Use ACE for badge queries

* Forgot disabled

* When disabled, cursor should be `not-allowed`

* Tests + prefix custom attribute with `data-`
2017-10-30 18:07:49 +11:00
Joffrey JAFFEUX ae1e4de286 [FIX] better control on value mutation 2017-10-20 13:40:56 -07:00
Régis Hanol 62156885ec UX: remove 🔥heading and ruler button from composer toolbar 2017-10-20 10:59:31 +02:00
Joffrey JAFFEUX 4d041d5b87 [FIX] Fix wizard spec
This commit introduces a mutation on input value given to select-box-kit when value is empty. The refactoring required to avoid this would be too heavy atm, but ultimately we would want to avoid this.
2017-10-19 17:34:56 -07:00
Joffrey JAFFEUX d77ef05ee1 Fix broken tests 2017-10-19 14:32:37 -07:00
Joffrey JAFFEUX ae1743c61f [WIP] select-box-kit refactoring 2017-10-19 12:51:08 -07:00
Joffrey JAFFEUX e6385e4527 attempts to fix broken spec only on CI 2017-09-14 20:34:37 +02:00
Joffrey JAFFEUX 562e48dfb7 adds a dsl to simplify testing of the select-box 2017-09-14 19:50:32 +02:00
Joffrey JAFFEUX c06c88b479 cleaner title attribute for select-box 2017-09-12 01:36:58 +02:00
Joffrey JAFFEUX e924920bec uses select-box for pinned-button
This commit also moves more logic in dropdown-select-box instead of
duplicating it for notifications-options and pinned-options
2017-09-11 19:14:22 +02:00
Joffrey JAFFEUX 7f9220a2cd minor select-box fixes
- select row when using tab
- makes sure tab order is correct
- highlight first row when filtering
2017-09-11 00:38:32 +02:00
Joffrey JAFFEUX 4b558638c8 FEATURE: improves keyboard handling of select-box
- arrow keys
- escape key
2017-09-10 19:12:03 +02:00
Joffrey JAFFEUX ccf5005feb FEATURE: uses select-box for topic-notifications-button component
- Introduces ComponentConnector to use a component inside a widget
- Use css to set size of components instead of properties
- Smarted positionning
- Style tweaks
2017-09-06 16:58:00 +02:00
Robin Ward 70706897f4 FIX: Test was failing on high DPI monitor 2017-08-30 15:32:58 -04:00
Joffrey JAFFEUX 746c5927e1 Replaces remaining {{category-chooser}} by {{category-select-box}}
To achieve replacement, this commit also adds support for:
- clearSelectionLabel which will allows to unselect any chosen category
- select-box inside a modal
- fixes minor css positioning issues

Note: {{category-chooser}} will be removed in the next weeks.
2017-08-30 17:04:17 +02:00
Joffrey JAFFEUX f101fec19c FIX: improves uncategorized support for category-select-box 2017-08-29 12:48:26 +02:00
Joffrey JAFFEUX 861dbe3b51 select-box refactoring
- more flexibility (allows custom title)
- less re-render
- more robustness
2017-08-29 12:25:54 +02:00
Joffrey JAFFEUX b83c0747d9 FIX: select-box improvments
- more tests for category-select-box
- allows to clear selection
- fix positioning on safari
- focus on click
- do not display uncategorized if not allowed in settings
- fix component state impacting other specs
- better texts
- higher category-select-box on mobile
2017-08-28 14:34:04 +02:00
Joffrey JAFFEUX 14f06c2740 select-box minor fixes 2017-08-25 19:56:57 +02:00
Joffrey JAFFEUX d05df4a337 FIX: better headerText handling on select-box 2017-08-24 18:31:33 +02:00
Joffrey JAFFEUX d52048ad34 Revert "Revert "FEATURE: improves select-box to support category selection on new topic""
This reverts commit 1d90f6016a.
2017-08-24 16:04:47 +02:00
Joffrey JAFFEUX 1d90f6016a Revert "FEATURE: improves select-box to support category selection on new topic"
This reverts commit 7b4e302677.
2017-08-23 16:33:03 +02:00
Joffrey JAFFEUX 7b4e302677 FEATURE: improves select-box to support category selection on new topic 2017-08-23 15:08:19 +02:00
Guo Xiang Tan 9f11223250 Fix `select-box` Qunit tests to use the proper Ember test helpers. 2017-08-16 09:35:56 +09:00
Joffrey JAFFEUX cad6107624 refactors select-box
Note: this commit also now uses select-box for mobile topics controls
2017-08-16 00:41:56 +02:00
Joffrey JAFFEUX 482924b161 FEATURE: initial implementation of an ember native select 2017-08-13 14:34:50 +02:00
Robin Ward 8dd7c0c984 UX: Convert buttons to `d-button` 2017-08-01 17:24:06 -04:00
Robin Ward 75d10a4098 UX: Add consistent classes to buttons 2017-08-01 17:24:06 -04:00
Guo Xiang Tan 4620dfe92d FEATURE: Add group settngs to allow users to leave a group freely.
https://meta.discourse.org/t/split-join-leave-freely-setting-on-groups/65565
2017-07-28 15:00:25 +09:00
Robin Ward bc3a32385c FIX: Empty lines should be selected for block quotes 2017-07-21 16:32:29 -04:00
Joffrey JAFFEUX e36d9f55c3 replaces links/imgs by buttons in the emoji-picker 2017-07-21 19:42:50 +02:00
Joffrey JAFFEUX 7718141ee0 not applicable anymore 2017-07-19 16:48:23 +02:00
Sam e2f57a154b FIX: blockquote button implementation
Previously clicking on blockquote in the middle of sentence
would result in incorrect formatting
2017-06-27 13:32:20 -04:00
Sam 234694b50f Feature: CommonMark support
This adds the markdown.it engine to Discourse.
https://github.com/markdown-it/markdown-it

As the migration is going to take a while the new engine is default
disabled. To enable it you must change the hidden site setting:
enable_experimental_markdown_it.

This commit is a squash of many other commits, it also includes some
improvements to autospec (ability to run plugins), and a dev dependency
on the og gem for html normalization.
2017-06-23 12:01:33 -04:00
Robin Ward cc525b1a8d Upgrade QUnit to latest version 2017-06-15 10:12:07 -04:00
Guo Xiang Tan accd78cd8c Make eslint happy. 2017-05-12 09:31:23 +08:00
Guo Xiang Tan e63614024d FIX: Users can't request to join group due to alias level restriction.
https://meta.discourse.org/t/request-to-join-group-not-working/62371
2017-05-12 09:26:26 +08:00
Neil Lalonde b7322b05a0 FIX: some changes in composer affect all visible text editors 2017-05-05 12:59:45 -04:00
Guo Xiang Tan 5c39c8f24b UX: Improve the way users set timers for `TopicStatusUpdate`. 2017-04-20 14:25:45 +08:00
Guo Xiang Tan bb85795934 FIX: Leave group membership button not updating.
https://meta.discourse.org/t/leave-group-button-on-groups-page-doesnt-give-any-feedback/57359/4
2017-03-16 11:33:55 +08:00
Guo Xiang Tan 3aed15c99e FIX: Group membership button now showing properly. 2017-01-03 14:36:56 +08:00
Régis Hanol f71040dc23 Merge pull request #4630 from caugner/feature-preserve-cursor-in-editor-upload
FEATURE: Preserve cursor in editor upload
2016-12-29 14:46:10 +01:00
Claas Augner 37386faff2
Fix eslint nits. 2016-12-29 10:05:07 +01:00
Claas Augner 43c1dd82f6
Add cursor tests, fix algorithm and extract method. 2016-12-29 09:54:15 +01:00
Guo Xiang Tan 6d00650972 Fix JS tests. 2016-12-29 13:47:11 +08:00
Guo Xiang Tan 0ab52b127b Fix JS tests. 2016-12-15 16:52:47 +08:00
Robin Ward 6a1c05a268 Upgrade ember-qunit 2016-11-08 14:29:50 -05:00
Robin Ward 151597bf0f Update code so Ember 2.3 can have more tests passing 2016-11-08 13:40:35 -05:00
Robin Ward 622dc82481 Replace deprecated `render(buffer)` with a custom buffered renderer 2016-10-25 14:00:21 -04:00
Guo Xiang Tan 90571f0364 FIX: Format selection as multiline code only when selection spans multiple lines. 2016-08-23 15:00:16 +08:00
Guo Xiang Tan f32d8e2882 FIX: Code fences shortcut did not insert newlines before and after backticks. 2016-08-23 09:51:01 +08:00
Robin Ward 3200d836f7 FIX: After uploading an image the selection was not in the correct spot 2016-07-25 15:31:21 -04:00
Robin Ward 6d7e8bd68b FIX: Customizations were broken 2016-07-11 12:57:05 -04:00
Arpit Jalan 83309752ae FEATURE: new site setting 'code formatting style' 2016-06-27 01:00:11 +05:30
Robin Ward 514c3976f0
PERF: Migrate header to discourse widgets 2016-04-25 10:48:04 -04:00
Robin Ward c948d53d91
UX: Use separate input fields for link and description in d-editor 2016-04-08 16:13:42 -04:00
Robin Ward d1b9a9370a PERF: Render logo significantly faster 2016-03-21 15:14:31 -04:00
Robin Ward a9daa33953 Add tests to `home-logo` component 2016-03-21 14:16:33 -04:00
Sam Saffron 7be90a885c FIX: bolding text when selection has a leading space 2016-03-10 22:43:48 +11:00
Sam Saffron f3efe657fa FEATURE: Automatically add http:// when adding links without them via composer 2016-03-10 18:25:02 +11:00
Robin Ward f6aa1ac37a Migrate `onToolbarCreate` to the DiscourseAPI 2016-02-18 15:23:43 -05:00
Robin Ward d1e85bdd8b FEATURE: Use virtual dom framework for faster post rendering 2016-02-11 11:00:40 -05:00
Robin Ward 57c3d65777 Change `d-editor` to use `_` instead of `*` for italics. 2016-01-18 14:54:54 -05:00
Robin Ward fd6bbc69e2 FIX: On chrome, focusing on a recently changed textarea would scroll 2015-12-29 14:59:12 -05:00
Robin Ward 49bda0b17d FIX: Improve windows double clicking on words in editor 2015-11-24 13:42:22 -05:00
Robin Ward c76caca109 FIX: Perform the same operation on multilines in d-editor 2015-11-24 13:03:37 -05:00
Robin Ward 84a50a1260 FIX: Keyboard handling regression 2015-11-18 12:35:17 -05:00
Robin Ward 8dc0fa97d4 Better behavior When inserting a link with no description 2015-11-17 13:26:55 -05:00
cpradio 8f39f25cad FIX: Use selected text in the link if text is already selected, otherwise, put the URL 2015-11-09 15:29:19 -05:00
Robin Ward 52579179bd FIX: Broken tests in phantom, not in browser 2015-11-06 16:44:38 -05:00
Robin Ward 15931fce1e FIX: Allow us to insert things between words. 2015-11-06 15:40:52 -05:00
Robin Ward 47495a5713 FEATURE: Replace composer editor with ember version 2015-11-06 09:49:16 -05:00
Robin Ward 5cd6308850 API for adding buttons to the new composer 2015-11-02 16:18:09 -05:00
Robin Ward 0428bacfa9 SECURITY: A user could XSS themselves on their preference page 2015-10-20 12:09:59 -04:00
Robin Ward 94b60e62a2 FEATURE: New markdown editor re-written in Ember
Note this commit leaves out the biggest occurrence of the editor
which is the post/topic composer.

To avoid major breakage, this replaces it everywhere else it was
used:

* User preferences (About Me)
* Admin Customizations > Text Content
* Category Templates
* Editing Queued Posts

A future commit will replace the main composer with this editor
and will remove the unused pagedown code.
2015-10-19 11:01:20 -04:00
Sam bfd08ca649 correct invalid tests 2015-09-28 17:18:46 +10:00
Robin Ward 975edceff4 Add semi colon linting to Javascript 2015-09-15 17:08:50 -04:00
Robin Ward c36fdccab2 Add `d-link` component to simplify menu markup 2015-09-01 16:14:34 -04:00
Jeff Atwood 5336677be7 missed a few spots where close-panel was used 2015-08-29 04:04:04 -07:00
Robin Ward 3ae5a0a2df UX: Merge notifications and user dropdown 2015-08-28 16:11:40 -04:00
Robin Ward 5457684975 Split `hamburger-menu` out into `menu-panel` 2015-08-26 16:29:10 -04:00
Robin Ward c5460b7d3f FEATURE: Full height hamburger menu
- Rename `site-map` to `hamburger-menu`
- Includes acceptance tests
2015-08-25 16:48:43 -04:00
Robin Ward b0541500b4 FIX: eslint deprecations 2015-08-13 15:14:08 -04:00
Robin Ward e2e3e7c0e0 Add ES6 support to more files 2015-08-13 10:49:08 -04:00
Robin Ward 7ef83913b6 FIX: Couldn't select values of 0 in the combo-box 2015-08-05 16:19:44 -04:00
Robin Ward dc8a68fd29 FEATURE: New "Dropdown" user field type 2015-07-28 12:30:21 -04:00