From 44b22fa955e531a3ac1e5d88398c5b9770f96cd0 Mon Sep 17 00:00:00 2001
From: Demian Katz <demian.katz@villanova.edu>
Date: Tue, 16 Dec 2014 15:08:22 -0500
Subject: [PATCH] Smarter post-hold redirection/messaging. - Resolves
 VUFIND-1063.

---
 languages/ca.ini                                  |  2 +-
 languages/cs.ini                                  |  2 +-
 languages/cy.ini                                  |  2 +-
 languages/da.ini                                  |  2 +-
 languages/de.ini                                  |  2 +-
 languages/el.ini                                  |  2 +-
 languages/en.ini                                  |  2 +-
 languages/es.ini                                  |  2 +-
 languages/eu.ini                                  |  2 +-
 languages/fi.ini                                  |  2 +-
 languages/fr.ini                                  |  2 +-
 languages/ga.ini                                  |  2 +-
 languages/he.ini                                  |  2 +-
 languages/it.ini                                  |  2 +-
 languages/ja.ini                                  |  2 +-
 languages/nl.ini                                  |  2 +-
 languages/pl.ini                                  |  2 +-
 languages/pt-br.ini                               |  2 +-
 languages/pt.ini                                  |  2 +-
 languages/ru.ini                                  |  2 +-
 languages/sl.ini                                  |  2 +-
 languages/sv.ini                                  |  2 +-
 languages/tr.ini                                  |  2 +-
 languages/zh-cn.ini                               |  2 +-
 languages/zh.ini                                  |  2 +-
 .../src/VuFind/Controller/RecordController.php    | 15 +++++++++------
 themes/bootstrap3/js/record.js                    | 13 ++++++++++---
 27 files changed, 44 insertions(+), 34 deletions(-)

diff --git a/languages/ca.ini b/languages/ca.ini
index 75c4ca69452..3eafe04d0dd 100644
--- a/languages/ca.ini
+++ b/languages/ca.ini
@@ -410,7 +410,7 @@ hold_invalid_request_group = "La petició de reserva no es vàlida. S"i us plau
 hold_login = "informació per reserva"
 hold_place = "Solicitar lloc"
 hold_place_fail_missing = "Ha fallat la vostra petició. Algunes dades s’han perdut. Contacteu amb el taulell de circulació per sol·licitar ajuda."
-hold_place_success = "Petició correcta"
+hold_place_success_html = "Petició correcta. <a href="%%url%%">Reserves</a>."
 hold_profile_html = "Per accedir a informació dels fons en temps real, si us plau configureu el seur <a href="%%url%%">Perfil del Catàleg de la Biblioteca</a>."
 hold_queue_position = "Posició a la cua"
 hold_request_group = "Demanar a"
diff --git a/languages/cs.ini b/languages/cs.ini
index 549241b97d6..28c40b61e3a 100644
--- a/languages/cs.ini
+++ b/languages/cs.ini
@@ -404,7 +404,7 @@ hold_invalid_request_group = "Byla vybrána neplatná skupina požadavků. Zkust
 hold_login = "Přihlaste se"
 hold_place = "Zadat požadavek"
 hold_place_fail_missing = "Váš požadavek selhal. Chybí některé údaje. Kontaktujte obsluhu pro další informace."
-hold_place_success = "Váš požadavek byl úspěšně vložen."
+hold_place_success_html = "Váš požadavek byl úspěšně vložen. <a href="%%url%%">Vaše rezervace a objednávky</a>."
 hold_profile_html = "Pro informace o rezervacích a objednávkách musíte mít vytvořený <a href="%%url%%">účet v katalogu</a>."
 hold_queue_position = "Vaše pořadí ve frontě"
 hold_request_group = "Požadavek z"
diff --git a/languages/cy.ini b/languages/cy.ini
index b89b543daa5..7608e433e54 100644
--- a/languages/cy.ini
+++ b/languages/cy.ini
@@ -404,7 +404,7 @@ hold_invalid_request_group = "Rhoddwyd grŵp cais dal anghywir. Rhowch gynnig et
 hold_login = "am wybodaeth ynghylch daliadau ac adalw"
 hold_place = "Gosod Cais"
 hold_place_fail_missing = "Mae eich cais wedi methu. Roedd peth data ar goll. Cysylltwch â'r ddesg fenthyca am gymorth pellach "
