From cf24b36ef61a6ffb7d9aebd9d4582224c94c9e32 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 30 Mar 2020 14:30:19 +0200
Subject: [PATCH] added customization files

---
 .../themes/fancytheme/core/loginuserpass.php  |  75 +++++++++++
 .../themes/fancytheme/includes/footer.php     |  24 ++++
 .../themes/fancytheme/includes/header.php     | 123 ++++++++++++++++++
 3 files changed, 222 insertions(+)
 create mode 100644 mymodule/themes/fancytheme/core/loginuserpass.php
 create mode 100644 mymodule/themes/fancytheme/includes/footer.php
 create mode 100644 mymodule/themes/fancytheme/includes/header.php

diff --git a/mymodule/themes/fancytheme/core/loginuserpass.php b/mymodule/themes/fancytheme/core/loginuserpass.php
new file mode 100644
index 0000000..e271ca7
--- /dev/null
+++ b/mymodule/themes/fancytheme/core/loginuserpass.php
@@ -0,0 +1,75 @@
+<?php
+$this->data['header'] = $this->t('{login:user_pass_header}');
+
+if (strlen($this->data['username']) > 0) {
+    $this->data['autofocus'] = 'password';
+} else {
+    $this->data['autofocus'] = 'username';
+}
+$this->includeAtTemplateBase('includes/header.php');
+
+if ($this->data['errorcode'] !== null) {
+?>
+    <div style="border-left: 1px solid #e8e8e8; border-bottom: 1px solid #e8e8e8; background: #f5f5f5">
+        <img src="/<?php echo $this->data['baseurlpath']; ?>resources/icons/experience/gtk-dialog-error.48x48.png"
+             class="float-l erroricon" style="margin: 15px" alt=""/>
+
+        <h2><?php echo $this->t('{login:error_header}'); ?></h2>
+
+        <p><strong>
+        <?php
+            echo htmlspecialchars(
+                $this->t(
+                    $this->data['errorcodes']['title'][$this->data['errorcode']],
+                    $this->data['errorparams']
+                )
+            );
+        ?>
+        </strong></p>
+        <p>
+        <?php
+            echo htmlspecialchars(
+                $this->t(
+                    $this->data['errorcodes']['descr'][$this->data['errorcode']],
+                    $this->data['errorparams']
+                )
+            );
+        ?>
+        </p>
+    </div>
+<?php
+}
+?>
+    <div class="container">
+<br/>
+    <form action="?" method="post" name="f" class="form-signin">
+			<img src="/images/demo/m4lab_logo.jpg" class="img-responsive center-block" width="185" height="192"/>
+		    	<br/>
+		        <input type="text" id="username" name="username" placeholder="Email" class="form-control"/>
+		        <br/>
+		        <input type="password" placeholder="Password" id="password" name="password" class="form-control"/> <br/>
+		        <button id="submit_button" class="btn btn-outline-dark btn-block" name="Submit" value="Login" type="Submit"
+		                >Login</button>
+        <input type="hidden" id="processing_trans" value="<?php echo $this->t('{login:processing}'); ?>" />
+        <?php
+        foreach ($this->data['stateparams'] as $name => $value) {
+            echo '<input type="hidden" name="'.htmlspecialchars($name).'" value="'.htmlspecialchars($value).'" />';
+        }
+        ?>
+    </form>
+
+    <p align="middle">Need an account? <a href="https://m4lab.hft-stuttgart.de/account/registration">Signup</a>. Or go <a href="https://transfer.hft-stuttgart.de/">Home</a>.</p>
+    <p align="middle"><a href="https://m4lab.hft-stuttgart.de/account/forgotPwd">Reset Password</a></p>
+</div>
+
+<?php
+if (!empty($this->data['links'])) {
+    echo '<ul class="links" style="margin-top: 2em">';
+    foreach ($this->data['links'] as $l) {
+        echo '<li><a href="'.htmlspecialchars($l['href']).'">'.htmlspecialchars($this->t($l['text'])).'</a></li>';
+    }
+    echo '</ul>';
+}
+
+$this->includeAtTemplateBase('includes/footer.php');
+
diff --git a/mymodule/themes/fancytheme/includes/footer.php b/mymodule/themes/fancytheme/includes/footer.php
new file mode 100644
index 0000000..82827ad
--- /dev/null
+++ b/mymodule/themes/fancytheme/includes/footer.php
@@ -0,0 +1,24 @@
+<?php
+if (!empty($this->data['htmlinject']['htmlContentPost'])) {
+    foreach ($this->data['htmlinject']['htmlContentPost'] as $c) {
+        echo $c;
+    }
+}
+?>
+
+    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
+    <script src="/js/headfoot.js"></script>
+
+
+            </div><!-- #content -->
+            <div id="footer">
+                <hr />
+                <img src="/<?php echo $this->data['baseurlpath']; ?>resources/icons/ssplogo-fish-small.png" alt="Small fish logo" style="float: right" />		
+                    Copyright &copy; 2007-2019 <a href="http://uninett.no/">UNINETT AS</a>
+
+                <br style="clear: right" />
+
+            </div><!-- #footer -->
+        </div><!-- #wrap -->
+    </body>
+</html>
diff --git a/mymodule/themes/fancytheme/includes/header.php b/mymodule/themes/fancytheme/includes/header.php
new file mode 100644
index 0000000..7a6d839
--- /dev/null
+++ b/mymodule/themes/fancytheme/includes/header.php
@@ -0,0 +1,123 @@
+<?php
+
+/**
+ * Support the htmlinject hook, which allows modules to change header, pre and post body on all pages.
+ */
+$this->data['htmlinject'] = [
+    'htmlContentPre' => [],
+    'htmlContentPost' => [],
+    'htmlContentHead' => [],
+];
+
+$jquery = [];
+if (array_key_exists('jquery', $this->data)) {
+    $jquery = $this->data['jquery'];
+}
+
+if (array_key_exists('pageid', $this->data)) {
+    $hookinfo = [
+        'pre' => &$this->data['htmlinject']['htmlContentPre'],
+        'post' => &$this->data['htmlinject']['htmlContentPost'],
+        'head' => &$this->data['htmlinject']['htmlContentHead'],
+        'jquery' => &$jquery,
+        'page' => $this->data['pageid']
+    ];
+
+    SimpleSAML\Module::callHooks('htmlinject', $hookinfo);
+}
+// - o - o - o - o - o - o - o - o - o - o - o - o -
+
+/**
+ * Do not allow to frame SimpleSAMLphp pages from another location.
+ * This prevents clickjacking attacks in modern browsers.
+ *
+ * If you don't want any framing at all you can even change this to
+ * 'DENY', or comment it out if you actually want to allow foreign
+ * sites to put SimpleSAMLphp in a frame. The latter is however
+ * probably not a good security practice.
+ */
+header('X-Frame-Options: SAMEORIGIN');
+
+?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<script type="text/javascript" src="/<?php echo $this->data['baseurlpath']; ?>resources/script.js"></script>
+<!-- <link rel="stylesheet" type="text/css" href="/<?php echo $this->data['baseurlpath']; ?>resources/default.css" /> -->
+<link rel="icon" type="image/icon" href="/<?php echo $this->data['baseurlpath']; ?>resources/icons/favicon.ico" />
+<title>M4_LAB: User Login</title>
+<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
+<link rel="stylesheet" type="text/css" href="/css/bootstrap/bootstrap.css"/>
+<link rel="stylesheet" type="text/css" href="/css/custom/login.css"/>
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.2/css/all.css" integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay" crossorigin="anonymous">
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
+<?php
+
+if (!empty($jquery)) {
+    $version = '1.8';
+    if (array_key_exists('version', $jquery)) {
+        $version = $jquery['version'];
+    }
+
+    if ($version == '1.8') {
+        if (isset($jquery['core']) && $jquery['core']) {
+            echo '<script type="text/javascript" src="/'.$this->data['baseurlpath'].'resources/jquery-1.8.js"></script>'."\n";
+        }
+
+        if (isset($jquery['ui']) && $jquery['ui']) {
+            echo '<script type="text/javascript" src="/'.$this->data['baseurlpath'].'resources/jquery-ui-1.8.js"></script>'."\n";
+        }
+
+        if (isset($jquery['css']) && $jquery['css']) {
+            echo '<link rel="stylesheet" media="screen" type="text/css" href="/'.$this->data['baseurlpath'].
+                'resources/uitheme1.8/jquery-ui.css" />'."\n";
+        }
+    }
+}
+
+if (isset($this->data['clipboard.js'])) {
+    echo '<script type="text/javascript" src="/'.$this->data['baseurlpath'].'resources/clipboard.min.js"></script>'."\n";
+}
+
+if (!empty($this->data['htmlinject']['htmlContentHead'])) {
+    foreach ($this->data['htmlinject']['htmlContentHead'] as $c) {
+        echo $c;
+    }
+}
+
+if ($this->isLanguageRTL()) {
+    ?>
+    <link rel="stylesheet" type="text/css" href="/<?php echo $this->data['baseurlpath']; ?>resources/default-rtl.css" />
+<?php
+}
+?>
+    <meta name="robots" content="noindex, nofollow" />
+
+<?php
+if (array_key_exists('head', $this->data)) {
+    echo '<!-- head -->'.$this->data['head'].'<!-- /head -->';
+}
+?>
+</head>
+<?php
+$onLoad = '';
+if (array_key_exists('autofocus', $this->data)) {
+    $onLoad .= ' onload="SimpleSAML_focus(\''.$this->data['autofocus'].'\');"';
+}
+?>
+<body class="text-center"  <?php echo $onLoad; ?>>
+
+    <div id="content">
+
+<?php
+
+if (!empty($this->data['htmlinject']['htmlContentPre'])) {
+    foreach ($this->data['htmlinject']['htmlContentPre'] as $c) {
+        echo $c;
+    }
+}
+$config = \SimpleSAML\Configuration::getInstance();
+if(! $config->getBoolean('production', true)) {
+    echo '<div class="caution">' . $this->t('{preprodwarning:warning:warning}'). '</div>';
+}
-- 
GitLab