Initial commit — existing SVN working copy (SVN r436)
@@ -0,0 +1,8 @@
|
||||
RewriteEngine On
|
||||
|
||||
RewriteBase /
|
||||
RewriteRule ^facebook/2016($|/$|\?.*$) https://www.facebook.com/events/199849767025396/ [NC,L,R=301]
|
||||
RewriteRule ^facebook/2017($|/$|\?.*$) https://www.facebook.com/events/551569961844424/ [NC,L,R=301]
|
||||
RewriteRule ^facebook($|/$|\?.*$) https://www.facebook.com/NachtderWissenschaft.Karlsruhe/ [NC,L,R=301]
|
||||
|
||||
RewriteRule ^archiv/$ / [R=302]
|
||||
@@ -0,0 +1,413 @@
|
||||
<div class="row">
|
||||
<div class="col-lg-4">
|
||||
<div class="panel-group" id="accordion1">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion1"
|
||||
href="#collapseOne1">
|
||||
<div class="hoersaal color1"> 19:00 HS T.</div>
|
||||
Die Kreislauffabrik - mit moderner Produktionstechnik Welt und Wohlstand retten</a></h4>
|
||||
</div>
|
||||
<div id="collapseOne1" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="img-container"><img src="images\logo.png" width="100"/><br/>
|
||||
Bild: Platzhalter
|
||||
</div>
|
||||
<p> <!-- Placeholder Teaser --></p>
|
||||
<p>Referent: Dr.-Ing. Florian Stamer, <a href="https://www.wbk.kit.edu/21_3157.php" target="_blank">WBK</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="panel-group" id="accordion2">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion2"
|
||||
href="#collapseOne2">
|
||||
<div class="hoersaal color3"> 19:00 HS R.</div>
|
||||
Rom ist auch nicht an einem Tag gebaut werden - Grundlagen des Forschungsdatenmanagement </a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="collapseOne2" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="img-container"><img src="images\logo.png" width="100"/><br/>
|
||||
Bild: Platzhalter
|
||||
</div>
|
||||
<p> <!-- Placeholder Teaser --></p>
|
||||
Referenten: Charlotte Neidiger, Michael Anger, <a href="https://www.bibliothek.kit.edu/mitarbeiter.php" target="_blank">KIT-Bib</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="panel-group" id="accordion3">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion3"
|
||||
href="#collapseOne3">
|
||||
<div class="hoersaal triangel"> 19:00 Tri.</div>
|
||||
Coming Soon</a></h4>
|
||||
</div>
|
||||
<div id="collapseOne3" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="img-container"><img src="images\logo.png" width="100"/><br/>
|
||||
Bild: Platzhalter
|
||||
</div>
|
||||
<p> <!-- Placeholder Teaser --></p>
|
||||
<p>Referent: Prof. Dr. Holger Puchta, <a href="https://www.jkip.kit.edu/molbio/14_146.php" target="_blank">JKIP</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-4">
|
||||
<div class="panel-group" id="accordion4">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion4"
|
||||
href="#collapseOne4">
|
||||
<div class="hoersaal color1"> 20:00 HS T.</div> Coming Soon
|
||||
</a></h4>
|
||||
</div>
|
||||
<div id="collapseOne4" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="img-container"><img src="images\logo.png" width="100"/><br/>
|
||||
Bild: Platzhalter
|
||||
</div>
|
||||
<p> <!-- Placeholder Teaser --></p>
|
||||
<p>Referentin: Prof. Dr.-Ing. Ulrike Krewer, <a href="https://www.iam.kit.edu/et/mitarbeiter_5189.php"target="_blank">IAM-ET</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="panel-group" id="accordion5">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion5"
|
||||
href="#collapseOne5">
|
||||
<div class="hoersaal color3"> 20:00 HS R.</div>
|
||||
Coming Soon</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="collapseOne5" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="img-container"><img src="images\logo.png" width="100"/><br/>
|
||||
Bild: Platzhalter
|
||||
</div>
|
||||
<p> <!-- Placeholder Teaser --></p>
|
||||
<p>Referent: Prof. Dr. Albert Albers, <a href="https://www.ipek.kit.edu/21_88.php"
|
||||
target="_blank">IPEK</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="panel-group" id="accordion6">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion6" href="#collapseOne6">
|
||||
<div class="hoersaal triangel" > 20:00 Tri. </div>
|
||||
Die Vermessung der Welt </a></h4>
|
||||
</div>
|
||||
<div id="collapseOne6" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="img-container"><img src="images\logo.png" width="100"/><br/>
|
||||
Bild: Platzhalter
|
||||
</div>
|
||||
<p> <!-- Placeholder Teaser --></p>
|
||||
<p>Referent: Prof. Dr.-Ing. Hansjörg Kutterer <a href="https://www.gik.kit.edu/mitarbeiter_kutterer_hansjoerg.php" target="_blank">GIK</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-4">
|
||||
<div class="panel-group" id="accordion7">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion7"
|
||||
href="#collapseOne7">
|
||||
<div class="hoersaal color1"> 21:00 HS T.</div>
|
||||
Coming Soon (English Lecture)</a></h4>
|
||||
</div>
|
||||
<div id="collapseOne7" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="img-container"><img src="images\logo.png" width="100"/><br/>
|
||||
Bild: Platzhalter
|
||||
</div>
|
||||
<p> <!-- Placeholder Teaser --></p>
|
||||
<p>Referent: Prof. Dr. Markus Klute, <a
|
||||
href="https://www.etp.kit.edu/mitarbeiter_1205.php"
|
||||
target="_blank">ETP</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="panel-group" id="accordion8">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion8"
|
||||
href="#collapseOne8">
|
||||
<div class="hoersaal color3"> 21:00 HS R.</div>
|
||||
We're nothing but mammals - Evolutionäre Einflüsse auf ökonomische
|
||||
Entscheidungen </a></h4>
|
||||
</div>
|
||||
<div id="collapseOne8" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="img-container"><img src="images\logo.png" width="100"/><br/>
|
||||
Bild: Platzhalter
|
||||
</div>
|
||||
<p> <!-- Placeholder Teaser --></p>
|
||||
<p>Referent: Prof. Dr. Benjamin Scheibehenne, <a href="https://cub.iism.kit.edu/83_92.php"
|
||||
target="_blank">IISM</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="panel-group" id="accordion9">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion9" href="#collapseOne9">
|
||||
<div class="hoersaal triangel" > 21:00 Tri. </div>
|
||||
Katalyse: Chemie für die Zukunft – sauberer, effizienter, cleverer</a></h4>
|
||||
</div>
|
||||
<div id="collapseOne9" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="img-container"><img src="images\logo.png" width="100"/><br/>
|
||||
Bild: Platzhalter
|
||||
</div>
|
||||
<p> <!-- Placeholder Teaser --></p>
|
||||
<p>Referent: Prof. Dr. Jan-Dierk Grunwaldt, <a href="https://www.itcp.kit.edu/grunwaldt/24.php" target="_blank">ITCP</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-4">
|
||||
<div class="panel-group" id="accordion10">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion10"
|
||||
href="#collapseOne10">
|
||||
<div class="hoersaal color1"> 22:00 HS T.</div>
|
||||
Komplexe Klimakrise - Herausforderungen und Chancen in Zeiten des Wandels </a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="collapseOne10" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="img-container"><img src="images\logo.png" width="100"/><br/>
|
||||
Bild: Platzhalter
|
||||
</div>
|
||||
<p> <!-- Placeholder Teaser --></p>
|
||||
<p>Referent: Dr. Christian Scharun, <a href="https://www.nawik.de/team/dr-christian-scharun/"
|
||||
target="_blank">NaWik</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="panel-group" id="accordion11">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion11"
|
||||
href="#collapseOne11">
|
||||
<div class="hoersaal color3"> 22:00 HS R.</div>
|
||||
Humanoid Robotics – General-Purpose Functional Intelligence (English Lecture)</a></h4>
|
||||
</div>
|
||||
<div id="collapseOne11" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="img-container"><img src="images\logo.png" width="100"/><br/>
|
||||
Bild: Platzhalter
|
||||
</div>
|
||||
<p> <!-- Placeholder Teaser --></p>
|
||||
<p>Referent: Prof. Dr. Tamim Asfour, <a href="https://h2t.iar.kit.edu/21_2372.php"
|
||||
target="_blank">H2T</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="panel-group" id="accordion12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion12"
|
||||
href="#collapseOne12">
|
||||
<div class="hoersaal triangel"> 22:00 Tri.</div>
|
||||
Tatort Boden: Mörderische Pilze mit Anwendungspotenzial </a></h4>
|
||||
</div>
|
||||
<div id="collapseOne12" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="img-container"><img src="images\logo.png" width="100"/><br/>
|
||||
Bild: Platzhalter
|
||||
</div>
|
||||
<p> <!-- Placeholder Teaser --></p>
|
||||
<p>Referent: Prof. Dr. Reinhard Fischer <a href="https://www.iab.kit.edu/microbio/487_507.php"
|
||||
target="_blank">IAB</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-4">
|
||||
<div class="panel-group" id="accordion13">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title text-center"><a data-toggle="collapse" data-parent="#accordion13"
|
||||
href="#collapseOne13">
|
||||
<div class="hoersaal color1"> 23:00 HS T.</div>
|
||||
Coming Soon (English Lecture)</a></h4>
|
||||
</div>
|
||||
<div id="collapseOne13" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="img-container"><img src="images\logo.png" width="100"/><br/>
|
||||
Bild: Platzhalter
|
||||
</div>
|
||||
<p> <!-- Placeholder Teaser --></p>
|
||||
<p>Referentin: Prof. Dr. Gudrun Heinrich <a href="https://www.itp.kit.edu/memberpages/heinrich"
|
||||
target="_blank">ITP</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="panel-group" id="accordion14">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title text-center"><a data-toggle="collapse" data-parent="#accordion14"
|
||||
href="#collapseOne14">
|
||||
<div class="hoersaal color3"> 23:00 HS R.</div>
|
||||
Coming Soon </a></h4>
|
||||
</div>
|
||||
<div id="collapseOne14" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="img-container"><img src="images\logo.png" width="100"/><br/>
|
||||
Bild: Platzhalter
|
||||
</div>
|
||||
<p> <!-- Placeholder Teaser --></p>
|
||||
<p>Referent: Dr. Ioannis Anapolitanos <a href="https://www.math.kit.edu/iana1/~anapolitanos/de"
|
||||
target="_blank">IANA</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="panel-group" id="accordion15">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title text-center"><a data-toggle="collapse" data-parent="#accordion15"
|
||||
href="#collapseOne15">
|
||||
<div class="hoersaal triangel"> 23:00 Tri.</div>
|
||||
Mit Sicherheit regeln und steuern <br> Safety & Security in modernen Automatisierungssystemen. </a></h4>
|
||||
</div>
|
||||
<div id="collapseOne15" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="img-container"><img src="images\logo.png" width="100"/><br/>
|
||||
Bild: Platzhalter
|
||||
</div>
|
||||
<p> <!-- Placeholder Teaser --></p>
|
||||
<p>Referenten: Prof. Dr. Mike Barth und Prof. Dr. Sören Hohmann <a href="https://www.irs.kit.edu/index.php"
|
||||
target="_blank">IRS</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-offset-3">
|
||||
<div class="panel-group" id="accordion16">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion16"
|
||||
href="#collapseOne16">
|
||||
<div class="hoersaal color1"> 0:00 HS T.</div>
|
||||
Die Physiker - Stück von Friedrich Dürrenmatt </a></h4>
|
||||
</div>
|
||||
<div id="collapseOne16" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="img-container"><img src="images\logo.png" width="100"/><br/>
|
||||
Bild: Platzhalter
|
||||
</div>
|
||||
<p> <!-- Placeholder Teaser --></p>
|
||||
<p>Physiker Theater <a href="https://physikertheater.de/"
|
||||
target="_blank"></a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-offset-3">
|
||||
<div class="panel-group" id="accordion17">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion17"
|
||||
href="#collapseOne17">
|
||||
<div class="hoersaal color1"> 01:00 HS T.</div>
|
||||
Zwerge auf den Schultern von Riesen - Unser Selbstverständnis als Forschende</a></h4>
|
||||
</div>
|
||||
<div id="collapseOne17" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="img-container"><img src="images\logo.png" width="100"/><br/>
|
||||
Bild: Platzhalter
|
||||
</div>
|
||||
<p> <!-- Placeholder Teaser --></p>
|
||||
<p>Referentin: Valerie Boda <a href="https://www.bibliothek.kit.edu/mitarbeiter_3900.php"
|
||||
target="_blank"></a>KIT-BIB</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-offset-3">
|
||||
<div class="panel-group" id="accordion18">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion18"
|
||||
href="#collapseOne18">
|
||||
<div class="hoersaal color1"> 02:00 HS T.</div>
|
||||
Von Zitronen und Schaukelstühlen – Wie Li-ionen Batterien den Alltag erobern</a></h4>
|
||||
</div>
|
||||
<div id="collapseOne18" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<div class="img-container"><img src="images\logo.png" width="100"/><br/>
|
||||
Bild: Platzhalter
|
||||
</div>
|
||||
<p> <!-- Placeholder Teaser --></p>
|
||||
<p>Referent: Dr. Fabian Jeschull <a href="https://www.iam.kit.edu/ess/21_1488.php"
|
||||
target="_blank"></a>IAM-ET</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
After Width: | Height: | Size: 9.0 KiB |
@@ -0,0 +1,223 @@
|
||||
|
||||
|
||||
let quizzes = {};
|
||||
|
||||
class QuizState {
|
||||
constructor(track, element) {
|
||||
this.element = element
|
||||
this.track = track
|
||||
/** question dict or undefined,
|
||||
* class QuizQuestion:
|
||||
track: str
|
||||
slot: int
|
||||
text: str
|
||||
estimation: Optional[str]
|
||||
estimation_solution: Optional[float]
|
||||
choice: Optional[List[str]]
|
||||
choice_solution: Optional[str]
|
||||
id: int = -1
|
||||
*/
|
||||
this.current_question = null
|
||||
this.user_id = localStorage.getItem("user_id")
|
||||
this.registered = this.user_id != null;
|
||||
this.needsToRegister = false;
|
||||
}
|
||||
|
||||
setUserId(user_id) {
|
||||
this.user_id = user_id;
|
||||
this.registered = this.user_id != null;
|
||||
}
|
||||
|
||||
child(element_class) {
|
||||
if (element_class === "quiz") {
|
||||
return this.element
|
||||
}
|
||||
return this.element.querySelector("." + element_class)
|
||||
}
|
||||
|
||||
hide(element_class) {
|
||||
this.child(element_class).style.display = "none"
|
||||
}
|
||||
|
||||
show(element_class) {
|
||||
this.child(element_class).style.display = "block"
|
||||
}
|
||||
|
||||
enable(button_class) {
|
||||
this.child(button_class).disabled = false
|
||||
}
|
||||
|
||||
disable(button_class) {
|
||||
this.child(button_class).disabled = true
|
||||
}
|
||||
|
||||
|
||||
updateUI() {
|
||||
if (this.current_question != null) {
|
||||
this.show("quiz")
|
||||
if (this.registered) {
|
||||
this.hide("register")
|
||||
this.enable("submit_answer")
|
||||
this.hide("open_register_button")
|
||||
} else {
|
||||
this.disableSubmitButton()
|
||||
}
|
||||
} else {
|
||||
this.hide("quiz")
|
||||
}
|
||||
}
|
||||
|
||||
renderCurrentQuestion() {
|
||||
if (this.current_question === null) {
|
||||
return;
|
||||
}
|
||||
this.element.querySelector(".question").textContent = this.current_question.text
|
||||
let answer_element = this.element.querySelector(".answer")
|
||||
let estimation = this.current_question.estimation
|
||||
let choice = this.current_question.choice
|
||||
answer_element.innerHTML = "";
|
||||
if (estimation != null) {
|
||||
answer_element.innerHTML = `<input class="form-control" type="number" step="any" style="width: 10em !important;" placeholder="${estimation}" title="${estimation}"/>`;
|
||||
} else {
|
||||
let name = this.track;
|
||||
let html = ""
|
||||
let i = 0
|
||||
for (const choiceElement of choice) {
|
||||
let id = `${this.track}_${i}`;
|
||||
html += `<div>
|
||||
<input type="radio" id="${id}" name="${name}" value="${choiceElement}">
|
||||
<label for="${id}">${choiceElement}</label>
|
||||
</div>\n`;
|
||||
i++
|
||||
}
|
||||
answer_element.innerHTML = html
|
||||
}
|
||||
}
|
||||
|
||||
fetch_current_question() {
|
||||
this.fetch("unanswered_question", {}, res => {
|
||||
if (JSON.stringify(this.current_question) !== JSON.stringify(res["question"])) {
|
||||
this.current_question = res["question"]
|
||||
this.fetch("user_registered", {"user_id": this.user_id}, res => {
|
||||
this.registered = res["registered"]
|
||||
this.renderCurrentQuestion()
|
||||
this.updateUI()
|
||||
})
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
register(pseudonym, email) {
|
||||
this.fetch("register_quiz_user", {"pseudonym": pseudonym, "email": email}, res => {
|
||||
if (res.success) {
|
||||
this.user_id = res["user_id"]
|
||||
localStorage.setItem("user_id", this.user_id)
|
||||
this.registered = true
|
||||
this.needsToRegister = false
|
||||
for (const quiz of Object.values(quizzes)) {
|
||||
quiz.setUserId(this.user_id);
|
||||
}
|
||||
this.updateUI()
|
||||
} else {
|
||||
console.log(res);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
handle_register() {
|
||||
this.register(this.element.querySelector(".pseudonym").value, this.element.querySelector(".email").value)
|
||||
}
|
||||
|
||||
handle_submit_answer() {
|
||||
if (this.current_question != null && this.registered) {
|
||||
if (this.current_question["estimation"]) {
|
||||
this.submit_answer(this.element.querySelector(".answer input").value)
|
||||
} else {
|
||||
let selectedElem = this.element.querySelector('input[type="radio"]:checked');
|
||||
if (selectedElem !== null) {
|
||||
this.submit_answer(selectedElem.value)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
submit_answer(answer) {
|
||||
if (this.current_question != null) {
|
||||
this.fetch("submit_quiz_answer", {
|
||||
"question_id": this.current_question.id,
|
||||
"answer": answer
|
||||
}, res => {
|
||||
if (res["already_answered"] || res["success"]) {
|
||||
this.current_question = null
|
||||
this.updateUI()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
fetch(path, query, onsuccess) {
|
||||
query["track"] = this.track
|
||||
if (this.user_id != null) {
|
||||
query["user_id"] = this.user_id
|
||||
}
|
||||
fetch(`${NDW_CHAT_SERVER_URL}/${path}?${new URLSearchParams(query)}`, {
|
||||
method: "GET",
|
||||
headers: {
|
||||
'Accept': 'application/json',
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
}).then(res => {
|
||||
res.json().then(onsuccess)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
function init_submit_question(element, track) {
|
||||
if (element.querySelector(".submit_question") == null) {
|
||||
return;
|
||||
}
|
||||
element.querySelector(".submit_question").addEventListener("click", () => {
|
||||
fetch(NDW_CHAT_SERVER_URL + "/send", {
|
||||
method: "POST",
|
||||
headers: {
|
||||
'Accept': 'application/json',
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({
|
||||
"track": track,
|
||||
"content": element.querySelector("textarea").value
|
||||
})
|
||||
}).then(() => {
|
||||
element.querySelector(" .ndw_chat_successful").style.display = "block";
|
||||
setTimeout(() => element.querySelector(" .ndw_chat_successful").style.display = "none", 3000);
|
||||
element.querySelector("textarea").value = ""
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
function init_quiz(element, track) {
|
||||
if (element.querySelector(".quiz") == null) {
|
||||
return;
|
||||
}
|
||||
let quiz = new QuizState(track, element.querySelector(".quiz"));
|
||||
quiz.fetch_current_question();
|
||||
quizzes[track] = quiz
|
||||
element.querySelector(".submit_answer").addEventListener("click", () => {
|
||||
quiz.handle_submit_answer()
|
||||
})
|
||||
element.querySelector(".register_button").addEventListener("click", () => {
|
||||
quiz.handle_register()
|
||||
})
|
||||
element.querySelector(".open_register_button").addEventListener("click", () => {
|
||||
quiz.show("register");
|
||||
quiz.disable("open_register_button");
|
||||
})
|
||||
setInterval(() => quiz.fetch_current_question(), 60_000)
|
||||
}
|
||||
|
||||
document.querySelectorAll(".ndw_chat").forEach(element => {
|
||||
let track = element.getAttribute("track");
|
||||
init_submit_question(element, track);
|
||||
init_quiz(element, track);
|
||||
});
|
||||
@@ -0,0 +1,52 @@
|
||||
/* jQuery Countdown styles 2.0.0. */
|
||||
.is-countdown {
|
||||
}
|
||||
.countdown-rtl {
|
||||
direction: rtl;
|
||||
}
|
||||
.countdown-holding span {
|
||||
color: #888;
|
||||
}
|
||||
.countdown-row {
|
||||
clear: both;
|
||||
width: 100%;
|
||||
padding: 0px 2px;
|
||||
text-align: center;
|
||||
}
|
||||
.countdown-show1 .countdown-section {
|
||||
width: 98%;
|
||||
}
|
||||
.countdown-show2 .countdown-section {
|
||||
width: 48%;
|
||||
}
|
||||
.countdown-show3 .countdown-section {
|
||||
width: 32.5%;
|
||||
}
|
||||
.countdown-show4 .countdown-section {
|
||||
width: 24.5%;
|
||||
}
|
||||
.countdown-show5 .countdown-section {
|
||||
width: 19.5%;
|
||||
}
|
||||
.countdown-show6 .countdown-section {
|
||||
width: 16.25%;
|
||||
}
|
||||
.countdown-show7 .countdown-section {
|
||||
width: 14%;
|
||||
}
|
||||
.countdown-section {
|
||||
display: block;
|
||||
float: left;
|
||||
font-size: 75%;
|
||||
text-align: center;
|
||||
}
|
||||
.countdown-amount {
|
||||
font-size: 200%;
|
||||
}
|
||||
.countdown-period {
|
||||
display: block;
|
||||
}
|
||||
.countdown-descr {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
@@ -0,0 +1,637 @@
|
||||
/* required styles */
|
||||
|
||||
.leaflet-pane,
|
||||
.leaflet-tile,
|
||||
.leaflet-marker-icon,
|
||||
.leaflet-marker-shadow,
|
||||
.leaflet-tile-container,
|
||||
.leaflet-pane > svg,
|
||||
.leaflet-pane > canvas,
|
||||
.leaflet-zoom-box,
|
||||
.leaflet-image-layer,
|
||||
.leaflet-layer {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.leaflet-container {
|
||||
overflow: hidden;
|
||||
}
|
||||
.leaflet-tile,
|
||||
.leaflet-marker-icon,
|
||||
.leaflet-marker-shadow {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
-webkit-user-drag: none;
|
||||
}
|
||||
/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
|
||||
.leaflet-safari .leaflet-tile {
|
||||
image-rendering: -webkit-optimize-contrast;
|
||||
}
|
||||
/* hack that prevents hw layers "stretching" when loading new tiles */
|
||||
.leaflet-safari .leaflet-tile-container {
|
||||
width: 1600px;
|
||||
height: 1600px;
|
||||
-webkit-transform-origin: 0 0;
|
||||
}
|
||||
.leaflet-marker-icon,
|
||||
.leaflet-marker-shadow {
|
||||
display: block;
|
||||
}
|
||||
/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
|
||||
/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
|
||||
.leaflet-container .leaflet-overlay-pane svg,
|
||||
.leaflet-container .leaflet-marker-pane img,
|
||||
.leaflet-container .leaflet-shadow-pane img,
|
||||
.leaflet-container .leaflet-tile-pane img,
|
||||
.leaflet-container img.leaflet-image-layer {
|
||||
max-width: none !important;
|
||||
}
|
||||
|
||||
.leaflet-container.leaflet-touch-zoom {
|
||||
-ms-touch-action: pan-x pan-y;
|
||||
touch-action: pan-x pan-y;
|
||||
}
|
||||
.leaflet-container.leaflet-touch-drag {
|
||||
-ms-touch-action: pinch-zoom;
|
||||
}
|
||||
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
|
||||
-ms-touch-action: none;
|
||||
touch-action: none;
|
||||
}
|
||||
.leaflet-container {
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
.leaflet-container a {
|
||||
-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
|
||||
}
|
||||
.leaflet-tile {
|
||||
-webkit-filter: inherit;
|
||||
filter: inherit;
|
||||
visibility: hidden;
|
||||
}
|
||||
.leaflet-tile-loaded {
|
||||
visibility: inherit;
|
||||
}
|
||||
.leaflet-zoom-box {
|
||||
width: 0;
|
||||
height: 0;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
z-index: 800;
|
||||
}
|
||||
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
|
||||
.leaflet-overlay-pane svg {
|
||||
-moz-user-select: none;
|
||||
}
|
||||
|
||||
.leaflet-pane { z-index: 400; }
|
||||
|
||||
.leaflet-tile-pane { z-index: 200; }
|
||||
.leaflet-overlay-pane { z-index: 400; }
|
||||
.leaflet-shadow-pane { z-index: 500; }
|
||||
.leaflet-marker-pane { z-index: 600; }
|
||||
.leaflet-tooltip-pane { z-index: 650; }
|
||||
.leaflet-popup-pane { z-index: 700; }
|
||||
|
||||
.leaflet-map-pane canvas { z-index: 100; }
|
||||
.leaflet-map-pane svg { z-index: 200; }
|
||||
|
||||
.leaflet-vml-shape {
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
}
|
||||
.lvml {
|
||||
behavior: url(#default#VML);
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
|
||||
/* control positioning */
|
||||
|
||||
.leaflet-control {
|
||||
position: relative;
|
||||
z-index: 800;
|
||||
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
|
||||
pointer-events: auto;
|
||||
}
|
||||
.leaflet-top,
|
||||
.leaflet-bottom {
|
||||
position: absolute;
|
||||
z-index: 1000;
|
||||
pointer-events: none;
|
||||
}
|
||||
.leaflet-top {
|
||||
top: 0;
|
||||
}
|
||||
.leaflet-right {
|
||||
right: 0;
|
||||
}
|
||||
.leaflet-bottom {
|
||||
bottom: 0;
|
||||
}
|
||||
.leaflet-left {
|
||||
left: 0;
|
||||
}
|
||||
.leaflet-control {
|
||||
float: left;
|
||||
clear: both;
|
||||
}
|
||||
.leaflet-right .leaflet-control {
|
||||
float: right;
|
||||
}
|
||||
.leaflet-top .leaflet-control {
|
||||
margin-top: 10px;
|
||||
}
|
||||
.leaflet-bottom .leaflet-control {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.leaflet-left .leaflet-control {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.leaflet-right .leaflet-control {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
|
||||
/* zoom and fade animations */
|
||||
|
||||
.leaflet-fade-anim .leaflet-tile {
|
||||
will-change: opacity;
|
||||
}
|
||||
.leaflet-fade-anim .leaflet-popup {
|
||||
opacity: 0;
|
||||
-webkit-transition: opacity 0.2s linear;
|
||||
-o-transition: opacity 0.2s linear;
|
||||
transition: opacity 0.2s linear;
|
||||
}
|
||||
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
|
||||
opacity: 1;
|
||||
}
|
||||
.leaflet-zoom-animated {
|
||||
-webkit-transform-origin: 0 0;
|
||||
-ms-transform-origin: 0 0;
|
||||
transform-origin: 0 0;
|
||||
}
|
||||
.leaflet-zoom-anim .leaflet-zoom-animated {
|
||||
will-change: transform;
|
||||
}
|
||||
.leaflet-zoom-anim .leaflet-zoom-animated {
|
||||
-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||
-o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||
transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||
-o-transition: transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||
transition: transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||
transition: transform 0.25s cubic-bezier(0,0,0.25,1), -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||
}
|
||||
.leaflet-zoom-anim .leaflet-tile,
|
||||
.leaflet-pan-anim .leaflet-tile {
|
||||
-webkit-transition: none;
|
||||
-o-transition: none;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
.leaflet-zoom-anim .leaflet-zoom-hide {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
|
||||
/* cursors */
|
||||
|
||||
.leaflet-interactive {
|
||||
cursor: pointer;
|
||||
}
|
||||
.leaflet-grab {
|
||||
cursor: -webkit-grab;
|
||||
cursor: -moz-grab;
|
||||
}
|
||||
.leaflet-crosshair,
|
||||
.leaflet-crosshair .leaflet-interactive {
|
||||
cursor: crosshair;
|
||||
}
|
||||
.leaflet-popup-pane,
|
||||
.leaflet-control {
|
||||
cursor: auto;
|
||||
}
|
||||
.leaflet-dragging .leaflet-grab,
|
||||
.leaflet-dragging .leaflet-grab .leaflet-interactive,
|
||||
.leaflet-dragging .leaflet-marker-draggable {
|
||||
cursor: move;
|
||||
cursor: -webkit-grabbing;
|
||||
cursor: -moz-grabbing;
|
||||
}
|
||||
|
||||
/* marker & overlays interactivity */
|
||||
.leaflet-marker-icon,
|
||||
.leaflet-marker-shadow,
|
||||
.leaflet-image-layer,
|
||||
.leaflet-pane > svg path,
|
||||
.leaflet-tile-container {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.leaflet-marker-icon.leaflet-interactive,
|
||||
.leaflet-image-layer.leaflet-interactive,
|
||||
.leaflet-pane > svg path.leaflet-interactive {
|
||||
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
/* visual tweaks */
|
||||
|
||||
.leaflet-container {
|
||||
background: #ddd;
|
||||
outline: 0;
|
||||
}
|
||||
.leaflet-container a {
|
||||
color: #0078A8;
|
||||
}
|
||||
.leaflet-container a.leaflet-active {
|
||||
outline: 2px solid orange;
|
||||
}
|
||||
.leaflet-zoom-box {
|
||||
border: 2px dotted #38f;
|
||||
background: rgba(255,255,255,0.5);
|
||||
}
|
||||
|
||||
|
||||
/* general typography */
|
||||
.leaflet-container {
|
||||
font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
|
||||
/* general toolbar styles */
|
||||
|
||||
.leaflet-bar {
|
||||
-webkit-box-shadow: 0 1px 5px rgba(0,0,0,0.65);
|
||||
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
|
||||
border-radius: 4px;
|
||||
}
|
||||
.leaflet-bar a,
|
||||
.leaflet-bar a:hover {
|
||||
background-color: #fff;
|
||||
border-bottom: 1px solid #ccc;
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
line-height: 26px;
|
||||
display: block;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
color: black;
|
||||
}
|
||||
.leaflet-bar a,
|
||||
.leaflet-control-layers-toggle {
|
||||
background-position: 50% 50%;
|
||||
background-repeat: no-repeat;
|
||||
display: block;
|
||||
}
|
||||
.leaflet-bar a:hover {
|
||||
background-color: #f4f4f4;
|
||||
}
|
||||
.leaflet-bar a:first-child {
|
||||
border-top-left-radius: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
}
|
||||
.leaflet-bar a:last-child {
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-bottom: none;
|
||||
}
|
||||
.leaflet-bar a.leaflet-disabled {
|
||||
cursor: default;
|
||||
background-color: #f4f4f4;
|
||||
color: #bbb;
|
||||
}
|
||||
|
||||
.leaflet-touch .leaflet-bar a {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
}
|
||||
.leaflet-touch .leaflet-bar a:first-child {
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 2px;
|
||||
}
|
||||
.leaflet-touch .leaflet-bar a:last-child {
|
||||
border-bottom-left-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
}
|
||||
|
||||
/* zoom control */
|
||||
|
||||
.leaflet-control-zoom-in,
|
||||
.leaflet-control-zoom-out {
|
||||
font: bold 18px 'Lucida Console', Monaco, monospace;
|
||||
text-indent: 1px;
|
||||
}
|
||||
|
||||
.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
|
||||
/* layers control */
|
||||
|
||||
.leaflet-control-layers {
|
||||
-webkit-box-shadow: 0 1px 5px rgba(0,0,0,0.4);
|
||||
box-shadow: 0 1px 5px rgba(0,0,0,0.4);
|
||||
background: #fff;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.leaflet-control-layers-toggle {
|
||||
background-image: url(images/layers.png);
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
}
|
||||
.leaflet-retina .leaflet-control-layers-toggle {
|
||||
background-image: url(images/layers-2x.png);
|
||||
background-size: 26px 26px;
|
||||
}
|
||||
.leaflet-touch .leaflet-control-layers-toggle {
|
||||
width: 44px;
|
||||
height: 44px;
|
||||
}
|
||||
.leaflet-control-layers .leaflet-control-layers-list,
|
||||
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
|
||||
display: none;
|
||||
}
|
||||
.leaflet-control-layers-expanded .leaflet-control-layers-list {
|
||||
display: block;
|
||||
position: relative;
|
||||
}
|
||||
.leaflet-control-layers-expanded {
|
||||
padding: 6px 10px 6px 6px;
|
||||
color: #333;
|
||||
background: #fff;
|
||||
}
|
||||
.leaflet-control-layers-scrollbar {
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
padding-right: 5px;
|
||||
}
|
||||
.leaflet-control-layers-selector {
|
||||
margin-top: 2px;
|
||||
position: relative;
|
||||
top: 1px;
|
||||
}
|
||||
.leaflet-control-layers label {
|
||||
display: block;
|
||||
}
|
||||
.leaflet-control-layers-separator {
|
||||
height: 0;
|
||||
border-top: 1px solid #ddd;
|
||||
margin: 5px -10px 5px -6px;
|
||||
}
|
||||
|
||||
/* Default icon URLs */
|
||||
.leaflet-default-icon-path {
|
||||
background-image: url(images/marker-icon.png);
|
||||
}
|
||||
|
||||
|
||||
/* attribution and scale controls */
|
||||
|
||||
.leaflet-container .leaflet-control-attribution {
|
||||
background: #fff;
|
||||
background: rgba(255, 255, 255, 0.7);
|
||||
margin: 0;
|
||||
}
|
||||
.leaflet-control-attribution,
|
||||
.leaflet-control-scale-line {
|
||||
padding: 0 5px;
|
||||
color: #333;
|
||||
}
|
||||
.leaflet-control-attribution a {
|
||||
text-decoration: none;
|
||||
}
|
||||
.leaflet-control-attribution a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.leaflet-container .leaflet-control-attribution,
|
||||
.leaflet-container .leaflet-control-scale {
|
||||
font-size: 11px;
|
||||
}
|
||||
.leaflet-left .leaflet-control-scale {
|
||||
margin-left: 5px;
|
||||
}
|
||||
.leaflet-bottom .leaflet-control-scale {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.leaflet-control-scale-line {
|
||||
border: 2px solid #777;
|
||||
border-top: none;
|
||||
line-height: 1.1;
|
||||
padding: 2px 5px 1px;
|
||||
font-size: 11px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
|
||||
background: #fff;
|
||||
background: rgba(255, 255, 255, 0.5);
|
||||
}
|
||||
.leaflet-control-scale-line:not(:first-child) {
|
||||
border-top: 2px solid #777;
|
||||
border-bottom: none;
|
||||
margin-top: -2px;
|
||||
}
|
||||
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
|
||||
border-bottom: 2px solid #777;
|
||||
}
|
||||
|
||||
.leaflet-touch .leaflet-control-attribution,
|
||||
.leaflet-touch .leaflet-control-layers,
|
||||
.leaflet-touch .leaflet-bar {
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
.leaflet-touch .leaflet-control-layers,
|
||||
.leaflet-touch .leaflet-bar {
|
||||
border: 2px solid rgba(0,0,0,0.2);
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
|
||||
/* popup */
|
||||
|
||||
.leaflet-popup {
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.leaflet-popup-content-wrapper {
|
||||
padding: 1px;
|
||||
text-align: left;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.leaflet-popup-content {
|
||||
margin: 13px 19px;
|
||||
line-height: 1.4;
|
||||
}
|
||||
.leaflet-popup-content p {
|
||||
margin: 18px 0;
|
||||
}
|
||||
.leaflet-popup-tip-container {
|
||||
width: 40px;
|
||||
height: 20px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
margin-left: -20px;
|
||||
overflow: hidden;
|
||||
pointer-events: none;
|
||||
}
|
||||
.leaflet-popup-tip {
|
||||
width: 17px;
|
||||
height: 17px;
|
||||
padding: 1px;
|
||||
|
||||
margin: -10px auto 0;
|
||||
|
||||
-webkit-transform: rotate(45deg);
|
||||
-ms-transform: rotate(45deg);
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
.leaflet-popup-content-wrapper,
|
||||
.leaflet-popup-tip {
|
||||
background: white;
|
||||
color: #333;
|
||||
-webkit-box-shadow: 0 3px 14px rgba(0,0,0,0.4);
|
||||
box-shadow: 0 3px 14px rgba(0,0,0,0.4);
|
||||
}
|
||||
.leaflet-container a.leaflet-popup-close-button {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
padding: 4px 4px 0 0;
|
||||
border: none;
|
||||
text-align: center;
|
||||
width: 18px;
|
||||
height: 14px;
|
||||
font: 16px/14px Tahoma, Verdana, sans-serif;
|
||||
color: #c3c3c3;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
background: transparent;
|
||||
}
|
||||
.leaflet-container a.leaflet-popup-close-button:hover {
|
||||
color: #999;
|
||||
}
|
||||
.leaflet-popup-scrolled {
|
||||
overflow: auto;
|
||||
border-bottom: 1px solid #ddd;
|
||||
border-top: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.leaflet-oldie .leaflet-popup-content-wrapper {
|
||||
zoom: 1;
|
||||
}
|
||||
.leaflet-oldie .leaflet-popup-tip {
|
||||
width: 24px;
|
||||
margin: 0 auto;
|
||||
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
|
||||
filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
|
||||
}
|
||||
.leaflet-oldie .leaflet-popup-tip-container {
|
||||
margin-top: -1px;
|
||||
}
|
||||
|
||||
.leaflet-oldie .leaflet-control-zoom,
|
||||
.leaflet-oldie .leaflet-control-layers,
|
||||
.leaflet-oldie .leaflet-popup-content-wrapper,
|
||||
.leaflet-oldie .leaflet-popup-tip {
|
||||
border: 1px solid #999;
|
||||
}
|
||||
|
||||
|
||||
/* div icon */
|
||||
|
||||
.leaflet-div-icon {
|
||||
background: #fff;
|
||||
border: 1px solid #666;
|
||||
}
|
||||
|
||||
|
||||
/* Tooltip */
|
||||
/* Base styles for the element that has a tooltip */
|
||||
.leaflet-tooltip {
|
||||
position: absolute;
|
||||
padding: 6px;
|
||||
background-color: #fff;
|
||||
border: 1px solid #fff;
|
||||
border-radius: 3px;
|
||||
color: #222;
|
||||
white-space: nowrap;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
pointer-events: none;
|
||||
-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.4);
|
||||
box-shadow: 0 1px 3px rgba(0,0,0,0.4);
|
||||
}
|
||||
.leaflet-tooltip.leaflet-clickable {
|
||||
cursor: pointer;
|
||||
pointer-events: auto;
|
||||
}
|
||||
.leaflet-tooltip-top:before,
|
||||
.leaflet-tooltip-bottom:before,
|
||||
.leaflet-tooltip-left:before,
|
||||
.leaflet-tooltip-right:before {
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
border: 6px solid transparent;
|
||||
background: transparent;
|
||||
content: "";
|
||||
}
|
||||
|
||||
/* Directions */
|
||||
|
||||
.leaflet-tooltip-bottom {
|
||||
margin-top: 6px;
|
||||
}
|
||||
.leaflet-tooltip-top {
|
||||
margin-top: -6px;
|
||||
}
|
||||
.leaflet-tooltip-bottom:before,
|
||||
.leaflet-tooltip-top:before {
|
||||
left: 50%;
|
||||
margin-left: -6px;
|
||||
}
|
||||
.leaflet-tooltip-top:before {
|
||||
bottom: 0;
|
||||
margin-bottom: -12px;
|
||||
border-top-color: #fff;
|
||||
}
|
||||
.leaflet-tooltip-bottom:before {
|
||||
top: 0;
|
||||
margin-top: -12px;
|
||||
margin-left: -6px;
|
||||
border-bottom-color: #fff;
|
||||
}
|
||||
.leaflet-tooltip-left {
|
||||
margin-left: -6px;
|
||||
}
|
||||
.leaflet-tooltip-right {
|
||||
margin-left: 6px;
|
||||
}
|
||||
.leaflet-tooltip-left:before,
|
||||
.leaflet-tooltip-right:before {
|
||||
top: 50%;
|
||||
margin-top: -6px;
|
||||
}
|
||||
.leaflet-tooltip-left:before {
|
||||
right: 0;
|
||||
margin-right: -12px;
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.leaflet-tooltip-right:before {
|
||||
left: 0;
|
||||
margin-left: -12px;
|
||||
border-right-color: #fff;
|
||||
}
|
||||
@@ -0,0 +1,241 @@
|
||||
/* CSS Document */
|
||||
|
||||
@import url(https://fonts.googleapis.com/css?family=Maven+Pro:400,900,700,500);
|
||||
a,
|
||||
a:focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
a:focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.navbar-right li {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.main-navbar {
|
||||
-webkit-box-shadow: 0 0 10px 5px #000000;
|
||||
box-shadow: 0 0 10px 5px #000000;
|
||||
}
|
||||
|
||||
.tag {
|
||||
opacity: 0;
|
||||
transform: translate(0, 10vh);
|
||||
transition: all 1s;
|
||||
}
|
||||
|
||||
.tag.visible {
|
||||
opacity: 1;
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
.parralax {
|
||||
/* The image used */
|
||||
background-image: url(../images/background_header.jpg);
|
||||
/* Set a specific height */
|
||||
height:1000px;
|
||||
/* Create the parallax scrolling effect */
|
||||
background-attachment: fixed;
|
||||
background-position:bottom;
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
.background {
|
||||
background-image: url(../images/background_header.jpg);
|
||||
}
|
||||
.backgroundcolor {
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
|
||||
.headerrow {
|
||||
background-image: url(../images/background_header.jpg);
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
padding: 6% 0;
|
||||
color: #ffffff;
|
||||
text-shadow: #4d4d4d 2px 2px 2px;
|
||||
}
|
||||
|
||||
.largeHeadline {
|
||||
font-size: 4.9em;
|
||||
}
|
||||
|
||||
.headerrow img {
|
||||
max-width: 70%;
|
||||
height: 350px;
|
||||
min-width: 350px;
|
||||
}
|
||||
|
||||
.container h2 {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.footerContainer {
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.invisibleSpacer {
|
||||
border-width: 0;
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
.largeinvisibleSpacer {
|
||||
border-width: 0;
|
||||
padding-top: 65px;
|
||||
}
|
||||
|
||||
.smallSpacer {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.stickyElement {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
z-index: 2000;
|
||||
}
|
||||
|
||||
.hoersaal {
|
||||
float: right;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.glyphicon-menu-right {
|
||||
position: absolute;
|
||||
left: -4px;
|
||||
}
|
||||
|
||||
.panel-title {
|
||||
position: relative;
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
.navelement {
|
||||
height: 42px;
|
||||
position: absolute;
|
||||
margin-top: -42px;
|
||||
border-width: 0px;
|
||||
}
|
||||
|
||||
.color1 {
|
||||
color: #b33e53;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.color2 {
|
||||
color: #879c65;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.color3 {
|
||||
color: #fa8c4e;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.kd2lab {
|
||||
color: #4ac1ec;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.triangel {
|
||||
color: #46d99c;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.glyphicon-envelope {
|
||||
position: relative;
|
||||
top: 2px;
|
||||
}
|
||||
|
||||
.panel-body .img-container img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.panel-body .img-container {
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.col-lg-12 .panel-body .img-container {
|
||||
/* Wenn gro�, werden Vortragsbilder in Containern, die �ber die ganze Seitenbreite gehen, links angezeigt. */
|
||||
width: auto;
|
||||
float: left;
|
||||
margin-right: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.largeHeadline {
|
||||
padding-top: 50px;
|
||||
font-size: 2.94em;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1200px) {
|
||||
h4 {
|
||||
text-align: left !important;
|
||||
}
|
||||
}
|
||||
|
||||
.panel-body p {
|
||||
text-align: justify;
|
||||
-moz-hyphens: auto;
|
||||
-o-hyphens: auto;
|
||||
-webkit-hyphens: auto;
|
||||
-ms-hyphens: auto;
|
||||
hyphens: auto;
|
||||
hyphenate-limit-chars: auto 5;
|
||||
hyphenate-limit-lines: 2;
|
||||
}
|
||||
|
||||
.full-width-image div {
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.full-width-image img {
|
||||
margin-top: 50px;
|
||||
image-orientation: from-image;
|
||||
width: 100%;
|
||||
min-height: 200px;
|
||||
}
|
||||
|
||||
.partner img {
|
||||
margin-right: 3em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
#gallerycarousel img {
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.carousel-control,
|
||||
.carousel-inner {
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.img-container img {
|
||||
max-height: 300px;
|
||||
}
|
||||
|
||||
.embeddedmap {
|
||||
height: 333px;
|
||||
}
|
||||
|
||||
.question-header {
|
||||
font-weight: bold;
|
||||
color: greenyellow;
|
||||
}
|
||||
|
||||
.question textarea {
|
||||
height: 6em;
|
||||
color: rgb(173, 173, 173);
|
||||
background: #0000004d;
|
||||
font-size: 1.2em;
|
||||
width: 100%;
|
||||
border-color: transparent;
|
||||
}
|
||||
@@ -0,0 +1,181 @@
|
||||
/* CSS Document */
|
||||
@import "../bower_components/bootstrap/less/variables.less";
|
||||
|
||||
@fontsize-headline: 4.9em;
|
||||
|
||||
a,
|
||||
a:focus{
|
||||
outline: 0;
|
||||
}
|
||||
a:focus{
|
||||
text-decoration:none;
|
||||
}
|
||||
.navbar-right li{
|
||||
font-size:18px;
|
||||
}
|
||||
.main-navbar {
|
||||
-webkit-box-shadow: 0 0 10px 5px darken(@navbar-default-bg, 6.5%);
|
||||
box-shadow: 0 0 10px 5px darken(@navbar-default-bg, 6.5%);
|
||||
}
|
||||
.headerrow {
|
||||
background-image: url(../images/background_header.jpg);
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
padding: 6% 0;
|
||||
color: #f9e4f8;
|
||||
text-shadow: #4d4d4d 2px 2px 2px;
|
||||
}
|
||||
|
||||
.largeHeadline {
|
||||
font-size: @fontsize-headline;
|
||||
}
|
||||
|
||||
.headerrow img {
|
||||
max-width: 70%;
|
||||
height: 350px;
|
||||
min-width: 350px;
|
||||
|
||||
}
|
||||
.container h2 {
|
||||
color: @brand-primary;
|
||||
}
|
||||
|
||||
.footerContainer {
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.invisibleSpacer {
|
||||
border-width: 0;
|
||||
padding-top: 20px;
|
||||
}
|
||||
.largeinvisibleSpacer {
|
||||
border-width: 0;
|
||||
padding-top: 65px;
|
||||
}
|
||||
|
||||
.smallSpacer {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.stickyElement {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
z-index: 2000;
|
||||
}
|
||||
|
||||
.hoersaal{
|
||||
float: right;
|
||||
padding-left:5px;
|
||||
}
|
||||
|
||||
.glyphicon-menu-right{
|
||||
position:absolute;
|
||||
left:-4px;
|
||||
}
|
||||
.panel-title{
|
||||
position:relative;
|
||||
padding-left:0px;
|
||||
}
|
||||
|
||||
.navelement{
|
||||
height: 42px;
|
||||
position: absolute;
|
||||
margin-top: -42px;
|
||||
border-width: 0px;
|
||||
}
|
||||
.color1 {
|
||||
color: #b33e53;
|
||||
font-weight: bold;
|
||||
}
|
||||
.color2 {
|
||||
color: #879c65;
|
||||
font-weight: bold;
|
||||
}
|
||||
.color3 {
|
||||
color: #fa8c4e;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.kd2lab {
|
||||
color: #4ac1ec;
|
||||
font-weight: bold;
|
||||
}
|
||||
.glyphicon-envelope{
|
||||
position:relative;
|
||||
top:2px;
|
||||
}
|
||||
|
||||
.panel-body .img-container img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.panel-body .img-container {
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.col-lg-12 .panel-body .img-container {
|
||||
/* Wenn groß, werden Vortragsbilder in Containern, die über die ganze Seitenbreite gehen, links angezeigt. */
|
||||
width: auto;
|
||||
float: left;
|
||||
margin-right: 1em;
|
||||
}
|
||||
}
|
||||
@media (max-width: @screen-sm) {
|
||||
.largeHeadline{
|
||||
padding-top: 50px;
|
||||
font-size: @fontsize-headline*0.6;
|
||||
}
|
||||
}
|
||||
@media (max-width: @screen-lg) {
|
||||
h4{
|
||||
text-align:left !important;
|
||||
}
|
||||
}
|
||||
|
||||
.panel-body p {
|
||||
text-align: justify;
|
||||
|
||||
-moz-hyphens: auto;
|
||||
-o-hyphens: auto;
|
||||
-webkit-hyphens: auto;
|
||||
-ms-hyphens: auto;
|
||||
hyphens: auto;
|
||||
|
||||
hyphenate-limit-chars: auto 5;
|
||||
hyphenate-limit-lines: 2;
|
||||
}
|
||||
.full-width-image div {
|
||||
padding: 0px;
|
||||
}
|
||||
.full-width-image img {
|
||||
margin-top: 50px;
|
||||
image-orientation: from-image;
|
||||
width: 100%;
|
||||
min-height: 200px;
|
||||
}
|
||||
.partner img {
|
||||
margin-right: 3em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
#gallerycarousel img {
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.carousel-control,
|
||||
.carousel-inner {
|
||||
border-radius: 10px;
|
||||
}
|
||||
.img-container img{
|
||||
max-height: 300px;
|
||||
}
|
||||
|
||||
.embeddedmap {
|
||||
height: 333px;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
BEGIN:VCALENDAR
|
||||
X-LOTUS-CHARSET:UTF-8
|
||||
VERSION:2.0
|
||||
PRODID:ZMS-Berlin
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/Berlin
|
||||
X-LIC-LOCATION:Europe/Berlin
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
TZNAME:CEST
|
||||
DTSTART:19700329T020000
|
||||
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:CET
|
||||
DTSTART:19701025T030000
|
||||
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
METHOD:REQUEST
|
||||
BEGIN:VEVENT
|
||||
UID:ics.terminsysteme.de1637055655
|
||||
DTSTAMP:20211116T104055
|
||||
CLASS:PUBLIC
|
||||
DTSTART;TZID=Europe/Berlin:20211126T180000
|
||||
DTEND;TZID=Europe/Berlin:20211127T010000
|
||||
LOCATION:Online auf www.ndw-ka.de
|
||||
SUMMARY:Nacht der Wissenschaft 2021
|
||||
DESCRIPTION:In der Nacht vom 26. November findet auch dieses Semester die "Nacht der Wissenschaft" statt. Allerdings ist dieses Mal alles anders, alle Vorträge werden als Livestream verfügbar sein. Auch wenn die Nacht der Wissenschaft etwas kleiner sein wird, so haben wir trotzdem viele spannende Vorträge aus den verschiedensten Fachbereichen zu bieten.\nDaher laden wir euch ein, uns bis in die frühen Morgenstunden auf eine Reise durch die Wissenschaft zu begleiten…\n\n\n---\ngenerated by https://www.terminsysteme.de/ics
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
@@ -0,0 +1 @@
|
||||
google-site-verification: google4bd2b5251a60be81.html
|
||||
@@ -0,0 +1,143 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Nacht der Wissenschaft - Karlsruhe</title>
|
||||
|
||||
<!-- Bootstrap -->
|
||||
<link href="css/bootstrap.css" rel="stylesheet" type="text/css">
|
||||
|
||||
<!-- Own style -->
|
||||
<link href="css/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
<!-- Leaflet -->
|
||||
<link rel="stylesheet" href="css/leaflet.css"/>
|
||||
|
||||
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
<!-- Favicons -->
|
||||
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
|
||||
<link rel="icon" type="image/png" href="/favicon.png" sizes="96x96">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
||||
<meta name="msapplication-TileColor" content="#00000">
|
||||
<meta name="msapplication-TileImage" content="/mstile-144x144.png">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
.ndw_chat input, .ndw_chat button {
|
||||
width: inherit !important;
|
||||
}
|
||||
</style>
|
||||
<nav class="navbar navbar-default stickyElement">
|
||||
<div class="container-fluid main-navbar">
|
||||
<!-- Brand and toggle get grouped for better mobile display -->
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#defaultNavbar1">
|
||||
<span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span
|
||||
class="icon-bar"></span><span class="icon-bar"></span></button>
|
||||
<a class="navbar-brand" href="index.php"><span class="glyphicon glyphicon-home" aria-hidden="true"></span>
|
||||
Nacht der Wissenschaft</a></div>
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
<div class="collapse navbar-collapse" id="defaultNavbar1">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li><a href="hs1.php">Stream HS.T </a></li>
|
||||
<li><a href="hs2.php">Stream HS.R </a>
|
||||
<li>
|
||||
<li><a href="index.php#programm">Programm </a></li>
|
||||
<li><a href="index.php#Bilder"> Bilder </a></li>
|
||||
<li><a href="index.php#ueberuns"> Über uns </a></li>
|
||||
<li><a href="./impressum.html">Impressum </a></li>
|
||||
<li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" role="button" href="#">Archiv
|
||||
<span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="./archiv/januar2016/">Januar 2016</a>
|
||||
</li>
|
||||
<li><a href="./archiv/oktober2016/">Oktober 2016</a>
|
||||
</li>
|
||||
<li><a href="./archiv/november2017/">November 2017</a>
|
||||
</li>
|
||||
<li><a href="./archiv/november2018/">November 2018</a>
|
||||
</li>
|
||||
<li><a href="./archiv/januar2020/">Januar 2020</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="parralax">
|
||||
<div class="container-fluid">
|
||||
<div class="row text-center">
|
||||
<hr class="largeinvisibleSpacer">
|
||||
<h1 class="largeHeadline">Nacht der Wissenschaft<br>
|
||||
Stream Tulla-Hörsaal</h1>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2"></div>
|
||||
<div class="col-md-8">
|
||||
<div class="embed-responsive embed-responsive-16by9">
|
||||
<iframe class="embed-responsive-item" src="https://www.youtube.com/embed/jHYbOzLMMl4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2"></div>
|
||||
</div>
|
||||
<div style="margin-bottom: 5em;"></div>
|
||||
<div class="row">
|
||||
<div class="col-md-2"></div>
|
||||
<div class="col-md-8">
|
||||
<div class="ndw_chat" track="hs1">
|
||||
<div class="quiz" style="display: none">
|
||||
<h3><span>Quiz: <span class="question"></span></span></h3>
|
||||
<div class="row"><div class="answer col-md-12">
|
||||
</div></div>
|
||||
|
||||
<div class="btn-group">
|
||||
<button class="btn open_register_button">Registrieren</button><button class="btn submit_answer" disabled="disabled">Absenden</button>
|
||||
</div>
|
||||
<div class="register" style="display: none">
|
||||
Du musst dich registrieren, bevor du beim Quiz mitmachen kannst:<br/>
|
||||
<label>Pseudonym:</label><input class="pseudonym" minlength="1" maxlength="100"
|
||||
required pattern=".{10,100}"><br/>
|
||||
<label>E-Mail-Adresse:</label><input class="email" type="email" required
|
||||
pattern=".+@.+"/><br/>
|
||||
<small>
|
||||
Die Daten werden für höchstens zwei Tage gespeichert (und wir nutzen ein Cookie,
|
||||
damit du deine Kontaktdaten nicht mehrfach eingeben musst). Die Daten werden nur für
|
||||
das Quiz verwendet und dienen dazu den Gewinnern des Quizzes Preise zukommen
|
||||
zulassen.</small><br/>
|
||||
<button class="register_button btn">Registrieren</button>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<h4><span>Stelle eine Frage zum aktuellen Vortrag</span></h4>
|
||||
<textarea maxlength="200"></textarea>
|
||||
<span style="display: none; margin-right: 5em"
|
||||
class="ndw_chat_successful alert ">Deine Frage wurde versendet</span>
|
||||
<button class="submit_question btn" style="width: 100%">Absenden</button><br/>
|
||||
<small>Alle Fragen werden 2 Tagen gespeichert, zum alleinigen Zwecke der Weitergabe an die
|
||||
Dozierenden.</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="padding: 5em;"></div>
|
||||
</div>
|
||||
<script src="js/jquery.min.js"></script>
|
||||
<!-- Include all compiled plugins (below), or include individual files as needed -->
|
||||
<script src="js/bootstrap.min.js"></script>
|
||||
<script>
|
||||
const NDW_CHAT_SERVER_URL = "https://mostlynerdless.de/ndw_backend";
|
||||
</script>
|
||||
<script src="client.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,143 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Nacht der Wissenschaft - Karlsruhe</title>
|
||||
|
||||
<!-- Bootstrap -->
|
||||
<link href="css/bootstrap.css" rel="stylesheet" type="text/css">
|
||||
|
||||
<!-- Own style -->
|
||||
<link href="css/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
<!-- Leaflet -->
|
||||
<link rel="stylesheet" href="css/leaflet.css"/>
|
||||
|
||||
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
<!-- Favicons -->
|
||||
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
|
||||
<link rel="icon" type="image/png" href="/favicon.png" sizes="96x96">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
||||
<meta name="msapplication-TileColor" content="#00000">
|
||||
<meta name="msapplication-TileImage" content="/mstile-144x144.png">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
.ndw_chat input, .ndw_chat button {
|
||||
width: inherit !important;
|
||||
}
|
||||
</style>
|
||||
<nav class="navbar navbar-default stickyElement">
|
||||
<div class="container-fluid main-navbar">
|
||||
<!-- Brand and toggle get grouped for better mobile display -->
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#defaultNavbar1">
|
||||
<span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span
|
||||
class="icon-bar"></span><span class="icon-bar"></span></button>
|
||||
<a class="navbar-brand" href="index.php"><span class="glyphicon glyphicon-home" aria-hidden="true"></span>
|
||||
Nacht der Wissenschaft</a></div>
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
<div class="collapse navbar-collapse" id="defaultNavbar1">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li><a href="hs1.php">Stream HS.T </a></li>
|
||||
<li><a href="hs2.php">Stream HS.R </a>
|
||||
<li>
|
||||
<li><a href="index.php#programm">Programm </a></li>
|
||||
<li><a href="index.php#Bilder"> Bilder </a></li>
|
||||
<li><a href="index.php#ueberuns"> Über uns </a></li>
|
||||
<li><a href="./impressum.html">Impressum </a></li>
|
||||
<li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" role="button" href="#">Archiv
|
||||
<span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="./archiv/januar2016/">Januar 2016</a>
|
||||
</li>
|
||||
<li><a href="./archiv/oktober2016/">Oktober 2016</a>
|
||||
</li>
|
||||
<li><a href="./archiv/november2017/">November 2017</a>
|
||||
</li>
|
||||
<li><a href="./archiv/november2018/">November 2018</a>
|
||||
</li>
|
||||
<li><a href="./archiv/januar2020/">Januar 2020</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="parralax">
|
||||
<div class="container-fluid">
|
||||
<div class="row text-center">
|
||||
<hr class="largeinvisibleSpacer">
|
||||
<h1 class="largeHeadline">Nacht der Wissenschaft<br>
|
||||
Stream Redtenbacher-Hörsaal</h1>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2"></div>
|
||||
<div class="col-md-8">
|
||||
<div class="embed-responsive embed-responsive-16by9">
|
||||
<iframe class="embed-responsive-item" src="https://www.youtube.com/embed/vC7LBJnEPxI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2"></div>
|
||||
</div>
|
||||
<div style="margin-bottom: 5em;"></div>
|
||||
<div class="row">
|
||||
<div class="col-md-2"></div>
|
||||
<div class="col-md-8">
|
||||
<div class="ndw_chat" track="hs2">
|
||||
<div class="quiz" style="display: none">
|
||||
<h3><span>Quiz: <span class="question"></span></span></h3>
|
||||
<div class="row"><div class="answer col-md-12">
|
||||
</div></div>
|
||||
|
||||
<div class="btn-group">
|
||||
<button class="btn open_register_button">Registrieren</button><button class="btn submit_answer" disabled="disabled">Absenden</button>
|
||||
</div>
|
||||
<div class="register" style="display: none">
|
||||
Du musst dich registrieren, bevor du beim Quiz mitmachen kannst:<br/>
|
||||
<label>Pseudonym:</label><input class="pseudonym" minlength="1" maxlength="100"
|
||||
required pattern=".{10,100}"><br/>
|
||||
<label>E-Mail-Adresse:</label><input class="email" type="email" required
|
||||
pattern=".+@.+"/><br/>
|
||||
<small>
|
||||
Die Daten werden für höchstens zwei Tage gespeichert (und wir nutzen ein Cookie,
|
||||
damit du deine Kontaktdaten nicht mehrfach eingeben musst). Die Daten werden nur für
|
||||
das Quiz verwendet und dienen dazu den Gewinnern des Quizzes Preise zukommen
|
||||
zulassen.</small><br/>
|
||||
<button class="register_button btn">Registrieren</button>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<h4><span>Stelle eine Frage zum aktuellen Vortrag</span></h4>
|
||||
<textarea maxlength="200"></textarea>
|
||||
<span style="display: none; margin-right: 5em"
|
||||
class="ndw_chat_successful alert ">Deine Frage wurde versendet</span>
|
||||
<button class="submit_question btn" style="width: 100%">Absenden</button><br/>
|
||||
<small>Alle Fragen werden 2 Tagen gespeichert, zum alleinigen Zwecke der Weitergabe an die
|
||||
Dozierenden.</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="padding: 5em;"></div>
|
||||
</div>
|
||||
<script src="js/jquery.min.js"></script>
|
||||
<!-- Include all compiled plugins (below), or include individual files as needed -->
|
||||
<script src="js/bootstrap.min.js"></script>
|
||||
<script>
|
||||
const NDW_CHAT_SERVER_URL = "https://mostlynerdless.de/ndw_backend";
|
||||
</script>
|
||||
<script src="client.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,7 @@
|
||||
RewriteEngine On
|
||||
|
||||
RewriteCond %{REMOTE_ADDR} ^129\.13\.72\.198$
|
||||
RewriteRule ^(.*)marker\-icon\.png $1marker-omnom.png
|
||||
|
||||
RewriteCond %{REMOTE_ADDR} ^129\.13\.72\.198$
|
||||
RewriteRule ^(.*)marker\-icon\-2x\.png $1marker-omnom-2x.png
|
||||
|
After Width: | Height: | Size: 55 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 8.8 MiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 207 KiB |
|
After Width: | Height: | Size: 126 KiB |
|
After Width: | Height: | Size: 107 KiB |
|
After Width: | Height: | Size: 133 KiB |
|
After Width: | Height: | Size: 101 KiB |
|
After Width: | Height: | Size: 407 KiB |
|
After Width: | Height: | Size: 103 KiB |
|
After Width: | Height: | Size: 337 KiB |
|
After Width: | Height: | Size: 198 KiB |
|
After Width: | Height: | Size: 252 KiB |
|
After Width: | Height: | Size: 219 KiB |
|
After Width: | Height: | Size: 231 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 788 B |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 797 B |
|
After Width: | Height: | Size: 8.5 MiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 3.4 MiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 163 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 212 KiB |
|
After Width: | Height: | Size: 88 KiB |
|
After Width: | Height: | Size: 895 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 211 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 130 KiB |
|
After Width: | Height: | Size: 279 KiB |
|
After Width: | Height: | Size: 289 KiB |
|
After Width: | Height: | Size: 369 KiB |
|
After Width: | Height: | Size: 314 KiB |
|
After Width: | Height: | Size: 189 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 346 KiB |
|
After Width: | Height: | Size: 121 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 186 KiB |
|
After Width: | Height: | Size: 302 KiB |
|
After Width: | Height: | Size: 115 KiB |
@@ -0,0 +1,129 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Nacht der Wissenschaft - Karlsruhe</title>
|
||||
|
||||
<!-- Bootstrap -->
|
||||
<link href="css/bootstrap.css" rel="stylesheet" type="text/css">
|
||||
|
||||
<!-- Own style -->
|
||||
<link href="https://fonts.googleapis.com/css?family=Maven+Pro:400,900,700,500" rel="stylesheet">
|
||||
<link href="css/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
<!-- Leaflet -->
|
||||
<link rel="stylesheet" href="css/leaflet.css" />
|
||||
|
||||
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
<!-- Favicons -->
|
||||
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
|
||||
<link rel="icon" type="image/png" href="/favicon.png" sizes="96x96">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
||||
<meta name="msapplication-TileColor" content="#00000">
|
||||
<meta name="msapplication-TileImage" content="/mstile-144x144.png">
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-default stickyElement">
|
||||
<div class="container-fluid main-navbar">
|
||||
<!-- Brand and toggle get grouped for better mobile display -->
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#defaultNavbar1"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="./"><span class="glyphicon glyphicon-home" aria-hidden="true"></span> Nacht der Wissenschaft</a>
|
||||
</div>
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
<div class="collapse navbar-collapse" id="defaultNavbar1">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li><a href="./#programm">Programm </a>
|
||||
</li>
|
||||
<li> <a href="./#ndw2016"> Bilder </a>
|
||||
</li>
|
||||
<!-- <li><a href="./#anfahrt">Veranstaltungsräume </a></li>-->
|
||||
<li><a href="./#ueberuns"> Über uns </a>
|
||||
</li>
|
||||
<li><a href="./impressum.html">Impressum </a>
|
||||
</li>
|
||||
<li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" role="button" href="#">Archiv <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="./archiv/januar2016/">Januar 2016</a>
|
||||
</li>
|
||||
<li><a href="./archiv/oktober2016/">Oktober 2016</a>
|
||||
</li>
|
||||
<li><a href="./archiv/november2017/">November 2017</a>
|
||||
</li>
|
||||
<li><a href="./archiv/november2018/">November 2018</a>
|
||||
</li>
|
||||
<li><a href="./archiv/januar2020/">Januar 2020</a>
|
||||
</li>
|
||||
<li><a href="../../">aktuelle Seite</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- /.navbar-collapse -->
|
||||
</div>
|
||||
<!-- /.container-fluid -->
|
||||
|
||||
</nav>
|
||||
|
||||
<div class="container">
|
||||
<hr class="invisibleSpacer">
|
||||
<section id="impressum">
|
||||
<hr class="navelement">
|
||||
<div class="row footer">
|
||||
<div class="col-lg-12">
|
||||
<hr class="navelement" />
|
||||
<h4 id="impressum">Impressum</h4>
|
||||
<p>
|
||||
<a href="mailto:info@ndw-ka.de"> <span class="glyphicon glyphicon-envelope" aria-hidden="true"></span>info@ndw-ka.de</a>
|
||||
<br>
|
||||
<br> Hochschulgruppe Nacht der Wissenschaft
|
||||
<br> Adenauerring 7
|
||||
<br> 76131 Karlsruhe
|
||||
<br>
|
||||
<br> Ansprechpartner Website:
|
||||
<br> Alexander Dahms
|
||||
<br>
|
||||
<br> Foto von Ludvig Hedenborg von Pexels
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
|
||||
<script src="js/jquery.min.js"></script>
|
||||
<script src="js/jquery.plugin.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
$('.closeall').click(function() {
|
||||
$('.panel-collapse.in')
|
||||
.collapse('hide');
|
||||
});
|
||||
$('.openall').click(function() {
|
||||
$('.panel-collapse:not(".in")')
|
||||
.collapse('show');
|
||||
});
|
||||
$('#defaultNavbar1').on("click", "a", null, function() {
|
||||
if (!$(this).hasClass("dropdown-toggle")) {
|
||||
$('#defaultNavbar1').collapse('hide');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- Include all compiled plugins (below), or include individual files as needed -->
|
||||
<script src="js/bootstrap.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,797 @@
|
||||
/*!
|
||||
* Bootstrap v3.3.7 (http://getbootstrap.com)
|
||||
* Copyright 2011-2016 Twitter, Inc.
|
||||
* Licensed under the MIT license
|
||||
*/
|
||||
if ("undefined" == typeof jQuery) throw new Error("Bootstrap's JavaScript requires jQuery");
|
||||
+function (t) {
|
||||
"use strict";
|
||||
var e = jQuery.fn.jquery.split(" ")[0].split(".");
|
||||
if (e[0] < 2 && e[1] < 9 || 1 == e[0] && 9 == e[1] && e[2] < 1 || e[0] > 3) throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")
|
||||
}(), function (t) {
|
||||
"use strict";
|
||||
t.fn.emulateTransitionEnd = function (e) {
|
||||
var i = !1, o = this;
|
||||
t(this).one("bsTransitionEnd", function () {
|
||||
i = !0
|
||||
});
|
||||
return setTimeout(function () {
|
||||
i || t(o).trigger(t.support.transition.end)
|
||||
}, e), this
|
||||
}, t(function () {
|
||||
t.support.transition = function () {
|
||||
var t = document.createElement("bootstrap"), e = {
|
||||
WebkitTransition: "webkitTransitionEnd",
|
||||
MozTransition: "transitionend",
|
||||
OTransition: "oTransitionEnd otransitionend",
|
||||
transition: "transitionend"
|
||||
};
|
||||
for (var i in e) if (void 0 !== t.style[i]) return {end: e[i]};
|
||||
return !1
|
||||
}(), t.support.transition && (t.event.special.bsTransitionEnd = {
|
||||
bindType: t.support.transition.end,
|
||||
delegateType: t.support.transition.end,
|
||||
handle: function (e) {
|
||||
if (t(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
|
||||
}
|
||||
})
|
||||
})
|
||||
}(jQuery), function (t) {
|
||||
"use strict";
|
||||
var e = '[data-dismiss="alert"]', i = function (i) {
|
||||
t(i).on("click", e, this.close)
|
||||
};
|
||||
i.VERSION = "3.3.7", i.TRANSITION_DURATION = 150, i.prototype.close = function (e) {
|
||||
function o() {
|
||||
a.detach().trigger("closed.bs.alert").remove()
|
||||
}
|
||||
|
||||
var n = t(this), s = n.attr("data-target");
|
||||
s || (s = (s = n.attr("href")) && s.replace(/.*(?=#[^\s]*$)/, ""));
|
||||
var a = t("#" === s ? [] : s);
|
||||
e && e.preventDefault(), a.length || (a = n.closest(".alert")), a.trigger(e = t.Event("close.bs.alert")), e.isDefaultPrevented() || (a.removeClass("in"), t.support.transition && a.hasClass("fade") ? a.one("bsTransitionEnd", o).emulateTransitionEnd(i.TRANSITION_DURATION) : o())
|
||||
};
|
||||
var o = t.fn.alert;
|
||||
t.fn.alert = function (e) {
|
||||
return this.each(function () {
|
||||
var o = t(this), n = o.data("bs.alert");
|
||||
n || o.data("bs.alert", n = new i(this)), "string" == typeof e && n[e].call(o)
|
||||
})
|
||||
}, t.fn.alert.Constructor = i, t.fn.alert.noConflict = function () {
|
||||
return t.fn.alert = o, this
|
||||
}, t(document).on("click.bs.alert.data-api", e, i.prototype.close)
|
||||
}(jQuery), function (t) {
|
||||
"use strict";
|
||||
|
||||
function e(e) {
|
||||
return this.each(function () {
|
||||
var o = t(this), n = o.data("bs.button"), s = "object" == typeof e && e;
|
||||
n || o.data("bs.button", n = new i(this, s)), "toggle" == e ? n.toggle() : e && n.setState(e)
|
||||
})
|
||||
}
|
||||
|
||||
var i = function (e, o) {
|
||||
this.$element = t(e), this.options = t.extend({}, i.DEFAULTS, o), this.isLoading = !1
|
||||
};
|
||||
i.VERSION = "3.3.7", i.DEFAULTS = {loadingText: "loading..."}, i.prototype.setState = function (e) {
|
||||
var i = "disabled", o = this.$element, n = o.is("input") ? "val" : "html", s = o.data();
|
||||
e += "Text", null == s.resetText && o.data("resetText", o[n]()), setTimeout(t.proxy(function () {
|
||||
o[n](null == s[e] ? this.options[e] : s[e]), "loadingText" == e ? (this.isLoading = !0, o.addClass(i).attr(i, i).prop(i, !0)) : this.isLoading && (this.isLoading = !1, o.removeClass(i).removeAttr(i).prop(i, !1))
|
||||
}, this), 0)
|
||||
}, i.prototype.toggle = function () {
|
||||
var t = !0, e = this.$element.closest('[data-toggle="buttons"]');
|
||||
if (e.length) {
|
||||
var i = this.$element.find("input");
|
||||
"radio" == i.prop("type") ? (i.prop("checked") && (t = !1), e.find(".active").removeClass("active"), this.$element.addClass("active")) : "checkbox" == i.prop("type") && (i.prop("checked") !== this.$element.hasClass("active") && (t = !1), this.$element.toggleClass("active")), i.prop("checked", this.$element.hasClass("active")), t && i.trigger("change")
|
||||
} else this.$element.attr("aria-pressed", !this.$element.hasClass("active")), this.$element.toggleClass("active")
|
||||
};
|
||||
var o = t.fn.button;
|
||||
t.fn.button = e, t.fn.button.Constructor = i, t.fn.button.noConflict = function () {
|
||||
return t.fn.button = o, this
|
||||
}, t(document).on("click.bs.button.data-api", '[data-toggle^="button"]', function (i) {
|
||||
var o = t(i.target).closest(".btn");
|
||||
e.call(o, "toggle"), t(i.target).is('input[type="radio"], input[type="checkbox"]') || (i.preventDefault(), o.is("input,button") ? o.trigger("focus") : o.find("input:visible,button:visible").first().trigger("focus"))
|
||||
}).on("focus.bs.button.data-api blur.bs.button.data-api", '[data-toggle^="button"]', function (e) {
|
||||
t(e.target).closest(".btn").toggleClass("focus", /^focus(in)?$/.test(e.type))
|
||||
})
|
||||
}(jQuery), function (t) {
|
||||
"use strict";
|
||||
|
||||
function e(e) {
|
||||
return this.each(function () {
|
||||
var o = t(this), n = o.data("bs.carousel"),
|
||||
s = t.extend({}, i.DEFAULTS, o.data(), "object" == typeof e && e),
|
||||
a = "string" == typeof e ? e : s.slide;
|
||||
n || o.data("bs.carousel", n = new i(this, s)), "number" == typeof e ? n.to(e) : a ? n[a]() : s.interval && n.pause().cycle()
|
||||
})
|
||||
}
|
||||
|
||||
var i = function (e, i) {
|
||||
this.$element = t(e), this.$indicators = this.$element.find(".carousel-indicators"), this.options = i, this.paused = null, this.sliding = null, this.interval = null, this.$active = null, this.$items = null, this.options.keyboard && this.$element.on("keydown.bs.carousel", t.proxy(this.keydown, this)), "hover" == this.options.pause && !("ontouchstart" in document.documentElement) && this.$element.on("mouseenter.bs.carousel", t.proxy(this.pause, this)).on("mouseleave.bs.carousel", t.proxy(this.cycle, this))
|
||||
};
|
||||
i.VERSION = "3.3.7", i.TRANSITION_DURATION = 600, i.DEFAULTS = {
|
||||
interval: 5e3,
|
||||
pause: "hover",
|
||||
wrap: !0,
|
||||
keyboard: !0
|
||||
}, i.prototype.keydown = function (t) {
|
||||
if (!/input|textarea/i.test(t.target.tagName)) {
|
||||
switch (t.which) {
|
||||
case 37:
|
||||
this.prev();
|
||||
break;
|
||||
case 39:
|
||||
this.next();
|
||||
break;
|
||||
default:
|
||||
return
|
||||
}
|
||||
t.preventDefault()
|
||||
}
|
||||
}, i.prototype.cycle = function (e) {
|
||||
return e || (this.paused = !1), this.interval && clearInterval(this.interval), this.options.interval && !this.paused && (this.interval = setInterval(t.proxy(this.next, this), this.options.interval)), this
|
||||
}, i.prototype.getItemIndex = function (t) {
|
||||
return this.$items = t.parent().children(".item"), this.$items.index(t || this.$active)
|
||||
}, i.prototype.getItemForDirection = function (t, e) {
|
||||
var i = this.getItemIndex(e);
|
||||
if (("prev" == t && 0 === i || "next" == t && i == this.$items.length - 1) && !this.options.wrap) return e;
|
||||
var o = (i + ("prev" == t ? -1 : 1)) % this.$items.length;
|
||||
return this.$items.eq(o)
|
||||
}, i.prototype.to = function (t) {
|
||||
var e = this, i = this.getItemIndex(this.$active = this.$element.find(".item.active"));
|
||||
if (!(t > this.$items.length - 1 || t < 0)) return this.sliding ? this.$element.one("slid.bs.carousel", function () {
|
||||
e.to(t)
|
||||
}) : i == t ? this.pause().cycle() : this.slide(t > i ? "next" : "prev", this.$items.eq(t))
|
||||
}, i.prototype.pause = function (e) {
|
||||
return e || (this.paused = !0), this.$element.find(".next, .prev").length && t.support.transition && (this.$element.trigger(t.support.transition.end), this.cycle(!0)), this.interval = clearInterval(this.interval), this
|
||||
}, i.prototype.next = function () {
|
||||
if (!this.sliding) return this.slide("next")
|
||||
}, i.prototype.prev = function () {
|
||||
if (!this.sliding) return this.slide("prev")
|
||||
}, i.prototype.slide = function (e, o) {
|
||||
var n = this.$element.find(".item.active"), s = o || this.getItemForDirection(e, n), a = this.interval,
|
||||
r = "next" == e ? "left" : "right", l = this;
|
||||
if (s.hasClass("active")) return this.sliding = !1;
|
||||
var h = s[0], d = t.Event("slide.bs.carousel", {relatedTarget: h, direction: r});
|
||||
if (this.$element.trigger(d), !d.isDefaultPrevented()) {
|
||||
if (this.sliding = !0, a && this.pause(), this.$indicators.length) {
|
||||
this.$indicators.find(".active").removeClass("active");
|
||||
var p = t(this.$indicators.children()[this.getItemIndex(s)]);
|
||||
p && p.addClass("active")
|
||||
}
|
||||
var c = t.Event("slid.bs.carousel", {relatedTarget: h, direction: r});
|
||||
return t.support.transition && this.$element.hasClass("slide") ? (s.addClass(e), s[0].offsetWidth, n.addClass(r), s.addClass(r), n.one("bsTransitionEnd", function () {
|
||||
s.removeClass([e, r].join(" ")).addClass("active"), n.removeClass(["active", r].join(" ")), l.sliding = !1, setTimeout(function () {
|
||||
l.$element.trigger(c)
|
||||
}, 0)
|
||||
}).emulateTransitionEnd(i.TRANSITION_DURATION)) : (n.removeClass("active"), s.addClass("active"), this.sliding = !1, this.$element.trigger(c)), a && this.cycle(), this
|
||||
}
|
||||
};
|
||||
var o = t.fn.carousel;
|
||||
t.fn.carousel = e, t.fn.carousel.Constructor = i, t.fn.carousel.noConflict = function () {
|
||||
return t.fn.carousel = o, this
|
||||
};
|
||||
var n = function (i) {
|
||||
var o, n = t(this), s = t(n.attr("data-target") || (o = n.attr("href")) && o.replace(/.*(?=#[^\s]+$)/, ""));
|
||||
if (s.hasClass("carousel")) {
|
||||
var a = t.extend({}, s.data(), n.data()), r = n.attr("data-slide-to");
|
||||
r && (a.interval = !1), e.call(s, a), r && s.data("bs.carousel").to(r), i.preventDefault()
|
||||
}
|
||||
};
|
||||
t(document).on("click.bs.carousel.data-api", "[data-slide]", n).on("click.bs.carousel.data-api", "[data-slide-to]", n), t(window).on("load", function () {
|
||||
t('[data-ride="carousel"]').each(function () {
|
||||
var i = t(this);
|
||||
e.call(i, i.data())
|
||||
})
|
||||
})
|
||||
}(jQuery), function (t) {
|
||||
"use strict";
|
||||
|
||||
function e(e) {
|
||||
var i, o = e.attr("data-target") || (i = e.attr("href")) && i.replace(/.*(?=#[^\s]+$)/, "");
|
||||
return t(o)
|
||||
}
|
||||
|
||||
function i(e) {
|
||||
return this.each(function () {
|
||||
var i = t(this), n = i.data("bs.collapse"),
|
||||
s = t.extend({}, o.DEFAULTS, i.data(), "object" == typeof e && e);
|
||||
!n && s.toggle && /show|hide/.test(e) && (s.toggle = !1), n || i.data("bs.collapse", n = new o(this, s)), "string" == typeof e && n[e]()
|
||||
})
|
||||
}
|
||||
|
||||
var o = function (e, i) {
|
||||
this.$element = t(e), this.options = t.extend({}, o.DEFAULTS, i), this.$trigger = t('[data-toggle="collapse"][href="#' + e.id + '"],[data-toggle="collapse"][data-target="#' + e.id + '"]'), this.transitioning = null, this.options.parent ? this.$parent = this.getParent() : this.addAriaAndCollapsedClass(this.$element, this.$trigger), this.options.toggle && this.toggle()
|
||||
};
|
||||
o.VERSION = "3.3.7", o.TRANSITION_DURATION = 350, o.DEFAULTS = {toggle: !0}, o.prototype.dimension = function () {
|
||||
return this.$element.hasClass("width") ? "width" : "height"
|
||||
}, o.prototype.show = function () {
|
||||
if (!this.transitioning && !this.$element.hasClass("in")) {
|
||||
var e, n = this.$parent && this.$parent.children(".panel").children(".in, .collapsing");
|
||||
if (!(n && n.length && (e = n.data("bs.collapse")) && e.transitioning)) {
|
||||
var s = t.Event("show.bs.collapse");
|
||||
if (this.$element.trigger(s), !s.isDefaultPrevented()) {
|
||||
n && n.length && (i.call(n, "hide"), e || n.data("bs.collapse", null));
|
||||
var a = this.dimension();
|
||||
this.$element.removeClass("collapse").addClass("collapsing")[a](0).attr("aria-expanded", !0), this.$trigger.removeClass("collapsed").attr("aria-expanded", !0), this.transitioning = 1;
|
||||
var r = function () {
|
||||
this.$element.removeClass("collapsing").addClass("collapse in")[a](""), this.transitioning = 0, this.$element.trigger("shown.bs.collapse")
|
||||
};
|
||||
if (!t.support.transition) return r.call(this);
|
||||
var l = t.camelCase(["scroll", a].join("-"));
|
||||
this.$element.one("bsTransitionEnd", t.proxy(r, this)).emulateTransitionEnd(o.TRANSITION_DURATION)[a](this.$element[0][l])
|
||||
}
|
||||
}
|
||||
}
|
||||
}, o.prototype.hide = function () {
|
||||
if (!this.transitioning && this.$element.hasClass("in")) {
|
||||
var e = t.Event("hide.bs.collapse");
|
||||
if (this.$element.trigger(e), !e.isDefaultPrevented()) {
|
||||
var i = this.dimension();
|
||||
this.$element[i](this.$element[i]())[0].offsetHeight, this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded", !1), this.$trigger.addClass("collapsed").attr("aria-expanded", !1), this.transitioning = 1;
|
||||
var n = function () {
|
||||
this.transitioning = 0, this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")
|
||||
};
|
||||
if (!t.support.transition) return n.call(this);
|
||||
this.$element[i](0).one("bsTransitionEnd", t.proxy(n, this)).emulateTransitionEnd(o.TRANSITION_DURATION)
|
||||
}
|
||||
}
|
||||
}, o.prototype.toggle = function () {
|
||||
this[this.$element.hasClass("in") ? "hide" : "show"]()
|
||||
}, o.prototype.getParent = function () {
|
||||
return t(this.options.parent).find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]').each(t.proxy(function (i, o) {
|
||||
var n = t(o);
|
||||
this.addAriaAndCollapsedClass(e(n), n)
|
||||
}, this)).end()
|
||||
}, o.prototype.addAriaAndCollapsedClass = function (t, e) {
|
||||
var i = t.hasClass("in");
|
||||
t.attr("aria-expanded", i), e.toggleClass("collapsed", !i).attr("aria-expanded", i)
|
||||
};
|
||||
var n = t.fn.collapse;
|
||||
t.fn.collapse = i, t.fn.collapse.Constructor = o, t.fn.collapse.noConflict = function () {
|
||||
return t.fn.collapse = n, this
|
||||
}, t(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]', function (o) {
|
||||
var n = t(this);
|
||||
n.attr("data-target") || o.preventDefault();
|
||||
var s = e(n), a = s.data("bs.collapse") ? "toggle" : n.data();
|
||||
i.call(s, a)
|
||||
})
|
||||
}(jQuery), function (t) {
|
||||
"use strict";
|
||||
|
||||
function e(e) {
|
||||
var i = e.attr("data-target");
|
||||
i || (i = (i = e.attr("href")) && /#[A-Za-z]/.test(i) && i.replace(/.*(?=#[^\s]*$)/, ""));
|
||||
var o = i && t(i);
|
||||
return o && o.length ? o : e.parent()
|
||||
}
|
||||
|
||||
function i(i) {
|
||||
i && 3 === i.which || (t(o).remove(), t(n).each(function () {
|
||||
var o = t(this), n = e(o), s = {relatedTarget: this};
|
||||
n.hasClass("open") && (i && "click" == i.type && /input|textarea/i.test(i.target.tagName) && t.contains(n[0], i.target) || (n.trigger(i = t.Event("hide.bs.dropdown", s)), i.isDefaultPrevented() || (o.attr("aria-expanded", "false"), n.removeClass("open").trigger(t.Event("hidden.bs.dropdown", s)))))
|
||||
}))
|
||||
}
|
||||
|
||||
var o = ".dropdown-backdrop", n = '[data-toggle="dropdown"]', s = function (e) {
|
||||
t(e).on("click.bs.dropdown", this.toggle)
|
||||
};
|
||||
s.VERSION = "3.3.7", s.prototype.toggle = function (o) {
|
||||
var n = t(this);
|
||||
if (!n.is(".disabled, :disabled")) {
|
||||
var s = e(n), a = s.hasClass("open");
|
||||
if (i(), !a) {
|
||||
"ontouchstart" in document.documentElement && !s.closest(".navbar-nav").length && t(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(t(this)).on("click", i);
|
||||
var r = {relatedTarget: this};
|
||||
if (s.trigger(o = t.Event("show.bs.dropdown", r)), o.isDefaultPrevented()) return;
|
||||
n.trigger("focus").attr("aria-expanded", "true"), s.toggleClass("open").trigger(t.Event("shown.bs.dropdown", r))
|
||||
}
|
||||
return !1
|
||||
}
|
||||
}, s.prototype.keydown = function (i) {
|
||||
if (/(38|40|27|32)/.test(i.which) && !/input|textarea/i.test(i.target.tagName)) {
|
||||
var o = t(this);
|
||||
if (i.preventDefault(), i.stopPropagation(), !o.is(".disabled, :disabled")) {
|
||||
var s = e(o), a = s.hasClass("open");
|
||||
if (!a && 27 != i.which || a && 27 == i.which) return 27 == i.which && s.find(n).trigger("focus"), o.trigger("click");
|
||||
var r = s.find(".dropdown-menu li:not(.disabled):visible a");
|
||||
if (r.length) {
|
||||
var l = r.index(i.target);
|
||||
38 == i.which && l > 0 && l--, 40 == i.which && l < r.length - 1 && l++, ~l || (l = 0), r.eq(l).trigger("focus")
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
var a = t.fn.dropdown;
|
||||
t.fn.dropdown = function (e) {
|
||||
return this.each(function () {
|
||||
var i = t(this), o = i.data("bs.dropdown");
|
||||
o || i.data("bs.dropdown", o = new s(this)), "string" == typeof e && o[e].call(i)
|
||||
})
|
||||
}, t.fn.dropdown.Constructor = s, t.fn.dropdown.noConflict = function () {
|
||||
return t.fn.dropdown = a, this
|
||||
}, t(document).on("click.bs.dropdown.data-api", i).on("click.bs.dropdown.data-api", ".dropdown form", function (t) {
|
||||
t.stopPropagation()
|
||||
}).on("click.bs.dropdown.data-api", n, s.prototype.toggle).on("keydown.bs.dropdown.data-api", n, s.prototype.keydown).on("keydown.bs.dropdown.data-api", ".dropdown-menu", s.prototype.keydown)
|
||||
}(jQuery), function (t) {
|
||||
"use strict";
|
||||
|
||||
function e(e, o) {
|
||||
return this.each(function () {
|
||||
var n = t(this), s = n.data("bs.modal"), a = t.extend({}, i.DEFAULTS, n.data(), "object" == typeof e && e);
|
||||
s || n.data("bs.modal", s = new i(this, a)), "string" == typeof e ? s[e](o) : a.show && s.show(o)
|
||||
})
|
||||
}
|
||||
|
||||
var i = function (e, i) {
|
||||
this.options = i, this.$body = t(document.body), this.$element = t(e), this.$dialog = this.$element.find(".modal-dialog"), this.$backdrop = null, this.isShown = null, this.originalBodyPad = null, this.scrollbarWidth = 0, this.ignoreBackdropClick = !1, this.options.remote && this.$element.find(".modal-content").load(this.options.remote, t.proxy(function () {
|
||||
this.$element.trigger("loaded.bs.modal")
|
||||
}, this))
|
||||
};
|
||||
i.VERSION = "3.3.7", i.TRANSITION_DURATION = 300, i.BACKDROP_TRANSITION_DURATION = 150, i.DEFAULTS = {
|
||||
backdrop: !0,
|
||||
keyboard: !0,
|
||||
show: !0
|
||||
}, i.prototype.toggle = function (t) {
|
||||
return this.isShown ? this.hide() : this.show(t)
|
||||
}, i.prototype.show = function (e) {
|
||||
var o = this, n = t.Event("show.bs.modal", {relatedTarget: e});
|
||||
this.$element.trigger(n), this.isShown || n.isDefaultPrevented() || (this.isShown = !0, this.checkScrollbar(), this.setScrollbar(), this.$body.addClass("modal-open"), this.escape(), this.resize(), this.$element.on("click.dismiss.bs.modal", '[data-dismiss="modal"]', t.proxy(this.hide, this)), this.$dialog.on("mousedown.dismiss.bs.modal", function () {
|
||||
o.$element.one("mouseup.dismiss.bs.modal", function (e) {
|
||||
t(e.target).is(o.$element) && (o.ignoreBackdropClick = !0)
|
||||
})
|
||||
}), this.backdrop(function () {
|
||||
var n = t.support.transition && o.$element.hasClass("fade");
|
||||
o.$element.parent().length || o.$element.appendTo(o.$body), o.$element.show().scrollTop(0), o.adjustDialog(), n && o.$element[0].offsetWidth, o.$element.addClass("in"), o.enforceFocus();
|
||||
var s = t.Event("shown.bs.modal", {relatedTarget: e});
|
||||
n ? o.$dialog.one("bsTransitionEnd", function () {
|
||||
o.$element.trigger("focus").trigger(s)
|
||||
}).emulateTransitionEnd(i.TRANSITION_DURATION) : o.$element.trigger("focus").trigger(s)
|
||||
}))
|
||||
}, i.prototype.hide = function (e) {
|
||||
e && e.preventDefault(), e = t.Event("hide.bs.modal"), this.$element.trigger(e), this.isShown && !e.isDefaultPrevented() && (this.isShown = !1, this.escape(), this.resize(), t(document).off("focusin.bs.modal"), this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"), this.$dialog.off("mousedown.dismiss.bs.modal"), t.support.transition && this.$element.hasClass("fade") ? this.$element.one("bsTransitionEnd", t.proxy(this.hideModal, this)).emulateTransitionEnd(i.TRANSITION_DURATION) : this.hideModal())
|
||||
}, i.prototype.enforceFocus = function () {
|
||||
t(document).off("focusin.bs.modal").on("focusin.bs.modal", t.proxy(function (t) {
|
||||
document === t.target || this.$element[0] === t.target || this.$element.has(t.target).length || this.$element.trigger("focus")
|
||||
}, this))
|
||||
}, i.prototype.escape = function () {
|
||||
this.isShown && this.options.keyboard ? this.$element.on("keydown.dismiss.bs.modal", t.proxy(function (t) {
|
||||
27 == t.which && this.hide()
|
||||
}, this)) : this.isShown || this.$element.off("keydown.dismiss.bs.modal")
|
||||
}, i.prototype.resize = function () {
|
||||
this.isShown ? t(window).on("resize.bs.modal", t.proxy(this.handleUpdate, this)) : t(window).off("resize.bs.modal")
|
||||
}, i.prototype.hideModal = function () {
|
||||
var t = this;
|
||||
this.$element.hide(), this.backdrop(function () {
|
||||
t.$body.removeClass("modal-open"), t.resetAdjustments(), t.resetScrollbar(), t.$element.trigger("hidden.bs.modal")
|
||||
})
|
||||
}, i.prototype.removeBackdrop = function () {
|
||||
this.$backdrop && this.$backdrop.remove(), this.$backdrop = null
|
||||
}, i.prototype.backdrop = function (e) {
|
||||
var o = this, n = this.$element.hasClass("fade") ? "fade" : "";
|
||||
if (this.isShown && this.options.backdrop) {
|
||||
var s = t.support.transition && n;
|
||||
if (this.$backdrop = t(document.createElement("div")).addClass("modal-backdrop " + n).appendTo(this.$body), this.$element.on("click.dismiss.bs.modal", t.proxy(function (t) {
|
||||
this.ignoreBackdropClick ? this.ignoreBackdropClick = !1 : t.target === t.currentTarget && ("static" == this.options.backdrop ? this.$element[0].focus() : this.hide())
|
||||
}, this)), s && this.$backdrop[0].offsetWidth, this.$backdrop.addClass("in"), !e) return;
|
||||
s ? this.$backdrop.one("bsTransitionEnd", e).emulateTransitionEnd(i.BACKDROP_TRANSITION_DURATION) : e()
|
||||
} else if (!this.isShown && this.$backdrop) {
|
||||
this.$backdrop.removeClass("in");
|
||||
var a = function () {
|
||||
o.removeBackdrop(), e && e()
|
||||
};
|
||||
t.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one("bsTransitionEnd", a).emulateTransitionEnd(i.BACKDROP_TRANSITION_DURATION) : a()
|
||||
} else e && e()
|
||||
}, i.prototype.handleUpdate = function () {
|
||||
this.adjustDialog()
|
||||
}, i.prototype.adjustDialog = function () {
|
||||
var t = this.$element[0].scrollHeight > document.documentElement.clientHeight;
|
||||
this.$element.css({
|
||||
paddingLeft: !this.bodyIsOverflowing && t ? this.scrollbarWidth : "",
|
||||
paddingRight: this.bodyIsOverflowing && !t ? this.scrollbarWidth : ""
|
||||
})
|
||||
}, i.prototype.resetAdjustments = function () {
|
||||
this.$element.css({paddingLeft: "", paddingRight: ""})
|
||||
}, i.prototype.checkScrollbar = function () {
|
||||
var t = window.innerWidth;
|
||||
if (!t) {
|
||||
var e = document.documentElement.getBoundingClientRect();
|
||||
t = e.right - Math.abs(e.left)
|
||||
}
|
||||
this.bodyIsOverflowing = document.body.clientWidth < t, this.scrollbarWidth = this.measureScrollbar()
|
||||
}, i.prototype.setScrollbar = function () {
|
||||
var t = parseInt(this.$body.css("padding-right") || 0, 10);
|
||||
this.originalBodyPad = document.body.style.paddingRight || "", this.bodyIsOverflowing && this.$body.css("padding-right", t + this.scrollbarWidth)
|
||||
}, i.prototype.resetScrollbar = function () {
|
||||
this.$body.css("padding-right", this.originalBodyPad)
|
||||
}, i.prototype.measureScrollbar = function () {
|
||||
var t = document.createElement("div");
|
||||
t.className = "modal-scrollbar-measure", this.$body.append(t);
|
||||
var e = t.offsetWidth - t.clientWidth;
|
||||
return this.$body[0].removeChild(t), e
|
||||
};
|
||||
var o = t.fn.modal;
|
||||
t.fn.modal = e, t.fn.modal.Constructor = i, t.fn.modal.noConflict = function () {
|
||||
return t.fn.modal = o, this
|
||||
}, t(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function (i) {
|
||||
var o = t(this), n = o.attr("href"), s = t(o.attr("data-target") || n && n.replace(/.*(?=#[^\s]+$)/, "")),
|
||||
a = s.data("bs.modal") ? "toggle" : t.extend({remote: !/#/.test(n) && n}, s.data(), o.data());
|
||||
o.is("a") && i.preventDefault(), s.one("show.bs.modal", function (t) {
|
||||
t.isDefaultPrevented() || s.one("hidden.bs.modal", function () {
|
||||
o.is(":visible") && o.trigger("focus")
|
||||
})
|
||||
}), e.call(s, a, this)
|
||||
})
|
||||
}(jQuery), function (t) {
|
||||
"use strict";
|
||||
var e = function (t, e) {
|
||||
this.type = null, this.options = null, this.enabled = null, this.timeout = null, this.hoverState = null, this.$element = null, this.inState = null, this.init("tooltip", t, e)
|
||||
};
|
||||
e.VERSION = "3.3.7", e.TRANSITION_DURATION = 150, e.DEFAULTS = {
|
||||
animation: !0,
|
||||
placement: "top",
|
||||
selector: !1,
|
||||
template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
|
||||
trigger: "hover focus",
|
||||
title: "",
|
||||
delay: 0,
|
||||
html: !1,
|
||||
container: !1,
|
||||
viewport: {selector: "body", padding: 0}
|
||||
}, e.prototype.init = function (e, i, o) {
|
||||
if (this.enabled = !0, this.type = e, this.$element = t(i), this.options = this.getOptions(o), this.$viewport = this.options.viewport && t(t.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : this.options.viewport.selector || this.options.viewport), this.inState = {
|
||||
click: !1,
|
||||
hover: !1,
|
||||
focus: !1
|
||||
}, this.$element[0] instanceof document.constructor && !this.options.selector) throw new Error("`selector` option must be specified when initializing " + this.type + " on the window.document object!");
|
||||
for (var n = this.options.trigger.split(" "), s = n.length; s--;) {
|
||||
var a = n[s];
|
||||
if ("click" == a) this.$element.on("click." + this.type, this.options.selector, t.proxy(this.toggle, this)); else if ("manual" != a) {
|
||||
var r = "hover" == a ? "mouseenter" : "focusin", l = "hover" == a ? "mouseleave" : "focusout";
|
||||
this.$element.on(r + "." + this.type, this.options.selector, t.proxy(this.enter, this)), this.$element.on(l + "." + this.type, this.options.selector, t.proxy(this.leave, this))
|
||||
}
|
||||
}
|
||||
this.options.selector ? this._options = t.extend({}, this.options, {
|
||||
trigger: "manual",
|
||||
selector: ""
|
||||
}) : this.fixTitle()
|
||||
}, e.prototype.getDefaults = function () {
|
||||
return e.DEFAULTS
|
||||
}, e.prototype.getOptions = function (e) {
|
||||
return (e = t.extend({}, this.getDefaults(), this.$element.data(), e)).delay && "number" == typeof e.delay && (e.delay = {
|
||||
show: e.delay,
|
||||
hide: e.delay
|
||||
}), e
|
||||
}, e.prototype.getDelegateOptions = function () {
|
||||
var e = {}, i = this.getDefaults();
|
||||
return this._options && t.each(this._options, function (t, o) {
|
||||
i[t] != o && (e[t] = o)
|
||||
}), e
|
||||
}, e.prototype.enter = function (e) {
|
||||
var i = e instanceof this.constructor ? e : t(e.currentTarget).data("bs." + this.type);
|
||||
if (i || (i = new this.constructor(e.currentTarget, this.getDelegateOptions()), t(e.currentTarget).data("bs." + this.type, i)), e instanceof t.Event && (i.inState["focusin" == e.type ? "focus" : "hover"] = !0), i.tip().hasClass("in") || "in" == i.hoverState) i.hoverState = "in"; else {
|
||||
if (clearTimeout(i.timeout), i.hoverState = "in", !i.options.delay || !i.options.delay.show) return i.show();
|
||||
i.timeout = setTimeout(function () {
|
||||
"in" == i.hoverState && i.show()
|
||||
}, i.options.delay.show)
|
||||
}
|
||||
}, e.prototype.isInStateTrue = function () {
|
||||
for (var t in this.inState) if (this.inState[t]) return !0;
|
||||
return !1
|
||||
}, e.prototype.leave = function (e) {
|
||||
var i = e instanceof this.constructor ? e : t(e.currentTarget).data("bs." + this.type);
|
||||
if (i || (i = new this.constructor(e.currentTarget, this.getDelegateOptions()), t(e.currentTarget).data("bs." + this.type, i)), e instanceof t.Event && (i.inState["focusout" == e.type ? "focus" : "hover"] = !1), !i.isInStateTrue()) {
|
||||
if (clearTimeout(i.timeout), i.hoverState = "out", !i.options.delay || !i.options.delay.hide) return i.hide();
|
||||
i.timeout = setTimeout(function () {
|
||||
"out" == i.hoverState && i.hide()
|
||||
}, i.options.delay.hide)
|
||||
}
|
||||
}, e.prototype.show = function () {
|
||||
var i = t.Event("show.bs." + this.type);
|
||||
if (this.hasContent() && this.enabled) {
|
||||
this.$element.trigger(i);
|
||||
var o = t.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]);
|
||||
if (i.isDefaultPrevented() || !o) return;
|
||||
var n = this, s = this.tip(), a = this.getUID(this.type);
|
||||
this.setContent(), s.attr("id", a), this.$element.attr("aria-describedby", a), this.options.animation && s.addClass("fade");
|
||||
var r = "function" == typeof this.options.placement ? this.options.placement.call(this, s[0], this.$element[0]) : this.options.placement,
|
||||
l = /\s?auto?\s?/i, h = l.test(r);
|
||||
h && (r = r.replace(l, "") || "top"), s.detach().css({
|
||||
top: 0,
|
||||
left: 0,
|
||||
display: "block"
|
||||
}).addClass(r).data("bs." + this.type, this), this.options.container ? s.appendTo(this.options.container) : s.insertAfter(this.$element), this.$element.trigger("inserted.bs." + this.type);
|
||||
var d = this.getPosition(), p = s[0].offsetWidth, c = s[0].offsetHeight;
|
||||
if (h) {
|
||||
var f = r, u = this.getPosition(this.$viewport);
|
||||
r = "bottom" == r && d.bottom + c > u.bottom ? "top" : "top" == r && d.top - c < u.top ? "bottom" : "right" == r && d.right + p > u.width ? "left" : "left" == r && d.left - p < u.left ? "right" : r, s.removeClass(f).addClass(r)
|
||||
}
|
||||
var g = this.getCalculatedOffset(r, d, p, c);
|
||||
this.applyPlacement(g, r);
|
||||
var m = function () {
|
||||
var t = n.hoverState;
|
||||
n.$element.trigger("shown.bs." + n.type), n.hoverState = null, "out" == t && n.leave(n)
|
||||
};
|
||||
t.support.transition && this.$tip.hasClass("fade") ? s.one("bsTransitionEnd", m).emulateTransitionEnd(e.TRANSITION_DURATION) : m()
|
||||
}
|
||||
}, e.prototype.applyPlacement = function (e, i) {
|
||||
var o = this.tip(), n = o[0].offsetWidth, s = o[0].offsetHeight, a = parseInt(o.css("margin-top"), 10),
|
||||
r = parseInt(o.css("margin-left"), 10);
|
||||
isNaN(a) && (a = 0), isNaN(r) && (r = 0), e.top += a, e.left += r, t.offset.setOffset(o[0], t.extend({
|
||||
using: function (t) {
|
||||
o.css({top: Math.round(t.top), left: Math.round(t.left)})
|
||||
}
|
||||
}, e), 0), o.addClass("in");
|
||||
var l = o[0].offsetWidth, h = o[0].offsetHeight;
|
||||
"top" == i && h != s && (e.top = e.top + s - h);
|
||||
var d = this.getViewportAdjustedDelta(i, e, l, h);
|
||||
d.left ? e.left += d.left : e.top += d.top;
|
||||
var p = /top|bottom/.test(i), c = p ? 2 * d.left - n + l : 2 * d.top - s + h,
|
||||
f = p ? "offsetWidth" : "offsetHeight";
|
||||
o.offset(e), this.replaceArrow(c, o[0][f], p)
|
||||
}, e.prototype.replaceArrow = function (t, e, i) {
|
||||
this.arrow().css(i ? "left" : "top", 50 * (1 - t / e) + "%").css(i ? "top" : "left", "")
|
||||
}, e.prototype.setContent = function () {
|
||||
var t = this.tip(), e = this.getTitle();
|
||||
t.find(".tooltip-inner")[this.options.html ? "html" : "text"](e), t.removeClass("fade in top bottom left right")
|
||||
}, e.prototype.hide = function (i) {
|
||||
function o() {
|
||||
"in" != n.hoverState && s.detach(), n.$element && n.$element.removeAttr("aria-describedby").trigger("hidden.bs." + n.type), i && i()
|
||||
}
|
||||
|
||||
var n = this, s = t(this.$tip), a = t.Event("hide.bs." + this.type);
|
||||
if (this.$element.trigger(a), !a.isDefaultPrevented()) return s.removeClass("in"), t.support.transition && s.hasClass("fade") ? s.one("bsTransitionEnd", o).emulateTransitionEnd(e.TRANSITION_DURATION) : o(), this.hoverState = null, this
|
||||
}, e.prototype.fixTitle = function () {
|
||||
var t = this.$element;
|
||||
(t.attr("title") || "string" != typeof t.attr("data-original-title")) && t.attr("data-original-title", t.attr("title") || "").attr("title", "")
|
||||
}, e.prototype.hasContent = function () {
|
||||
return this.getTitle()
|
||||
}, e.prototype.getPosition = function (e) {
|
||||
var i = (e = e || this.$element)[0], o = "BODY" == i.tagName, n = i.getBoundingClientRect();
|
||||
null == n.width && (n = t.extend({}, n, {width: n.right - n.left, height: n.bottom - n.top}));
|
||||
var s = window.SVGElement && i instanceof window.SVGElement, a = o ? {top: 0, left: 0} : s ? null : e.offset(),
|
||||
r = {scroll: o ? document.documentElement.scrollTop || document.body.scrollTop : e.scrollTop()},
|
||||
l = o ? {width: t(window).width(), height: t(window).height()} : null;
|
||||
return t.extend({}, n, r, l, a)
|
||||
}, e.prototype.getCalculatedOffset = function (t, e, i, o) {
|
||||
return "bottom" == t ? {
|
||||
top: e.top + e.height,
|
||||
left: e.left + e.width / 2 - i / 2
|
||||
} : "top" == t ? {
|
||||
top: e.top - o,
|
||||
left: e.left + e.width / 2 - i / 2
|
||||
} : "left" == t ? {top: e.top + e.height / 2 - o / 2, left: e.left - i} : {
|
||||
top: e.top + e.height / 2 - o / 2,
|
||||
left: e.left + e.width
|
||||
}
|
||||
}, e.prototype.getViewportAdjustedDelta = function (t, e, i, o) {
|
||||
var n = {top: 0, left: 0};
|
||||
if (!this.$viewport) return n;
|
||||
var s = this.options.viewport && this.options.viewport.padding || 0, a = this.getPosition(this.$viewport);
|
||||
if (/right|left/.test(t)) {
|
||||
var r = e.top - s - a.scroll, l = e.top + s - a.scroll + o;
|
||||
r < a.top ? n.top = a.top - r : l > a.top + a.height && (n.top = a.top + a.height - l)
|
||||
} else {
|
||||
var h = e.left - s, d = e.left + s + i;
|
||||
h < a.left ? n.left = a.left - h : d > a.right && (n.left = a.left + a.width - d)
|
||||
}
|
||||
return n
|
||||
}, e.prototype.getTitle = function () {
|
||||
var t = this.$element, e = this.options;
|
||||
return t.attr("data-original-title") || ("function" == typeof e.title ? e.title.call(t[0]) : e.title)
|
||||
}, e.prototype.getUID = function (t) {
|
||||
do {
|
||||
t += ~~(1e6 * Math.random())
|
||||
} while (document.getElementById(t));
|
||||
return t
|
||||
}, e.prototype.tip = function () {
|
||||
if (!this.$tip && (this.$tip = t(this.options.template), 1 != this.$tip.length)) throw new Error(this.type + " `template` option must consist of exactly 1 top-level element!");
|
||||
return this.$tip
|
||||
}, e.prototype.arrow = function () {
|
||||
return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
|
||||
}, e.prototype.enable = function () {
|
||||
this.enabled = !0
|
||||
}, e.prototype.disable = function () {
|
||||
this.enabled = !1
|
||||
}, e.prototype.toggleEnabled = function () {
|
||||
this.enabled = !this.enabled
|
||||
}, e.prototype.toggle = function (e) {
|
||||
var i = this;
|
||||
e && ((i = t(e.currentTarget).data("bs." + this.type)) || (i = new this.constructor(e.currentTarget, this.getDelegateOptions()), t(e.currentTarget).data("bs." + this.type, i))), e ? (i.inState.click = !i.inState.click, i.isInStateTrue() ? i.enter(i) : i.leave(i)) : i.tip().hasClass("in") ? i.leave(i) : i.enter(i)
|
||||
}, e.prototype.destroy = function () {
|
||||
var t = this;
|
||||
clearTimeout(this.timeout), this.hide(function () {
|
||||
t.$element.off("." + t.type).removeData("bs." + t.type), t.$tip && t.$tip.detach(), t.$tip = null, t.$arrow = null, t.$viewport = null, t.$element = null
|
||||
})
|
||||
};
|
||||
var i = t.fn.tooltip;
|
||||
t.fn.tooltip = function (i) {
|
||||
return this.each(function () {
|
||||
var o = t(this), n = o.data("bs.tooltip"), s = "object" == typeof i && i;
|
||||
!n && /destroy|hide/.test(i) || (n || o.data("bs.tooltip", n = new e(this, s)), "string" == typeof i && n[i]())
|
||||
})
|
||||
}, t.fn.tooltip.Constructor = e, t.fn.tooltip.noConflict = function () {
|
||||
return t.fn.tooltip = i, this
|
||||
}
|
||||
}(jQuery), function (t) {
|
||||
"use strict";
|
||||
var e = function (t, e) {
|
||||
this.init("popover", t, e)
|
||||
};
|
||||
if (!t.fn.tooltip) throw new Error("Popover requires tooltip.js");
|
||||
e.VERSION = "3.3.7", e.DEFAULTS = t.extend({}, t.fn.tooltip.Constructor.DEFAULTS, {
|
||||
placement: "right",
|
||||
trigger: "click",
|
||||
content: "",
|
||||
template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
|
||||
}), e.prototype = t.extend({}, t.fn.tooltip.Constructor.prototype), e.prototype.constructor = e, e.prototype.getDefaults = function () {
|
||||
return e.DEFAULTS
|
||||
}, e.prototype.setContent = function () {
|
||||
var t = this.tip(), e = this.getTitle(), i = this.getContent();
|
||||
t.find(".popover-title")[this.options.html ? "html" : "text"](e), t.find(".popover-content").children().detach().end()[this.options.html ? "string" == typeof i ? "html" : "append" : "text"](i), t.removeClass("fade top bottom left right in"), t.find(".popover-title").html() || t.find(".popover-title").hide()
|
||||
}, e.prototype.hasContent = function () {
|
||||
return this.getTitle() || this.getContent()
|
||||
}, e.prototype.getContent = function () {
|
||||
var t = this.$element, e = this.options;
|
||||
return t.attr("data-content") || ("function" == typeof e.content ? e.content.call(t[0]) : e.content)
|
||||
}, e.prototype.arrow = function () {
|
||||
return this.$arrow = this.$arrow || this.tip().find(".arrow")
|
||||
};
|
||||
var i = t.fn.popover;
|
||||
t.fn.popover = function (i) {
|
||||
return this.each(function () {
|
||||
var o = t(this), n = o.data("bs.popover"), s = "object" == typeof i && i;
|
||||
!n && /destroy|hide/.test(i) || (n || o.data("bs.popover", n = new e(this, s)), "string" == typeof i && n[i]())
|
||||
})
|
||||
}, t.fn.popover.Constructor = e, t.fn.popover.noConflict = function () {
|
||||
return t.fn.popover = i, this
|
||||
}
|
||||
}(jQuery), function (t) {
|
||||
"use strict";
|
||||
|
||||
function e(i, o) {
|
||||
this.$body = t(document.body), this.$scrollElement = t(t(i).is(document.body) ? window : i), this.options = t.extend({}, e.DEFAULTS, o), this.selector = (this.options.target || "") + " .nav li > a", this.offsets = [], this.targets = [], this.activeTarget = null, this.scrollHeight = 0, this.$scrollElement.on("scroll.bs.scrollspy", t.proxy(this.process, this)), this.refresh(), this.process()
|
||||
}
|
||||
|
||||
function i(i) {
|
||||
return this.each(function () {
|
||||
var o = t(this), n = o.data("bs.scrollspy"), s = "object" == typeof i && i;
|
||||
n || o.data("bs.scrollspy", n = new e(this, s)), "string" == typeof i && n[i]()
|
||||
})
|
||||
}
|
||||
|
||||
e.VERSION = "3.3.7", e.DEFAULTS = {offset: 10}, e.prototype.getScrollHeight = function () {
|
||||
return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
|
||||
}, e.prototype.refresh = function () {
|
||||
var e = this, i = "offset", o = 0;
|
||||
this.offsets = [], this.targets = [], this.scrollHeight = this.getScrollHeight(), t.isWindow(this.$scrollElement[0]) || (i = "position", o = this.$scrollElement.scrollTop()), this.$body.find(this.selector).map(function () {
|
||||
var e = t(this), n = e.data("target") || e.attr("href"), s = /^#./.test(n) && t(n);
|
||||
return s && s.length && s.is(":visible") && [[s[i]().top + o, n]] || null
|
||||
}).sort(function (t, e) {
|
||||
return t[0] - e[0]
|
||||
}).each(function () {
|
||||
e.offsets.push(this[0]), e.targets.push(this[1])
|
||||
})
|
||||
}, e.prototype.process = function () {
|
||||
var t, e = this.$scrollElement.scrollTop() + this.options.offset, i = this.getScrollHeight(),
|
||||
o = this.options.offset + i - this.$scrollElement.height(), n = this.offsets, s = this.targets,
|
||||
a = this.activeTarget;
|
||||
if (this.scrollHeight != i && this.refresh(), e >= o) return a != (t = s[s.length - 1]) && this.activate(t);
|
||||
if (a && e < n[0]) return this.activeTarget = null, this.clear();
|
||||
for (t = n.length; t--;) a != s[t] && e >= n[t] && (void 0 === n[t + 1] || e < n[t + 1]) && this.activate(s[t])
|
||||
}, e.prototype.activate = function (e) {
|
||||
this.activeTarget = e, this.clear();
|
||||
var i = this.selector + '[data-target="' + e + '"],' + this.selector + '[href="' + e + '"]',
|
||||
o = t(i).parents("li").addClass("active");
|
||||
o.parent(".dropdown-menu").length && (o = o.closest("li.dropdown").addClass("active")), o.trigger("activate.bs.scrollspy")
|
||||
}, e.prototype.clear = function () {
|
||||
t(this.selector).parentsUntil(this.options.target, ".active").removeClass("active")
|
||||
};
|
||||
var o = t.fn.scrollspy;
|
||||
t.fn.scrollspy = i, t.fn.scrollspy.Constructor = e, t.fn.scrollspy.noConflict = function () {
|
||||
return t.fn.scrollspy = o, this
|
||||
}, t(window).on("load.bs.scrollspy.data-api", function () {
|
||||
t('[data-spy="scroll"]').each(function () {
|
||||
var e = t(this);
|
||||
i.call(e, e.data())
|
||||
})
|
||||
})
|
||||
}(jQuery), function (t) {
|
||||
"use strict";
|
||||
|
||||
function e(e) {
|
||||
return this.each(function () {
|
||||
var o = t(this), n = o.data("bs.tab");
|
||||
n || o.data("bs.tab", n = new i(this)), "string" == typeof e && n[e]()
|
||||
})
|
||||
}
|
||||
|
||||
var i = function (e) {
|
||||
this.element = t(e)
|
||||
};
|
||||
i.VERSION = "3.3.7", i.TRANSITION_DURATION = 150, i.prototype.show = function () {
|
||||
var e = this.element, i = e.closest("ul:not(.dropdown-menu)"), o = e.data("target");
|
||||
if (o || (o = (o = e.attr("href")) && o.replace(/.*(?=#[^\s]*$)/, "")), !e.parent("li").hasClass("active")) {
|
||||
var n = i.find(".active:last a"), s = t.Event("hide.bs.tab", {relatedTarget: e[0]}),
|
||||
a = t.Event("show.bs.tab", {relatedTarget: n[0]});
|
||||
if (n.trigger(s), e.trigger(a), !a.isDefaultPrevented() && !s.isDefaultPrevented()) {
|
||||
var r = t(o);
|
||||
this.activate(e.closest("li"), i), this.activate(r, r.parent(), function () {
|
||||
n.trigger({type: "hidden.bs.tab", relatedTarget: e[0]}), e.trigger({
|
||||
type: "shown.bs.tab",
|
||||
relatedTarget: n[0]
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}, i.prototype.activate = function (e, o, n) {
|
||||
function s() {
|
||||
a.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !1), e.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded", !0), r ? (e[0].offsetWidth, e.addClass("in")) : e.removeClass("fade"), e.parent(".dropdown-menu").length && e.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !0), n && n()
|
||||
}
|
||||
|
||||
var a = o.find("> .active"),
|
||||
r = n && t.support.transition && (a.length && a.hasClass("fade") || !!o.find("> .fade").length);
|
||||
a.length && r ? a.one("bsTransitionEnd", s).emulateTransitionEnd(i.TRANSITION_DURATION) : s(), a.removeClass("in")
|
||||
};
|
||||
var o = t.fn.tab;
|
||||
t.fn.tab = e, t.fn.tab.Constructor = i, t.fn.tab.noConflict = function () {
|
||||
return t.fn.tab = o, this
|
||||
};
|
||||
var n = function (i) {
|
||||
i.preventDefault(), e.call(t(this), "show")
|
||||
};
|
||||
t(document).on("click.bs.tab.data-api", '[data-toggle="tab"]', n).on("click.bs.tab.data-api", '[data-toggle="pill"]', n)
|
||||
}(jQuery), function (t) {
|
||||
"use strict";
|
||||
|
||||
function e(e) {
|
||||
return this.each(function () {
|
||||
var o = t(this), n = o.data("bs.affix"), s = "object" == typeof e && e;
|
||||
n || o.data("bs.affix", n = new i(this, s)), "string" == typeof e && n[e]()
|
||||
})
|
||||
}
|
||||
|
||||
var i = function (e, o) {
|
||||
this.options = t.extend({}, i.DEFAULTS, o), this.$target = t(this.options.target).on("scroll.bs.affix.data-api", t.proxy(this.checkPosition, this)).on("click.bs.affix.data-api", t.proxy(this.checkPositionWithEventLoop, this)), this.$element = t(e), this.affixed = null, this.unpin = null, this.pinnedOffset = null, this.checkPosition()
|
||||
};
|
||||
i.VERSION = "3.3.7", i.RESET = "affix affix-top affix-bottom", i.DEFAULTS = {
|
||||
offset: 0,
|
||||
target: window
|
||||
}, i.prototype.getState = function (t, e, i, o) {
|
||||
var n = this.$target.scrollTop(), s = this.$element.offset(), a = this.$target.height();
|
||||
if (null != i && "top" == this.affixed) return n < i && "top";
|
||||
if ("bottom" == this.affixed) return null != i ? !(n + this.unpin <= s.top) && "bottom" : !(n + a <= t - o) && "bottom";
|
||||
var r = null == this.affixed, l = r ? n : s.top;
|
||||
return null != i && n <= i ? "top" : null != o && l + (r ? a : e) >= t - o && "bottom"
|
||||
}, i.prototype.getPinnedOffset = function () {
|
||||
if (this.pinnedOffset) return this.pinnedOffset;
|
||||
this.$element.removeClass(i.RESET).addClass("affix");
|
||||
var t = this.$target.scrollTop(), e = this.$element.offset();
|
||||
return this.pinnedOffset = e.top - t
|
||||
}, i.prototype.checkPositionWithEventLoop = function () {
|
||||
setTimeout(t.proxy(this.checkPosition, this), 1)
|
||||
}, i.prototype.checkPosition = function () {
|
||||
if (this.$element.is(":visible")) {
|
||||
var e = this.$element.height(), o = this.options.offset, n = o.top, s = o.bottom,
|
||||
a = Math.max(t(document).height(), t(document.body).height());
|
||||
"object" != typeof o && (s = n = o), "function" == typeof n && (n = o.top(this.$element)), "function" == typeof s && (s = o.bottom(this.$element));
|
||||
var r = this.getState(a, e, n, s);
|
||||
if (this.affixed != r) {
|
||||
null != this.unpin && this.$element.css("top", "");
|
||||
var l = "affix" + (r ? "-" + r : ""), h = t.Event(l + ".bs.affix");
|
||||
if (this.$element.trigger(h), h.isDefaultPrevented()) return;
|
||||
this.affixed = r, this.unpin = "bottom" == r ? this.getPinnedOffset() : null, this.$element.removeClass(i.RESET).addClass(l).trigger(l.replace("affix", "affixed") + ".bs.affix")
|
||||
}
|
||||
"bottom" == r && this.$element.offset({top: a - e - s})
|
||||
}
|
||||
};
|
||||
var o = t.fn.affix;
|
||||
t.fn.affix = e, t.fn.affix.Constructor = i, t.fn.affix.noConflict = function () {
|
||||
return t.fn.affix = o, this
|
||||
}, t(window).on("load", function () {
|
||||
t('[data-spy="affix"]').each(function () {
|
||||
var i = t(this), o = i.data();
|
||||
o.offset = o.offset || {}, null != o.offsetBottom && (o.offset.bottom = o.offsetBottom), null != o.offsetTop && (o.offset.top = o.offsetTop), e.call(i, o)
|
||||
})
|
||||
})
|
||||
}(jQuery);
|
||||
|
After Width: | Height: | Size: 6.7 KiB |
@@ -0,0 +1,2 @@
|
||||
User-agent: *
|
||||
Disallow: /impressum.php
|
||||