diff --git a/apps/documents/forms.py b/apps/documents/forms.py index 9fdc19c5c2..a6f71c0a12 100644 --- a/apps/documents/forms.py +++ b/apps/documents/forms.py @@ -9,10 +9,11 @@ from common.forms import DetailForm from common.literals import PAGE_SIZE_CHOICES, PAGE_ORIENTATION_CHOICES from common.conf.settings import DEFAULT_PAPER_SIZE from common.conf.settings import DEFAULT_PAGE_ORIENTATION -from common.widgets import TextAreaDiv +from common.widgets import TextAreaDiv from documents.models import Document, DocumentType, \ DocumentPage, DocumentPageTransformation, DocumentTypeFilename +from documents.widgets import document_html_widget # Document page forms @@ -32,22 +33,10 @@ class DocumentPageImageWidget(forms.widgets.Widget): rotation = final_attrs.get('rotation', 0) if value: output = [] - output.append(''' -
-
- %(string)s - -
-
''' % { - 'img': reverse('document_display', args=[value.document.id]), - 'page': value.page_number, - 'zoom': zoom, - 'rotation': rotation, - 'static_url': settings.STATIC_URL, - 'string': ugettext(u'page image') - }) + output.append('
') + + output.append(document_html_widget(value.document, size='document_display', page=value.page_number, zoom=zoom, rotation=rotation)) + output.append('
') return mark_safe(u''.join(output)) else: return u'' @@ -113,52 +102,24 @@ class DocumentPagesCarouselWidget(forms.widgets.Widget): output.append(u'
') for page in value.documentpage_set.all(): - try: - page.document.get_valid_image() - template = u'''
-
%(page_string)s %(page)s
- - -
''' - except: - template = u'''
-
%(page_string)s %(page)s
-
- %(string)s - -
- -
''' - - - output.append(template % { - 'url': reverse('document_page_view', args=[page.pk]), - 'img': reverse('document_preview_multipage', args=[value.pk]), - 'page': page.page_number, - 'view_url': reverse('document_display', args=[page.document.pk]), - 'page_string': ugettext(u'Page'), - 'details_string': ugettext(u'Details'), - 'static_url': settings.STATIC_URL, - 'string': _(u'document page') - }) + output.append(u'
') + output.append( + document_html_widget( + page.document, + size='document_preview_multipage', + click_view='document_display', + page=page.page_number, + gallery_name='document_pages', + fancybox_class='fancybox-noscaling', + ) + ) + output.append(u'
') + output.append(u'%s' % (reverse('document_page_view', args=[page.pk]), ugettext(u'Details'))) + output.append(u'
') + output.append(u'
') output.append(u'
') - output.append( - u'
%s' % - ugettext(u'Click on the image for full size preview')) + output.append(u'
%s' % ugettext(u'Click on the image for full size preview')) return mark_safe(u''.join(output)) diff --git a/apps/documents/widgets.py b/apps/documents/widgets.py index b875aade25..bdca584c2e 100644 --- a/apps/documents/widgets.py +++ b/apps/documents/widgets.py @@ -2,25 +2,56 @@ from django.utils.safestring import mark_safe from django.conf import settings from django.utils.translation import ugettext_lazy as _ from django.core.urlresolvers import reverse +from django.utils.http import urlencode + +from converter.exceptions import UnknownFileFormat, UnkownConvertError def document_thumbnail(document): - try: - document.get_valid_image() - template = u'%(string)s' - except: - template = u'%(string)s' - - try: - return mark_safe(template % { - 'url': reverse('document_preview', args=[document.pk]), - 'thumbnail': reverse('document_thumbnail', args=[document.pk]), - 'static_url': settings.STATIC_URL, - 'string': _(u'thumbnail') - }) - except: - return u'' + return document_html_widget(document, click_view='document_preview') def document_link(document): return mark_safe(u'%s' % (reverse('document_view_simple', args=[document.pk]), document)) + + +def document_html_widget(document, size='document_thumbnail', click_view=None, page=None, zoom=None, rotation=None, gallery_name=None, fancybox_class='fancybox'): + result = [] + + alt_text = _(u'document page image') + query_dict = {} + + if page: + query_dict['page'] = page + + if zoom: + query_dict['zoom'] = zoom + + if rotation: + query_dict['rotation'] = rotation + + if gallery_name: + gallery_template = u'rel="%s"' % gallery_name + else: + gallery_template = u'' + + query_string = urlencode(query_dict) + preview_view = u'%s?%s' % (reverse(size, args=[document.pk]), query_string) + + try: + document.get_valid_image() + result.append('
') + if click_view: + result.append('' % (gallery_template, fancybox_class, u'%s?%s' % (reverse(click_view, args=[document.pk]), query_string))) + result.append('%s' % (preview_view, settings.STATIC_URL, alt_text)) + result.append('' % (preview_view, alt_text)) + if click_view: + result.append('') + result.append('
') + except UnknownFileFormat, UnkownConvertError: + result.append('
') + result.append('%s' % (preview_view, settings.STATIC_URL, alt_text)) + result.append('' % (preview_view, alt_text)) + result.append('
') + + return mark_safe(u''.join(result)) diff --git a/apps/linking/forms.py b/apps/linking/forms.py index 509d803a4a..864b532dcc 100644 --- a/apps/linking/forms.py +++ b/apps/linking/forms.py @@ -6,6 +6,7 @@ from django.utils.safestring import mark_safe from django.template.defaultfilters import capfirst from django.conf import settings +from documents.widgets import document_html_widget from tags.widgets import get_tags_inline_widget from linking.models import SmartLink, SmartLinkCondition @@ -36,62 +37,24 @@ class SmartLinkImageWidget(forms.widgets.Widget): ''' % { 'famfam': link.get('famfam', u'link'), 'text': capfirst(link['text']), - 'action': reverse(link.get('view'), args=[value['current_document'].pk, value['group'].pk]) + 'action': reverse(link.get('view'), args=[value['current_document'].pk, value['smart_link_instance'].pk]) }) output.append(u'') output.append(u'
') - for document in value['group_data']: - tags_template = get_tags_inline_widget(document) - - try: - document.get_valid_image() - template = u'''
-
%(document_name)s
-
%(page_string)s: %(document_pages)d
- %(tags_template)s - - -
''' - except: - template = u'''
-
%(document_name)s
-
%(page_string)s: %(document_pages)d
- %(tags_template)s -
- %(string)s - -
- -
''' - - output.append(template % { - 'url': reverse('document_view_simple', args=[document.pk]), - 'img': reverse('document_preview_multipage', args=[document.pk]), - 'current': u'border: 5px solid black; padding: 3px;' if value['current_document'] == document else u'', - 'view_url': reverse('document_display', args=[document.pk]), - 'document_pages': document.documentpage_set.count(), - 'page_string': ugettext(u'Pages'), - 'details_string': ugettext(u'Select'), - 'group_id': value['group'].pk, - 'document_name': document, - 'static_url': settings.STATIC_URL, - 'tags_template': tags_template if tags_template else u'', - 'string': _(u'smart links'), - }) + for document in value['documents']: + output.append(u'
' % (u'border: 5px solid black; padding: 3px;' if value['current_document'] == document else u'')) + output.append(u'
%s
' % document) + output.append(u'
%s: %d
' % (ugettext(u'Pages'), document.documentpage_set.count())) + output.append(get_tags_inline_widget(document)) + output.append(u'
' % document) + output.append(document_html_widget(document, click_view='document_display', size='document_preview_multipage', fancybox_class='fancybox-noscaling', gallery_name=u'smart_link_%d_documents_gallery' % value['smart_link_instance'].pk)) + output.append(u'
') + output.append(u'
') + output.append(u'%s' % (reverse('document_view_simple', args=[document.pk]), ugettext(u'Select'))) + output.append(u'
') + output.append(u'
') + output.append(u'
') output.append( u'
%s' % @@ -114,8 +77,8 @@ class SmartLinkInstanceForm(forms.Form): label=u'%s (%d)' % (unicode(data['title']), len(data['documents'])), required=False, initial={ - 'group': smart_link_instance, - 'group_data': data['documents'], + 'smart_link_instance': smart_link_instance, + 'documents': data['documents'], 'current_document': current_document, 'links': links }