- Fix the document print view by switching it to a GET view instead.

- Add support for passing the form target.
- Update ajaxForm to emulate '_blank' form targets.

Signed-off-by: Eric Riggs <ericriggs42@gmail.com>
This commit is contained in:
Eric Riggs
2018-03-07 16:55:05 -04:00
committed by Roberto Rosario
parent 410f8fed76
commit c8911b901e
4 changed files with 44 additions and 24 deletions

View File

@@ -168,11 +168,19 @@ PartialNavigation.prototype.setupAjaxForm = function () {
console.log('>> ajaxForm.beforeSubmit.$form.target: ' + $form.attr('action'));
var uri = new URI(location);
var uriFragment = uri.fragment();
console.log('>>ajaxForm.$form.target.uriFragment:' + uriFragment);
var url = $form.attr('action') || uriFragment;
console.log('>>ajaxForm.$form.target.uriFragment:' + uriFragment);
options.url = url;
if ($form.attr('target') == '_blank') {
window.open(
$form.attr('action') + '?' + decodeURIComponent($form.serialize())
);
return false;
}
console.log('>>ajaxForm.url:' + url);
},
dataType: 'html',

View File

@@ -10,9 +10,9 @@
<div class="well">
{% if form.is_multipart %}
<form name="{{ form.prefix }}" enctype="multipart/form-data" method="{{ submit_method|default:'post' }}" action="{{ form_action }}" class="{{ form_class|default:'' }}">
<form action="{{ form_action }}" class="{{ form_class|default:'' }}" enctype="multipart/form-data" method="{{ submit_method|default:'post' }}" name="{{ form.prefix }}" target="{{ submit_target|default:'_self' }}">
{% else %}
<form name="{{ form.prefix }}" method="{{ submit_method|default:'post' }}" action="{{ form_action }}" class="{{ form_class|default:'' }}">
<form action="{{ form_action }}" class="{{ form_class|default:'' }}" method="{{ submit_method|default:'post' }}" name="{{ form.prefix }}" target="{{ submit_target|default:'_self' }}">
{% endif %}
{{ wizard.management_form }}

View File

@@ -1,4 +1,4 @@
{% extends 'appearance/base.html' %}
{% extends 'appearance/base_plain.html' %}
{% block title %}{{ title }}{% endblock title %}

View File

@@ -717,38 +717,50 @@ class DocumentTransformationsCloneView(FormView):
class DocumentPrint(FormView):
form_class = DocumentPrintForm
def form_valid(self, form):
instance = self.get_object()
def dispatch(self, request, *args, **kwargs):
self.page_group = self.request.GET.get('page_group')
self.page_range = self.request.GET.get('page_range')
return super(DocumentPrint, self).dispatch(request, *args, **kwargs)
if form.cleaned_data['page_group'] == PAGE_RANGE_RANGE:
page_range = form.cleaned_data['page_range']
def get(self, request, *args, **kwargs):
if page_range:
page_range = parse_range(page_range)
pages = instance.pages.filter(page_number__in=page_range)
if not self.page_group and not self.page_range:
return super(DocumentPrint, self).get(request, *args, **kwargs)
else:
instance = self.get_object()
if self.page_group == PAGE_RANGE_RANGE:
if self.page_range:
page_range = parse_range(self.page_range)
pages = instance.pages.filter(page_number__in=page_range)
else:
pages = instance.pages.all()
else:
pages = instance.pages.all()
else:
pages = instance.pages.all()
context = self.get_context_data()
context = self.get_context_data()
context.update(
{
'appearance_type': 'plain',
'pages': pages,
'size': setting_print_size.value,
}
)
context.update(
{
'appearance_type': 'plain',
'pages': pages,
'size': setting_print_size.value,
}
)
return self.render_to_response(context=context)
return self.render_to_response(context=context)
def get_extra_context(self):
instance = self.get_object()
context = {
'form_action': reverse(
'documents:document_print', args=(instance.pk,)
),
'object': instance,
'submit_label': _('Submit'),
'submit_method': 'GET',
'submit_target': '_blank',
'title': _('Print: %s') % instance,
}
@@ -767,7 +779,7 @@ class DocumentPrint(FormView):
return instance
def get_template_names(self):
if self.request.method == 'POST':
if self.page_group or self.page_range:
return ('documents/document_print.html',)
else:
return (self.template_name,)