-hold_place_success = "Roedd eich cais yn llwyddiannus"
+hold_place_success_html = "Roedd eich cais yn llwyddiannus. <a href="%%url%%">Daliadau ac Adalwadau</a>."
 hold_profile_html = "Am wybodaeth dal a galw'n ôl, rhaid i chi sefydlu <a href=%%url%%">Proffeil Catalog Llyfrgell</a>.""
 hold_queue_position = "Safle yn y Ciw"
 hold_request_group = "Cais oddi wrth"
diff --git a/languages/da.ini b/languages/da.ini
index fdfdb081bb0..aa102be49c7 100644
--- a/languages/da.ini
+++ b/languages/da.ini
@@ -313,7 +313,7 @@ hold_invalid_pickup = "Afhentningslokation ugyldig. Prøv venligst igen"
 hold_login = "Til information omkring lån og hjemkaldelser"
 hold_place = "Lav forespørgsel"
 hold_place_fail_missing = "Din forespørgsel kunne ikke gennemføres pga. en fejl. Kontakt venligst udlånsskranken for yderligere assistance”"
-hold_place_success = "Din forespørgsel blev godkendt"
+hold_place_success_html = "Din forespørgsel blev godkendt. <a href="%%url%%">Dine lån og hjemkaldelser</a>."
 hold_queue_position = "Køposition"
 hold_required_by = "ønskes ikke længere efter"
 hold_success = " Din forespørgsel blev godkendt"
diff --git a/languages/de.ini b/languages/de.ini
index 8f4c1677961..8848a0f56f4 100644
--- a/languages/de.ini
+++ b/languages/de.ini
@@ -409,7 +409,7 @@ hold_invalid_request_group = "Es wurde eine ungültige Abholstelle angegeben. Bi
 hold_login = "für die Nachverfolgung von Bestellungen und Vormerkungen"
 hold_place = "Bestellen"
 hold_place_fail_missing = "Ihre Bestellung ist fehlgeschlagen. Es fehlen Angaben. Bitte kontaktieren Sie ihre Bibliothek für weitere Hilfe"
-hold_place_success = "Ihre Bestellung war erfolgreich"
+hold_place_success_html = "Ihre Bestellung war erfolgreich. <a href="%%url%%">Ihre offenen Bestellungen und Vormerkungen</a>."
 hold_profile_html = "Für Angaben zu Bestellungen und Vormerkungen, erstellen Sie bitte ein persönliches <a href="%%url%%">Bibliothekskatalog Login</a>."
 hold_queue_position = "Position in der Warteschlange"
 hold_request_group = "Anfrage von"
diff --git a/languages/el.ini b/languages/el.ini
index f4872c92f39..d04e8b790fc 100644
--- a/languages/el.ini
+++ b/languages/el.ini
@@ -405,7 +405,7 @@ hold_invalid_request_group = "Μη έγκυρο αίτημα. Δοκιμάστε
 hold_login = "για πληροφορίες κράτησης και ανάκλησης"
 hold_place = "Αίτημα κράτησης"
 hold_place_fail_missing = "Το αίτημά σας απέτυχε. Ελλιπή στοιχεία. Απευθυνθείτε στην εξυπηρέτηση για βοήθεια "
-hold_place_success = "Το αίτημά σας καταχωρήθηκε"
+hold_place_success_html = "Το αίτημά σας καταχωρήθηκε. <a href="%%url%%">Αιτήματα κράτησης και ανάκλησης</a>."
 hold_profile_html = "Για πληροφορίες κράτησης / ανάκλησης χρησιμοποιήστε τον <a href"
 hold_queue_position = "Θέση στην ουρά"
 hold_request_group = "Αίτημα προς"
