Added hook for path rewriting
diff --git a/lib/Kalamar.pm b/lib/Kalamar.pm
index e3f0d31..b4b15e0 100644
--- a/lib/Kalamar.pm
+++ b/lib/Kalamar.pm
@@ -19,6 +19,14 @@
b($self->home . '/kalamar.secret')->slurp->split("\n")
]);
+ $self->hook(before_dispatch => sub {
+ my $c = shift;
+ my $host = $c->req->headers->header('X-Forwarded-Host');
+ if ($host && $host eq 'korap.ids-mannheim.de') {
+ $c->req->url->base->path('/kalamar/');
+ };
+ }) if $self->mode eq 'production';
+
# Add additional plugin path
push(@{$self->plugins->namespaces}, __PACKAGE__ . '::Plugin');
diff --git a/public/kwic-4.0.css b/public/kwic-4.0.css
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/public/kwic-4.0.css
diff --git a/public/style.css b/public/style.css
new file mode 100644
index 0000000..4a7743d
--- /dev/null
+++ b/public/style.css
@@ -0,0 +1,330 @@
+@charset "utf-8";
+
+body, html {
+ color: #666;
+ font-family: verdana, tahoma, arial;
+ text-shadow: 1px 1px rgba(255, 255, 255, 0.4);
+ margin: 0;
+}
+
+a {
+ color: inherit;
+}
+
+#top {
+ background-color: #7ba400;
+ -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
+ -moz-box-sizing: border-box; /* Firefox, other Gecko */
+ box-sizing: border-box; /* Opera/IE 8+ */
+ padding: 0pt;
+ padding-top: 5px;
+ position: relative;
+ height: 70px;
+ padding-left: 30px;
+}
+
+#q-field {
+ -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
+ -moz-box-sizing: border-box; /* Firefox, other Gecko */
+ box-sizing: border-box; /* Opera/IE 8+ */
+}
+
+#button-right {
+ position: absolute;
+ right: 15px;
+ top: 15px;
+}
+
+input, button {
+ border: 2px solid white;
+ padding: 3px;
+ font-size: 11pt;
+}
+
+form {
+ margin-left: 235px;
+ margin-top:0px
+}
+
+form input[type=search] {
+ width: 50%;
+}
+
+a {
+ text-decoration: none;
+}
+
+p.found {
+ font-size: 10pt;
+ padding: 0;
+ margin: 0;
+}
+
+p.found {
+ text-align: right;
+}
+
+#pagination {
+ position: fixed;
+ right: 20px;
+ bottom: 10px;
+ z-index: 800;
+}
+
+#pagination span {
+ display: inline-block;
+ background-color: #ddd;
+ margin: 2pt;
+ height: 1.5em;
+ padding-left: .5em;
+ padding-right: .5em;
+ line-height: 1.5em;
+ text-align: center;
+ border-width: 2px;
+ border-style: solid;
+ border-color: #999;
+ box-shadow: 3px 3px 3px rgba(0,0,0,0.3);
+}
+
+#pagination a {
+ text-shadow: 1px 1px rgba(255, 255, 255, 0.9);
+}
+
+#pagination a[rel=self] span {
+ border-color: #ffa500;
+ background-color: #f4eebb;
+ color: #ff8000;
+}
+
+#pagination a[href] {
+ color: #7ba400;
+}
+
+#pagination a[href] span:hover {
+ background-color: #7ba400;
+ border-color: #496000;
+ color: #496000;
+ text-shadow: none;
+}
+
+#total-results {
+ color: #c1002b;
+}
+
+code.query {
+ background-color: #f4eebb;
+ display: block;
+ border-style: solid;
+ border-color: #ffa500;
+ font-size: 12pt;
+ padding: 2pt;
+ color: #bb6000;
+ font-weight: bold;
+ text-shadow: 1px 1px rgba(255, 255, 255, 0.9);
+ border-width: 2px;
+ margin: 0;
+ margin-bottom: 5pt;
+ cursor: pointer;
+}
+
+code.query.serial:not(.active) span {
+ padding: 2pt;
+}
+
+code.query pre {
+ display: block;
+ padding: 2px 5px;
+ margin: 0;
+}
+
+code.query.serial:not(.active) pre {
+ display: none;
+}
+
+code.query.serial.active span {
+ display: none;
+}
+
+#sidebar.active {
+ margin-left: 0px;
+ left: 0;
+ top: 0;
+}
+
+#sidebar {
+ color: #fff;
+ text-shadow: none;
+ transition: all .3s ease-in-out;
+ position: fixed;
+ z-index: 500;
+ height: 100%;
+ background-color: #496000;
+ width: 260px;
+ margin-left: -245px;
+ left: 0;
+ top: 0;
+}
+
+#sidebar > * {
+ opacity: 0;
+ transition-property: opacity;
+ transition-duration: .3s;
+}
+
+#sidebar:not(.active) > i.fa-bars {
+ opacity: 1;
+ cursor: pointer;
+ background-color: #496000;
+ position: fixed;
+ font-size: 16pt;
+ width: 16pt;
+ height: 17pt;
+ padding: 6pt;
+ bottom: 0;
+ left: 0;
+ border-top-right-radius: 5pt;
+}
+
+#sidebar.active > * {
+ opacity: 1;
+}
+
+#sidebar.active > i.fa-bars {
+ opacity: 0;
+}
+
+#sidebar h2 {
+ font-size: 100%;
+ font-weight: bold;
+ text-align: center;
+ padding: 0;
+ margin: 0 0 5pt 0;
+}
+
+#sidebar ul {
+ list-style-type: none;
+ margin: 0;
+ font-size: 10pt;
+ text-indent: 0;
+ padding: 0;
+}
+
+#sidebar ul li {
+ padding: 4pt 10pt;
+}
+
+#sidebar ul li h3 {
+ font-weight: bold;
+ font-size: 100%;
+ padding: 0;
+ margin: 0;
+}
+
+#sidebar ul li.active h3 {
+ margin-bottom: 2pt;
+ padding-bottom: 2pt;
+ border-bottom: 1px solid black;
+}
+
+#sidebar ul li.active {
+ background-color: #7ba400;
+ text-shadow: 1px 1px rgba(0, 0, 0, 0.4);
+}
+
+dl.info {
+ font-size: 9pt;
+ padding: 0 10pt;
+}
+
+dl.info dt {
+ font-weight: bold;
+ float: left;
+}
+
+dl.info dd {
+ text-align: right;
+}
+
+#tutorial {
+ position: fixed;
+ display: block;
+ z-index: 9999;
+ background-color: #496000;
+ border-radius: 15px;
+ padding: 5px;
+ top: 2%;
+ bottom: 2%;
+ left: 5%;
+ right: 5%;
+}
+
+#tutorial:not(.active) {
+ display: none;
+}
+
+#tutorial.active {
+ display: block;
+}
+
+#tutorial > i,
+#tutorial > a > i {
+ font-size: 20pt;
+ color: #496000;
+ position: absolute;
+ z-index: 100;
+ top: 10pt;
+ right: 20pt;
+ cursor: pointer;
+}
+
+#tutorial > a > i {
+ right: 40pt;
+}
+
+#tutorial iframe {
+ width: 100%;
+ min-height: 100%;
+ border-width: 0;
+ border-radius: 10px;
+ background-image: url('img/crab.svg');
+ background-size: 10%;
+ background-repeat: no-repeat;
+ background-position: center center;
+ background-color: white;
+}
+
+h1 {
+ margin: 0;
+ left: 0;
+ top: 0;
+ background-image: url('/img/korap-logo-solo.svg');
+ position: absolute;
+ width: 260px; /* like sidebars*/
+ height: 68px; /* like #top */
+ z-index: 999;
+ background-repeat: no-repeat;
+ background-position: center center;
+ background-size: 65%;
+}
+
+h1 span {
+ margin-left: -3000px;
+}
+
+#search {
+ margin-bottom: 44px;
+}
+
+#search.match {
+ margin-top: 14pt;
+}
+
+main {
+ margin-left: 30px;
+ margin-right: 14px;
+}
+
+main.embedded {
+ margin-left: 14px;
+ margin-right: 14px;
+}
\ No newline at end of file