Add self-review popup functionality with success message and auto-refresh
This commit is contained in:
@@ -668,8 +668,9 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
window.openSelfReviewPopup = function (url) {
|
window.openSelfReviewPopup = function (url) {
|
||||||
|
var popupUrl = url + (url.indexOf('?') === -1 ? '?popup=1' : '&popup=1');
|
||||||
var features = 'width=980,height=840,resizable=yes,scrollbars=yes';
|
var features = 'width=980,height=840,resizable=yes,scrollbars=yes';
|
||||||
window.open(url, 'selfReviewPopup', features);
|
window.open(popupUrl, 'selfReviewPopup', features);
|
||||||
};
|
};
|
||||||
|
|
||||||
window.selfReviewCurrentEmbedUrl = null;
|
window.selfReviewCurrentEmbedUrl = null;
|
||||||
@@ -704,7 +705,10 @@
|
|||||||
|
|
||||||
if (resp.redirected) {
|
if (resp.redirected) {
|
||||||
root.innerHTML = '<div class="p-3"><div class="alert alert-success mb-0">Self review saved. You can continue reviewing this case.</div></div>';
|
root.innerHTML = '<div class="p-3"><div class="alert alert-success mb-0">Self review saved. You can continue reviewing this case.</div></div>';
|
||||||
setTimeout(function () { window.closeSelfReviewSidebar(); }, 700);
|
setTimeout(function () {
|
||||||
|
window.closeSelfReviewSidebar();
|
||||||
|
window.location.reload();
|
||||||
|
}, 500);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,69 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Self Review Saved</title>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
|
||||||
|
background: #111;
|
||||||
|
color: #f0f0f0;
|
||||||
|
}
|
||||||
|
.wrap {
|
||||||
|
min-height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
.card {
|
||||||
|
max-width: 460px;
|
||||||
|
width: 100%;
|
||||||
|
border: 1px solid #3a3a3a;
|
||||||
|
border-radius: 10px;
|
||||||
|
background: #1a1a1a;
|
||||||
|
padding: 1rem 1.2rem;
|
||||||
|
box-shadow: 0 8px 18px rgba(0, 0, 0, 0.35);
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
margin-top: 0;
|
||||||
|
font-size: 1.15rem;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin-bottom: 0;
|
||||||
|
color: #d0d0d0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="wrap">
|
||||||
|
<div class="card">
|
||||||
|
<h1>Self review saved</h1>
|
||||||
|
<p>This window will close shortly and refresh the case page.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
try { window.alert('Self review saved. This popup will close and refresh the case page.'); } catch (e) {}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (window.opener && !window.opener.closed) {
|
||||||
|
var targetUrl = "{{ target_url|escapejs }}";
|
||||||
|
try {
|
||||||
|
window.opener.location.href = targetUrl || window.opener.location.href;
|
||||||
|
} catch (e) {
|
||||||
|
window.opener.location.reload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
window.close();
|
||||||
|
}, 700);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
+42
-2
@@ -5674,10 +5674,30 @@ class SelfReviewUpdate(UpdateView):
|
|||||||
context["case"] = self.case
|
context["case"] = self.case
|
||||||
context["review"] = self.review
|
context["review"] = self.review
|
||||||
context["embed"] = self.request.GET.get("embed") == "1"
|
context["embed"] = self.request.GET.get("embed") == "1"
|
||||||
|
context["popup"] = self.request.GET.get("popup") == "1"
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def get_success_url(self) -> str:
|
def get_success_url(self) -> str:
|
||||||
return self.user_exam.exam.get_case_take_url(self.case)
|
if getattr(self, "object", None) is not None:
|
||||||
|
return self.object.user_exam.exam.get_case_take_url(self.object.case)
|
||||||
|
|
||||||
|
user_exam_id = self.kwargs["user_exam_id"]
|
||||||
|
case_id = self.kwargs["case_id"]
|
||||||
|
user_exam = get_object_or_404(CidUserExam, pk=user_exam_id)
|
||||||
|
case = get_object_or_404(Case, pk=case_id)
|
||||||
|
return user_exam.exam.get_case_take_url(case)
|
||||||
|
|
||||||
|
def form_valid(self, form):
|
||||||
|
self.object = form.save()
|
||||||
|
|
||||||
|
if self.request.GET.get("popup") == "1":
|
||||||
|
return render(
|
||||||
|
self.request,
|
||||||
|
"atlas/partials/_selfreview_popup_success.html",
|
||||||
|
{"target_url": self.get_success_url()},
|
||||||
|
)
|
||||||
|
|
||||||
|
return HttpResponseRedirect(self.get_success_url())
|
||||||
|
|
||||||
# def get_object(self):
|
# def get_object(self):
|
||||||
# return self.review
|
# return self.review
|
||||||
@@ -5728,10 +5748,30 @@ class AddSelfReview(CreateView):
|
|||||||
context["user_exam"] = self.user_exam
|
context["user_exam"] = self.user_exam
|
||||||
context["case"] = self.case
|
context["case"] = self.case
|
||||||
context["embed"] = self.request.GET.get("embed") == "1"
|
context["embed"] = self.request.GET.get("embed") == "1"
|
||||||
|
context["popup"] = self.request.GET.get("popup") == "1"
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def get_success_url(self) -> str:
|
def get_success_url(self) -> str:
|
||||||
return self.user_exam.exam.get_case_take_url(self.case)
|
if getattr(self, "object", None) is not None:
|
||||||
|
return self.object.user_exam.exam.get_case_take_url(self.object.case)
|
||||||
|
|
||||||
|
user_exam_id = self.kwargs["user_exam_id"]
|
||||||
|
case_id = self.kwargs["case_id"]
|
||||||
|
user_exam = get_object_or_404(CidUserExam, pk=user_exam_id)
|
||||||
|
case = get_object_or_404(Case, pk=case_id)
|
||||||
|
return user_exam.exam.get_case_take_url(case)
|
||||||
|
|
||||||
|
def form_valid(self, form):
|
||||||
|
self.object = form.save()
|
||||||
|
|
||||||
|
if self.request.GET.get("popup") == "1":
|
||||||
|
return render(
|
||||||
|
self.request,
|
||||||
|
"atlas/partials/_selfreview_popup_success.html",
|
||||||
|
{"target_url": self.get_success_url()},
|
||||||
|
)
|
||||||
|
|
||||||
|
return HttpResponseRedirect(self.get_success_url())
|
||||||
# return reverse("atlas:collection_take_overview_user", kwargs={"pk": self.user_exam.collection.id })
|
# return reverse("atlas:collection_take_overview_user", kwargs={"pk": self.user_exam.collection.id })
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user