diff --git a/languages/en.ini b/languages/en.ini
index 6c4795fdcb3..191e30a4ba3 100644
--- a/languages/en.ini
+++ b/languages/en.ini
@@ -412,7 +412,7 @@ hold_invalid_request_group = "An invalid hold request group was entered. Please
 hold_login = "for hold and recall information"
 hold_place = "Place Request"
 hold_place_fail_missing = "Your request failed. Some data was missing. Please contact the circulation desk for further assistance"
-hold_place_success = "Your request was successful"
+hold_place_success_html = "Your request was successful. <a href="%%url%%">Your Holds and Recalls</a>."
 hold_profile_html = "For hold and recall information, please establish your <a href="%%url%%">Library Catalog Profile</a>."
 hold_queue_position = "Queue Position"
 hold_request_group = "Request from"
diff --git a/languages/es.ini b/languages/es.ini
index c2c688fbbe6..0bf3489c9b9 100644
--- a/languages/es.ini
+++ b/languages/es.ini
@@ -404,7 +404,7 @@ hold_invalid_request_group = "Grupo de solicitud de reserva inválido. Por favor
 hold_login = "Para información de reservas y retiradas"
 hold_place = "Hacer solicitud"
 hold_place_fail_missing = "Su solicitud  ha fallado, contactar al personal del mostrador de circulación"
-hold_place_success = "Se ha realizado su solicitud"
+hold_place_success_html = "Se ha realizado su solicitud. <a href="%%url%%">Sus reservas y reclamaciones</a>."
 hold_profile_html = "Para información de reservas y apartados, por favor establecer su <a href="%%url%%">Perfil del Catálogo de Biblioteca</a>."
 hold_queue_position = "Cola"
 hold_request_group = "Solicitud del"
diff --git a/languages/eu.ini b/languages/eu.ini
index ba6f9a7143e..1f77627f463 100644
--- a/languages/eu.ini
+++ b/languages/eu.ini
@@ -1025,7 +1025,7 @@ hold_invalid_request_group = "Erreserbaren eskaera-taldea baliogabea da. Mesedez
 hold_login = "Erreserben informaziorako"
 hold_place = "Eskaera egin"
 hold_place_fail_missing = "Zure eskaeran errorea gertatu da. Mostradoretik pasa lagundu zaitzaten."
-hold_place_success = "Zure eskaera burutu da"
+hold_place_success_html = "Zure eskaera burutu da. <a href="%%url%%">Zure erreserbak</a>."
 hold_profile_html = "Erreserba eta gogoratze informaziorako, mesedez ezarri zure <a href="%%url%%">Liburutegiko Katalogorako Profila</a>."
 hold_queue_position = "Ilara"
 hold_request_group = "Eskatu duena"
diff --git a/languages/fi.ini b/languages/fi.ini
index 478ee8cdbd1..ec85afeec15 100644
--- a/languages/fi.ini
+++ b/languages/fi.ini
@@ -403,7 +403,7 @@ hold_invalid_request_group = "Valittu varausryhmä on virheellinen. Yritä uudes
 hold_login = "tehdäksesi varauspyynnön"
 hold_place = "Tee varaus"
 hold_place_fail_missing = "Pyyntö epäonnistui puuttuvien tietojen vuoksi. Ota yhteyttä kirjaston asiakaspalveluun."
-hold_place_success = "Varauspyyntö onnistui"
+hold_place_success_html = "Varauspyyntö onnistui. <a href="%%url%%">Varauspyynnöt</a>."
 hold_profile_html = "Kirjaudu <a href="%%url%%">kirjastokortilla</a> nähdäksesi varaukset."
 hold_queue_position = "Sijainti jonossa"
 hold_request_group = "Varauksen kohde"
diff --git a/languages/fr.ini b/languages/fr.ini
index b7e78bade32..f000bb6e317 100644
--- a/languages/fr.ini
+++ b/languages/fr.ini
@@ -404,7 +404,7 @@ hold_invalid_request_group = "Le groupe utilisé pour la demande de réservation
 hold_login = "Pour les informations de réservation"
 hold_place = "Effectuer une réservation"
 hold_place_fail_missing = "Votre demande a échoué. Il manquait certaines données. Veuillez contacter le bureau d'accueil pour plus d'informations"
