diff --git a/MANIFEST.in b/MANIFEST.in
index 80c7acd..421e471 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,3 +1,4 @@
include README.rst LICENSE
recursive-include jsignature/static *.js
recursive-include jsignature/locale *.mo
+recursive-include jsignature/templates *.html
diff --git a/jsignature/static/js/django_jsignature.js b/jsignature/static/js/django_jsignature.js
index bff178d..df01be1 100644
--- a/jsignature/static/js/django_jsignature.js
+++ b/jsignature/static/js/django_jsignature.js
@@ -1,15 +1,21 @@
$(document).ready(function() {
+ $(".jsign-container").each(function(){
+ var config = $(this).data('config');
+ var value = $(this).data('initial-value');
+ $(this).jSignature(config);
+ $(this).jSignature("setData", value, "native");
+ });
/* Each time user is done drawing a stroke, update value of hidden input */
- $(document).delegate(".jsign-container", "change", function(e) {
+ $(".jsign-container").on("change", function(e) {
var jSignature_data = $(this).jSignature('getData', 'native');
var django_field_name = $(this).attr('id').split(/_(.+)/)[1];
$('#id_' + django_field_name).val(JSON.stringify(jSignature_data));
});
/* Bind clear button */
- $(document).delegate(".jsign-wrapper input", "click", function(e) {
+ $(".jsign-wrapper input").on("click", function(e) {
$(this).siblings('.jsign-container').jSignature('reset');
});
-})
+});
diff --git a/jsignature/templates/jsignature/widget.html b/jsignature/templates/jsignature/widget.html
new file mode 100644
index 0000000..16c7032
--- /dev/null
+++ b/jsignature/templates/jsignature/widget.html
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/jsignature/tests/widgets.py b/jsignature/tests/widgets.py
index 77b6071..f06d985 100644
--- a/jsignature/tests/widgets.py
+++ b/jsignature/tests/widgets.py
@@ -1,4 +1,6 @@
import json
+from pyquery import PyQuery as pq
+
from django.test import SimpleTestCase
from django.core.exceptions import ValidationError
@@ -59,6 +61,5 @@ class JSignatureWidgetTest(SimpleTestCase):
w = JSignatureWidget()
output = w.render(name='foo', value=None)
# Almost useless :/
- self.assertIn('class="jsign-wrapper"', output)
- self.assertIn('type="hidden"', output)
- self.assertIn('type="text/javascript"', output)
+ self.assertEqual(1, len(pq('.jsign-wrapper', output)))
+ self.assertEqual(1, len(pq('[type=hidden]', output)))
diff --git a/jsignature/widgets.py b/jsignature/widgets.py
index 6244e34..0ed7b1a 100644
--- a/jsignature/widgets.py
+++ b/jsignature/widgets.py
@@ -3,6 +3,8 @@
with jSignature jQuery plugin
"""
import json
+
+from django.template.loader import render_to_string
from django.forms.widgets import HiddenInput
from django.core import validators
from django.core.exceptions import ValidationError
@@ -65,15 +67,13 @@ class JSignatureWidget(HiddenInput):
value = self.prep_value(value)
# Build output
- hidden_input = super(JSignatureWidget, self).render(name, value, attrs)
- div = u'' % jsign_id
- clr = u'' % _('Reset')
- js = u'$("#%s").jSignature(%s);' % (
- jsign_id, json.dumps(jsignature_config))
- js += u'$("#%s").jSignature("setData", %s,"native");' % (
- jsign_id, value)
- js = u'' % js
- out = u'%s%s%s%s
' % (
- hidden_input, div, clr, js)
+ context = {
+ 'hidden': super(JSignatureWidget, self).render(name, value, attrs),
+ 'jsign_id': jsign_id,
+ 'reset_btn_text': _('Reset'),
+ 'config': mark_safe(json.dumps(jsignature_config)),
+ 'value': mark_safe(value),
+ }
+ out = render_to_string('jsignature/widget.html', context)
return mark_safe(out)
diff --git a/requirements.txt b/requirements.txt
index f21076c..9990ae9 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,3 @@
south
pillow
+pyquery
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 82a8b2e..8945b11 100644
--- a/setup.py
+++ b/setup.py
@@ -5,24 +5,25 @@ here = os.path.abspath(os.path.dirname(__file__))
setup(
name='django-jsignature',
- version='0.7.5.dev0',
+ version='0.7.6',
author='Florent Lebreton',
author_email='florent.lebreton@makina-corpus.com',
url='https://github.com/makinacorpus/django-jsignature',
- download_url = "http://pypi.python.org/pypi/django-jsignature/",
+ download_url="http://pypi.python.org/pypi/django-jsignature/",
description="Use jSignature jQuery plugin in your django projects",
long_description=open(os.path.join(here, 'README.rst')).read(),
license='LPGL, see LICENSE file.',
install_requires=['Django'],
packages=find_packages(),
- include_package_data = True,
- zip_safe = False,
- classifiers = ['Topic :: Utilities',
- 'Natural Language :: English',
- 'Operating System :: OS Independent',
- 'Intended Audience :: Developers',
- 'Environment :: Web Environment',
- 'Framework :: Django',
- 'Development Status :: 4 - Beta',
- 'Programming Language :: Python :: 2.7'],
+ include_package_data=True,
+ zip_safe=False,
+ classifiers=[
+ 'Topic :: Utilities',
+ 'Natural Language :: English',
+ 'Operating System :: OS Independent',
+ 'Intended Audience :: Developers',
+ 'Environment :: Web Environment',
+ 'Framework :: Django',
+ 'Development Status :: 4 - Beta',
+ 'Programming Language :: Python :: 2.7'],
)