Skip to content

Commit

Permalink
Merge pull request #215 from claudep/issue190
Browse files Browse the repository at this point in the history
Fixed #190 -- Add setting to skip jQuery injection
  • Loading branch information
Natim authored May 9, 2017
2 parents c0570af + 076ce2d commit 97ae6c6
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 3 deletions.
3 changes: 2 additions & 1 deletion CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ This document describes changes between each past release.
2.7.0 (unreleased)
==================

- Nothing changed yet.
- Added INCLUDE_JQUERY setting to decide whether TinyMCE.media should include
a jQuery release (#190).


2.6.0 (2017-01-23)
Expand Down
4 changes: 4 additions & 0 deletions docs/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,10 @@ file.
reduces the number of requests. The overall initialization time for TinyMCE
will be reduced dramatically if you use this option.

``TINYMCE_INCLUDE_JQUERY`` (default: ``True``)
Whether a jQuery version should be included in the widget media property.
Set this to ``False`` if you include jQuery yourself in your templates.

``TINYMCE_EXTRA_MEDIA`` (default: ``None``)
Extra media to include on the page with the :ref:`widget <widget>`.

Expand Down
2 changes: 1 addition & 1 deletion testtinymce/testapp/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ class TestPage(models.Model):


class TestInline(models.Model):
page = models.ForeignKey(TestPage)
page = models.ForeignKey(TestPage, on_delete=models.CASCADE)
content1 = models.TextField()
content2 = models.TextField()
2 changes: 2 additions & 0 deletions tinymce/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

USE_COMPRESSOR = getattr(settings, 'TINYMCE_COMPRESSOR', False)

INCLUDE_JQUERY = getattr(settings, 'TINYMCE_INCLUDE_JQUERY', True)

USE_EXTRA_MEDIA = getattr(settings, 'TINYMCE_EXTRA_MEDIA', None)

USE_FILEBROWSER = getattr(settings, 'TINYMCE_FILEBROWSER',
Expand Down
36 changes: 36 additions & 0 deletions tinymce/tests/test_widgets.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,27 @@
# coding: utf-8

from contextlib import contextmanager

from django import forms
from django.test import TestCase
from django.test.utils import override_settings
from django.utils.translation import override

import tinymce.settings
from tinymce.widgets import get_language_config, TinyMCE


@contextmanager
def override_tinymce_settings(settings_dict):
saved_values = {}
for setting, value in settings_dict.items():
saved_values[setting] = getattr(tinymce.settings, setting)
setattr(tinymce.settings, setting, value)
yield
for setting in settings_dict.keys():
setattr(tinymce.settings, setting, saved_values[setting])


@override_settings(LANGUAGES=[('en', 'English')])
class TestWidgets(TestCase):

Expand Down Expand Up @@ -60,6 +74,28 @@ def test_tinymce_widget(self):
)
self.assertIn('class="foo tinymce"', html)

@override_settings(TINYMCE_INCLUDE_JQUERY=False)
def test_tinymce_widget_media(self):
widget = TinyMCE()
self.assertEqual(
widget.media.render_js(),
[
'<script type="text/javascript" src="/tinymce/compressor/"></script>',
'<script type="text/javascript" src="/static/django_tinymce/jquery-1.9.1.min.js"></script>',
'<script type="text/javascript" src="/static/django_tinymce/init_tinymce.js"></script>',
]
)
self.assertEqual(list(widget.media.render_css()), [])
with override_tinymce_settings({'USE_COMPRESSOR': False, 'INCLUDE_JQUERY': False}):
widget = TinyMCE()
self.assertEqual(
widget.media.render_js(),
[
'<script type="text/javascript" src="/static/tiny_mce/tiny_mce.js"></script>',
'<script type="text/javascript" src="/static/django_tinymce/init_tinymce.js"></script>',
]
)

def test_tinymce_widget_required(self):
"""
The TinyMCE widget should never output the required HTML attribute, even
Expand Down
3 changes: 2 additions & 1 deletion tinymce/widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,8 @@ def _media(self):

if 'css' in tinymce.settings.USE_EXTRA_MEDIA:
css = tinymce.settings.USE_EXTRA_MEDIA['css']
js.append('django_tinymce/jquery-1.9.1.min.js')
if tinymce.settings.INCLUDE_JQUERY:
js.append('django_tinymce/jquery-1.9.1.min.js')
js.append('django_tinymce/init_tinymce.js')
return forms.Media(css=css, js=js)
media = property(_media)
Expand Down

0 comments on commit 97ae6c6

Please sign in to comment.