-hold_place_success = "La réservation a bien été enregistrée."
+hold_place_success_html = "La réservation a bien été enregistrée. <a href="%%url%%">Vos réservations et rappels</a>."
 hold_profile_html = "Pour les réservations et prolongations, veuiller créer un <a href="%%url%%">compte utilisateur</a>."
 hold_queue_position = "Place dans la file d'attente"
 hold_request_group = "Demande de"
diff --git a/languages/ga.ini b/languages/ga.ini
index 7ab7c84c500..6825a68218b 100644
--- a/languages/ga.ini
+++ b/languages/ga.ini
@@ -300,7 +300,7 @@ hold_invalid_pickup = "Cuireadh láthair bailiúcháin neamhbhailí isteach. Bai
 hold_login = "chun eolas maidir le coimeád agus athghlaoch a fháil"
 hold_place = "Déan iarratas"
 hold_place_fail_missing = "Theip ar d’iarratas. Bhí roinnt sonraí in easnamh. Téigh i dteagmháil leis an deasc cúrsaíochta chun tuilleadh cabhrach a fháil"
-hold_place_success = "D’éirigh le d’iarratas"
+hold_place_success_html = "D’éirigh le d’iarratas. <a href="%%url%%">Ábhair ar Coimeád agus Athghlaoite agat</a>."
 hold_queue_position = "Áit sa scuaine"
 hold_required_by = "Níl gá leis seo tar éis"
 hold_success = "D’éirigh le d’iarratas"
diff --git a/languages/he.ini b/languages/he.ini
index 9f2a52b0f0b..75c4fc7072a 100644
--- a/languages/he.ini
+++ b/languages/he.ini
@@ -344,7 +344,7 @@ hold_invalid_pickup = "מקום האיסוף שצויין אינו תקין. נ
 hold_login = "למידע על הזמנה והחזרת פריטים"
 hold_place = "להזמנה"
 hold_place_fail_missing = "בקשתך נכשלה מכיוון שיש חוסר במידע. יש ליצור קשר עם מחלקת ההשאלה לעזרה נוספת."
-hold_place_success = "בקשתך בוצעה בהצלחה"
+hold_place_success_html = "בקשתך בוצעה בהצלחה. <a href="%%url%%">הזמנות ובקשות החזרה שלך</a>."
 hold_profile_html = "עבור בקשות החזרה והזמנת פריטים, יש לבצע <a href="%%url%%">כניסה למערכת</a>."
 hold_queue_position = "מיקום בתור"
 hold_required_by = "לא נדרש לאחר"
diff --git a/languages/it.ini b/languages/it.ini
index 9de4e715390..24e5bbda409 100644
--- a/languages/it.ini
+++ b/languages/it.ini
@@ -407,7 +407,7 @@ hold_invalid_request_group = "Gruppo di richiesta prenotazioni non ammesso. Prov
 hold_login = "per informazioni su prenotazioni e richieste"
 hold_place = "Richiedi"
 hold_place_fail_missing = "Richiesta fallita. Alcuni dati sono mancanti. Contatta la biblioteca per chiarimenti."
-hold_place_success = "Richiesta accettata"
+hold_place_success_html = "Richiesta accettata. <a href="%%url%%">Le tue prenotazioni e richieste</a>."
 hold_profile_html = "Per informazioni su prenotazioni e rinnovi, attiva il tuo <a href="%%url%%">profilo</a>."
 hold_queue_position = "Posizione in coda"
 hold_request_group = "Richiesta di"
diff --git a/languages/ja.ini b/languages/ja.ini
index cfe057c2f43..3a47092799e 100644
--- a/languages/ja.ini
+++ b/languages/ja.ini
@@ -404,7 +404,7 @@ hold_invalid_request_group = "入力した予約リクエストグループは
 hold_login = "(予約・返却請求情報入力)"
 hold_place = "予約"
 hold_place_fail_missing = "登録情報が不足のため、予約できませんでした。閲覧係にご連絡ください。"
-hold_place_success = "予約を受け付けました"
+hold_place_success_html = "予約を受け付けました. <a href="%%url%%">予約と返却請求</a>."
 hold_profile_html = "予約と返却請求を行うには、まず、<a href="%%url%%">図書館目録プロフィール</a>を設定してください。"
 hold_queue_position = "予約順"
 hold_request_group = "リクエスト元"
