From 4578eacce922a0f8d1ed4f4e4be172e67ca2e855 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 16 Nov 2016 19:05:56 -0400 Subject: [PATCH] Consolidate the page thumbnail and staging folder thumbnail widgets. Update the staging folder file image API end point to work in the same way the document page image API works. --- .../appearance/static/appearance/css/base.css | 17 +- .../appearance/static/appearance/js/base.js | 23 -- mayan/apps/documents/apps.py | 52 +-- mayan/apps/documents/settings.py | 14 +- mayan/apps/documents/widgets.py | 300 ++++++++++++------ mayan/apps/sources/api_views.py | 65 ++-- mayan/apps/sources/apps.py | 9 +- mayan/apps/sources/classes.py | 2 +- mayan/apps/sources/serializers.py | 5 - mayan/apps/sources/widgets.py | 119 ++----- 10 files changed, 286 insertions(+), 320 deletions(-) diff --git a/mayan/apps/appearance/static/appearance/css/base.css b/mayan/apps/appearance/static/appearance/css/base.css index e353760ec5..5504f4c49d 100644 --- a/mayan/apps/appearance/static/appearance/css/base.css +++ b/mayan/apps/appearance/static/appearance/css/base.css @@ -102,15 +102,6 @@ img.lazy-load-carousel { height: 0px; } -.tc { - margin: auto; - text-align: center; -} - -.tc a { - text-align: center; -} - .img-nolazyload { border: 1px solid black; } @@ -127,6 +118,10 @@ img.lazy-load-carousel { visibility: visible; } +.instance-image-widget { + text-align: center; +} + hr { margin-top: 5px; margin-bottom: 11px; @@ -148,10 +143,6 @@ hr { text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3); } -.a-caption { - color: white; -} - .radio ul li { list-style-type:none; } diff --git a/mayan/apps/appearance/static/appearance/js/base.js b/mayan/apps/appearance/static/appearance/js/base.js index 21b59d93d7..2a125b2ad8 100644 --- a/mayan/apps/appearance/static/appearance/js/base.js +++ b/mayan/apps/appearance/static/appearance/js/base.js @@ -65,29 +65,6 @@ jQuery(document).ready(function() { autoResize : true, }); - $('a.fancybox-staging').click(function(e) { - var $this = $(this); - - $.get($this.attr('href'), function( result ) { - if (result.status == 'success') { - $.fancybox.open([ - { - href : result.data, - title : $this.attr('title'), - openEffect : 'elastic', - closeEffect : 'elastic', - prevEffect : 'none', - nextEffect : 'none', - titleShow : true, - type : 'image', - autoResize : true, - }, - ]); - } - }) - e.preventDefault(); - }) - $('img.lazy-load').lazyload({ appear: function(elements_left, settings) { loadImage($(this)); diff --git a/mayan/apps/documents/apps.py b/mayan/apps/documents/apps.py index c32668a2c7..b953ef3ba4 100644 --- a/mayan/apps/documents/apps.py +++ b/mayan/apps/documents/apps.py @@ -70,14 +70,13 @@ from .permissions import ( ) # Just import to initialize the search models from .search import document_search, document_page_search # NOQA -from .settings import setting_display_size, setting_thumbnail_size from .statistics import ( new_documents_per_month, new_document_pages_per_month, new_document_pages_this_month, new_documents_this_month, new_document_versions_per_month, total_document_per_month, total_document_page_per_month, total_document_version_per_month ) -from .widgets import document_page_html_widget +from .widgets import DocumentThumbnailWidget, DocumentPageThumbnailWidget class DocumentsApp(MayanAppConfig): @@ -187,17 +186,14 @@ class DocumentsApp(MayanAppConfig): model=DocumentPage, related='document', ) + # Document and document page thumbnail widget + document_thumbnail_widget = DocumentThumbnailWidget() + document_page_thumbnail_widget = DocumentPageThumbnailWidget() + SourceColumn( source=Document, label=_('Thumbnail'), - func=lambda context: document_page_html_widget( - document_page=context['object'].latest_version.pages.first(), - click_view='rest_api:documentpage-image', - click_view_arguments_lazy=lambda: ( - context['object'].latest_version.pages.first().pk, - ), click_view_querydict={'size': setting_display_size.value}, - gallery_name='documents:document_list', - size=setting_thumbnail_size.value, - title=getattr(context['object'], 'label', None), + func=lambda context: document_thumbnail_widget.render( + instance=context['object'] ) ) SourceColumn( @@ -206,29 +202,18 @@ class DocumentsApp(MayanAppConfig): SourceColumn( source=DocumentPage, label=_('Thumbnail'), - func=lambda context: document_page_html_widget( - document_page=context['object'], - click_view='rest_api:documentpage-image', - click_view_arguments=(context['object'].pk,), - gallery_name='documents:document_page_list', - preview_click_view='documents:document_page_view', - size=setting_thumbnail_size.value, - title=unicode(context['object']), + func=lambda context: document_page_thumbnail_widget.render( + instance=context['object'] ) ) SourceColumn( source=DocumentPageResult, label=_('Thumbnail'), - func=lambda context: document_page_html_widget( - document_page=context['object'], - click_view='rest_api:documentpage-image', - click_view_arguments=(context['object'].pk,), - gallery_name='documents:document_page_list', - preview_click_view='documents:document_page_view', - size=setting_thumbnail_size.value, - title=unicode(context['object']), + func=lambda context: document_page_thumbnail_widget.render( + instance=context['object'] ) ) + SourceColumn( source=DocumentPageResult, label=_('Type'), attribute='document_version.document.document_type' @@ -248,18 +233,11 @@ class DocumentsApp(MayanAppConfig): SourceColumn( source=DeletedDocument, label=_('Thumbnail'), - func=lambda context: document_page_html_widget( - document_page=context['object'].latest_version.pages.first(), - click_view='rest_api:documentpage-image', - click_view_arguments_lazy=lambda: ( - context['object'].latest_version.pages.first().pk, - ), click_view_querydict={'size': setting_display_size.value}, - gallery_name='documents:delete_document_list', - size=setting_thumbnail_size.value, - title=getattr(context['object'], 'label', None), - disable_title_link=True + func=lambda context: document_thumbnail_widget.render( + instance=context['object'] ) ) + SourceColumn( source=DeletedDocument, label=_('Type'), attribute='document_type' ) diff --git a/mayan/apps/documents/settings.py b/mayan/apps/documents/settings.py index 2c37e86bb2..e2e9fb4308 100644 --- a/mayan/apps/documents/settings.py +++ b/mayan/apps/documents/settings.py @@ -15,12 +15,11 @@ LANGUAGE_CHOICES = [ ] namespace = Namespace(name='documents', label=_('Documents')) -setting_storage_backend = namespace.add_setting( - global_name='DOCUMENTS_STORAGE_BACKEND', - default='storage.backends.filebasedstorage.FileBasedStorage' +setting_display_size = namespace.add_setting( + global_name='DOCUMENTS_DISPLAY_SIZE', default='3600' ) setting_preview_size = namespace.add_setting( - global_name='DOCUMENTS_PREVIEW_SIZE', default='640x480' + global_name='DOCUMENTS_PREVIEW_SIZE', default='800' ) setting_print_size = namespace.add_setting( global_name='DOCUMENTS_PRINT_SIZE', default='3600' @@ -28,9 +27,6 @@ setting_print_size = namespace.add_setting( setting_thumbnail_size = namespace.add_setting( global_name='DOCUMENTS_THUMBNAIL_SIZE', default='50x50' ) -setting_display_size = namespace.add_setting( - global_name='DOCUMENTS_DISPLAY_SIZE', default='3600' -) setting_recent_count = namespace.add_setting( global_name='DOCUMENTS_RECENT_COUNT', default=40, help_text=_( @@ -38,6 +34,10 @@ setting_recent_count = namespace.add_setting( 'remember per user.' ) ) +setting_storage_backend = namespace.add_setting( + global_name='DOCUMENTS_STORAGE_BACKEND', + default='storage.backends.filebasedstorage.FileBasedStorage' +) setting_zoom_percent_step = namespace.add_setting( global_name='DOCUMENTS_ZOOM_PERCENT_STEP', default=25, help_text=_( diff --git a/mayan/apps/documents/widgets.py b/mayan/apps/documents/widgets.py index 49fccc9564..31a9dd0eef 100644 --- a/mayan/apps/documents/widgets.py +++ b/mayan/apps/documents/widgets.py @@ -7,9 +7,9 @@ from django.utils.http import urlencode from django.utils.safestring import mark_safe from django.utils.translation import ugettext, ugettext_lazy as _ -from converter.literals import DEFAULT_ROTATION, DEFAULT_ZOOM_LEVEL - -from .settings import setting_display_size, setting_thumbnail_size +from .settings import ( + setting_display_size, setting_preview_size, setting_thumbnail_size +) class DocumentPageImageWidget(forms.widgets.Widget): @@ -17,15 +17,19 @@ class DocumentPageImageWidget(forms.widgets.Widget): final_attrs = self.build_attrs(attrs) zoom = final_attrs.get('zoom') rotation = final_attrs.get('rotation') + + html_widget = InteractiveDocumentPageWidget() + if value: output = [] output.append( '
' ) - output.append(document_page_html_widget( - value, zoom=zoom, rotation=rotation, image_class='lazy-load', - nolazyload=False, size=setting_display_size.value) + output.append( + html_widget.render( + instance=value, zoom=zoom, rotation=rotation, + ) ) output.append('
') return mark_safe(''.join(output)) @@ -38,6 +42,8 @@ class DocumentPagesCarouselWidget(forms.widgets.Widget): Display many small representations of a document pages """ def render(self, name, value, attrs=None): + html_widget = CarouselDocumentPageThumbnailWidget() + output = [] output.append( '