forked from CGM_Public/pretix_original
Widget: Add a compatibility mode for Jimdo
This commit is contained in:
@@ -36,6 +36,12 @@ The second snippet should be embedded at the position where the widget should sh
|
|||||||
You can of course embed multiple widgets of multiple events on your page. In this case, please add the first
|
You can of course embed multiple widgets of multiple events on your page. In this case, please add the first
|
||||||
snippet only *once* and the second snippets once *for each event*.
|
snippet only *once* and the second snippets once *for each event*.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Some website builders like Jimdo have trouble with our custom HTML tag. In that case, you can use
|
||||||
|
``<div class="pretix-widget-compat" …></div>`` instead of ``<pretix-widget …></pretix-widget>`` starting with
|
||||||
|
pretix 1.14.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
|||||||
@@ -983,6 +983,11 @@ class WidgetCodeForm(forms.Form):
|
|||||||
"bought via the widget, this voucher will be used. This can for example be used to provide "
|
"bought via the widget, this voucher will be used. This can for example be used to provide "
|
||||||
"widgets that give discounts or unlock secret products.")
|
"widgets that give discounts or unlock secret products.")
|
||||||
)
|
)
|
||||||
|
compatibility_mode = forms.BooleanField(
|
||||||
|
label=_("Compatibility mode"),
|
||||||
|
help_text=_("Our regular widget doesn't work in all website builders. If you run into trouble, try using "
|
||||||
|
"this compatibility mode.")
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.event = kwargs.pop('event')
|
self.event = kwargs.pop('event')
|
||||||
|
|||||||
@@ -31,6 +31,20 @@
|
|||||||
{% else %}
|
{% else %}
|
||||||
{% abseventurl request.event "presale:event.index" as indexurl %}
|
{% abseventurl request.event "presale:event.index" as indexurl %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if form.cleaned_data.compatibility_mode %}
|
||||||
|
<pre><div class="pretix-widget-compat" event="{% abseventurl request.event "presale:event.index" %}"{% if form.cleaned_data.subevent %} subevent="{{ form.cleaned_data.subevent.pk }}"{% endif %}{% if form.cleaned_data.voucher %} voucher="{{ form.cleaned_data.voucher }}"{% endif %}></div>
|
||||||
|
<noscript>
|
||||||
|
<div class="pretix-widget">
|
||||||
|
<div class="pretix-widget-info-message">
|
||||||
|
{% blocktrans trimmed with a_attr='target="_blank" rel="noopener" href="'|add:indexurl|add:'"'|safe %}
|
||||||
|
JavaScript is disabled in your browser. To access our ticket shop without JavaScript,
|
||||||
|
please <a {{ a_attr }}>click here</a>.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</noscript>
|
||||||
|
</pre>
|
||||||
|
{% else %}
|
||||||
<pre><pretix-widget event="{% abseventurl request.event "presale:event.index" %}"{% if form.cleaned_data.subevent %} subevent="{{ form.cleaned_data.subevent.pk }}"{% endif %}{% if form.cleaned_data.voucher %} voucher="{{ form.cleaned_data.voucher }}"{% endif %}></pretix-widget>
|
<pre><pretix-widget event="{% abseventurl request.event "presale:event.index" %}"{% if form.cleaned_data.subevent %} subevent="{{ form.cleaned_data.subevent.pk }}"{% endif %}{% if form.cleaned_data.voucher %} voucher="{{ form.cleaned_data.voucher }}"{% endif %}></pretix-widget>
|
||||||
<noscript>
|
<noscript>
|
||||||
<div class="pretix-widget">
|
<div class="pretix-widget">
|
||||||
@@ -43,6 +57,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</noscript>
|
</noscript>
|
||||||
</pre>
|
</pre>
|
||||||
|
{% endif %}
|
||||||
<p>
|
<p>
|
||||||
<a href="https://docs.pretix.eu/en/latest/user/events/widget.html" target="_blank" rel="noopener">
|
<a href="https://docs.pretix.eu/en/latest/user/events/widget.html" target="_blank" rel="noopener">
|
||||||
<span class="fa fa-question-circle"></span>
|
<span class="fa fa-question-circle"></span>
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ def redirect_view(request, *args, **kwargs):
|
|||||||
except signing.BadSignature:
|
except signing.BadSignature:
|
||||||
return HttpResponseBadRequest('Invalid parameter')
|
return HttpResponseBadRequest('Invalid parameter')
|
||||||
|
|
||||||
r = render(request, 'pretixplugins/paypal/redirect.html', {
|
r = render(request, 'pretixplugins/stripe/redirect.html', {
|
||||||
'url': url,
|
'url': url,
|
||||||
})
|
})
|
||||||
r._csp_ignore = True
|
r._csp_ignore = True
|
||||||
|
|||||||
@@ -653,6 +653,10 @@ var create_widget = function (element) {
|
|||||||
var subevent = element.attributes.subevent ? element.attributes.subevent.value : null;
|
var subevent = element.attributes.subevent ? element.attributes.subevent.value : null;
|
||||||
var skip_ssl = element.attributes["skip-ssl-check"] ? true : false;
|
var skip_ssl = element.attributes["skip-ssl-check"] ? true : false;
|
||||||
|
|
||||||
|
if (element.tagName !== "pretix-widget") {
|
||||||
|
element.innerHTML = "<pretix-widget></pretix-widget>";
|
||||||
|
}
|
||||||
|
|
||||||
var app = new Vue({
|
var app = new Vue({
|
||||||
el: element,
|
el: element,
|
||||||
data: function () {
|
data: function () {
|
||||||
@@ -727,6 +731,10 @@ var create_button = function (element) {
|
|||||||
var skip_ssl = element.attributes["skip-ssl-check"] ? true : false;
|
var skip_ssl = element.attributes["skip-ssl-check"] ? true : false;
|
||||||
var button_text = element.innerHTML;
|
var button_text = element.innerHTML;
|
||||||
|
|
||||||
|
if (element.tagName !== "pretix-button") {
|
||||||
|
element.innerHTML = "<pretix-button>" + element.innerHTML + "</pretix-button>";
|
||||||
|
}
|
||||||
|
|
||||||
var itemsplit = raw_items.split(",");
|
var itemsplit = raw_items.split(",");
|
||||||
var items = [];
|
var items = [];
|
||||||
for (var i = 0; i < itemsplit.length; i++) {
|
for (var i = 0; i < itemsplit.length; i++) {
|
||||||
@@ -768,14 +776,14 @@ buttonlist = [];
|
|||||||
document.createElement("pretix-widget");
|
document.createElement("pretix-widget");
|
||||||
document.createElement("pretix-button");
|
document.createElement("pretix-button");
|
||||||
docReady(function () {
|
docReady(function () {
|
||||||
var widgets = document.querySelectorAll("pretix-widget");
|
var widgets = document.querySelectorAll("pretix-widget, div.pretix-widget-compat");
|
||||||
var wlength = widgets.length;
|
var wlength = widgets.length;
|
||||||
for (var i = 0; i < wlength; i++) {
|
for (var i = 0; i < wlength; i++) {
|
||||||
var widget = widgets[i];
|
var widget = widgets[i];
|
||||||
widgetlist.push(create_widget(widget));
|
widgetlist.push(create_widget(widget));
|
||||||
}
|
}
|
||||||
|
|
||||||
var buttons = document.querySelectorAll("pretix-button");
|
var buttons = document.querySelectorAll("pretix-button, div.pretix-button-compat");
|
||||||
var blength = buttons.length;
|
var blength = buttons.length;
|
||||||
for (var i = 0; i < blength; i++) {
|
for (var i = 0; i < blength; i++) {
|
||||||
var button = buttons[i];
|
var button = buttons[i];
|
||||||
|
|||||||
Reference in New Issue
Block a user