diff --git a/languages/nl.ini b/languages/nl.ini
index 38ec31f6c85..3dbdd91d72d 100644
--- a/languages/nl.ini
+++ b/languages/nl.ini
@@ -394,7 +394,7 @@ hold_invalid_pickup = "Er werd een ongeldige afhaal locatie ingegeven. Probeer h
 hold_login = "Informatie over verzoeken tot vasthouden en reserveringen"
 hold_place = "Formuleer een aanvraag"
 hold_place_fail_missing = "Je aanvraag is mislukt. Er ontbreken gegevens. Contacteer alsjeblieft de Informatiebalie voor assistentie"
-hold_place_success = "Je aanvraag is gelukt"
+hold_place_success_html = "Je aanvraag is gelukt. <a href="%%url%%">Jouw Verzoeken tot vasthouden en Reserveringen</a>."
 hold_queue_position = "Plaats in de wachtrij"
 hold_request_group = "Aanvraag van"
 hold_requested_group = "Aangevraagd door"
diff --git a/languages/pl.ini b/languages/pl.ini
index b67f12449a9..29c764198f4 100644
--- a/languages/pl.ini
+++ b/languages/pl.ini
@@ -470,7 +470,7 @@ hold_invalid_request_group = "Została podana nieważna grupa zamówienia. Spró
 hold_login = "Dla informacji o zamówieniu / rezerwacji"
 hold_place = "Zamów / zarezerwuj"
 hold_place_fail_missing = "Błąd: Brak danych - skontaktuj się z biblioteką."
-hold_place_success = "Zamówienie / rezerwacja została wykonana"
+hold_place_success_html = "Zamówienie / rezerwacja została wykonana. <a href="%%url%%">Twoje zamówienia</a>."
 hold_profile_html = "Aby zamówić lub rezerwować książkę, utwórz <a href="%%url%%">konto czytelnika</a>."
 hold_queue_position = "Pozycja w kolejce"
 hold_request_group = "Rezerwacja z"
diff --git a/languages/pt-br.ini b/languages/pt-br.ini
index ba80dfe07f1..5dbc54608fa 100644
--- a/languages/pt-br.ini
+++ b/languages/pt-br.ini
@@ -404,7 +404,7 @@ hold_invalid_request_group = "Um pedido inválido foi entrado. Por favor tente n
 hold_login = "para informação da reserva e levantamento"
 hold_place = "Reservar"
 hold_place_fail_missing = "O seu pedido não foi bem sucedido: é necessário introduzir mais dados; por favor, contate o Balcão de Atendimento para ajuda adicional"
-hold_place_success = "O seu pedido foi salvo com sucesso"
+hold_place_success_html = "O seu pedido foi salvo com sucesso. <a href="%%url%%">As suas Reservas e Pedidos</a>."
 hold_profile_html = "Para reservas e devoluções, por favor estabelecer sua <a href"
 hold_queue_position = "Posição na fila"
 hold_request_group = "Pedido de"
diff --git a/languages/pt.ini b/languages/pt.ini
index 39ed3828595..6793c729fcf 100644
--- a/languages/pt.ini
+++ b/languages/pt.ini
@@ -367,7 +367,7 @@ hold_invalid_pickup = "Não introduziu um local de levantamento válido; por fav
 hold_login = "para informação da reserva e levantamento"
 hold_place = "Reservar"
 hold_place_fail_missing = "O seu pedido não foi bem sucedido: é necessário introduzir mais dados; por favor, contacte o Balcão de Atendimento para ajuda adicional"
-hold_place_success = "O seu pedido foi guardado com sucesso"
+hold_place_success_html = "O seu pedido foi guardado com sucesso. <a href="%%url%%">As suas Reservas e Pedidos</a>."
 hold_profile_html = "Para reservas e devoluções, por favor estabelecer sua <a href"
 hold_queue_position = "Posição na fila"
 hold_required_by = "Não é necessário depois de"
