' % (document.pk, page if page else 1))
- result.extend(zoomable_template)
- result.append(u'
')
return mark_safe(u''.join(result))
diff --git a/apps/linking/forms.py b/apps/linking/forms.py
index 864b532dcc..9568994b89 100644
--- a/apps/linking/forms.py
+++ b/apps/linking/forms.py
@@ -48,7 +48,7 @@ class SmartLinkImageWidget(forms.widgets.Widget):
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(document_html_widget(document, click_view='document_display', view='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')))
diff --git a/apps/main/static/packages/JqueryAsynchImageLoader-0.9.7.min.js b/apps/main/static/packages/JqueryAsynchImageLoader-0.9.7.min.js
new file mode 100644
index 0000000000..248aa4b264
--- /dev/null
+++ b/apps/main/static/packages/JqueryAsynchImageLoader-0.9.7.min.js
@@ -0,0 +1,9 @@
+/*
+* JqueryAsynchImageLoader (JAIL) : plugin for jQuery
+*
+* Developed by
+* Sebastiano Armeli-Battana (@sebarmeli) - http://www.sebastianoarmelibattana.com
+* Dual licensed under the MIT or GPL Version 3 licenses.
+* @version 0.9.7
+*/
+;(function(a){var b=a(window);a.fn.asynchImageLoader=a.fn.jail=function(d){d=a.extend({timeout:10,effect:false,speed:400,selector:null,offset:0,event:"load+scroll",callback:jQuery.noop,callbackAfterEachImage:jQuery.noop,placeholder:false,ignoreHiddenImages:false},d);var c=this;a.jail.initialStack=this;this.data("triggerEl",(d.selector)?a(d.selector):b);if(d.placeholder!==false){c.each(function(){a(this).attr("src",d.placeholder);});}if(/^load/.test(d.event)){a.asynchImageLoader.later.call(this,d);}else{a.asynchImageLoader.onEvent.call(this,d,c);}return this;};a.asynchImageLoader=a.jail={_purgeStack:function(c){var d=0;while(true){if(d===c.length){break;}else{if(c[d].getAttribute("data-href")){d++;}else{c.splice(d,1);}}}},_loadOnEvent:function(g){var f=a(this),d=g.data.options,c=g.data.images;a.asynchImageLoader._loadImageIfVisible(d,f);f.unbind(d.event,a.asynchImageLoader._loadOnEvent);a.asynchImageLoader._purgeStack(c);if(!!d.callback){a.asynchImageLoader._purgeStack(a.jail.initialStack);a.asynchImageLoader._launchCallback(a.jail.initialStack,d);}},_bufferedEventListener:function(g){var c=g.data.images,d=g.data.options,f=c.data("triggerEl");clearTimeout(c.data("poller"));c.data("poller",setTimeout(function(){c.each(function e(){a.asynchImageLoader._loadImageIfVisible(d,this,f);});a.asynchImageLoader._purgeStack(c);if(!!d.callback){a.asynchImageLoader._purgeStack(a.jail.initialStack);a.asynchImageLoader._launchCallback(a.jail.initialStack,d);}},d.timeout));},onEvent:function(d,c){c=c||this;if(d.event==="scroll"||d.selector){var e=c.data("triggerEl");if(c.length>0){e.bind(d.event,{images:c,options:d},a.asynchImageLoader._bufferedEventListener);if(d.event==="scroll"||!d.selector){b.resize({images:c,options:d},a.asynchImageLoader._bufferedEventListener);}return;}else{if(!!e){e.unbind(d.event,a.asynchImageLoader._bufferedEventListener);}}}else{c.bind(d.event,{options:d,images:c},a.asynchImageLoader._loadOnEvent);}},later:function(d){var c=this;if(d.event==="load"){c.each(function(){a.asynchImageLoader._loadImageIfVisible(d,this,c.data("triggerEl"));});}a.asynchImageLoader._purgeStack(c);a.asynchImageLoader._launchCallback(c,d);setTimeout(function(){if(d.event==="load"){c.each(function(){a.asynchImageLoader._loadImage(d,a(this));});}else{c.each(function(){a.asynchImageLoader._loadImageIfVisible(d,this,c.data("triggerEl"));});}a.asynchImageLoader._purgeStack(c);a.asynchImageLoader._launchCallback(c,d);if(d.event==="load+scroll"){d.event="scroll";a.asynchImageLoader.onEvent(d,c);}},d.timeout);},_launchCallback:function(c,d){if(c.length===0&&!a.jail.isCallback){d.callback.call(this,d);a.jail.isCallback=true;}},_loadImageIfVisible:function(e,h,g){var f=a(h),d=(/scroll/i.test(e.event))?g:b,c=true;if(e.ignoreHiddenImages){c=a.jail._isVisibleInOverflownContainer(f,e)&&f.is(":visible");}if(c&&a.asynchImageLoader._isInTheScreen(d,f,e.offset)){a.asynchImageLoader._loadImage(e,f);}},_isInTheScreen:function(j,c,h){var f=j[0]===window,n=(f?{top:0,left:0}:j.offset()),g=n.top+(f?j.scrollTop():0),i=n.left+(f?j.scrollLeft():0),e=i+j.width(),k=g+j.height(),m=c.offset(),l=c.width(),d=c.height();return(g-h)<=(m.top+d)&&(k+h)>=m.top&&(i-h)<=(m.left+l)&&(e+h)>=m.left;},_loadImage:function(c,d){d.hide();d.attr("src",d.attr("data-href"));d.removeAttr("data-href");if(c.effect){if(c.speed){d[c.effect](c.speed);}else{d[c.effect]();}}else{d.show();}c.callbackAfterEachImage.call(this,d,c);},_isVisibleInOverflownContainer:function(e,d){var f=e.parent(),c=true;while(f.get(0).tagName!=="BODY"){if(f.css("overflow")==="hidden"){if(!a.jail._isInTheScreen(f,e,d.offset)){c=false;break;}}if(f.css("visibility")==="hidden"||e.css("visibility")==="hidden"){c=false;break;}f=f.parent();}return c;}};}(jQuery));
\ No newline at end of file
diff --git a/apps/main/templates/base.html b/apps/main/templates/base.html
index 1a656df0d7..c1fcedd0cb 100644
--- a/apps/main/templates/base.html
+++ b/apps/main/templates/base.html
@@ -102,13 +102,17 @@
-webkit-box-shadow: -1px -1px 2px #004977;
box-shadow: -1px -1px 2px #004977;
}
+
+ .thin_border {
+ border: 1px solid black;
+ }
{% block stylesheets %}{% endblock %}
{% endblock %}
{% block web_theme_javascript %}
-
+
@@ -135,6 +139,7 @@
'type' : 'image',
'autoScale' : true
});
+
$("a.fancybox-noscaling").fancybox({
'titleShow' : false,
'transitionIn' : 'elastic',
@@ -144,6 +149,7 @@
'type' : 'image',
'autoScale' : false
});
+
$("a.fancybox-iframe").fancybox({
'titleShow' : false,
'transitionIn' : 'elastic',
@@ -166,7 +172,7 @@
$('img.lazy-load').jail({
event: 'load',
timeout: 10,
- placeholder: '{{ STATIC_URL }}/images/ajax-loader.gif'
+ placeholder: '{{ STATIC_URL }}images/ajax-loader.gif'
});
});
diff --git a/apps/mimetype/api.py b/apps/mimetype/api.py
index 4888aa5b8d..5790bce8a2 100644
--- a/apps/mimetype/api.py
+++ b/apps/mimetype/api.py
@@ -83,6 +83,9 @@ def get_error_icon_file_path():
else:
return os.path.join(settings.STATIC_ROOT, MIMETYPE_ICONS_DIRECTORY_NAME, ERROR_FILE_NAME)
+def get_error_icon_url():
+ return os.path.join(MIMETYPE_ICONS_DIRECTORY_NAME, ERROR_FILE_NAME)
+
def get_mimetype(file_description, filepath, mimetype_only=False):
"""
diff --git a/apps/rest_api/resources.py b/apps/rest_api/resources.py
index bbb8f52ebf..99a5c26613 100644
--- a/apps/rest_api/resources.py
+++ b/apps/rest_api/resources.py
@@ -25,6 +25,8 @@ class DocumentResourceSimple(ModelResource):
{
'page_numer': page.page_number,
'page_label': page.page_label,
+ 'is_zoomable': reverse('documents-expensive-is_zoomable', args=[instance.pk, page.page_number]),
+
#'content':
}
for page in instance.documentpage_set.all()
@@ -33,6 +35,4 @@ class DocumentResourceSimple(ModelResource):
]
def expensive_methods(self, instance):
- return [
- {'is_zoomable': reverse('documents-expensive-is_zoomable', args=[instance.pk])},
- ]
+ return []
diff --git a/apps/rest_api/urls.py b/apps/rest_api/urls.py
index b9eb0eea66..3265dd7574 100644
--- a/apps/rest_api/urls.py
+++ b/apps/rest_api/urls.py
@@ -3,7 +3,7 @@ from django.conf.urls.defaults import patterns, url
from djangorestframework.views import ListModelView
from djangorestframework.views import ListOrCreateModelView, InstanceModelView
-from rest_api.views import APIBase, Version_0, ReadOnlyInstanceModelView, IsZoomable, Exists, Size
+from rest_api.views import APIBase, Version_0, ReadOnlyInstanceModelView, IsZoomable
from rest_api.resources import DocumentResourceSimple
urlpatterns = patterns('',
@@ -12,7 +12,5 @@ urlpatterns = patterns('',
# Version 0 alpha API calls
url(r'^v0/document/(?P
[0-9]+)/$', ReadOnlyInstanceModelView.as_view(resource=DocumentResourceSimple), name='documents-simple'),
- url(r'^v0/document/(?P[0-9]+)/expensive/is_zoomable/$', IsZoomable.as_view(), name='documents-expensive-is_zoomable'),
- url(r'^v0/document/(?P[0-9]+)/expensive/exists/$', IsZoomable.as_view(), name='documents-expensive-exists'),
- url(r'^v0/document/(?P[0-9]+)/expensive/size/$', Size.as_view(), name='documents-expensive-size'),
+ url(r'^v0/document/(?P[0-9]+)/page/(?P[0-9]+)/expensive/is_zoomable/$', IsZoomable.as_view(), name='documents-expensive-is_zoomable'),
)
diff --git a/apps/rest_api/views.py b/apps/rest_api/views.py
index 06b5a46ce5..6a1b5dfc14 100644
--- a/apps/rest_api/views.py
+++ b/apps/rest_api/views.py
@@ -40,30 +40,16 @@ class APIBase(View):
class Version_0(View):
def get(self, request):
return [
- {'name': 'Resources', 'resources': ['documents/']}
+ {'name': 'Resources', 'resources': ['document/']}
]
class IsZoomable(View):
- def get(self, request, pk):
+ def get(self, request, pk, page_number):
logger.info('received is_zoomable call from: %s' % (request.META['REMOTE_ADDR']))
document = get_object_or_404(Document, pk=pk)
try:
- document.get_image_cache_name(1) # TODO: page
+ document.get_image_cache_name(int(page_number))
return {'result': True}
except (UnknownFileFormat, UnkownConvertError):
return {'result': False}
-
-
-class Exists(View):
- def get(self, request, pk):
- logger.info('received exists call from: %s' % (request.META['REMOTE_ADDR']))
- document = get_object_or_404(Document, pk=pk)
- return {'result': document.exists()}
-
-
-class Size(View):
- def get(self, request, pk):
- logger.info('received size call from: %s' % (request.META['REMOTE_ADDR']))
- document = get_object_or_404(Document, pk=pk)
- return {'result': document.size}