Garret Wassermann
1784d5cf60
Follow recommendation to use == instead of keyword is
2019-12-17 08:41:30 -05:00
Timothy Hobbs
61dd12abd9
Fix tests
2019-10-16 17:36:55 +02:00
Garret Wassermann
0573bc37f8
PEP-8 codestyle improvements to pass tests
2019-10-12 19:05:00 -04:00
Garret Wassermann
182d553356
Fix some renaming issues from most recent merge
2019-10-12 18:58:50 -04:00
Timothy Hobbs
8a57f72349
Further refactor datatables code
2019-10-11 17:12:39 +02:00
Timothy Hobbs
4ca6adbe39
Move query helper functions out of lib to special query file
2019-10-11 16:31:52 +02:00
Timothy Hobbs
0691bbabcd
Refactor and fix datatables code to use cache safely
2019-10-11 15:50:35 +02:00
Timothy Hobbs
03d1c66dd6
Refactor ticket list code
2019-10-11 13:10:35 +02:00
Timothy Hobbs
b862732512
Remove "classic" code path and always use datatables for ticket lists
2019-10-08 17:54:59 +02:00
Timothy Hobbs
f127b2c224
Refactor ticket list
2019-10-08 17:54:58 +02:00
Garret Wassermann
7f27eb9428
Merge 0.2.17 release into develop
2019-08-27 21:53:25 -04:00
Janne Alatalo
e9fc53d461
Fix linter error
2019-08-27 14:36:58 +03:00
Janne Alatalo
0a43b9a160
Add support for custom login handler
...
The custom login handler can be configured by setting the
settings.LOGIN_URL variable. If LOGIN_URL is None or 'helpdesk:login',
the app uses the default helpdesk login system. LOGIN_URL can be a view
name or raw url.
2019-08-27 13:02:07 +03:00
Jachym Cepicky
37c6905d46
cleaning time_spent formating
2019-07-06 22:36:58 +02:00
Garret Wassermann
0de263280f
Merged 0.2.16 bugfixes
2019-05-25 01:25:39 -04:00
Garret Wassermann
b61c0c71fd
Merge pull request #757 from OpenGeoLabs/145_due_date
...
fix issue with setting due date format, for the issue #145
2019-05-24 13:23:52 -04:00
Jachym Cepicky
2e58798fe1
fixes #758 : enables adding comments to public tickets
2019-05-23 09:55:08 +02:00
Jachym Cepicky
611e6de928
fix for the issue #145
2019-05-22 11:20:01 +02:00
Jachym Cepicky
ef63a1186b
fix markdown bug
2019-03-29 15:17:10 +01:00
Timothy Hobbs
89be7a0fde
Don't show resolved tickets in unassigned tickets list
...
Fixes #741
2019-03-27 17:16:33 +01:00
Cedric Carrard
9c85b8e8c1
fix redirect loop
2019-03-20 16:12:19 +01:00
Cedric Carrard
e4d6a54659
fix public homepage with kb_category but without kb disabled
2019-03-15 14:10:43 +01:00
Jachym Cepicky
9127275557
adding support for images as knowledgebase attachment
2019-03-09 18:14:11 +01:00
Jachym Cepicky
2093bf7faf
adding dedicated_time attribute to Queue model
2019-02-24 20:46:30 +01:00
Jachym Cepicky
6ceb89a5cb
basic support for time spend of tikets and follow-ups
2019-02-06 21:55:53 +01:00
Jachym Cepicky
8cc0ca47f8
display list of queues only for users with right permissions
2019-02-05 15:44:06 +01:00
Garret Wassermann
43ed3ac773
PEP-8 fixes for mail threading merge
2018-12-28 11:32:49 -05:00
Garret Wassermann
5f0d22a692
Merge brunotikami/master for user and email threading, for #385 and #375
2018-12-28 10:53:28 -05:00
Garret Wassermann
696d10db12
Remove old python2/six code
2018-12-28 03:13:52 -05:00
Timothy Hobbs
1c24d88680
Enable better ticket form pre-filling
2018-12-27 16:39:31 +01:00
Garret Wassermann
ea8c75b884
Fix saving and loading custom queries, update for Py3/Django2.x
2018-12-21 19:14:54 -05:00
Garret Wassermann
2cd438f7b2
Demo should disable server-side processing for local demo usage
2018-12-21 16:35:26 -05:00
Garret Wassermann
5940b706c1
Merge branch 'develop' into bootstrap4
2018-12-20 21:55:24 -05:00
Garret Wassermann
a11c595a7c
PEP-8 fixes
2018-12-20 21:30:23 -05:00
Garret Wassermann
5fe98f245f
Merge branch 'develop' into bootstrap4
2018-12-15 14:03:52 -05:00
Garret Wassermann
3a5e49452b
Merge remote-tracking branch 'shash/fix_vote' into develop for #652
2018-12-15 13:44:34 -05:00
Garret Wassermann
bb4178b477
Merge develop branch into bootstrap4
2018-11-03 22:40:03 -04:00
Timothy Hobbs
09d8f8c488
Try to obey UserSettings when sending emails
2018-11-01 19:32:34 +01:00
Timothy Hobbs
6c37d73d4e
DRY out email sending code and normalize behavior
...
This refactor removes duplicated logic for deciding whom the messages get sent to.
It also normalizes behavior ensuring that all CCed addresses are sent to in all cases that CCed individuals should be notified.
2018-11-01 14:56:17 +01:00
Garret Wassermann
5f6a6fe8c5
Merge pull request #653 from auto-mat/user_settings_fix
...
Transform UserSettings into a normal django model
2018-10-25 18:27:40 -04:00
Timothy Hobbs
3f6ae1aefe
Transform UserSettings into a normal django model
2018-10-25 17:54:37 +02:00
shashwat1002
e0c03996ad
add a new field to KBItem model to keep track of all users who voted, and make changes to the vote function so that it checks whether a user has already votred
2018-10-17 23:09:43 +05:30
Garret Wassermann
150f18e9b5
Merge branch 'develop' into bootstrap4
2018-10-15 14:14:38 -04:00
Dilip Dwarak
fc028334d9
Added optional serverside processing on datatables that lists all tickets - True by default
2018-10-14 20:23:28 -04:00
Timothy Hobbs
b4aafb0b54
Fix knowledge base categories display on public homepage
2018-09-12 15:29:36 +02:00
Garret Wassermann
fd5c356820
Merge branch 'develop' into bootstrap4
2018-09-08 22:30:18 -04:00
Timothy Hobbs
c1750a7461
Require a secret key for viewing tickets unless HELPDESK_VIEW_A_TICKET_PUBLIC is set
...
Fixes #629 , #639
2018-09-08 21:29:59 +02:00
Timothy Hobbs
ffc97338c9
Submit ticket link should work for non-logged in users
2018-09-07 19:10:57 +02:00
Garret Wassermann
f123d78184
Continuing work on new bootstrap4 interface
2018-09-02 23:27:39 -04:00
Garret Wassermann
b610a5f492
Update breadcrumbs on ticket pages
2018-09-02 05:27:39 -04:00
Timothy Hobbs
082b6b88f3
Add user profile links for submiters who have profiles
2018-08-30 12:53:46 +02:00
Garret Wassermann
c70cf04e4d
Fix codestyle errors, use currying instead of lambdas for determing user access
2018-07-19 00:06:57 -04:00
Garret Wassermann
f9dda0a8fa
Merge branch 'master' into develop to get date format patch
2018-07-13 01:11:02 -04:00
Garret Wassermann
fbddbd6f6e
Fix date format validation error reported with 0.2.8 release
2018-07-13 01:10:25 -04:00
Garret Wassermann
dff14d40d3
Merge 0.2.8 bugfixes
2018-07-03 00:59:33 -04:00
Garret Wassermann
9cb32f83ca
Minor PEP8 changes
2018-07-03 00:32:23 -04:00
Garret Wassermann
4d78bc85ca
Update due date correct when adding followup to ticket, for #616
2018-07-03 00:20:51 -04:00
Garret Wassermann
b40e9dd5ea
Fix bug while importing django version for #613
2018-06-27 02:37:35 -04:00
Garret Wassermann
15985e286f
Fix saved queries when running in Django 2.0+, for #613
2018-06-27 02:27:24 -04:00
Andrii Iudin
764c55e60e
Removed unused dash_tickets variable and its calculation, modified the
...
case where it is used to rely on model query APIs rather than on raw
queries that use the default database and are not forwarded by routers.
2018-03-26 13:46:07 +01:00
Garret Wassermann
54a6b1d21b
Merge 0.2.7 bugfixes
2018-03-04 04:01:48 -05:00
Garret Wassermann
3c456873a5
Fixes for Python 3 and Django 2.0
2018-03-04 01:52:58 -05:00
Garret Wassermann
113880bc3a
Compare user IDs to determine if same user, and add simple test case, to fix #588
2018-02-16 05:00:22 -05:00
Garret Wassermann
2852e7ba28
Merge pull request #586 from aesdev/master
...
Fix for Email Issue while pulling CC and ValueError for public homepage
2018-01-12 13:55:01 -05:00
Dilip Dwarak
cf85c3d9ab
Fixe for Email Issue while pulling CC and ValueError for public homepage
2018-01-11 14:49:21 -05:00
Garret Wassermann
ed0596e430
Merge branch 'master' into feature-public-ticket-defaults
2018-01-10 13:18:29 -05:00
Arne Brutschy
f3e52a2f12
Adds pre-defined values for public tickets
...
This commit adds three new settings that allow the operator to
pre-define the `queue`, `priority` and `due_date` fields for public
tickets. If one of these settings are present the corresponding input
field is hidden from the form.
The settings are the following:
HELPDESK_PUBLIC_TICKET_QUEUE = 'website'
HELPDESK_PUBLIC_TICKET_PRIORITY = 2
HELPDESK_PUBLIC_TICKET_DUE_DATE = ''
If the due date is set to the empty string, no due date is saved in the
ticket (analogously to the form). The other settings should be
self-explanatory.
2018-01-09 14:53:05 +01:00
Garret Wassermann
3ccd6c8dc8
Merge 0.2.6 Django 2.0 updates
2017-12-28 09:16:01 -05:00
Garret Wassermann
d18ce1f1d5
Bump version to 0.2.6 to fix remaining Django 2.0 warnings
2017-12-28 09:11:34 -05:00
Garret Wassermann
523329eab5
Merge 0.2.5 bugfixes and Django 2.0 changes
2017-12-28 07:43:10 -05:00
Garret Wassermann
5112f0dfd0
Address deprecation warnings to be compatible with Django 2.0
2017-12-28 07:23:51 -05:00
Garret Wassermann
142c291afb
Merge 0.2.4 bugfixes
2017-12-18 00:45:36 -05:00
Garret Wassermann
03599f462b
Catch exception when someone enters a non-integer text into the public ticket view form, #576
2017-12-15 20:28:39 -05:00
Garret Wassermann
1d63e25855
Improve permissions to view pages, to partially address #326
2017-12-15 17:18:54 -05:00
Garret Wassermann
92b43ef495
Merge master 0.2.3 bugfixes into develop
2017-12-09 23:02:12 -05:00
Garret Wassermann
bc0125421b
Fix PEP8 errors detected by new pycodestyle script
2017-12-06 02:06:07 -05:00
Garret Wassermann
27ee01449e
Add missing imports for custom staff filters
2017-10-30 03:41:49 -04:00
Garret Wassermann
3a1bd76e75
Merge custom staff filter, PR #239
2017-10-30 03:17:40 -04:00
Manuel Saelices
36d4b7ec0d
Merge branch 'master' into feat-raise-404-if-anon
2017-10-04 03:46:28 +02:00
msaelices
7b022fa1e0
If HELPDESK_ANON_ACCESS_RAISES_404 is True, it raises a 404 to anon users. It's like the helpdesk was invisible
2017-10-04 03:43:32 +02:00
Garret Wassermann
1e11e227ff
Update ticket_view for Python 2 and 3, to correct a 500 error in #494
2017-08-30 10:49:56 -04:00
Garret Wassermann
043a40682f
Merge pull request #494 from Heteroskedastic/issue#493
...
- issue #493 : internal error 500 on save query
2017-08-30 10:40:46 -04:00
msaelices
f931dd4dba
Fix AttributeError
while staff user does a mass update in some tickets using the Close (Send E-mail)
action.
2017-08-21 01:26:45 +02:00
Garret Wassermann
49aac657a9
PEP8 fixups
2017-04-16 04:44:16 -04:00
Garret Wassermann
01e87f2cb8
#72 : Prevent django template tags from being executed in followup comments
2017-04-16 03:24:39 -04:00
Will Stott
fb0782294e
Don't show error on initial get.
2017-04-13 11:36:38 +01:00
Will Stott
b7a97183cb
Never return None from views.public.create_ticket
...
Would create a 500 when user omitted their email. Only a partial improve. Added a TODO: as this view still breaks if passing non-numeric characters to the ID.
I assume this needs a full overhaul really.
2017-04-13 11:30:29 +01:00
pprolancer
babc7586cf
- issue #493 : internal error 500 on save query
...
https://github.com/django-helpdesk/django-helpdesk/issues/493
2017-03-12 19:58:57 +03:30
Alex Seeholzer
645f196848
Added tests covering the usersettings_helpdesk occurrences
2017-01-13 17:37:10 +01:00
Alex Seeholzer
4e018db5a6
Added unique related_name “usersetttings_helpdesk” for the one-to-one relation to User in UserSettings.
2017-01-13 15:22:41 +01:00
Jonathan Barratt
e82e5fcd5f
urlquote email address when used as get query param
2016-12-11 06:20:03 +07:00
Pawel M
94c39cba69
solves Title changed to . (Null title) on failed attachment upload.
2016-12-11 06:00:05 +07:00
Jonathan Barratt
5acd891c68
refactor all handling of attached files
...
Extract attachment processing from forms, views.staff, and management.command.get_email modules, and consolidate it into a unified lib module function.
Also refactor the affected components, most notably lib.send_templated_email, to make it easier (IMO) to reason about changes to them.
Add unit tests for attachments with UTF-8 filenames, and functional tests for submission of same, as well as ASCII versions, through the public ticket-form.
Remove unused Attachment method "get_upload_to".
2016-12-08 19:47:20 +07:00
Jonathan Barratt
7738bba2ab
remove special-case imports for legacy versions
...
standardise use, or avoidance, of timezone, template from_string, and Context
2016-11-21 10:16:03 +07:00
Jonathan Barratt
ebfea8274d
convert reverse-URL lookups to helpdesk namespace
...
in views.staff, this fixes:
-run_report's no-tickets-found redirect to report_index
-del_attachment's redirect to parent ticket view after deletion
2016-11-11 10:31:37 +07:00
Garret Wassermann
adf2b16c2c
Fix namespaces in test
2016-10-29 04:33:27 -04:00
Garret Wassermann
d791700582
Fix PEP8 errors
2016-10-29 04:08:57 -04:00
Garret Wassermann
cad174468b
Sync with namespace and other v0.2 changes
2016-10-29 03:47:15 -04:00
Alex Barcelo
53ed0d3a2c
Remove all the deprecated API related files and references
2016-10-29 08:50:13 +02:00
Jonathan Barratt
790f1fc003
Merge pull request #374 from alexbarcelo/urls_app_name
...
Set app_name as 'helpdesk' at the urls.py, and droping url prefixes
2016-10-28 15:59:29 +07:00
Alex Barcelo
f017adea63
fixing those two python files
2016-10-24 10:05:41 +02:00
Alex Barcelo
89a6ae01b8
Fixing style (according to branch 'autocodestyle') + quicktest
2016-10-24 08:04:31 +02:00
Alex Barcelo
3c35473265
fixing views.py (except deprecated api)
2016-10-23 22:02:02 +02:00
Alex Barcelo
24d88be8d9
Initial general clean-up of stuff
2016-10-21 17:14:12 +02:00
Daryl
3b181e87ef
Fix inconsistent indentation
2016-10-20 11:43:22 +07:00
Alex Barcelo
91afbb9755
fixing some additional reverse stuff
2016-10-19 15:30:37 +02:00
Alex Barcelo
afd6ebad74
Merge current 'master' state into urls_app_name
2016-10-19 15:26:04 +02:00
Ross Poulton
138904bf8b
Update project URLs per #424
2016-10-12 11:14:10 +11:00
Garret Wassermann
3f620e83a2
Update style of Ticket FollowUp list to be a timeline
2016-09-27 17:29:59 -04:00
Garret Wassermann
6a86a0106a
Updated report_index() to remove the context= so it matches the syntax of dashboard() function.
2016-09-13 00:31:56 -04:00
Garret Wassermann
00cdbcf43b
Finish CSS template changes for Ticket page and related properties; includes responsive Ticket list table; styled file input buttons but need to find way to update text for beyond the first input box; added a ticket_attachment_del page to confirm removal of attachment and styled it
2016-09-12 02:11:55 -04:00
Garret Wassermann
67f81ac252
Continue CSS cleanup for Ticket description, remove unneeded priority and button images and associated functions
2016-09-09 04:03:32 -04:00
Garret Wassermann
d66259efdc
Update dashboard and reports to new style, add more CDN support for new javascript libraries
2016-09-09 02:45:12 -04:00
Ross Poulton
f2e497c3c6
Merge pull request #415 from mhannig/fix-broken-keyword-search
...
JSON Serialization broke Keyword-Searches
2016-07-05 08:48:10 +10:00
Matthias Hannig
a37f7145ec
Serializing the query using JSON for SavedSearches unfortunately broke
...
Keyword-Searches.
Now, only the search string is serialized for saving and
the "qset" is moved from "other_filters" to apply_query.
2016-07-04 17:47:53 +02:00
Ross Poulton
03b3a70975
Merge pull request #410 from mrkiwi-nz/fix_savequery
...
Fix savequery
2016-06-30 10:36:41 +10:00
Daryl
0ac7183875
Add test for saving a query, fix shared checkbox issue
...
My browser sends 'on' when a checkbox is ticked, django ORM only
recognises '1', 'true' or 't' as valid 'True' responses.
This throws an error
ValidationError at /helpdesk/save_query/
[u"'on' value must be either True or False."]
This could be fixed with " value='1'" in the template, but testing that is harder
My fix is to add a check in the view. 2 more lines, but easier to unittest.
Core devs need to make a call as to which solution is best.
D
2016-06-30 11:36:21 +12:00
Matthias Hannig
5f0191957f
fixed python3 compat issue
2016-06-28 18:44:54 +02:00
Matthias Hannig
895a65fdb9
Fixed remote code execution through unpickling untrusted code.
2016-06-28 18:04:39 +02:00
Daryl
afbfd01fab
Fix Issue #404 : Refactor converting query string into queue:id
2016-06-26 12:45:55 +12:00
Daryl
e5a6686c6d
Ticket #403 - This code changes the behaviour of lookups for tickets and
...
ignores the queue name. This means that queue changes on a ticket dont
break the email links which have already been sent out.
The queue name still exists in the link/url, but is not used in the
lookup
2016-06-24 13:46:37 +12:00
Daryl
8a7fe5fcbf
Changed the way the context is passed to render() - this was required
...
to enable django 1.7 to work (otherwise 1.8, 1.9 pass all tests, but 1.7 fails)
2016-06-21 20:56:43 +12:00
Daryl
558f140bfb
Changed render_to_response() to render() - this should work for django1.9.4 plus django1.10
...
Without this change, django1.10 is missing the 'user' object from the context, which results in
a very hard to track down bug manifesting in ;
"NoReverseMatch: Reverse for 'helpdesk_rss_user' with arguments '('',)' and keyword arguments '{}' not found."
At first glance users may think this is the dots-in-usernames bug, but the username is totally missing.
2016-06-21 17:18:06 +12:00
Bruno Tikami
978e6d5c9b
UPDATED: When notifying users about creation / updates on tickets, notify everybody using a single email message.
2016-03-17 01:12:42 -03:00
Darren Riedlinger
ac8ead52c8
getattr on usersettings.setting dict always returns False. Use settings.get() instead
2016-03-06 12:46:36 -08:00
Pawel M
2b6c23db9f
(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')\n GROUP BY queue, name\n ORDER BY q.id' at line 9") helpdesk/views/staff.py in dashboard 149 solved. When queues is null do not add to sql q.id in ()
2016-03-01 22:53:33 +01:00
Bruno Tikami
4e32e879a8
BUGFIX: new TicketCC instances must be returned after subscribed to Ticket updates.
2016-02-20 17:36:24 -02:00
Bruno Tikami
32ee4de50b
UPDATED: Better validation before creating a duplicated TicketCC
2016-02-19 13:01:39 -02:00
Bruno Tikami
f911f92892
BUGFIX: Don't create duplicated TicketCCs when processing email messages.
2016-02-19 12:25:14 -02:00
Bruno Tikami
380723a972
UPDATED: Use <forms.TicketCCForm> when subscribing to a ticket followups.
2016-02-19 11:09:03 -02:00
Bruno Tikami
be07fdff6c
UPDATED: Finished moving Message-Id field from <Ticket> to <FollowUp> model.
2016-02-16 17:10:13 -02:00
Bruno Tikami
b5ff3f9063
UPDATED: <views.staff.subscribe_staff_member_to_ticket> to accept and validate an user email when creating linking a <TicketCC> instance for a staff member. I'm pretty sure this is NOT the best place to put this but I don't wanna mess too much around for now.
2016-02-07 15:56:30 -02:00
Alex Barcelo
3a0f08046e
using helpdesk
app_name and droping helpdesk_
prefix
2015-12-22 10:27:03 +01:00
Ross Poulton
ca1690becb
Deprecate custom API (see #198 )
2015-12-22 11:28:00 +11:00
Alex Barcelo
01598826bf
protecting through 403 several staff views
2015-12-16 22:27:06 +01:00
Alex Barcelo
fb66fea86e
change basic features of membership into permissions
2015-12-16 22:27:05 +01:00
Ross Poulton
6187b0568c
Merge pull request #358 from flinz/django-1.9-fixes
...
Django 1.9 compatibility
2015-12-16 10:24:16 +11:00
Alex Seeholzer
2da16c511c
updates to remove Django 1.10 deprecation warnings in Django 1.9:
...
- use of patterns() in urls.py is deprecated
- render() functions accept only dicts - introduced checks to ensure downward compatibility back to Django 1.7
2015-12-10 13:36:24 +01:00
Alex Seeholzer
8390125c01
fixes of python 3 test fails
2015-11-18 15:07:33 +01:00
Jonathan Barratt
0610a6645d
Fix QueueMembership bug revealed by django.test's DiscoverRunner
...
If HELPDESK_ENABLE_PER_QUEUE_STAFF_MEMBERSHIP was True but a user had
no QueueMembership entries, then restricting queue access generated
RelatedObjectDoesNotExist exceptions.
- Ask for forgiveness whenever we try to limit a queryset by the
queuemembership related object set.
- Since tests can now be run with the project's settings active,
rather than only with quicktest.py's settings, restore the initial
HELPDESK_ENABLE_PER_QUEUE_MEMBERSHIP value after having tested the
related functionality.
2015-11-16 18:45:27 +07:00
Alex Seeholzer
27c519f2ee
downwards compatibility for django < 1.8
2015-11-13 15:36:04 +01:00
Alex Seeholzer
8f585aef1c
Merge commit 'a4e6f086c8928e77baa73a25b7e8000fb6261498' into django-1.8
...
* commit 'a4e6f086c8928e77baa73a25b7e8000fb6261498':
Include attachments to cc'd users on ticket update
From gettatr to get, because dict doesn't contatin attributes. More readable if statement.
2015-11-13 13:50:11 +01:00
Ross Poulton
a4e6f086c8
Merge pull request #350 from ssadler/updated_cc_attachments
...
Include attachments to cc'd users on ticket update
2015-11-13 08:20:26 +11:00
Scott Sadler
98ad8567b9
Include attachments to cc'd users on ticket update
2015-11-12 15:53:16 +01:00
vlad.vyazovetskov
0a3171a024
From gettatr to get, because dict doesn't contatin attributes.
...
More readable if statement.
2015-11-12 17:31:14 +03:00
Scott Sadler
e82c17567a
Merge branch 'master' into django-1.8
...
Conflicts:
helpdesk/tests/__init__.py
2015-11-06 14:50:33 +01:00
Alex Seeholzer
0b7e0b7f04
changes in templating engine that worked for django 1.8
2015-06-12 12:52:35 +02:00
Alex Seeholzer
0f69771164
fix for django 1.8.2, get_template_from_string was removed
2015-06-12 12:52:34 +02:00
Jonathan Barratt
bfcd8fc024
Add ability to restrict users' access by queue if so configured, and migration and tests for same.
2015-06-12 12:23:39 +07:00
Jonathan Barratt
711eb6cea2
As of at least Django 1.5, calling __str__() on a CHOICES object returns a proxy object, not the actual text of the CHOICE. Change such calls to title() instead
2015-06-11 14:31:49 +07:00