diff --git a/languages/ru.ini b/languages/ru.ini
index 42ebdfba3f0..102b896baeb 100644
--- a/languages/ru.ini
+++ b/languages/ru.ini
@@ -420,7 +420,7 @@ hold_invalid_request_group = "Была введена недопустимая "
 hold_login = "Для информации по задолженностям и напоминаниям"
 hold_place = "Поместите запрос"
 hold_place_fail_missing = "Сбой запроса. Пропущены некоторые данные. Обратитесь за помощью к библиотекарям."
-hold_place_success = "Ваш запрос успешно выполнен."
+hold_place_success_html = "Ваш запрос успешно выполнен. <a href="%%url%%">Ваши задолженности и напоминания</a>."
 hold_profile_html = "Задолженности и напоминания: установите свой <a href="%%url%%">Профиль библиотечного каталога</a>."
 hold_queue_position = "Позиция в очереди"
 hold_request_group = "Запрос из"
diff --git a/languages/sl.ini b/languages/sl.ini
index 67293034ed8..dd2946a9766 100644
--- a/languages/sl.ini
+++ b/languages/sl.ini
@@ -365,7 +365,7 @@ hold_invalid_pickup = "Napačna lokacija za prevzem. Poizkusite ponovno"
 hold_login = "za informacije o izposojenih in rezerviranih"
 hold_place = "Postavite zahtevo"
 hold_place_fail_missing = "Vaša zahteva ni bila uspešna. Manjkajo nekateri podatki. Za nadaljno pomoč vprašajte v izposoji"
-hold_place_success = "Vaša zahteva je bila uspešna"
+hold_place_success_html = "Vaša zahteva je bila uspešna. <a href="%%url%%">Vaše izposojene in rezervirane</a>."
 hold_profile_html = "Za informacije o izposojenih in rezerviranih ustvarite vaš <a href="%%url%%">Library Catalog Profile</a>."
 hold_queue_position = "V vrsti"
 hold_required_by = "Ni potreben po"
diff --git a/languages/sv.ini b/languages/sv.ini
index 9857934f351..e816f7e7fde 100644
--- a/languages/sv.ini
+++ b/languages/sv.ini
@@ -403,7 +403,7 @@ hold_invalid_request_group = "Utvalda gruppen duger inte. Kolla och försök ige
 hold_login = "för att reservera material"
 hold_place = "reservera"
 hold_place_fail_missing = "Reservering misslyckades p.g.a. saknande uppgifter. Vänd dig till bibliotekets kundtjänst."
-hold_place_success = "Material har reserverats."
+hold_place_success_html = "Material har reserverats. <a href="%%url%%">Mina reserveringar</a>."
 hold_profile_html = "Logga in med din <a href="%%url%%">bibliotekskort</a> för att se reserveringar."
 hold_queue_position = "Läget i kön"
 hold_request_group = "Reservera från"
diff --git a/languages/tr.ini b/languages/tr.ini
index f5c132f3ddd..ed1cc9b66c6 100644
--- a/languages/tr.ini
+++ b/languages/tr.ini
@@ -414,7 +414,7 @@ hold_invalid_request_group = "Geçersiz grup isteği girildi. Lütfen tekrar den
 hold_login = "Ayırın ve bilgileri tekrar çağırın"
 hold_place = "İstek yeri"
 hold_place_fail_missing = "İsteğiniz başarısız. Bazı veriler eksik. Lütfen detayli bilgi için ödünç verme masasına başvurunuz."
-hold_place_success = "İsteğiniz başarılı oldu"
+hold_place_success_html = "İsteğiniz başarılı oldu. <a href="%%url%%">Rezerve Ettiğim Materyaller</a>."
 hold_profile_html = "Bilgileri saklamak ve hatırlamak için, lütfen <a href="%%url%%">kütüphane profiliniz ile bağlantı kurun</a>."
 hold_queue_position = "Sıra durumu"
 hold_request_group = "İstek Formu"
diff --git a/languages/zh-cn.ini b/languages/zh-cn.ini
index 24b94820552..d911b4550ee 100644
--- a/languages/zh-cn.ini
+++ b/languages/zh-cn.ini
@@ -300,7 +300,7 @@ hold_invalid_pickup = "您输入的领取地址无效,请再试一次"
 hold_login = "预定和召回信息"
 hold_place = "提交请求"
 hold_place_fail_missing = "您的请求失败。一些可能数据缺失,请联系流通服务台"
-hold_place_success = "您的预定成功"
+hold_place_success_html = "您的预定成功. <a href="%%url%%">您的预约和召回</a>."
 hold_queue_position = "排队位置"
 hold_required_by = "预定保留至"
 hold_success = "您的请求成功"
diff --git a/languages/zh.ini b/languages/zh.ini
index 46c687c94fa..b366135f892 100644
--- a/languages/zh.ini
+++ b/languages/zh.ini
@@ -300,7 +300,7 @@ hold_invalid_pickup = "您輸入的領取地址無效,請再試一次"
 hold_login = "預定和召回信息"
 hold_place = "提交請求"
 hold_place_fail_missing = "您的請求失敗。一些可能數據缺失,請聯繫流通服務台"
-hold_place_success = "您的預定成功"
+hold_place_success_html = "您的預定成功. <a href="%%url%%">您的預約和召回</a>."
 hold_queue_position = "排隊位置"
 hold_required_by = "預定保留至"
 hold_success = "您的請求成功"
diff --git a/module/VuFind/src/VuFind/Controller/RecordController.php b/module/VuFind/src/VuFind/Controller/RecordController.php
index 2576ea0d062..2d34e6597e6 100644
--- a/module/VuFind/src/VuFind/Controller/RecordController.php
+++ b/module/VuFind/src/VuFind/Controller/RecordController.php
@@ -166,12 +166,15 @@ class RecordController extends AbstractRecord
 
                 // Success: Go to Display Holds
                 if (isset($results['success']) && $results['success'] == true) {
-                    $this->flashMessenger()->setNamespace('info')
-                        ->addMessage('hold_place_success');
-                    if ($this->inLightbox()) {
-                        return false;
-                    }
-                    return $this->redirect()->toRoute('myresearch-holds');
+                    $msg = array(
+                        'html' => true,
+                        'msg' => 'hold_place_success_html',
+                        'tokens' => array(
+                            '%%url%%' => $this->url()->fromRoute('myresearch-holds')
+                        ),
+                    );
+                    $this->flashMessenger()->setNamespace('info')->addMessage($msg);
+                    return $this->redirectToRecord('#top');
                 } else {
                     // Failure: use flash messenger to display messages, stay on
                     // the current form.
diff --git a/themes/bootstrap3/js/record.js b/themes/bootstrap3/js/record.js
index eeb272e933b..355bb448cf4 100644
--- a/themes/bootstrap3/js/record.js
+++ b/themes/bootstrap3/js/record.js
@@ -142,7 +142,9 @@ function registerTabEvents() {
     var params = deparam($(this).attr('href'));
     params.id = parts[parts.length-2];
     params.hashKey = params.hashKey.split('#')[0]; // Remove #tabnav
-    return Lightbox.get('Record', parts[parts.length-1], params);
+    return Lightbox.get('Record', parts[parts.length-1], params, false, function(html) {
+      Lightbox.checkForError(html, Lightbox.changeContent);
+    });
   });
 }
 
@@ -251,8 +253,13 @@ $(document).ready(function(){
   Lightbox.addFormCallback('emailRecord', function(){
     Lightbox.confirm(vufindString['bulk_email_success']);
   });
-  Lightbox.addFormCallback('placeHold', function() {
-    document.location.href = path+'/MyResearch/Holds';
+  Lightbox.addFormCallback('placeHold', function(html) {
+    Lightbox.checkForError(html, function(html) {
+      var divPattern = '<div class="alert alert-info">';
+      var fi = html.indexOf(divPattern);
+      var li = html.indexOf('</div>', fi+divPattern.length);
+      Lightbox.confirm(html.substring(fi+divPattern.length, li).replace(/^[\s<>]+|[\s<>]+$/g, ''));
+    });
   });
   Lightbox.addFormCallback('placeStorageRetrievalRequest', function() {
     document.location.href = path+'/MyResearch/StorageRetrievalRequests';
-- 
GitLab