From 3bfcbafc84312e5dabf3818ed8502fecd4938e55 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Tue, 26 May 2020 10:09:10 +0200
Subject: [PATCH 01/40] Separate development and testing configuration

---
 app.js           |  2 +-
 config/config.js | 41 +++++++++++++++++++++++++++++++++++++----
 routes/dbconn.js |  2 +-
 routes/mailer.js |  2 +-
 4 files changed, 40 insertions(+), 7 deletions(-)

diff --git a/app.js b/app.js
index 68d3e944..3e4b3a6f 100644
--- a/app.js
+++ b/app.js
@@ -16,7 +16,7 @@ i18n.configure({
   directory: './locales'
 });
 
-var env = process.env.NODE_ENV || 'development';
+var env = process.env.NODE_ENV || 'testing';
 const config = require('./config/config')[env];
 
 var app = express();
diff --git a/config/config.js b/config/config.js
index b4c47761..201291a1 100644
--- a/config/config.js
+++ b/config/config.js
@@ -2,14 +2,48 @@ module.exports = {
   development: {
     app: {
       name: 'User Account Management',
-      port: process.env.PORT || 9989
+      port: process.env.PORT || 9989,
+      host: 'http://localhost:9989'
+    },
+    passport: {
+      strategy: 'saml',
+      saml: {
+        path: process.env.SAML_PATH || '/saml/SSO',
+        entryPoint: process.env.SAML_ENTRY_POINT || 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SSOService.php',
+        issuer: 'sp-account.m4lab.hft-stuttgart.de', //local metadata
+        logoutUrl: 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SingleLogoutService.php'
+      }
+    },
+    database: {
+      host: 'localhost',      	  // DB host
+      user: 'DBManager',          // DB username
+      password: 'Stuttgart2019',  // DB password
+      port: 3306,                 // MySQL port
+      dbUser: 'userdb',           // User DB
+      host_project: 'localhost', // DB host project db
+      dbProject: 'projectDB'     // Project DB
+    },
+    mailer: {
+      host: 'mail.hft-stuttgart.de',  // hostname
+      secureConnection: false,        // TLS requires secureConnection to be false
+      port: 587,                      // port for secure SMTP
+      authUser: 'ad\\support-transfer',
+      authPass: '6laumri2',
+      tlsCiphers: 'SSLv3',
+      from: 'support-transfer@hft-stuttgart.de',
+    }
+  },
+  testing: {
+    app: {
+      name: 'User Account Management',
+      port: process.env.PORT || 9989,
+      host: 'https://m4lab.hft-stuttgart.de/account'
     },
     passport: {
       strategy: 'saml',
       saml: {
         path: process.env.SAML_PATH || '/saml/SSO',
         entryPoint: process.env.SAML_ENTRY_POINT || 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SSOService.php',
-        //issuer: 'sp-account.m4lab.hft-stuttgart.de', //local metadata
         issuer: 'sp-account-testing.m4lab.hft-stuttgart.de', //testing metadata
         //issuer: 'sp-account-prod.m4lab.hft-stuttgart.de', //production metadata
         logoutUrl: 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SingleLogoutService.php'
@@ -22,7 +56,6 @@ module.exports = {
       port: 3306,                 // MySQL port
       dbUser: 'userdb',           // User DB
       host_project: 'm4lab.hft-stuttgart.de', // DB host project db
-      //host_project: 'localhost', // local
       dbProject: 'projectDB'     // Project DB
     },
     mailer: {
@@ -35,4 +68,4 @@ module.exports = {
       from: 'support-transfer@hft-stuttgart.de',
     }
   }
-}
+}
\ No newline at end of file
diff --git a/routes/dbconn.js b/routes/dbconn.js
index 834eb1aa..a39f7368 100644
--- a/routes/dbconn.js
+++ b/routes/dbconn.js
@@ -1,6 +1,6 @@
 const mysql = require('mysql')
 
-var env = process.env.NODE_ENV || 'development';
+var env = process.env.NODE_ENV || 'testing';
 const config = require('../config/config')[env]
 
 // ==== USER ACOOUNT DB CONNECTION ====
diff --git a/routes/mailer.js b/routes/mailer.js
index 510b5bb1..2c51bd7d 100644
--- a/routes/mailer.js
+++ b/routes/mailer.js
@@ -1,6 +1,6 @@
 const nodemailer = require('nodemailer')
 
-var env = process.env.NODE_ENV || 'development';
+var env = process.env.NODE_ENV || 'testing';
 const config = require('../config/config')[env]
 
 var smtpTransport = nodemailer.createTransport({
-- 
GitLab


From e7931881df484091d562e0dcd8e978d8ce530263 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Tue, 26 May 2020 13:45:25 +0200
Subject: [PATCH 02/40] MLAB-129: add user verification mechanism

---
 routes/methods.js                 | 102 +++++++++--
 routes/routes-account.js          | 291 ++++++++++++++++++++++--------
 views/DE/account/home.pug         |  90 ++++++---
 views/DE/account/profile.pug      |  18 +-
 views/DE/account/registration.pug |  22 +--
 views/DE/account/security.pug     |  18 +-
 views/DE/account/services.pug     |  16 +-
 views/DE/account/verification.pug |  35 ++++
 8 files changed, 415 insertions(+), 177 deletions(-)
 create mode 100644 views/DE/account/verification.pug

diff --git a/routes/methods.js b/routes/methods.js
index 9864273b..2ba550d3 100644
--- a/routes/methods.js
+++ b/routes/methods.js
@@ -42,14 +42,26 @@ var methods = {
                                 throw err
                             });
                         }
-                        // COMMIT
-                        dbconn.user.commit(function(err) {
+                        // MLAB-129: INSERT verification token
+                        let verificationData = {
+                            user_id: newUserId,
+                            token: data.verificationToken
+                        }
+                        dbconn.user.query('INSERT INTO verification SET ?', verificationData, function (err, results, fields) {
                             if (err) {
                                 return dbconn.user.rollback(function() {
                                     throw err
                                 });
                             }
-                        });
+                            // COMMIT
+                            dbconn.user.commit(function(err) {
+                                if (err) {
+                                    return dbconn.user.rollback(function() {
+                                        throw err
+                                    })
+                                }
+                            })
+                        })
                     })
                 });
             });
@@ -57,7 +69,7 @@ var methods = {
         })
     },
     getUserByEmail: function(email, callback) {
-        dbconn.user.query('SELECT salutation, title, firstname, lastname, industry, organisation, speciality FROM user WHERE email = "' +email+'"', function (err, rows, fields) {
+        dbconn.user.query('SELECT verificationStatus, salutation, title, firstname, lastname, industry, organisation, speciality FROM user WHERE email = "' +email+'"', function (err, rows, fields) {
             if (err) {
                 throw err;
             }
@@ -70,7 +82,7 @@ var methods = {
         });
     },
 	checkUserEmail: function(email, callback) {
-        var user;
+        let user
         dbconn.user.query('SELECT id, email FROM user WHERE email = "' +email+'"', function (err, rows, fields) {
             if (err) {
                 throw err;
@@ -84,7 +96,7 @@ var methods = {
         });
     },
     getUserByToken: function(token, callback) {
-        var user;
+        let user
         dbconn.user.query('SELECT t1.user_id, t2.email FROM userdb.credential AS t1 INNER JOIN userdb.user AS t2 ON t1.user_id = t2.id AND t1.resetPasswordToken = "'
             +token+'" and resetPasswordExpires > '+Date.now(), function (err, rows, fields) {
                 if (err) {
@@ -100,42 +112,92 @@ var methods = {
             }
         );
     },
-	updateUser: function(userData, callback) {
-		dbconn.user.query('UPDATE user SET ? WHERE email = "' +userData.email+'"', userData, function (err, rows, fields) {
-            if (err) throw err;
-            callback(err);
+	updateUserById: function(userData, callback) {
+		dbconn.user.query('UPDATE user SET ? WHERE id = ' +userData.id, userData, function (err, rows, fields) {
+            if (err) throw err
+            callback(err)
         })
     },
     updateCredential: function(data, callback) {
         dbconn.user.query('UPDATE credential SET ? WHERE user_id = ' +data.user_id, data, function (err, rows, fields) {
-            if (err) throw err;
-            callback(err);
+            if (err) throw err
+            callback(err)
         })
     },
     getUserIdByEmail: function(email, callback) {
-        var userId
+        let userId
         dbconn.user.query('SELECT id FROM user WHERE email = "' +email+'"', function (err, rows, fields) {
             if (err) {
-                throw err;
+                throw err
             }
             else {
                 if ( rows.length > 0) {
-                    userId = rows[0].id;
+                    userId = rows[0].id
                 }
             }
-            callback(userId, err);
+            callback(userId, err)
         });
     },
     getUserProjectRole: function(userId, callback) {
         dbconn.user.query('SELECT project_id, role_id FROM user_project_role WHERE user_id = "' +userId+'"', function (err, rows, fields) {
-            if (err) throw err;
-            callback(rows, err);
+            if (err) throw err
+            callback(rows, err)
         });
     },
     addUserProjectRole: function(data, callback) {
         dbconn.user.query('INSERT INTO user_project_role SET ?', data, function (err, results, fields){
-            if (err) throw err;
-            callback(err);
+            if (err) throw err
+            callback(err)
+        })
+    },
+    getVerificationTokenByUserId: function(userId, callback) {
+        let token
+        dbconn.user.query('SELECT token FROM verification WHERE user_id = "' +userId+'"', function (err, rows, fields) {
+            if (err) {
+                throw err
+            }
+            else {
+                if (rows.length > 0) {
+                    token = rows[0].token
+                }
+            }
+            callback(token, err)
+        })
+    },
+    getUserIdByVerificationToken: function(token, callback) {
+        let userId
+        dbconn.user.query('SELECT user_id FROM verification WHERE token = "' +token+'"', function (err, rows, fields) {
+            if (err) {
+                throw err
+            }
+            else if(rows[0]) {
+                userId = rows[0].user_id
+            }
+            callback(userId, err)
+        })
+    },
+    verifyUserAccount: function(userData, callback) {
+        dbconn.user.beginTransaction(function(err) { // START TRANSACTION
+            if (err) { throw err }
+            // update user status
+            dbconn.user.query('UPDATE user SET ? WHERE id =' +userData.id, userData, function (err, rows, fields) {
+                if (err) {
+                    return dbconn.user.rollback(function() { throw err })
+                }
+                // delete verification token
+                dbconn.user.query('DELETE FROM verification WHERE user_id = '+userData.id, function (err, rows, fields) {
+                    if (err) {
+                        return dbconn.user.rollback(function() { throw err })
+                    }
+                    // COMMIT
+                    dbconn.user.commit(function(err) {
+                        if (err) {
+                            return dbconn.user.rollback(function() { throw err })
+                        }
+                    })
+                })
+            })
+            callback(err)
         })
     },
     // ======================= project db =======================
diff --git a/routes/routes-account.js b/routes/routes-account.js
index 43394cac..fa97820f 100644
--- a/routes/routes-account.js
+++ b/routes/routes-account.js
@@ -142,10 +142,18 @@ module.exports = function (app, config, passport, i18n) {
     if (req.isAuthenticated()) {
       methods.getUserByEmail(req.user.email, function(data, err){
         if (!err) {
-          res.render(lang+'/account/profile', {
-            user: data,
-            email: req.user.email
-          });
+          if (data.verificationStatus == 1) {
+            console.log(data)
+            res.render(lang+'/account/profile', {
+              user: data,
+              email: req.user.email
+            })
+          }
+          else {
+            res.render(lang+'/account/home', {
+              user: data
+            });
+          }
         }
       })
     } else {
@@ -155,63 +163,74 @@ module.exports = function (app, config, passport, i18n) {
 
   app.get('/services', function (req, res) {
     if (req.isAuthenticated()) {
-      async.waterfall([
-        // get userId by email from userdb
-        function(done) {
-          methods.getUserIdByEmail(req.user.email, function(userId, err) {
-            if (!err) {
-              done(err, userId)
-            }
-          })
-        },
-        // get user-project-role from userdb
-        function(userId, done) {
-          methods.getUserProjectRole(userId, function(userProjects, err) {
-            if (!err) {
-              done(err, userProjects)
-            }
-          })
-        },
-        // get all projects from projectdb
-        function(userProjects, done) {
-          methods.getAllProjects(function(projectsOverview, err) {
-            if (!err) {
-              done(err, userProjects, projectsOverview)
-            }
-          })
-        },
-        // create JSON object of projects and user status for front-end
-        function(userProjects, projectsOverview, done) {
-          var allProjects = []  // JSON object
-
-          var userProjectId = []  // array of user's project_id
-          for (var i = 0; i < userProjects.length; i++) {
-            userProjectId.push(userProjects[i].project_id)
+      methods.getUserByEmail(req.user.email, function(data, err){
+        if (!err) {
+          if (data.verificationStatus == 1) {
+            async.waterfall([
+              // get userId by email from userdb
+              function(done) {
+                methods.getUserIdByEmail(req.user.email, function(userId, err) {
+                  if (!err) {
+                    done(err, userId)
+                  }
+                })
+              },
+              // get user-project-role from userdb
+              function(userId, done) {
+                methods.getUserProjectRole(userId, function(userProjects, err) {
+                  if (!err) {
+                    done(err, userProjects)
+                  }
+                })
+              },
+              // get all projects from projectdb
+              function(userProjects, done) {
+                methods.getAllProjects(function(projectsOverview, err) {
+                  if (!err) {
+                    done(err, userProjects, projectsOverview)
+                  }
+                })
+              },
+              // create JSON object of projects and user status for front-end
+              function(userProjects, projectsOverview, done) {
+                var allProjects = []  // JSON object
+      
+                var userProjectId = []  // array of user's project_id
+                for (var i = 0; i < userProjects.length; i++) {
+                  userProjectId.push(userProjects[i].project_id)
+                }
+      
+                for (var i = 0; i < projectsOverview.length; i++) {
+                  // check if projectId is exist in userProjectId[]
+                  var status = false
+                  if (userProjectId.indexOf(projectsOverview[i].id) > -1) {
+                    status = true
+                  }
+                  // add data to JSON object
+                  allProjects.push({
+                    id: projectsOverview[i].id,
+                    title: projectsOverview[i].title,
+                    summary: projectsOverview[i].onelinesummary,
+                    cp: projectsOverview[i].contact_email,
+                    userStatus: status
+                  });
+                }
+      
+                // render the page
+                res.render(lang+'/account/services', {
+                  user: data,
+                  project: allProjects
+                });
+              }
+            ])
           }
-
-          for (var i = 0; i < projectsOverview.length; i++) {
-            // check if projectId is exist in userProjectId[]
-            var status = false
-            if (userProjectId.indexOf(projectsOverview[i].id) > -1) {
-              status = true
-            }
-            // add data to JSON object
-            allProjects.push({
-              id: projectsOverview[i].id,
-              title: projectsOverview[i].title,
-              summary: projectsOverview[i].onelinesummary,
-              cp: projectsOverview[i].contact_email,
-              userStatus: status
+          else {
+            res.render(lang+'/account/home', {
+              user: data
             });
           }
-
-          // render the page
-          res.render(lang+'/account/services', {
-            user: req.user,
-            project: allProjects
-          });
         }
-      ])
+      })
     } else {
       res.redirect('/login');
     }
@@ -219,9 +238,21 @@ module.exports = function (app, config, passport, i18n) {
 
   app.get('/security', function (req, res) {
     if (req.isAuthenticated()) {
-      res.render(lang+'/account/security', {
-        user: req.user // useful for view engine, useless for HTML
-      });
+      methods.getUserByEmail(req.user.email, function(data, err){
+        if (!err) {
+          if (data.verificationStatus == 1) {
+            console.log(data)
+            res.render(lang+'/account/security', {
+              user: data
+            })
+          }
+          else {
+            res.render(lang+'/account/home', {
+              user: data
+            });
+          }
+        }        
+      })
     } else {
       res.redirect('/login');
     }
@@ -474,16 +505,11 @@ module.exports = function (app, config, passport, i18n) {
 
   });
 
-  // todo: user registration with captcha
+  // ============= NEW USERS REGISTRATION ===========================
   app.get('/registration', function(req, res) {
     res.render(lang+'/account/registration')
   })
-
   app.post('/registration', function(req, res) {
-    // TODO:
-    // create gitlab account?
-    // send email to activate profile?
-
     // user data
     var curDate = new Date()
     var userData = {
@@ -497,27 +523,132 @@ module.exports = function (app, config, passport, i18n) {
       speciality: req.body.inputSpeciality,
       createdDate: curDate.toISOString().slice(0,10)
     }
-    // encrypt password
-    bcrypt.genSalt(saltRounds, function(err, salt) {
-      bcrypt.hash(req.body.inputPassword, salt, function(err, hash) {
-        // create account
-        var newAccount = {
-          profile: userData,
-          password: hash
-        }
+
+    let token
+    async.waterfall([
+      function(done) {
+        crypto.randomBytes(20, function(err, buf) {
+          token = buf.toString('hex');
+          done(err, token);
+        });
+      },
+      // encrypt password
+      function(token, done) {
+        bcrypt.genSalt(saltRounds, function(err, salt) {
+          bcrypt.hash(req.body.inputPassword, salt, function(err, hash) {
+            var newAccount = {
+              profile: userData,
+              password: hash,
+              verificationToken: token
+            }
+            done(err, newAccount)
+          });
+        });
+      },
+      // save data
+      function(newAccount, err) {
         methods.registerNewUser(newAccount, function(err){
           if (err) {
-            //req.flash('error', "Failed")
             req.flash('error', "Fehlgeschlagen")
           }
           else {
-            //req.flash('success', 'Your account has been created. Please log in.')
-            req.flash('success', 'Ihr Benutzerkonto wurde angelegt. Bitte melden Sie sich an.')
+            // send email
+            var emailSubject = "Bitte bestätigen Sie Ihr M4_LAB Benutzerkonto"
+            var emailContent = "Lieber Nutzer,\n\n"+
+                "vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart. "+ 
+                "\nUm Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: "+config.app.host+"/verifyAccount?token="+token+
+                "\n\nOhne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.\n\n"+mailSignature
+            
+            mailer.options.to = req.body.inputEmail;
+            mailer.options.subject = emailSubject;
+            mailer.options.text = emailContent;
+            mailer.transport.sendMail(mailer.options, function(err) {
+              if (err) {
+                console.log('cannot send email')
+                throw err
+              }
+            })
+            // user feedback
+            req.flash('success', 'Wir haben Ihnen eine E-Mail an Ihre verwendete Adresse gesendet. Diese enthält einen Link zur Bestätigung Ihres Accounts.\r\n' +
+              'Wenn Sie die Mail nicht in ihrem Postfach vorfinden, prüfen Sie bitte auch Ihren Spam-Ordner.\r\n \r\n'+
+              'Ohne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.')
           }
-          res.redirect('/account/registration');
+          res.redirect('/account/registration')
         })
-      });
-    });
+      }
+    ])
+  })
+
+  // ============= USER VERIFICATION ================================
+  app.get("/verifyAccount", function(req, res){
+    methods.getUserIdByVerificationToken(req.query.token, function(userId, err){
+      console.log(err)
+      console.log(userId)
+      if (userId) {
+        let userData = {
+          id: userId,
+          verificationStatus: 1
+        }
+        methods.verifyUserAccount(userData, function(err){
+          if (err) {
+            console.log("Error: "+err)
+            res.render(lang+'/account/verification', {
+              status: false
+            });
+          }
+          else {
+            res.render(lang+'/account/verification', {
+              status: true
+            });
+          }
+        })
+      }
+      else {
+        res.render(lang+'/account/verification', {
+          status: null
+        });
+      }
+    })
+  })
+  app.get("/resendVerificationEmail", function(req, res){
+    if (req.isAuthenticated()) {
+      var emailAddress = req.user.email
+      
+      methods.getUserIdByEmail(req.user.email, function(userId, err) {
+        if (!err) {
+          // get token
+          methods.getVerificationTokenByUserId(userId, function(token, err){
+            if (!err) {
+              if (token) {
+                // send email
+                var emailSubject = "Bitte bestätigen Sie Ihr M4_LAB Benutzerkonto"
+                var emailContent = "Lieber Nutzer,\n\n"+
+                    "vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart. "+ 
+                    "\nUm Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: "+config.app.host+"/verifyAccount?token="+token+
+                    "\n\nOhne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.\n\n"+mailSignature
+                
+                mailer.options.to = emailAddress;
+                mailer.options.subject = emailSubject;
+                mailer.options.text = emailContent;
+                mailer.transport.sendMail(mailer.options, function(err) {
+                  if (err) {
+                    console.log('cannot send email')
+                    throw err
+                  }
+                })
+                res.send(true)
+              }
+              else {
+                res.send(false)
+              }
+            }
+            else {
+              console.log(err)
+            }
+          })
+        }
+      })
+    }
   })
 
   app.get('/email/:email', function(req, res) {
diff --git a/views/DE/account/home.pug b/views/DE/account/home.pug
index fa11d3f7..cf284f1a 100644
--- a/views/DE/account/home.pug
+++ b/views/DE/account/home.pug
@@ -7,35 +7,44 @@ html(lang="de")
     link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
-    div(class="container-fluid")
-        div(class="row min-vh-100 flex-column flex-md-row")
-            aside(class="col-12 col-md-2 p-0 flex-shrink-1")
-                nav(class="navbar navbar-expand flex-md-column flex-row align-items-start py-2")
-                    div(class="collapse navbar-collapse")
-                        ul(class="flex-md-column flex-row navbar-nav w-100 justify-content-between")
-                            li(class="nav-item")
-                                a(class="nav-link pl-0 text-nowrap" href="#")
-                                    span(class="font-weight-bold" style="color:black;") #{user.firstname} #{user.lastname}
-                            li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/profile")
-                                    i(class="fa fa-user fa-fw")
-                                    span(class="d-none d-md-inline") Benutzerprofil
-                            li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/security")
-                                    i(class="fa fa-lock fa-fw")
-                                    span(class="d-none d-md-inline") Sicherheitseinstellungen
-                            li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/services")
-                                    i(class="fa fa-tasks fa-fw")
-                                    span(class="d-none d-md-inline") Projekte und Dienste
-                            li(class="nav-item")
-                                a(class="nav-link pl-0" href="/logout")
-                                    i(class="fa fa-sign-out-alt fa-fw")
-                                    span(class="d-none d-md-inline") Logout
-            main(class="col bg-faded py-3 flex-grow-1")
-                p Willkommen im Benutzerkonto-Bereich des HFT Transferportals
-                p In diesem Bereich können Sie Ihr Benutzerkonto pflegen.<br/> Dazu finden Sie auf der linken Seite verschiedene Menüs.
-                p Bei Rückfragen kontaktieren Sie uns bitte unter: <a href="mailto:support-transfer@hft-stuttgart.de">support-transfer@hft-stuttgart.de</a>
+    div(class="container")
+        if user.verificationStatus == 0
+            div.alert.alert-warning.alert-dismissible
+                | Willkommen im Benutzerkonto-Bereich des HFT Transferportals
+                | <br/><br/>
+                | Wir haben Ihnen eine E-Mail an Ihre verwendete Adresse gesendet. Diese enthält einen Link zur Bestätigung Ihres Accounts.
+                | Wenn Sie die Mail nicht in ihrem Postfach vorfinden, prüfen Sie bitte auch Ihren Spam-Ordner.
+                | <br >Falls Sie keine E-Mail von uns erhalten haben, können Sie <a href="javascript:void(0);" onclick="verify();">diese hier</a> erneut anfordern.
+                div(class="spinner-border text-secondary", role="status", style="display: none")
+        else
+            div(class="row min-vh-100 flex-column flex-md-row")
+                aside(class="col-12 col-md-3 p-0 flex-shrink-1")
+                    nav(class="navbar navbar-expand flex-md-column flex-row align-items-start py-2")
+                        div(class="collapse navbar-collapse")
+                            ul(class="flex-md-column flex-row navbar-nav w-100 justify-content-between")
+                                li(class="nav-item")
+                                    a(class="nav-link pl-0 text-nowrap" href="#")
+                                        span(class="font-weight-bold" style="color:black;") #{user.firstname} #{user.lastname}
+                                li(class="nav-item")
+                                    a(class="nav-link pl-0" href="/profile")
+                                        i(class="fa fa-user fa-fw")
+                                        span(class="d-none d-md-inline") Benutzerprofil
+                                li(class="nav-item")
+                                    a(class="nav-link pl-0" href="/security")
+                                        i(class="fa fa-lock fa-fw")
+                                        span(class="d-none d-md-inline") Sicherheitseinstellungen
+                                li(class="nav-item")
+                                    a(class="nav-link pl-0" href="/services")
+                                        i(class="fa fa-tasks fa-fw")
+                                        span(class="d-none d-md-inline") Projekte und Dienste
+                                li(class="nav-item")
+                                    a(class="nav-link pl-0" href="/logout" style="color:red;")
+                                        i(class="fa fa-sign-out-alt fa-fw")
+                                        span(class="d-none d-md-inline") Logout
+                main(class="col bg-faded py-3 flex-grow-1")
+                    p Willkommen im Benutzerkonto-Bereich des HFT Transferportals
+                    p In diesem Bereich können Sie Ihr Benutzerkonto pflegen.<br/> Dazu finden Sie auf der linken Seite verschiedene Menüs.
+                    p Bei Rückfragen kontaktieren Sie uns bitte unter: <a href="mailto:support-transfer@hft-stuttgart.de">support-transfer@hft-stuttgart.de</a>
                 
     // jQuery
     script(src="https://code.jquery.com/jquery-3.3.1.min.js")
@@ -43,4 +52,25 @@ html(lang="de")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
     // M4_LAB
-    script(src="/js/headfoot.js")
\ No newline at end of file
+    script(src="https://m4lab.hft-stuttgart.de/js/headfoot.js")
+    script.
+        // call verifyAccount
+        function verify() {
+            $(".spinner-border").show()
+            $.get( "/resendVerificationEmail", function( data ) {
+                console.log(data)
+                if (data) {
+                    alert( "Email sent!" )
+                }
+                else {
+                    alert("Please contact support-transfer@hft-stuttgart.de to verify your account.")
+                }
+            })
+            .fail(function() {
+                alert( "Something went wrong. Please try again." ) // todo: to DE
+            })
+            .always(function() {
+                $(".spinner-border").hide()
+            })
+            
+        }
\ No newline at end of file
diff --git a/views/DE/account/profile.pug b/views/DE/account/profile.pug
index 12f78989..c69b3479 100644
--- a/views/DE/account/profile.pug
+++ b/views/DE/account/profile.pug
@@ -7,29 +7,29 @@ html(lang="de")
     link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
-    div(class="container-fluid")
+    div(class="container")
         div(class="row min-vh-100 flex-column flex-md-row")
-            aside(class="col-12 col-md-2 p-0 flex-shrink-1")
+            aside(class="col-12 col-md-3 p-0 flex-shrink-1")
                 nav(class="navbar navbar-expand flex-md-column flex-row align-items-start py-2")
                     div(class="collapse navbar-collapse")
                         ul(class="flex-md-column flex-row navbar-nav w-100 justify-content-between")
                             li(class="nav-item")
-                                a(class="nav-link pl-0 text-nowrap" href="#")
+                                a(class="nav-link pl-0 text-nowrap" href="/")
                                     span(class="font-weight-bold" style="color:black;") #{user.firstname} #{user.lastname}
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/profile")
+                                a(class="nav-link pl-0" href="/profile")
                                     i(class="fa fa-user fa-fw" style="color:black;")
                                     span(class="d-none d-md-inline" style="color:black;") Benutzerprofil
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/security")
+                                a(class="nav-link pl-0" href="/security")
                                     i(class="fa fa-lock fa-fw")
                                     span(class="d-none d-md-inline") Sicherheitseinstellungen
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/services")
+                                a(class="nav-link pl-0" href="/services")
                                     i(class="fa fa-tasks fa-fw")
                                     span(class="d-none d-md-inline") Projekte und Dienste
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/logout")
+                                a(class="nav-link pl-0" href="/logout" style="color:red;")
                                     i(class="fa fa-sign-out-alt fa-fw")
                                     span(class="d-none d-md-inline") Logout
             main(class="col bg-faded py-3 flex-grow-1")
@@ -45,7 +45,7 @@ html(lang="de")
                     div(class="form-row")
                         div(class='form-group col-md-2')
                             label(for="title") Anrede
-                            select#inputSalutation(name="inputSalutation", class="form-control", , value=user.salutation)
+                            select#inputSalutation(name="inputSalutation", class="form-control", value=user.salutation)
                                 option(value="") - Anrede -
                                 option(value="Herr") Herr
                                 option(value="Frau") Frau
@@ -99,4 +99,4 @@ html(lang="de")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
     // M4_LAB
-    script(src="/js/headfoot.js")
\ No newline at end of file
+    script(src="https://m4lab.hft-stuttgart.de/js/headfoot.js")
\ No newline at end of file
diff --git a/views/DE/account/registration.pug b/views/DE/account/registration.pug
index 3de3ed5a..64c796ea 100644
--- a/views/DE/account/registration.pug
+++ b/views/DE/account/registration.pug
@@ -7,26 +7,6 @@ html(lang="de")
     link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
-        .collapse {
-            display: none;
-        }
-        .collapse.in {
-            display: block;
-        }
-        .collapsing {
-            position: relative;
-            height: 0;
-            overflow: hidden;
-            -webkit-transition-timing-function: ease;
-            -o-transition-timing-function: ease;
-            transition-timing-function: ease;
-            -webkit-transition-duration: .35s;
-            -o-transition-duration: .35s;
-            transition-duration: .35s;
-            -webkit-transition-property: height,visibility;
-            -o-transition-property: height,visibility;
-            transition-property: height,visibility;
-        }
         .warning {
             color: red;
             font-size: 11px;
@@ -94,4 +74,4 @@ html(lang="de")
     // M4_LAB
     script(src="/js/generalFunction.js")
     script(src="/js/registration.js")
-    script(src="/js/headfoot.js")
\ No newline at end of file
+    script(src="https://m4lab.hft-stuttgart.de/js/headfoot.js")
\ No newline at end of file
diff --git a/views/DE/account/security.pug b/views/DE/account/security.pug
index 15c43887..16b9458a 100644
--- a/views/DE/account/security.pug
+++ b/views/DE/account/security.pug
@@ -11,29 +11,29 @@ html(lang="de")
             font-size: 11px;
         }
   body
-    div(class="container-fluid")
+    div(class="container")
         div(class="row min-vh-100 flex-column flex-md-row")
-            aside(class="col-12 col-md-2 p-0 flex-shrink-1")
+            aside(class="col-12 col-md-3 p-0 flex-shrink-1")
                 nav(class="navbar navbar-expand flex-md-column flex-row align-items-start py-2")
                     div(class="collapse navbar-collapse")
                         ul(class="flex-md-column flex-row navbar-nav w-100 justify-content-between")
                             li(class="nav-item")
-                                a(class="nav-link pl-0 text-nowrap" href="#")
+                                a(class="nav-link pl-0 text-nowrap" href="/")
                                     span(class="font-weight-bold" style="color:black;") #{user.firstname} #{user.lastname}
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/profile")
+                                a(class="nav-link pl-0" href="/profile")
                                     i(class="fa fa-user fa-fw")
                                     span(class="d-none d-md-inline") Benutzerprofil
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/security")
+                                a(class="nav-link pl-0" href="/security")
                                     i(class="fa fa-lock fa-fw" style="color:black;")
                                     span(class="d-none d-md-inline" style="color:black;") Sicherheitseinstellungen
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/services")
+                                a(class="nav-link pl-0" href="/services")
                                     i(class="fa fa-tasks fa-fw")
                                     span(class="d-none d-md-inline") Projekte und Dienste
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/logout")
+                                a(class="nav-link pl-0" href="/logout" style="color:red;")
                                     i(class="fa fa-sign-out-alt fa-fw")
                                     span(class="d-none d-md-inline") Logout
             main(class="col bg-faded py-3 flex-grow-1")
@@ -64,7 +64,7 @@ html(lang="de")
                             span#message
                             div(class="invalid-feedback") Bitte füllen Sie dieses Feld aus.
                     input#updateBtn(type="submit", class="btn btn-primary", value="Passwort ändern" disabled)
-                    
+                        
     // jQuery
     script(src="https://code.jquery.com/jquery-3.3.1.min.js")
     script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
@@ -73,7 +73,7 @@ html(lang="de")
     // M4_LAB
     script(src="/js/security.js")
     script(src="/js/generalFunction.js")
-    script(src="/js/headfoot.js")
+    script(src="https://m4lab.hft-stuttgart.de/js/headfoot.js")
     script.
         // check input fields
         'use strict';
diff --git a/views/DE/account/services.pug b/views/DE/account/services.pug
index 8b99f630..e1b65887 100644
--- a/views/DE/account/services.pug
+++ b/views/DE/account/services.pug
@@ -7,29 +7,29 @@ html(lang="de")
     link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
-    div(class="container-fluid")
+    div(class="container")
         div(class="row min-vh-100 flex-column flex-md-row")
-            aside(class="col-12 col-md-2 p-0 flex-shrink-1")
+            aside(class="col-12 col-md-3 p-0 flex-shrink-1")
                 nav(class="navbar navbar-expand flex-md-column flex-row align-items-start py-2")
                     div(class="collapse navbar-collapse")
                         ul(class="flex-md-column flex-row navbar-nav w-100 justify-content-between")
                             li(class="nav-item")
-                                a(class="nav-link pl-0 text-nowrap" href="#")
+                                a(class="nav-link pl-0 text-nowrap" href="/")
                                     span(class="font-weight-bold" style="color:black;") #{user.firstname} #{user.lastname}
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/profile")
+                                a(class="nav-link pl-0" href="/profile")
                                     i(class="fa fa-user fa-fw")
                                     span(class="d-none d-md-inline") Benutzerprofil
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/security")
+                                a(class="nav-link pl-0" href="/security")
                                     i(class="fa fa-lock fa-fw")
                                     span(class="d-none d-md-inline") Sicherheitseinstellungen
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/services")
+                                a(class="nav-link pl-0" href="/services")
                                     i(class="fa fa-tasks fa-fw" style="color:black;")
                                     span(class="d-none d-md-inline" style="color:black;") Projekte und Dienste
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/logout")
+                                a(class="nav-link pl-0" href="/logout" style="color:red;")
                                     i(class="fa fa-sign-out-alt fa-fw")
                                     span(class="d-none d-md-inline") Logout
             main(class="col bg-faded py-3 flex-grow-1")
@@ -41,4 +41,4 @@ html(lang="de")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
     // M4_LAB
-    script(src="/js/headfoot.js")
\ No newline at end of file
+    script(src="https://m4lab.hft-stuttgart.de/js/headfoot.js")
\ No newline at end of file
diff --git a/views/DE/account/verification.pug b/views/DE/account/verification.pug
new file mode 100644
index 00000000..575e8e74
--- /dev/null
+++ b/views/DE/account/verification.pug
@@ -0,0 +1,35 @@
+doctype html
+html(lang="de")
+  head
+    title= "User Verification"
+    meta(charset="UTF-8")
+    meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    style.
+      .container { 
+        height: 400px;
+        position: relative;
+      }
+      .center {
+        margin: 0;
+        position: absolute;
+        top: 50%;
+        left: 50%;
+        -ms-transform: translate(-50%, -50%);
+        transform: translate(-50%, -50%);
+      }
+  body
+    div(class="container")
+      div(class="center", align="center")
+        a(href="https://m4lab.hft-stuttgart.de")
+          img(src="https://transfer.hft-stuttgart.de/images/demo/m4lab_logo.jpg", class="img-responsive center-block", width="185", height="192")
+        br
+        br
+        if status == true
+          p(class="h5") Ihr Benutzerkonto wurde bestätigt. Bitte <a href="https://m4lab.hft-stuttgart.de/account/">melden Sie sich an</a>.
+        else if status == false
+          p(class="h5") Ihr Benutzerkonto konnte nicht bestätigt werden, bitte versuchen Sie es erneut.
+        else
+          p(class="h5") Ihr Benutzerkonto wude nicht gefunden.
+    // Bootstrap
+    script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
\ No newline at end of file
-- 
GitLab


From 424fc8a462acd2f5e92e9ecce476ed114d6a53ed Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Tue, 26 May 2020 14:18:52 +0200
Subject: [PATCH 03/40] MLAB-129: add welcome email after successful
 verification

---
 routes/methods.js        | 13 +++++++++++++
 routes/routes-account.js | 27 +++++++++++++++++++++++++--
 2 files changed, 38 insertions(+), 2 deletions(-)

diff --git a/routes/methods.js b/routes/methods.js
index 2ba550d3..2bafb470 100644
--- a/routes/methods.js
+++ b/routes/methods.js
@@ -80,6 +80,19 @@ var methods = {
             }
             callback(user, err);
         });
+    },
+    getUserById: function(userId, callback) {
+        dbconn.user.query('SELECT verificationStatus, email, salutation, title, firstname, lastname, industry, organisation, speciality FROM user WHERE id = ' +userId, function (err, rows, fields) {
+            if (err) {
+                throw err;
+            }
+            else {
+                if ( rows.length > 0) {
+                    user = rows[0];
+                }
+            }
+            callback(user, err);
+        });
     },
 	checkUserEmail: function(email, callback) {
         let user
diff --git a/routes/routes-account.js b/routes/routes-account.js
index fa97820f..9b6c9ae8 100644
--- a/routes/routes-account.js
+++ b/routes/routes-account.js
@@ -581,9 +581,8 @@ module.exports = function (app, config, passport, i18n) {
 
   // ============= USER VERIFICATION ================================
   app.get("/verifyAccount", function(req, res){
+    console.log(req.query)
     methods.getUserIdByVerificationToken(req.query.token, function(userId, err){
-      console.log(err)
-      console.log(userId)
       if (userId) {
         let userData = {
           id: userId,
@@ -597,6 +596,30 @@ module.exports = function (app, config, passport, i18n) {
             });
           }
           else {
+            // send welcome email after successful account verification
+            methods.getUserById(userId, function(data, err){
+              if (err) {
+                console.log("Error: "+err)
+              }
+              else {
+                // send email
+                var emailSubject = "Herzlich willkommen"
+                var emailContent = "Lieber Nutzer,\n\n"+
+                    "herzlich willkommen beim Transferportal der HFT Stuttgart!\n"+ 
+                    "Sie können nun alle Dienste des Portals nutzen.\n\n"+mailSignature
+                
+                mailer.options.to = data.email;
+                mailer.options.subject = emailSubject;
+                mailer.options.text = emailContent;
+                mailer.transport.sendMail(mailer.options, function(err) {
+                  if (err) {
+                    console.log('cannot send email')
+                    throw err
+                  }
+                })
+              }
+            })
+
             res.render(lang+'/account/verification', {
               status: true
             });
-- 
GitLab


From 2560776afdc973aba12eafe94b0c4a5fb2d67c0e Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Tue, 26 May 2020 14:31:22 +0200
Subject: [PATCH 04/40] MLAB-129: correcting user feedback and email content
 upon registration

---
 routes/routes-account.js | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/routes/routes-account.js b/routes/routes-account.js
index 9b6c9ae8..676796ba 100644
--- a/routes/routes-account.js
+++ b/routes/routes-account.js
@@ -555,9 +555,10 @@ module.exports = function (app, config, passport, i18n) {
             // send email
             var emailSubject = "Bitte bestätigen Sie Ihr M4_LAB Benutzerkonto"
             var emailContent = "Lieber Nutzer,\n\n"+
-                "vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart. "+ 
-                "\nUm Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: "+config.app.host+"/verifyAccount?token="+token+
-                "\n\nOhne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.\n\n"+mailSignature
+                "vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart.\n"+ 
+                "Um Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: "+config.app.host+"/verifyAccount?token="+token+"\n"+
+                "Ohne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.\n\n"+
+                "Sollten Sie sich selbst nicht mit Ihren Daten am Transferportal registriert haben, ignorieren Sie diese E-Mail bitte.\n\n"+mailSignature
             
             mailer.options.to = req.body.inputEmail;
             mailer.options.subject = emailSubject;
@@ -569,9 +570,9 @@ module.exports = function (app, config, passport, i18n) {
               }
             })
             // user feedback
-            req.flash('success', 'Wir haben Ihnen eine E-Mail an Ihre verwendete Adresse gesendet. Diese enthält einen Link zur Bestätigung Ihres Accounts.\r\n' +
-              'Wenn Sie die Mail nicht in ihrem Postfach vorfinden, prüfen Sie bitte auch Ihren Spam-Ordner.\r\n \r\n'+
-              'Ohne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.')
+            req.flash('success', 'Vielen Dank für Ihre Registrierung!'+'\r\n\r\n'+
+              'Wir haben Ihnen eine E-Mail an Ihre verwendete Adresse gesendet. Diese enthält einen Link zur Bestätigung Ihres Accounts.'+'\r\n'+
+              'Wenn Sie die Mail nicht in ihrem Postfach vorfinden, prüfen Sie bitte auch Ihren Spam-Ordner.')
           }
           res.redirect('/account/registration')
         })
-- 
GitLab


From 1a5ef222b098e4b38e1b46d55bbeba1508da6f53 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Tue, 26 May 2020 15:01:30 +0200
Subject: [PATCH 05/40] fixed sidebar links

---
 views/DE/account/profile.pug  | 8 ++++----
 views/DE/account/security.pug | 8 ++++----
 views/DE/account/services.pug | 6 +++---
 3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/views/DE/account/profile.pug b/views/DE/account/profile.pug
index c69b3479..ae666c9d 100644
--- a/views/DE/account/profile.pug
+++ b/views/DE/account/profile.pug
@@ -14,18 +14,18 @@ html(lang="de")
                     div(class="collapse navbar-collapse")
                         ul(class="flex-md-column flex-row navbar-nav w-100 justify-content-between")
                             li(class="nav-item")
-                                a(class="nav-link pl-0 text-nowrap" href="/")
+                                a(class="nav-link pl-0 text-nowrap" href="/account/")
                                     span(class="font-weight-bold" style="color:black;") #{user.firstname} #{user.lastname}
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/profile")
+                                a(class="nav-link pl-0" href="/account/profile")
                                     i(class="fa fa-user fa-fw" style="color:black;")
                                     span(class="d-none d-md-inline" style="color:black;") Benutzerprofil
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/security")
+                                a(class="nav-link pl-0" href="/account/security")
                                     i(class="fa fa-lock fa-fw")
                                     span(class="d-none d-md-inline") Sicherheitseinstellungen
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/services")
+                                a(class="nav-link pl-0" href="/account/services")
                                     i(class="fa fa-tasks fa-fw")
                                     span(class="d-none d-md-inline") Projekte und Dienste
                             li(class="nav-item")
diff --git a/views/DE/account/security.pug b/views/DE/account/security.pug
index 16b9458a..e768359c 100644
--- a/views/DE/account/security.pug
+++ b/views/DE/account/security.pug
@@ -18,18 +18,18 @@ html(lang="de")
                     div(class="collapse navbar-collapse")
                         ul(class="flex-md-column flex-row navbar-nav w-100 justify-content-between")
                             li(class="nav-item")
-                                a(class="nav-link pl-0 text-nowrap" href="/")
+                                a(class="nav-link pl-0 text-nowrap" href="/account/")
                                     span(class="font-weight-bold" style="color:black;") #{user.firstname} #{user.lastname}
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/profile")
+                                a(class="nav-link pl-0" href="/account/profile")
                                     i(class="fa fa-user fa-fw")
                                     span(class="d-none d-md-inline") Benutzerprofil
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/security")
+                                a(class="nav-link pl-0" href="/account/security")
                                     i(class="fa fa-lock fa-fw" style="color:black;")
                                     span(class="d-none d-md-inline" style="color:black;") Sicherheitseinstellungen
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/services")
+                                a(class="nav-link pl-0" href="/account/services")
                                     i(class="fa fa-tasks fa-fw")
                                     span(class="d-none d-md-inline") Projekte und Dienste
                             li(class="nav-item")
diff --git a/views/DE/account/services.pug b/views/DE/account/services.pug
index e1b65887..49497ca1 100644
--- a/views/DE/account/services.pug
+++ b/views/DE/account/services.pug
@@ -17,15 +17,15 @@ html(lang="de")
                                 a(class="nav-link pl-0 text-nowrap" href="/")
                                     span(class="font-weight-bold" style="color:black;") #{user.firstname} #{user.lastname}
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/profile")
+                                a(class="nav-link pl-0" href="/account/profile")
                                     i(class="fa fa-user fa-fw")
                                     span(class="d-none d-md-inline") Benutzerprofil
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/security")
+                                a(class="nav-link pl-0" href="/account/security")
                                     i(class="fa fa-lock fa-fw")
                                     span(class="d-none d-md-inline") Sicherheitseinstellungen
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/services")
+                                a(class="nav-link pl-0" href="/account/services")
                                     i(class="fa fa-tasks fa-fw" style="color:black;")
                                     span(class="d-none d-md-inline" style="color:black;") Projekte und Dienste
                             li(class="nav-item")
-- 
GitLab


From 21807ab9bf58f08f4c515fbda6661a3c0401d7eb Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Tue, 26 May 2020 15:05:56 +0200
Subject: [PATCH 06/40] fixed sidebar links home.pug

---
 views/DE/account/home.pug | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/views/DE/account/home.pug b/views/DE/account/home.pug
index cf284f1a..68004228 100644
--- a/views/DE/account/home.pug
+++ b/views/DE/account/home.pug
@@ -26,15 +26,15 @@ html(lang="de")
                                     a(class="nav-link pl-0 text-nowrap" href="#")
                                         span(class="font-weight-bold" style="color:black;") #{user.firstname} #{user.lastname}
                                 li(class="nav-item")
-                                    a(class="nav-link pl-0" href="/profile")
+                                    a(class="nav-link pl-0" href="/account/profile")
                                         i(class="fa fa-user fa-fw")
                                         span(class="d-none d-md-inline") Benutzerprofil
                                 li(class="nav-item")
-                                    a(class="nav-link pl-0" href="/security")
+                                    a(class="nav-link pl-0" href="/account/security")
                                         i(class="fa fa-lock fa-fw")
                                         span(class="d-none d-md-inline") Sicherheitseinstellungen
                                 li(class="nav-item")
-                                    a(class="nav-link pl-0" href="/services")
+                                    a(class="nav-link pl-0" href="/account/services")
                                         i(class="fa fa-tasks fa-fw")
                                         span(class="d-none d-md-inline") Projekte und Dienste
                                 li(class="nav-item")
-- 
GitLab


From 2d63274c3ab811fcf9c81b22ac2f4ef0ad8fad50 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Tue, 26 May 2020 15:49:24 +0200
Subject: [PATCH 07/40] MLAB-227: prevent HFT account to access "security" page

---
 routes/methods.js             | 2 +-
 routes/routes-account.js      | 3 +--
 views/DE/account/home.pug     | 9 +++++----
 views/DE/account/profile.pug  | 9 +++++----
 views/DE/account/services.pug | 9 +++++----
 5 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/routes/methods.js b/routes/methods.js
index 2bafb470..7b34268a 100644
--- a/routes/methods.js
+++ b/routes/methods.js
@@ -69,7 +69,7 @@ var methods = {
         })
     },
     getUserByEmail: function(email, callback) {
-        dbconn.user.query('SELECT verificationStatus, salutation, title, firstname, lastname, industry, organisation, speciality FROM user WHERE email = "' +email+'"', function (err, rows, fields) {
+        dbconn.user.query('SELECT verificationStatus, salutation, title, firstname, lastname, industry, organisation, speciality, m4lab_idp FROM user WHERE email = "' +email+'"', function (err, rows, fields) {
             if (err) {
                 throw err;
             }
diff --git a/routes/routes-account.js b/routes/routes-account.js
index 676796ba..10f9ae7e 100644
--- a/routes/routes-account.js
+++ b/routes/routes-account.js
@@ -240,8 +240,7 @@ module.exports = function (app, config, passport, i18n) {
     if (req.isAuthenticated()) {
       methods.getUserByEmail(req.user.email, function(data, err){
         if (!err) {
-          if (data.verificationStatus == 1) {
-            console.log(data)
+          if (data.verificationStatus == 1 && data.m4lab_idp == 1) {
             res.render(lang+'/account/security', {
               user: data
             })
diff --git a/views/DE/account/home.pug b/views/DE/account/home.pug
index 68004228..f20eafc9 100644
--- a/views/DE/account/home.pug
+++ b/views/DE/account/home.pug
@@ -29,10 +29,11 @@ html(lang="de")
                                     a(class="nav-link pl-0" href="/account/profile")
                                         i(class="fa fa-user fa-fw")
                                         span(class="d-none d-md-inline") Benutzerprofil
-                                li(class="nav-item")
-                                    a(class="nav-link pl-0" href="/account/security")
-                                        i(class="fa fa-lock fa-fw")
-                                        span(class="d-none d-md-inline") Sicherheitseinstellungen
+                                if user.m4lab_idp == 1
+                                    li(class="nav-item")
+                                        a(class="nav-link pl-0" href="/account/security")
+                                            i(class="fa fa-lock fa-fw")
+                                            span(class="d-none d-md-inline") Sicherheitseinstellungen
                                 li(class="nav-item")
                                     a(class="nav-link pl-0" href="/account/services")
                                         i(class="fa fa-tasks fa-fw")
diff --git a/views/DE/account/profile.pug b/views/DE/account/profile.pug
index ae666c9d..e66e4eca 100644
--- a/views/DE/account/profile.pug
+++ b/views/DE/account/profile.pug
@@ -20,10 +20,11 @@ html(lang="de")
                                 a(class="nav-link pl-0" href="/account/profile")
                                     i(class="fa fa-user fa-fw" style="color:black;")
                                     span(class="d-none d-md-inline" style="color:black;") Benutzerprofil
-                            li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/security")
-                                    i(class="fa fa-lock fa-fw")
-                                    span(class="d-none d-md-inline") Sicherheitseinstellungen
+                            if user.m4lab_idp == 1
+                                li(class="nav-item")
+                                    a(class="nav-link pl-0" href="/account/security")
+                                        i(class="fa fa-lock fa-fw")
+                                        span(class="d-none d-md-inline") Sicherheitseinstellungen
                             li(class="nav-item")
                                 a(class="nav-link pl-0" href="/account/services")
                                     i(class="fa fa-tasks fa-fw")
diff --git a/views/DE/account/services.pug b/views/DE/account/services.pug
index 49497ca1..cb911250 100644
--- a/views/DE/account/services.pug
+++ b/views/DE/account/services.pug
@@ -20,10 +20,11 @@ html(lang="de")
                                 a(class="nav-link pl-0" href="/account/profile")
                                     i(class="fa fa-user fa-fw")
                                     span(class="d-none d-md-inline") Benutzerprofil
-                            li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/security")
-                                    i(class="fa fa-lock fa-fw")
-                                    span(class="d-none d-md-inline") Sicherheitseinstellungen
+                            if user.m4lab_idp == 1
+                                li(class="nav-item")
+                                    a(class="nav-link pl-0" href="/account/security")
+                                        i(class="fa fa-lock fa-fw")
+                                        span(class="d-none d-md-inline") Sicherheitseinstellungen
                             li(class="nav-item")
                                 a(class="nav-link pl-0" href="/account/services")
                                     i(class="fa fa-tasks fa-fw" style="color:black;")
-- 
GitLab


From 354419d8cfe80f5abf8b4c6477a08089345919e5 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Fri, 19 Jun 2020 16:30:24 +0200
Subject: [PATCH 08/40] MLAB 249: Prevent HFT accounts to create an account
 from the registration page.

---
 routes/routes-account.js          | 115 ++++++++++++++++--------------
 views/DE/account/registration.pug |   9 ++-
 2 files changed, 69 insertions(+), 55 deletions(-)

diff --git a/routes/routes-account.js b/routes/routes-account.js
index 10f9ae7e..40c54b58 100644
--- a/routes/routes-account.js
+++ b/routes/routes-account.js
@@ -523,60 +523,71 @@ module.exports = function (app, config, passport, i18n) {
       createdDate: curDate.toISOString().slice(0,10)
     }
 
-    let token
-    async.waterfall([
-      function(done) {
-        crypto.randomBytes(20, function(err, buf) {
-          token = buf.toString('hex');
-          done(err, token);
-        });
-      },
-      // encrypt password
-      function(token, done) {
-        bcrypt.genSalt(saltRounds, function(err, salt) {
-          bcrypt.hash(req.body.inputPassword, salt, function(err, hash) {
-            var newAccount = {
-              profile: userData,
-              password: hash,
-              verificationToken: token
-            }
-            done(err, newAccount)
+    var userEmail = userData.email
+    var pos = userEmail.indexOf('@')
+    var emailLength = userEmail.length
+    var emailDomain = userEmail.slice(pos, emailLength);
+
+    if ( emailDomain.toLowerCase() == "@hft-stuttgart.de") {
+        req.flash('error', "Fehlgeschlagen: HFT-Account")
+        res.redirect('/account/registration');
+    }
+    else {
+      let token
+      async.waterfall([
+        function(done) {
+          crypto.randomBytes(20, function(err, buf) {
+            token = buf.toString('hex');
+            done(err, token);
           });
-        });
-      },
-      // save data
-      function(newAccount, err) {
-        methods.registerNewUser(newAccount, function(err){
-          if (err) {
-            req.flash('error', "Fehlgeschlagen")
-          }
-          else {
-            // send email
-            var emailSubject = "Bitte bestätigen Sie Ihr M4_LAB Benutzerkonto"
-            var emailContent = "Lieber Nutzer,\n\n"+
-                "vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart.\n"+ 
-                "Um Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: "+config.app.host+"/verifyAccount?token="+token+"\n"+
-                "Ohne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.\n\n"+
-                "Sollten Sie sich selbst nicht mit Ihren Daten am Transferportal registriert haben, ignorieren Sie diese E-Mail bitte.\n\n"+mailSignature
-            
-            mailer.options.to = req.body.inputEmail;
-            mailer.options.subject = emailSubject;
-            mailer.options.text = emailContent;
-            mailer.transport.sendMail(mailer.options, function(err) {
-              if (err) {
-                console.log('cannot send email')
-                throw err
+        },
+        // encrypt password
+        function(token, done) {
+          bcrypt.genSalt(saltRounds, function(err, salt) {
+            bcrypt.hash(req.body.inputPassword, salt, function(err, hash) {
+              var newAccount = {
+                profile: userData,
+                password: hash,
+                verificationToken: token
               }
-            })
-            // user feedback
-            req.flash('success', 'Vielen Dank für Ihre Registrierung!'+'\r\n\r\n'+
-              'Wir haben Ihnen eine E-Mail an Ihre verwendete Adresse gesendet. Diese enthält einen Link zur Bestätigung Ihres Accounts.'+'\r\n'+
-              'Wenn Sie die Mail nicht in ihrem Postfach vorfinden, prüfen Sie bitte auch Ihren Spam-Ordner.')
-          }
-          res.redirect('/account/registration')
-        })
-      }
-    ])
+              done(err, newAccount)
+            });
+          });
+        },
+        // save data
+        function(newAccount, err) {
+          methods.registerNewUser(newAccount, function(err){
+            if (err) {
+              req.flash('error', "Fehlgeschlagen")
+            }
+            else {
+              // send email
+              var emailSubject = "Bitte bestätigen Sie Ihr M4_LAB Benutzerkonto"
+              var emailContent = "Lieber Nutzer,\n\n"+
+                  "vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart.\n"+
+                  "Um Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: "+config.app.host+"/verifyAccount?token="+token+"\n"+
+                  "Ohne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.\n\n"+
+                  "Sollten Sie sich selbst nicht mit Ihren Daten am Transferportal registriert haben, ignorieren Sie diese E-Mail bitte.\n\n"+mailSignature
+              
+              mailer.options.to = req.body.inputEmail;
+              mailer.options.subject = emailSubject;
+              mailer.options.text = emailContent;
+              mailer.transport.sendMail(mailer.options, function(err) {
+                if (err) {
+                  console.log('cannot send email')
+                  throw err
+                }
+              })
+              // user feedback
+              req.flash('success', 'Vielen Dank für Ihre Registrierung!'+'\r\n\r\n'+
+                'Wir haben Ihnen eine E-Mail an Ihre verwendete Adresse gesendet. Diese enthält einen Link zur Bestätigung Ihres Accounts.'+'\r\n'+
+                'Wenn Sie die Mail nicht in ihrem Postfach vorfinden, prüfen Sie bitte auch Ihren Spam-Ordner.')
+            }
+            res.redirect('/account/registration')
+          })
+        }
+      ])
+    }
   })
 
   // ============= USER VERIFICATION ================================
diff --git a/views/DE/account/registration.pug b/views/DE/account/registration.pug
index 64c796ea..dc42f50c 100644
--- a/views/DE/account/registration.pug
+++ b/views/DE/account/registration.pug
@@ -14,9 +14,12 @@ html(lang="de")
   body
     div(class="container-fluid")
         div(class="row")
-            div(class="col-md-6 offset-md-2")
+            div(class="pt-4 pb-4 col-md-6 offset-md-2")
                 h3(class="mb-3 font-weight-bold") Neues Benutzerkonto anlegen
             div(class="col-md-6 offset-md-3")
+                div(class="alert alert-info" role="alert")
+                    | Auf dieser Seite können sich Benutzer, die keinen Account an der HFT haben, registrieren.<br/>
+                    | Um sich mit ihrem HFT-Account anzumelden, klicken Sie <a class="font-weight-bold" href="https://transfer.hft-stuttgart.de/account/">hier</a>.
                 if successes
                     for success in successes
                         div.alert.alert-success.alert-dismissible #{ success }
@@ -26,7 +29,7 @@ html(lang="de")
                         div.alert.alert-danger.alert-dismissible.fade.show #{ error }
                             a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
                 form(method="POST")
-                    h5(class="mb-3 font-weight-bold") Anmeldedaten
+                    h5(class="pt-2 mb-3 font-weight-bold") Anmeldedaten
                     div(class='form-row')
                         div(class='form-group col-md-6')
                             input#inputEmail(name="inputEmail", type="email", class="form-control", placeholder="E-Mail-Adresse*", maxlength="45" required)
@@ -34,7 +37,7 @@ html(lang="de")
                         div(class="form-group col-md-6")
                             input#inputPassword(name="inputPassword", type="password", class="form-control", data-toggle="password", placeholder="Passwort*", maxlength="45" required)
                             span#passwordWarning(class='warning')
-                    h5(class="mb-3 font-weight-bold") Benutzerprofil
+                    h5(class="pt-2 mb-3 font-weight-bold") Benutzerprofil
                     div(class="form-row")
                         div(class='form-group col-md-2')
                             select#inputSalutation(name="inputSalutation", class="form-control")
-- 
GitLab


From eccdf3f41b2e7d51eedb9118a8d597a58400bb32 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 22 Jun 2020 11:15:50 +0000
Subject: [PATCH 09/40] Update projects.pug, adjusted bootstrap.css link

---
 views/DE/project/projects.pug | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/views/DE/project/projects.pug b/views/DE/project/projects.pug
index c2730b80..09d3a93b 100644
--- a/views/DE/project/projects.pug
+++ b/views/DE/project/projects.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
-- 
GitLab


From 62d0f795dc0d8e2a191d5fdf2c6cca8c77bab07a Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 22 Jun 2020 11:17:17 +0000
Subject: [PATCH 10/40] Update projectOverview.pug, adjusted bootstrap.css link

---
 views/DE/project/projectOverview.pug | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/views/DE/project/projectOverview.pug b/views/DE/project/projectOverview.pug
index e015d1e6..b7d9c9ee 100644
--- a/views/DE/project/projectOverview.pug
+++ b/views/DE/project/projectOverview.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
-- 
GitLab


From 555d339121d2db408febc4c040d2b21d2dbb62e0 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 22 Jun 2020 11:18:04 +0000
Subject: [PATCH 11/40] Update addProjectOverview.pug, adjusted
 /css/bootstrap.css link

---
 views/DE/project/addProjectOverview.pug | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/views/DE/project/addProjectOverview.pug b/views/DE/project/addProjectOverview.pug
index f6517d29..6894c88f 100644
--- a/views/DE/project/addProjectOverview.pug
+++ b/views/DE/project/addProjectOverview.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Add Project Overview"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     // jQuery UI - Datepicker
     link(rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css")
-- 
GitLab


From be0d94e84178ae67b048867fa8c3b678ea56f54a Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 22 Jun 2020 13:23:25 +0200
Subject: [PATCH 12/40] replaced /css/booststrap/bootstrap.css with
 /css/bootstrap.css

---
 views/DE/404.pug                        | 2 +-
 views/DE/500.pug                        | 2 +-
 views/DE/account/contact.pug            | 2 +-
 views/DE/account/forgotPwd.pug          | 2 +-
 views/DE/account/home.pug               | 2 +-
 views/DE/account/profile.pug            | 2 +-
 views/DE/account/registration.pug       | 2 +-
 views/DE/account/reset.pug              | 2 +-
 views/DE/account/security.pug           | 2 +-
 views/DE/account/services.pug           | 2 +-
 views/DE/account/verification.pug       | 2 +-
 views/DE/project/landingpage.pug        | 2 +-
 views/DE/project/mailinglists.pug       | 2 +-
 views/DE/project/project-simplified.pug | 2 +-
 views/DE/project/videoconferences.pug   | 2 +-
 views/EN/account/forgotPwd.pug          | 2 +-
 views/EN/account/home.pug               | 2 +-
 views/EN/account/profile.pug            | 2 +-
 views/EN/account/registration.pug       | 2 +-
 views/EN/account/reset.pug              | 2 +-
 views/EN/account/security.pug           | 2 +-
 views/EN/account/services.pug           | 2 +-
 views/EN/project/addProjectOverview.pug | 2 +-
 views/EN/project/mailinglists.pug       | 2 +-
 views/EN/project/projects.pug           | 2 +-
 25 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/views/DE/404.pug b/views/DE/404.pug
index c4178253..575cfc99 100644
--- a/views/DE/404.pug
+++ b/views/DE/404.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "404 - Page not found"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     style.
       .container { 
         height: 400px;
diff --git a/views/DE/500.pug b/views/DE/500.pug
index 70457339..5f19f51a 100644
--- a/views/DE/500.pug
+++ b/views/DE/500.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "500 - Internal Server Error"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     style.
       .container { 
         height: 400px;
diff --git a/views/DE/account/contact.pug b/views/DE/account/contact.pug
index 25e4dc9c..508ca7af 100644
--- a/views/DE/account/contact.pug
+++ b/views/DE/account/contact.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Kontakt"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
     link(rel="stylesheet", type="text/css", href="/fonts/ionicons.min.css")
     link(rel="stylesheet", type="text/css", href="/css/Contact-Form-Clean.css")
diff --git a/views/DE/account/forgotPwd.pug b/views/DE/account/forgotPwd.pug
index 46210a02..292572a4 100644
--- a/views/DE/account/forgotPwd.pug
+++ b/views/DE/account/forgotPwd.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Forgot Password"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/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")
     style.
diff --git a/views/DE/account/home.pug b/views/DE/account/home.pug
index f20eafc9..1b3729c7 100644
--- a/views/DE/account/home.pug
+++ b/views/DE/account/home.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Account"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
     div(class="container")
diff --git a/views/DE/account/profile.pug b/views/DE/account/profile.pug
index e66e4eca..fb114770 100644
--- a/views/DE/account/profile.pug
+++ b/views/DE/account/profile.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
     div(class="container")
diff --git a/views/DE/account/registration.pug b/views/DE/account/registration.pug
index dc42f50c..2e0a1eee 100644
--- a/views/DE/account/registration.pug
+++ b/views/DE/account/registration.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Create New Account"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .warning {
diff --git a/views/DE/account/reset.pug b/views/DE/account/reset.pug
index 56aa2d92..ef8693e5 100644
--- a/views/DE/account/reset.pug
+++ b/views/DE/account/reset.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Reset Password"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/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")
     style.
diff --git a/views/DE/account/security.pug b/views/DE/account/security.pug
index e768359c..523ee199 100644
--- a/views/DE/account/security.pug
+++ b/views/DE/account/security.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .warning {
diff --git a/views/DE/account/services.pug b/views/DE/account/services.pug
index cb911250..1a525556 100644
--- a/views/DE/account/services.pug
+++ b/views/DE/account/services.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
     div(class="container")
diff --git a/views/DE/account/verification.pug b/views/DE/account/verification.pug
index 575e8e74..34250834 100644
--- a/views/DE/account/verification.pug
+++ b/views/DE/account/verification.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Verification"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     style.
       .container { 
         height: 400px;
diff --git a/views/DE/project/landingpage.pug b/views/DE/project/landingpage.pug
index a835ec04..5ff093f2 100644
--- a/views/DE/project/landingpage.pug
+++ b/views/DE/project/landingpage.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/DE/project/mailinglists.pug b/views/DE/project/mailinglists.pug
index c38c8042..16df2b40 100644
--- a/views/DE/project/mailinglists.pug
+++ b/views/DE/project/mailinglists.pug
@@ -3,7 +3,7 @@ html(lang="de")
     title= "Mailinglisten"
     meta(charset="UTF-8")
     meta(name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     link(rel="stylesheet" href="/fonts/ionicons.min.css")
     link(rel="stylesheet" href="assets/css/Testimonials.css")
diff --git a/views/DE/project/project-simplified.pug b/views/DE/project/project-simplified.pug
index cb868f9a..fdda3403 100644
--- a/views/DE/project/project-simplified.pug
+++ b/views/DE/project/project-simplified.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
       .help .card-title > a:before {
diff --git a/views/DE/project/videoconferences.pug b/views/DE/project/videoconferences.pug
index e6ee7b69..91ba82c2 100644
--- a/views/DE/project/videoconferences.pug
+++ b/views/DE/project/videoconferences.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/forgotPwd.pug b/views/EN/account/forgotPwd.pug
index 1cde0888..6b14d985 100644
--- a/views/EN/account/forgotPwd.pug
+++ b/views/EN/account/forgotPwd.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "Forgot Password"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/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")
     style.
diff --git a/views/EN/account/home.pug b/views/EN/account/home.pug
index d2f3875a..82390276 100644
--- a/views/EN/account/home.pug
+++ b/views/EN/account/home.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "User Account"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/profile.pug b/views/EN/account/profile.pug
index 47c1f7e8..838bca98 100644
--- a/views/EN/account/profile.pug
+++ b/views/EN/account/profile.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/registration.pug b/views/EN/account/registration.pug
index 88ef5a93..1e549e67 100644
--- a/views/EN/account/registration.pug
+++ b/views/EN/account/registration.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "Create New Account"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/reset.pug b/views/EN/account/reset.pug
index b8939ea2..0b964959 100644
--- a/views/EN/account/reset.pug
+++ b/views/EN/account/reset.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "Reset Password"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/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")
     style.
diff --git a/views/EN/account/security.pug b/views/EN/account/security.pug
index 2a5c248c..e8d8be5b 100644
--- a/views/EN/account/security.pug
+++ b/views/EN/account/security.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/services.pug b/views/EN/account/services.pug
index f095144b..7ad5e503 100644
--- a/views/EN/account/services.pug
+++ b/views/EN/account/services.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/project/addProjectOverview.pug b/views/EN/project/addProjectOverview.pug
index 7b40b54f..42375dad 100644
--- a/views/EN/project/addProjectOverview.pug
+++ b/views/EN/project/addProjectOverview.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Add Project Overview"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/project/mailinglists.pug b/views/EN/project/mailinglists.pug
index f2ddbd8b..43a4a436 100644
--- a/views/EN/project/mailinglists.pug
+++ b/views/EN/project/mailinglists.pug
@@ -3,7 +3,7 @@ html(lang="en")
     title= "Mailinglisten"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/project/projects.pug b/views/EN/project/projects.pug
index 56f65c10..720bc8fc 100644
--- a/views/EN/project/projects.pug
+++ b/views/EN/project/projects.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
-- 
GitLab


From 5c9626575f55c8ba11ed7268bac6297a39401b0d Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 22 Jun 2020 13:30:42 +0200
Subject: [PATCH 13/40] replaced /css/ calls with relative links instead of
 calls to transfer

---
 views/DE/404.pug                        | 2 +-
 views/DE/500.pug                        | 2 +-
 views/DE/account/contact.pug            | 4 ++--
 views/DE/account/forgotPwd.pug          | 4 ++--
 views/DE/account/home.pug               | 2 +-
 views/DE/account/profile.pug            | 2 +-
 views/DE/account/registration.pug       | 2 +-
 views/DE/account/reset.pug              | 4 ++--
 views/DE/account/security.pug           | 2 +-
 views/DE/account/services.pug           | 2 +-
 views/DE/account/verification.pug       | 2 +-
 views/DE/project/addProjectOverview.pug | 2 +-
 views/DE/project/landingpage.pug        | 2 +-
 views/DE/project/mailinglists.pug       | 2 +-
 views/DE/project/project-simplified.pug | 2 +-
 views/DE/project/projectOverview.pug    | 2 +-
 views/DE/project/projects.pug           | 2 +-
 views/DE/project/videoconferences.pug   | 2 +-
 views/EN/account/forgotPwd.pug          | 4 ++--
 views/EN/account/home.pug               | 2 +-
 views/EN/account/profile.pug            | 2 +-
 views/EN/account/registration.pug       | 2 +-
 views/EN/account/reset.pug              | 4 ++--
 views/EN/account/security.pug           | 2 +-
 views/EN/account/services.pug           | 2 +-
 views/EN/project/addProjectOverview.pug | 2 +-
 views/EN/project/mailinglists.pug       | 2 +-
 views/EN/project/projects.pug           | 2 +-
 28 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/views/DE/404.pug b/views/DE/404.pug
index 575cfc99..28d105ae 100644
--- a/views/DE/404.pug
+++ b/views/DE/404.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "404 - Page not found"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     style.
       .container { 
         height: 400px;
diff --git a/views/DE/500.pug b/views/DE/500.pug
index 5f19f51a..b18e630c 100644
--- a/views/DE/500.pug
+++ b/views/DE/500.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "500 - Internal Server Error"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     style.
       .container { 
         height: 400px;
diff --git a/views/DE/account/contact.pug b/views/DE/account/contact.pug
index 508ca7af..ddf00d4f 100644
--- a/views/DE/account/contact.pug
+++ b/views/DE/account/contact.pug
@@ -4,12 +4,12 @@ html(lang="de")
     title= "Kontakt"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
     link(rel="stylesheet", type="text/css", href="/fonts/ionicons.min.css")
     link(rel="stylesheet", type="text/css", href="/css/Contact-Form-Clean.css")
     link(rel="stylesheet", type="text/css", href="/css/Testimonials.css")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/custom/login.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")
     style.
         .collapse {
diff --git a/views/DE/account/forgotPwd.pug b/views/DE/account/forgotPwd.pug
index 292572a4..a0e333ba 100644
--- a/views/DE/account/forgotPwd.pug
+++ b/views/DE/account/forgotPwd.pug
@@ -4,8 +4,8 @@ html(lang="de")
     title= "Forgot Password"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/custom/login.css")
+    link(rel="stylesheet", type="text/css", href="/css/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")
     style.
         .collapse {
diff --git a/views/DE/account/home.pug b/views/DE/account/home.pug
index 1b3729c7..0d427232 100644
--- a/views/DE/account/home.pug
+++ b/views/DE/account/home.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Account"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
     div(class="container")
diff --git a/views/DE/account/profile.pug b/views/DE/account/profile.pug
index fb114770..5ea7640a 100644
--- a/views/DE/account/profile.pug
+++ b/views/DE/account/profile.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
     div(class="container")
diff --git a/views/DE/account/registration.pug b/views/DE/account/registration.pug
index 2e0a1eee..5d169e73 100644
--- a/views/DE/account/registration.pug
+++ b/views/DE/account/registration.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Create New Account"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .warning {
diff --git a/views/DE/account/reset.pug b/views/DE/account/reset.pug
index ef8693e5..ede0800c 100644
--- a/views/DE/account/reset.pug
+++ b/views/DE/account/reset.pug
@@ -4,8 +4,8 @@ html(lang="de")
     title= "Reset Password"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/custom/login.css")
+    link(rel="stylesheet", type="text/css", href="/css/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")
     style.
         .collapse {
diff --git a/views/DE/account/security.pug b/views/DE/account/security.pug
index 523ee199..d060e233 100644
--- a/views/DE/account/security.pug
+++ b/views/DE/account/security.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .warning {
diff --git a/views/DE/account/services.pug b/views/DE/account/services.pug
index 1a525556..bb9dba43 100644
--- a/views/DE/account/services.pug
+++ b/views/DE/account/services.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
     div(class="container")
diff --git a/views/DE/account/verification.pug b/views/DE/account/verification.pug
index 34250834..a5518385 100644
--- a/views/DE/account/verification.pug
+++ b/views/DE/account/verification.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Verification"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     style.
       .container { 
         height: 400px;
diff --git a/views/DE/project/addProjectOverview.pug b/views/DE/project/addProjectOverview.pug
index 6894c88f..5752e8b9 100644
--- a/views/DE/project/addProjectOverview.pug
+++ b/views/DE/project/addProjectOverview.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Add Project Overview"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     // jQuery UI - Datepicker
     link(rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css")
diff --git a/views/DE/project/landingpage.pug b/views/DE/project/landingpage.pug
index 5ff093f2..d00050e9 100644
--- a/views/DE/project/landingpage.pug
+++ b/views/DE/project/landingpage.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/DE/project/mailinglists.pug b/views/DE/project/mailinglists.pug
index 16df2b40..5f24660f 100644
--- a/views/DE/project/mailinglists.pug
+++ b/views/DE/project/mailinglists.pug
@@ -3,7 +3,7 @@ html(lang="de")
     title= "Mailinglisten"
     meta(charset="UTF-8")
     meta(name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     link(rel="stylesheet" href="/fonts/ionicons.min.css")
     link(rel="stylesheet" href="assets/css/Testimonials.css")
diff --git a/views/DE/project/project-simplified.pug b/views/DE/project/project-simplified.pug
index fdda3403..a7f317b7 100644
--- a/views/DE/project/project-simplified.pug
+++ b/views/DE/project/project-simplified.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
       .help .card-title > a:before {
diff --git a/views/DE/project/projectOverview.pug b/views/DE/project/projectOverview.pug
index b7d9c9ee..beacda4a 100644
--- a/views/DE/project/projectOverview.pug
+++ b/views/DE/project/projectOverview.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/DE/project/projects.pug b/views/DE/project/projects.pug
index 09d3a93b..f3693d92 100644
--- a/views/DE/project/projects.pug
+++ b/views/DE/project/projects.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/DE/project/videoconferences.pug b/views/DE/project/videoconferences.pug
index 91ba82c2..20706244 100644
--- a/views/DE/project/videoconferences.pug
+++ b/views/DE/project/videoconferences.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/forgotPwd.pug b/views/EN/account/forgotPwd.pug
index 6b14d985..985793b0 100644
--- a/views/EN/account/forgotPwd.pug
+++ b/views/EN/account/forgotPwd.pug
@@ -4,8 +4,8 @@ html(lang="en")
     title= "Forgot Password"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/custom/login.css")
+    link(rel="stylesheet", type="text/css", href="/css/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")
     style.
         .collapse {
diff --git a/views/EN/account/home.pug b/views/EN/account/home.pug
index 82390276..df71fe18 100644
--- a/views/EN/account/home.pug
+++ b/views/EN/account/home.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "User Account"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/profile.pug b/views/EN/account/profile.pug
index 838bca98..60788795 100644
--- a/views/EN/account/profile.pug
+++ b/views/EN/account/profile.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/registration.pug b/views/EN/account/registration.pug
index 1e549e67..2e1aba4c 100644
--- a/views/EN/account/registration.pug
+++ b/views/EN/account/registration.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "Create New Account"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/reset.pug b/views/EN/account/reset.pug
index 0b964959..606b304f 100644
--- a/views/EN/account/reset.pug
+++ b/views/EN/account/reset.pug
@@ -4,8 +4,8 @@ html(lang="en")
     title= "Reset Password"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/custom/login.css")
+    link(rel="stylesheet", type="text/css", href="/css/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")
     style.
         .collapse {
diff --git a/views/EN/account/security.pug b/views/EN/account/security.pug
index e8d8be5b..c2c997b0 100644
--- a/views/EN/account/security.pug
+++ b/views/EN/account/security.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/services.pug b/views/EN/account/services.pug
index 7ad5e503..c70d729f 100644
--- a/views/EN/account/services.pug
+++ b/views/EN/account/services.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/project/addProjectOverview.pug b/views/EN/project/addProjectOverview.pug
index 42375dad..d0a4b0eb 100644
--- a/views/EN/project/addProjectOverview.pug
+++ b/views/EN/project/addProjectOverview.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Add Project Overview"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/project/mailinglists.pug b/views/EN/project/mailinglists.pug
index 43a4a436..fdc0ef23 100644
--- a/views/EN/project/mailinglists.pug
+++ b/views/EN/project/mailinglists.pug
@@ -3,7 +3,7 @@ html(lang="en")
     title= "Mailinglisten"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/project/projects.pug b/views/EN/project/projects.pug
index 720bc8fc..f1ecc579 100644
--- a/views/EN/project/projects.pug
+++ b/views/EN/project/projects.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
-- 
GitLab


From c2c7f24ffc7d51cbcc8cd341fe4a9928d4fe77cc Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 22 Jun 2020 11:39:07 +0000
Subject: [PATCH 14/40] Update mailinglists.pug, replaced
 assets/css/Testimonials.css with /css/Testimonials.css

---
 views/DE/project/mailinglists.pug | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/views/DE/project/mailinglists.pug b/views/DE/project/mailinglists.pug
index 5f24660f..3f8c8f6e 100644
--- a/views/DE/project/mailinglists.pug
+++ b/views/DE/project/mailinglists.pug
@@ -6,7 +6,7 @@ html(lang="de")
     link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     link(rel="stylesheet" href="/fonts/ionicons.min.css")
-    link(rel="stylesheet" href="assets/css/Testimonials.css")
+    link(rel="stylesheet" href="/css/Testimonials.css")
     style.
         .collapse {
             display: none;
-- 
GitLab


From 742c74f69d6d2cca5bf3394ea1dabadeb2dcad3e Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Fri, 26 Jun 2020 11:08:02 +0200
Subject: [PATCH 15/40] MLAB-225: fixing button position

---
 views/DE/project/mailinglists.pug | 27 +++------------------------
 1 file changed, 3 insertions(+), 24 deletions(-)

diff --git a/views/DE/project/mailinglists.pug b/views/DE/project/mailinglists.pug
index 3f8c8f6e..a676a7f8 100644
--- a/views/DE/project/mailinglists.pug
+++ b/views/DE/project/mailinglists.pug
@@ -7,27 +7,6 @@ html(lang="de")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     link(rel="stylesheet" href="/fonts/ionicons.min.css")
     link(rel="stylesheet" href="/css/Testimonials.css")
-    style.
-        .collapse {
-            display: none;
-        }
-        .collapse.in {
-            display: block;
-        }
-        .collapsing {
-            position: relative;
-            height: 0;
-            overflow: hidden;
-            -webkit-transition-timing-function: ease;
-            -o-transition-timing-function: ease;
-            transition-timing-function: ease;
-            -webkit-transition-duration: .35s;
-            -o-transition-duration: .35s;
-            transition-duration: .35s;
-            -webkit-transition-property: height,visibility;
-            -o-transition-property: height,visibility;
-            transition-property: height,visibility;
-        }
   body
     div(class="container")
         div(class="row")
@@ -79,9 +58,9 @@ html(lang="de")
                     p() Über das Transferportal können Sie selbst eine Liste zu Ihrem Projekt anlegen, um mit Ihren Partnern in Verbindung zu bleiben.
                     p() Folgen Sie hierzu der Anleitung des DFN.
 
-                div(class="col-md-4 col-lg-6" style="background-color: #ffffff;")
-                a(class="btn btn-primary text-center d-inline-flex d-lg-flex flex-column flex-grow-1 flex-shrink-1 flex-fill justify-content-between align-items-baseline align-content-center align-self-baseline flex-wrap justify-content-md-center align-items-md-end align-items-lg-center justify-content-xl-center mx-auto" role="button" style="background-color: #E0001B; margin-top:10px; margin-top:10px;" href="/downloads/Handout_Mailinglisten_Erstellen.pdf") <strong>Erste Schritte (Anleitung als PDF)</strong>
-                a(class="btn btn-primary text-center d-lg-flex justify-content-center align-items-center align-content-center align-self-center align-items-lg-end mx-auto" role="button" style="background-color: #E0001B;" href="https://www.listserv.dfn.de/sympa/help/admin") <strong>Gesamtes Tutorial bei DFN (externer Link)</strong>
+                div(class="col-md-4 col-lg-6 justify-content-between flex-wrap" style="background-color: #ffffff;")
+                    a(class="btn btn-primary text-center d-inline-flex d-lg-flex flex-column flex-grow-1 flex-shrink-1 flex-fill justify-content-between align-items-baseline align-content-center align-self-baseline flex-wrap order-3 justify-content-md-center align-items-md-end align-items-lg-center justify-content-xl-center mx-auto" role="button" style="background-color: #E0001B; margin-top:10px; margin-top:10px;" href="/downloads/Handout_Mailinglisten_Erstellen.pdf") <strong>Erste Schritte (Anleitung als PDF)</strong>
+                    a(class="btn btn-primary text-center d-inline-flex d-lg-flex flex-column flex-grow-1 flex-shrink-1 flex-fill justify-content-between align-items-baseline align-content-center align-self-baseline flex-wrap order-3 justify-content-md-center align-items-md-end align-items-lg-center justify-content-xl-center mx-auto" role="button" style="background-color: #E0001B; margin-top:10px; margin-top:10px;" href="https://www.listserv.dfn.de/sympa/help/admin") <strong>Gesamtes Tutorial bei DFN (externer Link)</strong>
 
     div(id="addListText" style="background-color: #dadada;margin-top: 0px;")
         div(class="container")
-- 
GitLab


From a3aca3db6bae9db94249a075f6aa2a1ec519b287 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 29 Jun 2020 14:48:42 +0200
Subject: [PATCH 16/40] [bugfix] added bootstrap.min.css as well to fix
 nonworking mobile version

---
 views/DE/project/projects.pug | 1 +
 1 file changed, 1 insertion(+)

diff --git a/views/DE/project/projects.pug b/views/DE/project/projects.pug
index f3693d92..6611eb81 100644
--- a/views/DE/project/projects.pug
+++ b/views/DE/project/projects.pug
@@ -4,6 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     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.min.css")
     link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
-- 
GitLab


From d3557f93ca58a19cd05557b58085199f007dfb1f Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 29 Jun 2020 14:53:31 +0200
Subject: [PATCH 17/40] [bugfix] added bootstrap.min.css to projectOverview

---
 views/DE/project/projectOverview.pug | 1 +
 1 file changed, 1 insertion(+)

diff --git a/views/DE/project/projectOverview.pug b/views/DE/project/projectOverview.pug
index beacda4a..87f0092e 100644
--- a/views/DE/project/projectOverview.pug
+++ b/views/DE/project/projectOverview.pug
@@ -4,6 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     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.min.css")
     link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
-- 
GitLab


From 1a59bf45bc24968606d46efae8428c651bcdbb43 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 29 Jun 2020 15:05:50 +0200
Subject: [PATCH 18/40] [bugfix] jquery-3.3.1.slim.min.js replaces
 jquery-3.3.1.min.js

---
 views/DE/project/projectOverview.pug | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/views/DE/project/projectOverview.pug b/views/DE/project/projectOverview.pug
index 87f0092e..edccc860 100644
--- a/views/DE/project/projectOverview.pug
+++ b/views/DE/project/projectOverview.pug
@@ -155,7 +155,7 @@ html(lang="de")
                             img(src="./images/M4_LAB_Projekt/Innovative_Hochschule_Initiative_BMBF_GWK_RGB.png" width="100%")
 
     //jQuery
-    script(src="https://code.jquery.com/jquery-3.3.1.min.js")
+    script(src="https://code.jquery.com/jquery-3.3.1.slim.min.js")
     script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
-- 
GitLab


From ba8d45532badf14f6ee738937aade12d3b472f2d Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 29 Jun 2020 15:22:47 +0200
Subject: [PATCH 19/40] [bugfix] removed inline styling

---
 views/DE/project/projectOverview.pug | 29 ++--------------------------
 1 file changed, 2 insertions(+), 27 deletions(-)

diff --git a/views/DE/project/projectOverview.pug b/views/DE/project/projectOverview.pug
index edccc860..5d759bd1 100644
--- a/views/DE/project/projectOverview.pug
+++ b/views/DE/project/projectOverview.pug
@@ -4,34 +4,9 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     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.min.css")
     link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
-    style.
-        .collapse {
-            display: none;
-        }
-        .collapse.in {
-            display: block;
-        }
-        .collapsing {
-            position: relative;
-            height: 0;
-            overflow: hidden;
-            -webkit-transition-timing-function: ease;
-            -o-transition-timing-function: ease;
-            transition-timing-function: ease;
-            -webkit-transition-duration: .35s;
-            -o-transition-duration: .35s;
-            transition-duration: .35s;
-            -webkit-transition-property: height,visibility;
-            -o-transition-property: height,visibility;
-            transition-property: height,visibility;
-        }
-        .warning {
-            color: red;
-            font-size: 11px;
-        }
+
   body
     div
         for project in projectOV
@@ -155,7 +130,7 @@ html(lang="de")
                             img(src="./images/M4_LAB_Projekt/Innovative_Hochschule_Initiative_BMBF_GWK_RGB.png" width="100%")
 
     //jQuery
-    script(src="https://code.jquery.com/jquery-3.3.1.slim.min.js")
+    script(src="https://code.jquery.com/jquery-3.3.1.min.js")
     script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
-- 
GitLab


From ca7cfce1b80f840aed6e79eca9dc34b79235d0fc Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 29 Jun 2020 15:31:43 +0200
Subject: [PATCH 20/40] [bugfix] removed any and all inline styling

---
 views/DE/project/landingpage.pug      | 26 +-------------------------
 views/DE/project/projects.pug         | 26 +-------------------------
 views/DE/project/videoconferences.pug | 25 -------------------------
 3 files changed, 2 insertions(+), 75 deletions(-)

diff --git a/views/DE/project/landingpage.pug b/views/DE/project/landingpage.pug
index d00050e9..f5263243 100644
--- a/views/DE/project/landingpage.pug
+++ b/views/DE/project/landingpage.pug
@@ -6,31 +6,7 @@ html(lang="de")
     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.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
-    style.
-        .collapse {
-            display: none;
-        }
-        .collapse.in {
-            display: block;
-        }
-        .collapsing {
-            position: relative;
-            height: 0;
-            overflow: hidden;
-            -webkit-transition-timing-function: ease;
-            -o-transition-timing-function: ease;
-            transition-timing-function: ease;
-            -webkit-transition-duration: .35s;
-            -o-transition-duration: .35s;
-            transition-duration: .35s;
-            -webkit-transition-property: height,visibility;
-            -o-transition-property: height,visibility;
-            transition-property: height,visibility;
-        }
-        .warning {
-            color: red;
-            font-size: 11px;
-        }
+
   body
     include landingpage.html
 
diff --git a/views/DE/project/projects.pug b/views/DE/project/projects.pug
index 6611eb81..95ec98e6 100644
--- a/views/DE/project/projects.pug
+++ b/views/DE/project/projects.pug
@@ -7,31 +7,7 @@ html(lang="de")
     link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
     link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
-    style.
-        .collapse {
-            display: none;
-        }
-        .collapse.in {
-            display: block;
-        }
-        .collapsing {
-            position: relative;
-            height: 0;
-            overflow: hidden;
-            -webkit-transition-timing-function: ease;
-            -o-transition-timing-function: ease;
-            transition-timing-function: ease;
-            -webkit-transition-duration: .35s;
-            -o-transition-duration: .35s;
-            transition-duration: .35s;
-            -webkit-transition-property: height,visibility;
-            -o-transition-property: height,visibility;
-            transition-property: height,visibility;
-        }
-        .warning {
-            color: red;
-            font-size: 11px;
-        }
+
   body
     div(class="container-fluid")
         if isUserAuthenticated
diff --git a/views/DE/project/videoconferences.pug b/views/DE/project/videoconferences.pug
index 20706244..6c82511f 100644
--- a/views/DE/project/videoconferences.pug
+++ b/views/DE/project/videoconferences.pug
@@ -6,31 +6,6 @@ html(lang="de")
     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.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
-    style.
-        .collapse {
-            display: none;
-        }
-        .collapse.in {
-            display: block;
-        }
-        .collapsing {
-            position: relative;
-            height: 0;
-            overflow: hidden;
-            -webkit-transition-timing-function: ease;
-            -o-transition-timing-function: ease;
-            transition-timing-function: ease;
-            -webkit-transition-duration: .35s;
-            -o-transition-duration: .35s;
-            transition-duration: .35s;
-            -webkit-transition-property: height,visibility;
-            -o-transition-property: height,visibility;
-            transition-property: height,visibility;
-        }
-        .warning {
-            color: red;
-            font-size: 11px;
-        }
   body
     div(class="flex-container")
         div(class="main")
-- 
GitLab


From 97fdd304ccec7c1368a21c0a90c1eddce043aa2a Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Wed, 1 Jul 2020 13:15:42 +0200
Subject: [PATCH 21/40] MLAB-223: delete collapse css

---
 views/DE/account/contact.pug   | 21 ---------------------
 views/DE/account/forgotPwd.pug | 21 ---------------------
 views/DE/account/reset.pug     | 21 ---------------------
 3 files changed, 63 deletions(-)

diff --git a/views/DE/account/contact.pug b/views/DE/account/contact.pug
index ddf00d4f..68dc8f03 100644
--- a/views/DE/account/contact.pug
+++ b/views/DE/account/contact.pug
@@ -11,27 +11,6 @@ html(lang="de")
     link(rel="stylesheet", type="text/css", href="/css/Testimonials.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")
-    style.
-        .collapse {
-            display: none;
-        }
-        .collapse.in {
-            display: block;
-        }
-        .collapsing {
-            position: relative;
-            height: 0;
-            overflow: hidden;
-            -webkit-transition-timing-function: ease;
-            -o-transition-timing-function: ease;
-            transition-timing-function: ease;
-            -webkit-transition-duration: .35s;
-            -o-transition-duration: .35s;
-            transition-duration: .35s;
-            -webkit-transition-property: height,visibility;
-            -o-transition-property: height,visibility;
-            transition-property: height,visibility;
-        }
   body
     div(class="container")
         div(class="row")
diff --git a/views/DE/account/forgotPwd.pug b/views/DE/account/forgotPwd.pug
index a0e333ba..8b8669f6 100644
--- a/views/DE/account/forgotPwd.pug
+++ b/views/DE/account/forgotPwd.pug
@@ -7,27 +7,6 @@ html(lang="de")
     link(rel="stylesheet", type="text/css", href="/css/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")
-    style.
-        .collapse {
-            display: none;
-        }
-        .collapse.in {
-            display: block;
-        }
-        .collapsing {
-            position: relative;
-            height: 0;
-            overflow: hidden;
-            -webkit-transition-timing-function: ease;
-            -o-transition-timing-function: ease;
-            transition-timing-function: ease;
-            -webkit-transition-duration: .35s;
-            -o-transition-duration: .35s;
-            transition-duration: .35s;
-            -webkit-transition-property: height,visibility;
-            -o-transition-property: height,visibility;
-            transition-property: height,visibility;
-        }
   body
     div(class="container-fluid")
         div(class="row")
diff --git a/views/DE/account/reset.pug b/views/DE/account/reset.pug
index ede0800c..bfc3251d 100644
--- a/views/DE/account/reset.pug
+++ b/views/DE/account/reset.pug
@@ -7,27 +7,6 @@ html(lang="de")
     link(rel="stylesheet", type="text/css", href="/css/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")
-    style.
-        .collapse {
-            display: none;
-        }
-        .collapse.in {
-            display: block;
-        }
-        .collapsing {
-            position: relative;
-            height: 0;
-            overflow: hidden;
-            -webkit-transition-timing-function: ease;
-            -o-transition-timing-function: ease;
-            transition-timing-function: ease;
-            -webkit-transition-duration: .35s;
-            -o-transition-duration: .35s;
-            transition-duration: .35s;
-            -webkit-transition-property: height,visibility;
-            -o-transition-property: height,visibility;
-            transition-property: height,visibility;
-        }
   body
     div(class="container-fluid")
         div(class="row")
-- 
GitLab


From 86f64bfee5e6a1a339c13afe3a85d2842b45106d Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Thu, 2 Jul 2020 10:56:34 +0200
Subject: [PATCH 22/40] MLAB-253: use the original bootstrap CSS

---
 views/DE/404.pug | 2 +-
 views/DE/500.pug | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/views/DE/404.pug b/views/DE/404.pug
index 28d105ae..5a16f086 100644
--- a/views/DE/404.pug
+++ b/views/DE/404.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "404 - Page not found"
     meta(charset="UTF-8")
     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.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
     style.
       .container { 
         height: 400px;
diff --git a/views/DE/500.pug b/views/DE/500.pug
index b18e630c..aea0e76c 100644
--- a/views/DE/500.pug
+++ b/views/DE/500.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "500 - Internal Server Error"
     meta(charset="UTF-8")
     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.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
     style.
       .container { 
         height: 400px;
-- 
GitLab


From a7f46e4e45ff69627369a71639afd2333f30179d Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Thu, 2 Jul 2020 11:12:27 +0200
Subject: [PATCH 23/40] MLAB-253: replace bootstrap.css with m4lab.css on
 Account Pages

---
 views/DE/account/contact.pug      | 2 +-
 views/DE/account/forgotPwd.pug    | 3 ++-
 views/DE/account/home.pug         | 3 ++-
 views/DE/account/profile.pug      | 3 ++-
 views/DE/account/registration.pug | 3 ++-
 views/DE/account/reset.pug        | 3 ++-
 views/DE/account/security.pug     | 3 ++-
 views/DE/account/services.pug     | 3 ++-
 views/DE/account/verification.pug | 3 ++-
 9 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/views/DE/account/contact.pug b/views/DE/account/contact.pug
index 68dc8f03..67107cf9 100644
--- a/views/DE/account/contact.pug
+++ b/views/DE/account/contact.pug
@@ -4,8 +4,8 @@ html(lang="de")
     title= "Kontakt"
     meta(charset="UTF-8")
     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.css")
     link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
     link(rel="stylesheet", type="text/css", href="/fonts/ionicons.min.css")
     link(rel="stylesheet", type="text/css", href="/css/Contact-Form-Clean.css")
     link(rel="stylesheet", type="text/css", href="/css/Testimonials.css")
diff --git a/views/DE/account/forgotPwd.pug b/views/DE/account/forgotPwd.pug
index 8b8669f6..75390a80 100644
--- a/views/DE/account/forgotPwd.pug
+++ b/views/DE/account/forgotPwd.pug
@@ -4,7 +4,8 @@ html(lang="de")
     title= "Forgot Password"
     meta(charset="UTF-8")
     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.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.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")
   body
diff --git a/views/DE/account/home.pug b/views/DE/account/home.pug
index 0d427232..54c4ced0 100644
--- a/views/DE/account/home.pug
+++ b/views/DE/account/home.pug
@@ -4,7 +4,8 @@ html(lang="de")
     title= "User Account"
     meta(charset="UTF-8")
     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.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
     div(class="container")
diff --git a/views/DE/account/profile.pug b/views/DE/account/profile.pug
index 5ea7640a..190fc1c7 100644
--- a/views/DE/account/profile.pug
+++ b/views/DE/account/profile.pug
@@ -4,7 +4,8 @@ html(lang="de")
     title= "User Profile"
     meta(charset="UTF-8")
     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.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
     div(class="container")
diff --git a/views/DE/account/registration.pug b/views/DE/account/registration.pug
index 5d169e73..39fc405d 100644
--- a/views/DE/account/registration.pug
+++ b/views/DE/account/registration.pug
@@ -4,7 +4,8 @@ html(lang="de")
     title= "Create New Account"
     meta(charset="UTF-8")
     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.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .warning {
diff --git a/views/DE/account/reset.pug b/views/DE/account/reset.pug
index bfc3251d..a6ef872a 100644
--- a/views/DE/account/reset.pug
+++ b/views/DE/account/reset.pug
@@ -4,7 +4,8 @@ html(lang="de")
     title= "Reset Password"
     meta(charset="UTF-8")
     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.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.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")
   body
diff --git a/views/DE/account/security.pug b/views/DE/account/security.pug
index d060e233..81da0660 100644
--- a/views/DE/account/security.pug
+++ b/views/DE/account/security.pug
@@ -4,7 +4,8 @@ html(lang="de")
     title= "User Profile"
     meta(charset="UTF-8")
     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.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .warning {
diff --git a/views/DE/account/services.pug b/views/DE/account/services.pug
index bb9dba43..a2015cd9 100644
--- a/views/DE/account/services.pug
+++ b/views/DE/account/services.pug
@@ -4,7 +4,8 @@ html(lang="de")
     title= "User Profile"
     meta(charset="UTF-8")
     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.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
     div(class="container")
diff --git a/views/DE/account/verification.pug b/views/DE/account/verification.pug
index a5518385..10cdea08 100644
--- a/views/DE/account/verification.pug
+++ b/views/DE/account/verification.pug
@@ -4,7 +4,8 @@ html(lang="de")
     title= "User Verification"
     meta(charset="UTF-8")
     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.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
     style.
       .container { 
         height: 400px;
-- 
GitLab


From d6b0a60d1ecb5f638e7f3be239707ebc9a5a46e4 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Thu, 2 Jul 2020 11:16:32 +0200
Subject: [PATCH 24/40] MLAB-253: replace boostrap.css with m4lab.css on
 Project Pages

---
 views/DE/project/addProjectOverview.pug | 3 ++-
 views/DE/project/landingpage.pug        | 3 ++-
 views/DE/project/mailinglists.pug       | 3 ++-
 views/DE/project/project-simplified.pug | 3 ++-
 views/DE/project/projectOverview.pug    | 3 ++-
 views/DE/project/projects.pug           | 2 +-
 views/DE/project/videoconferences.pug   | 3 ++-
 7 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/views/DE/project/addProjectOverview.pug b/views/DE/project/addProjectOverview.pug
index 5752e8b9..8119c861 100644
--- a/views/DE/project/addProjectOverview.pug
+++ b/views/DE/project/addProjectOverview.pug
@@ -4,7 +4,8 @@ html(lang="de")
     title= "Add Project Overview"
     meta(charset="UTF-8")
     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.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     // jQuery UI - Datepicker
     link(rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css")
diff --git a/views/DE/project/landingpage.pug b/views/DE/project/landingpage.pug
index f5263243..5aaf31a5 100644
--- a/views/DE/project/landingpage.pug
+++ b/views/DE/project/landingpage.pug
@@ -4,7 +4,8 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     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.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
 
   body
diff --git a/views/DE/project/mailinglists.pug b/views/DE/project/mailinglists.pug
index a676a7f8..bf3c747b 100644
--- a/views/DE/project/mailinglists.pug
+++ b/views/DE/project/mailinglists.pug
@@ -3,7 +3,8 @@ html(lang="de")
     title= "Mailinglisten"
     meta(charset="UTF-8")
     meta(name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no")
-    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     link(rel="stylesheet" href="/fonts/ionicons.min.css")
     link(rel="stylesheet" href="/css/Testimonials.css")
diff --git a/views/DE/project/project-simplified.pug b/views/DE/project/project-simplified.pug
index a7f317b7..5219c290 100644
--- a/views/DE/project/project-simplified.pug
+++ b/views/DE/project/project-simplified.pug
@@ -4,7 +4,8 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     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.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
       .help .card-title > a:before {
diff --git a/views/DE/project/projectOverview.pug b/views/DE/project/projectOverview.pug
index 5d759bd1..512534c2 100644
--- a/views/DE/project/projectOverview.pug
+++ b/views/DE/project/projectOverview.pug
@@ -4,7 +4,8 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     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.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
 
   body
diff --git a/views/DE/project/projects.pug b/views/DE/project/projects.pug
index 95ec98e6..44748f8a 100644
--- a/views/DE/project/projects.pug
+++ b/views/DE/project/projects.pug
@@ -5,7 +5,7 @@ html(lang="de")
     meta(charset="UTF-8")
     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.min.css")
-    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
 
   body
diff --git a/views/DE/project/videoconferences.pug b/views/DE/project/videoconferences.pug
index 6c82511f..de48a2a4 100644
--- a/views/DE/project/videoconferences.pug
+++ b/views/DE/project/videoconferences.pug
@@ -4,7 +4,8 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     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.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
     div(class="flex-container")
-- 
GitLab


From bd831d5b4a3749bfb2d3f8e2b5ce80e91a6b83b5 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Thu, 2 Jul 2020 13:02:09 +0200
Subject: [PATCH 25/40] MLAB-251: responsive page

---
 views/DE/project/projectOverview.pug | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/views/DE/project/projectOverview.pug b/views/DE/project/projectOverview.pug
index 512534c2..e12d5f42 100644
--- a/views/DE/project/projectOverview.pug
+++ b/views/DE/project/projectOverview.pug
@@ -11,29 +11,25 @@ html(lang="de")
   body
     div
         for project in projectOV
-            div(class="flex-container")
-                div(class="main")
+            div(class="row")
+                div(class="col-sm-8 pt-3")
                     h1 #{project.title}
                     div(style="float:right; margin-left:30px; margin-bottom:0px; width:50%;")
                         img(src=project.src, width="100%")
                         p(style="text-align:right") #{project.caption}
 
-                    h2 Projektüberblick
+                    h2(class="pt-4") Projektüberblick
                     p !{project.overview}
                     br
                     b keywords:
                     span #{project.keywords}
-                    br
-                    h2 Fragestellung
+                    h2(class="pt-4") Fragestellung
                     p !{project.question}
-                    p
-                    h2 Vorgehensweise
+                    h2(class="pt-4") Vorgehensweise
                     p !{project.approach}
-                    br
-                    br
-                    h2 Ergebnis und Nutzung
+                    h2(class="pt-4") Ergebnis und Nutzung
                     p !{project.result}
-                div(class="side")
+                div(class="col-sm-4 pt-3" style="background-color: #f1f1f1")
                     for image in projectImgs
                         if image.pos == '2' || image.pos == '3'
                             div(class="projectimg")
-- 
GitLab


From d0cd5be6683bacf043acfffc638b268671fe7cf4 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Thu, 2 Jul 2020 13:09:37 +0200
Subject: [PATCH 26/40] MLAB-251: add container

---
 views/DE/project/projectOverview.pug | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/views/DE/project/projectOverview.pug b/views/DE/project/projectOverview.pug
index e12d5f42..8c9ab406 100644
--- a/views/DE/project/projectOverview.pug
+++ b/views/DE/project/projectOverview.pug
@@ -9,7 +9,7 @@ html(lang="de")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
 
   body
-    div
+    div(class="container")
         for project in projectOV
             div(class="row")
                 div(class="col-sm-8 pt-3")
-- 
GitLab


From 694f15b286c961d1a4d521fba3742a45bac6ed73 Mon Sep 17 00:00:00 2001
From: Varun Srivastava <92srva1mst@hft-stuttgart.de>
Date: Fri, 3 Jul 2020 13:57:22 +0200
Subject: [PATCH 27/40] email signature changes

---
 config/config.js         |  3 +-
 routes/routes-account.js | 99 ++++++++++++++++++++++++++--------------
 2 files changed, 67 insertions(+), 35 deletions(-)

diff --git a/config/config.js b/config/config.js
index 201291a1..30cd6a8d 100644
--- a/config/config.js
+++ b/config/config.js
@@ -44,7 +44,8 @@ module.exports = {
       saml: {
         path: process.env.SAML_PATH || '/saml/SSO',
         entryPoint: process.env.SAML_ENTRY_POINT || 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SSOService.php',
-        issuer: 'sp-account-testing.m4lab.hft-stuttgart.de', //testing metadata
+        issuer: 'sp-account.m4lab.hft-stuttgart.de', //local metadata
+        //issuer: 'sp-account-testing.m4lab.hft-stuttgart.de', //testing metadata
         //issuer: 'sp-account-prod.m4lab.hft-stuttgart.de', //production metadata
         logoutUrl: 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SingleLogoutService.php'
       }
diff --git a/routes/routes-account.js b/routes/routes-account.js
index 40c54b58..f7a83d9e 100644
--- a/routes/routes-account.js
+++ b/routes/routes-account.js
@@ -22,6 +22,20 @@ module.exports = function (app, config, passport, i18n) {
     done(null, user);
   });
 
+  const mailSignature = 'Mit den besten Grüßen,<br/>das Transferportal-Team der HFT Stuttgart<br/><br/>' +
+    'Transferportal der Hochschule für Technik Stuttgart<br/>' +
+    'Schellingstr. 24   70174 Stuttgart<br/>' +
+    'm4lab@hft-stuttgart.de<br/>' +
+    'https://transfer.hft-stuttgart.de<br/>' +
+    '<a href="http://www.hft-stuttgart.de/Aktuell/"><img border="0" alt="HFT" src="HFT_logo.png"></a>  &nbsp;' +
+    '<a href="http://www.facebook.com/hftstuttgart"><img border="0" alt="Facebook" src="facebook.png"></a>  &nbsp;' +
+    '<a href="https://www.instagram.com/hft_stuttgart/"><img border="0" alt="Instagram" src="instagram.png"></a>  &nbsp;' +
+    '<a href="https://twitter.com/hft_presse"><img border="0" alt="Twitter" src="twitter.png"></a>  &nbsp;' +
+    '<a href="https://www.youtube.com/channel/UCi0_JfF2qMZbOhOnNH5PyHA"><img border="0" alt="Youtube" src="youtube.png"></a>  &nbsp;' +
+    '<a href="http://www.hft-stuttgart.de/Aktuell/Presse-Marketing/SocialMedia/Snapcode HFT_Stuttgart.jpg/photo_view">' +
+    '<img border="0" alt="Snapchat" src="snapchat.png"></a>' +
+    '<br/><img border="0" src="Innovative_Hochschule.png">'
+
   var samlStrategy = new SamlStrategy({
       // URL that goes from the Identity Provider -> Service Provider
       callbackUrl: config.passport.saml.path,
@@ -86,13 +100,13 @@ module.exports = function (app, config, passport, i18n) {
 
   // ======== APP ROUTES - ACCOUNT ====================
   var updatePasswordMailSubject = "Ihr Passwort für das Transferportal wurde gespeichert."
-  var mailSignature = "Mit den besten Grüßen,\ndas Transferportal-Team der HFT Stuttgart\n\n"+
-    "Transferportal der Hochschule für Technik Stuttgart\n"+
-    "Schellingstr. 24\n"+
-    "70174 Stuttgart\n"+
-    "m4lab@hft-stuttgart.de\n"+
-    "https://transfer.hft-stuttgart.de"
-  var updatePasswordMailContent = "Lieber Nutzer,\n\n"+"Ihr Passwort wurde erfolgreich geändert.\n\n"+mailSignature
+  // var mailSignature = "Mit den besten Grüßen,\ndas Transferportal-Team der HFT Stuttgart\n\n"+
+  //   "Transferportal der Hochschule für Technik Stuttgart\n"+
+  //   "Schellingstr. 24\n"+
+  //   "70174 Stuttgart\n"+
+  //   "m4lab@hft-stuttgart.de\n"+
+  //   "https://transfer.hft-stuttgart.de"
+  var updatePasswordMailContent = '<div>Lieber Nutzer,<br/><br/>Ihr Passwort wurde erfolgreich geändert.<br/><br/>' + mailSignature + '</div>';
 
   app.get('/', function (req, res) {
     if (req.isAuthenticated()) {
@@ -346,7 +360,7 @@ module.exports = function (app, config, passport, i18n) {
                           mailer.options.to = req.user.email
                           //mailOptions.subject = "Your M4_LAB Password has been updated."
                           mailer.options.subject = updatePasswordMailSubject
-                          mailer.options.text = updatePasswordMailContent
+                          mailer.options.html = updatePasswordMailContent
                           mailer.transport.sendMail(mailer.options, function(err) {
                             if (err) {
                               console.log(err)
@@ -402,12 +416,17 @@ module.exports = function (app, config, passport, i18n) {
               "Otherwise, you can reset your password using this link: http://m4lab.hft-stuttgart.de/account/reset/" + token + "\n" +
               "This password reset is only valid for 1 hour.\n\n"+
               "Thanks,\nM4_LAB Team" */
-            var emailContent = "Lieber Nutzer,\n\n"+
-              "wir haben Ihre Anfrage zur Erneuerung Ihres Passwortes erhalten. Falls Sie diese Anfrage nicht gesendet haben, ignorieren Sie bitte diese E-Mail.\n\n"+
-              "Sie können Ihr Passwort mit dem Klick auf diesen Link ändern: http://m4lab.hft-stuttgart.de/account/reset/" + token + "\n" + // test server
-              //"Sie können Ihr Passwort mit dem Klick auf diesen Link ändern: http://localhost:9989/reset/" + token + "\n" + // localhost
-              "Dieser Link ist aus Sicherheitsgründen nur für 1 Stunde gültig.\n\n"+mailSignature
-
+            // var emailContent = "Lieber Nutzer,\n\n"+
+            //   "wir haben Ihre Anfrage zur Erneuerung Ihres Passwortes erhalten. Falls Sie diese Anfrage nicht gesendet haben, ignorieren Sie bitte diese E-Mail.\n\n"+
+            //   "Sie können Ihr Passwort mit dem Klick auf diesen Link ändern: http://m4lab.hft-stuttgart.de/account/reset/" + token + "\n" + // test server
+            //   //"Sie können Ihr Passwort mit dem Klick auf diesen Link ändern: http://localhost:9989/reset/" + token + "\n" + // localhost
+            //   "Dieser Link ist aus Sicherheitsgründen nur für 1 Stunde gültig.\n\n"+mailSignature
+
+            var emailContent = '<div>Lieber Nutzer, Varun<br/><br/>' +
+              '<p>wir haben Ihre Anfrage zur Erneuerung Ihres Passwortes erhalten. Falls Sie diese Anfrage nicht gesendet haben, ignorieren Sie bitte diese E-Mail.<br/><br/>' +
+              'Sie können Ihr Passwort mit dem Klick auf diesen Link ändern: http://m4lab.hft-stuttgart.de/account/reset/' + token + '<br/>' + // test server
+              'Dieser Link ist aus Sicherheitsgründen nur für 1 Stunde gültig.<br/></p>' + mailSignature + '</div>';
+            
             var credentialData = {
               user_id: user.id,
               resetPasswordToken: token,
@@ -420,7 +439,7 @@ module.exports = function (app, config, passport, i18n) {
             // send email
             mailer.options.to = emailAddress;
             mailer.options.subject = emailSubject;
-            mailer.options.text = emailContent;
+            mailer.options.html = emailContent;
             mailer.transport.sendMail(mailer.options, function(err) {
               done(err, 'done');
             });
@@ -483,7 +502,7 @@ module.exports = function (app, config, passport, i18n) {
                 // send notifiaction email
                 mailer.options.to = user.email
                 mailer.options.subject = updatePasswordMailSubject
-                mailer.options.text = updatePasswordMailContent
+                mailer.options.html = updatePasswordMailContent
                 mailer.transport.sendMail(mailer.options, function(err) {
                   if (err) {
                     console.log(err)
@@ -563,15 +582,20 @@ module.exports = function (app, config, passport, i18n) {
             else {
               // send email
               var emailSubject = "Bitte bestätigen Sie Ihr M4_LAB Benutzerkonto"
-              var emailContent = "Lieber Nutzer,\n\n"+
-                  "vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart.\n"+
-                  "Um Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: "+config.app.host+"/verifyAccount?token="+token+"\n"+
-                  "Ohne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.\n\n"+
-                  "Sollten Sie sich selbst nicht mit Ihren Daten am Transferportal registriert haben, ignorieren Sie diese E-Mail bitte.\n\n"+mailSignature
-              
+              // var emailContent = "Lieber Nutzer,\n\n"+
+              //     "vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart.\n"+
+              //     "Um Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: "+config.app.host+"/verifyAccount?token="+token+"\n"+
+              //     "Ohne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.\n\n"+
+              //     "Sollten Sie sich selbst nicht mit Ihren Daten am Transferportal registriert haben, ignorieren Sie diese E-Mail bitte.\n\n"+mailSignature
+              var emailContent = '<div>Lieber Nutzer,<br/><br/>' +
+                '<p>vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart. <br/>' +
+                'Um Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: ' + config.app.host + '/verifyAccount?token=' + token +
+                '<br/><br/>' +
+                'Ohne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.</p><br/>' + mailSignature +
+                '</div>';
               mailer.options.to = req.body.inputEmail;
               mailer.options.subject = emailSubject;
-              mailer.options.text = emailContent;
+              mailer.options.html = emailContent;
               mailer.transport.sendMail(mailer.options, function(err) {
                 if (err) {
                   console.log('cannot send email')
@@ -615,13 +639,15 @@ module.exports = function (app, config, passport, i18n) {
               else {
                 // send email
                 var emailSubject = "Herzlich willkommen"
-                var emailContent = "Lieber Nutzer,\n\n"+
-                    "herzlich willkommen beim Transferportal der HFT Stuttgart!\n"+ 
-                    "Sie können nun alle Dienste des Portals nutzen.\n\n"+mailSignature
-                
+                // var emailContent = "Lieber Nutzer,\n\n"+
+                //     "herzlich willkommen beim Transferportal der HFT Stuttgart!\n"+ 
+                //     "Sie können nun alle Dienste des Portals nutzen.\n\n"+mailSignature
+                var emailContent = '<div>Lieber Nutzer,<br/><br/>' +
+                  '<p>herzlich willkommen beim Transferportal der HFT Stuttgart!<br/>' +
+                  'Sie können nun alle Dienste des Portals nutzen.<p/><br/>' + mailSignature;
                 mailer.options.to = data.email;
                 mailer.options.subject = emailSubject;
-                mailer.options.text = emailContent;
+                mailer.options.html = emailContent;
                 mailer.transport.sendMail(mailer.options, function(err) {
                   if (err) {
                     console.log('cannot send email')
@@ -656,14 +682,19 @@ module.exports = function (app, config, passport, i18n) {
               if (token) {
                 // send email
                 var emailSubject = "Bitte bestätigen Sie Ihr M4_LAB Benutzerkonto"
-                var emailContent = "Lieber Nutzer,\n\n"+
-                    "vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart. "+ 
-                    "\nUm Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: "+config.app.host+"/verifyAccount?token="+token+
-                    "\n\nOhne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.\n\n"+mailSignature
-                
+                // var emailContent = "Lieber Nutzer,\n\n"+
+                //     "vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart. "+ 
+                //     "\nUm Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: "+config.app.host+"/verifyAccount?token="+token+
+                //     "\n\nOhne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.\n\n"+mailSignature
+                var emailContent = '<div>Lieber Nutzer,<br/><br/>' +
+                  '<p>vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart. <br/>' +
+                  'Um Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: ' + config.app.host + '/verifyAccount?token=' + token +
+                  '<br/><br/>' +
+                  'Ohne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.</p><br/>' + mailSignature +
+                  '</div>';
                 mailer.options.to = emailAddress;
                 mailer.options.subject = emailSubject;
-                mailer.options.text = emailContent;
+                mailer.options.html = emailContent;
                 mailer.transport.sendMail(mailer.options, function(err) {
                   if (err) {
                     console.log('cannot send email')
-- 
GitLab


From fb9e8971362acfddf995980552a1ec1309d2f7cf Mon Sep 17 00:00:00 2001
From: Varun Srivastava <92srva1mst@hft-stuttgart.de>
Date: Fri, 3 Jul 2020 13:59:19 +0200
Subject: [PATCH 28/40] reverting config changes

---
 config/config.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/config/config.js b/config/config.js
index 30cd6a8d..1535c914 100644
--- a/config/config.js
+++ b/config/config.js
@@ -44,8 +44,8 @@ module.exports = {
       saml: {
         path: process.env.SAML_PATH || '/saml/SSO',
         entryPoint: process.env.SAML_ENTRY_POINT || 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SSOService.php',
-        issuer: 'sp-account.m4lab.hft-stuttgart.de', //local metadata
-        //issuer: 'sp-account-testing.m4lab.hft-stuttgart.de', //testing metadata
+        //issuer: 'sp-account.m4lab.hft-stuttgart.de', //local metadata
+        issuer: 'sp-account-testing.m4lab.hft-stuttgart.de', //testing metadata
         //issuer: 'sp-account-prod.m4lab.hft-stuttgart.de', //production metadata
         logoutUrl: 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SingleLogoutService.php'
       }
-- 
GitLab


From b21bf6a15c3ff56f2cd1cab919c0074bcec4f0a1 Mon Sep 17 00:00:00 2001
From: Varun Srivastava <92srva1mst@hft-stuttgart.de>
Date: Fri, 3 Jul 2020 14:10:37 +0200
Subject: [PATCH 29/40] updated the links for images in signature

---
 routes/routes-account.js | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/routes/routes-account.js b/routes/routes-account.js
index f7a83d9e..66f44bfa 100644
--- a/routes/routes-account.js
+++ b/routes/routes-account.js
@@ -27,14 +27,14 @@ module.exports = function (app, config, passport, i18n) {
     'Schellingstr. 24   70174 Stuttgart<br/>' +
     'm4lab@hft-stuttgart.de<br/>' +
     'https://transfer.hft-stuttgart.de<br/>' +
-    '<a href="http://www.hft-stuttgart.de/Aktuell/"><img border="0" alt="HFT" src="HFT_logo.png"></a>  &nbsp;' +
-    '<a href="http://www.facebook.com/hftstuttgart"><img border="0" alt="Facebook" src="facebook.png"></a>  &nbsp;' +
-    '<a href="https://www.instagram.com/hft_stuttgart/"><img border="0" alt="Instagram" src="instagram.png"></a>  &nbsp;' +
-    '<a href="https://twitter.com/hft_presse"><img border="0" alt="Twitter" src="twitter.png"></a>  &nbsp;' +
-    '<a href="https://www.youtube.com/channel/UCi0_JfF2qMZbOhOnNH5PyHA"><img border="0" alt="Youtube" src="youtube.png"></a>  &nbsp;' +
+    '<a href="http://www.hft-stuttgart.de/Aktuell/"><img border="0" alt="HFT" src="https://m4lab.hft-stuttgart.de/img/signature/hft_logo.png" width="30" height="30"></a>  &nbsp;' +
+    '<a href="http://www.facebook.com/hftstuttgart"><img border="0" alt="Facebook" src="https://m4lab.hft-stuttgart.de/img/signature/fb_bw.png" width="30" height="30"></a>  &nbsp;' +
+    '<a href="https://www.instagram.com/hft_stuttgart/"><img border="0" alt="Instagram" src="https://m4lab.hft-stuttgart.de/img/signature/instagram_bw.png" width="30" height="30"></a>  &nbsp;' +
+    '<a href="https://twitter.com/hft_presse"><img border="0" alt="Twitter" src="https://m4lab.hft-stuttgart.de/img/signature/twitter_bw.png" width="30" height="30"></a>  &nbsp;' +
+    '<a href="https://www.youtube.com/channel/UCi0_JfF2qMZbOhOnNH5PyHA"><img border="0" alt="Youtube" src="https://m4lab.hft-stuttgart.de/img/signature/youtube_bw.png" width="30" height="30"></a>  &nbsp;' +
     '<a href="http://www.hft-stuttgart.de/Aktuell/Presse-Marketing/SocialMedia/Snapcode HFT_Stuttgart.jpg/photo_view">' +
-    '<img border="0" alt="Snapchat" src="snapchat.png"></a>' +
-    '<br/><img border="0" src="Innovative_Hochschule.png">'
+    '<img border="0" alt="Snapchat" src="https://m4lab.hft-stuttgart.de/img/signature/snapchat_bw.png" width="30" height="30"></a>' +
+    '<br/><img border="0" src="https://m4lab.hft-stuttgart.de/img/signature/inno_bw.png" width="150" height="100">'
 
   var samlStrategy = new SamlStrategy({
       // URL that goes from the Identity Provider -> Service Provider
-- 
GitLab


From 8726c4af11ca3ae0bda8080608da77d45ec08a88 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Fri, 3 Jul 2020 15:41:52 +0200
Subject: [PATCH 30/40] add link to portal URL

---
 routes/routes-account.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/routes/routes-account.js b/routes/routes-account.js
index 66f44bfa..f0477561 100644
--- a/routes/routes-account.js
+++ b/routes/routes-account.js
@@ -26,7 +26,7 @@ module.exports = function (app, config, passport, i18n) {
     'Transferportal der Hochschule für Technik Stuttgart<br/>' +
     'Schellingstr. 24   70174 Stuttgart<br/>' +
     'm4lab@hft-stuttgart.de<br/>' +
-    'https://transfer.hft-stuttgart.de<br/>' +
+    '<a href="https://transfer.hft-stuttgart.de">https://transfer.hft-stuttgart.de</a><br/>' +
     '<a href="http://www.hft-stuttgart.de/Aktuell/"><img border="0" alt="HFT" src="https://m4lab.hft-stuttgart.de/img/signature/hft_logo.png" width="30" height="30"></a>  &nbsp;' +
     '<a href="http://www.facebook.com/hftstuttgart"><img border="0" alt="Facebook" src="https://m4lab.hft-stuttgart.de/img/signature/fb_bw.png" width="30" height="30"></a>  &nbsp;' +
     '<a href="https://www.instagram.com/hft_stuttgart/"><img border="0" alt="Instagram" src="https://m4lab.hft-stuttgart.de/img/signature/instagram_bw.png" width="30" height="30"></a>  &nbsp;' +
-- 
GitLab


From 715c0c5a4f5c7de0654751f2805b0b6875bf4054 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 13 Jul 2020 07:46:35 +0000
Subject: [PATCH 31/40] Update .gitlab-ci.yml

---
 .gitlab-ci.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 273c37c2..80cb7c29 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,4 +1,4 @@
-pages-devel:    
+pages-testing:    
   stage: deploy
   script:
     - npm install
-- 
GitLab


From 0031c8a3b1818cb05d7f1644f370d04e632fdf1c Mon Sep 17 00:00:00 2001
From: sanny <rosanny.sihombing@hft-stuttgart.de>
Date: Wed, 15 Jul 2020 12:13:46 +0200
Subject: [PATCH 32/40] delete unused files

---
 routes/routes-project.js                | 362 ------------------------
 views/DE/project/addProjectOverview.pug | 144 ----------
 views/DE/project/landingpage.html       |  68 -----
 views/DE/project/landingpage.pug        |  24 --
 views/DE/project/mailinglists.pug       |  79 ------
 views/DE/project/project-simplified.pug |  52 ----
 views/DE/project/project.html           | 220 --------------
 views/DE/project/projectOverview.pug    | 135 ---------
 views/DE/project/projects.pug           |  91 ------
 views/DE/project/videoconferences.pug   |  43 ---
 views/EN/error.pug                      |   6 -
 views/EN/layout.pug                     |  12 -
 views/EN/project/addProjectOverview.pug | 115 --------
 views/EN/project/mailinglists.pug       |  61 ----
 views/EN/project/projects.pug           | 117 --------
 15 files changed, 1529 deletions(-)
 delete mode 100644 routes/routes-project.js
 delete mode 100644 views/DE/project/addProjectOverview.pug
 delete mode 100644 views/DE/project/landingpage.html
 delete mode 100644 views/DE/project/landingpage.pug
 delete mode 100644 views/DE/project/mailinglists.pug
 delete mode 100644 views/DE/project/project-simplified.pug
 delete mode 100644 views/DE/project/project.html
 delete mode 100644 views/DE/project/projectOverview.pug
 delete mode 100644 views/DE/project/projects.pug
 delete mode 100644 views/DE/project/videoconferences.pug
 delete mode 100644 views/EN/error.pug
 delete mode 100644 views/EN/layout.pug
 delete mode 100644 views/EN/project/addProjectOverview.pug
 delete mode 100644 views/EN/project/mailinglists.pug
 delete mode 100644 views/EN/project/projects.pug

diff --git a/routes/routes-project.js b/routes/routes-project.js
deleted file mode 100644
index d34bab48..00000000
--- a/routes/routes-project.js
+++ /dev/null
@@ -1,362 +0,0 @@
-const methods = require('./methods')
-const async = require('async')
-const helpers = require('./helpers')
-
-const pictSizeLimit = 1000000 // 1 MB
-
-module.exports = function (app) {
- 
-  // ======== APP ROUTES - PROJECT ====================
-  var lang = 'DE'
-
-  app.get('/mailinglists', function (req, res) {
-    async.waterfall([
-        function(done) {
-            methods.getAllMailinglists(function(mailinglistOverview, err) {
-                if (!err) {
-                    done(err, mailinglistOverview)
-                }
-            })
-        },
-        // create JSON object of mailinglists for front-end
-        function(mailinglistOverview, done) {
-            var allMailingLists = []  // JSON object
-            for (let i = 0; i < mailinglistOverview.length; i++) {
-                // add data to JSON object
-                allMailingLists.push({
-                    id: mailinglistOverview[i].id,
-                    name: mailinglistOverview[i].name,
-                    src: mailinglistOverview[i].src,
-                    projectstatus: mailinglistOverview[i].projectstatus,
-                    project_title: mailinglistOverview[i].project_title,
-                    keywords: mailinglistOverview[i].keywords
-                });
-            }
-
-            res.render(lang+'/project/mailinglists', {
-                isUserAuthenticated: req.isAuthenticated(),
-                user: req.user,
-                mailinglists: allMailingLists
-            });
-        }
-    ])
-  });
-
-  app.get('/project_', function (req, res) {
-    async.waterfall([
-      // get all projects from projectdb
-      function(done) {
-        methods.getAllProjects(function(projectsOverview, err) {
-          if (!err) {
-            done(err, projectsOverview)
-          }
-        })
-      },
-      // create JSON object for front-end
-      function(projectsOverview, done) {
-        var activeProjects = []
-        var nonActiveProjects = []
-
-        for (var i = 0; i < projectsOverview.length; i++) {
-          var project = {
-            id: projectsOverview[i].id,
-            logo: projectsOverview[i].logo,
-            akronym: projectsOverview[i].pname,
-            title: projectsOverview[i].title,
-            summary: projectsOverview[i].onelinesummary,
-            category: projectsOverview[i].category,
-            cp: projectsOverview[i].contact_email,
-            gitlab: projectsOverview[i].gitlab
-          }
-          if (projectsOverview[i].projectstatus == 0) {
-            nonActiveProjects.push(project)
-          }
-          else if (projectsOverview[i].projectstatus == 1) {
-            activeProjects.push(project)
-          }
-        }
-
-        // render the page
-        if (req.isAuthenticated()) {
-          res.render(lang+'/project/projects', {
-            isUserAuthenticated: true,
-            nonActive: nonActiveProjects,
-            active: activeProjects
-          });
-        }
-        else {
-          res.render(lang+'/project/projects', {
-            isUserAuthenticated: false,
-            nonActive: nonActiveProjects,
-            active: activeProjects
-          });
-        }
-      }
-    ])
-  })
-
-  app.get('/project', function (req, res) {
-    res.render(lang+'/project/project-simplified', {
-       isUserAuthenticated: req.isAuthenticated(),
-       user: req.user
-    });
-  })
-
-  app.get('/addprojectoverview', function (req, res) {
-    if (req.isAuthenticated()) {
-      res.render(lang+'/project/addProjectOverview')
-    }
-    else {
-      res.redirect('/login')
-    }
-  })
-  
-  app.post('/addprojectoverview__', function (req, res) {
-    if (req.isAuthenticated()) {
-      var wiki = 0
-      if (req.body.wiki)
-        wiki = 1
-
-      var projectTerm = req.body.termForm + " - " + req.body.termTo
-      var projectOverviewData = {
-        pname: req.body.pname,
-        title: req.body.title,
-        onelinesummary: req.body.summary,
-        category: req.body.category,
-        logo: req.body.logo,
-        gitlab: req.body.gitlabURL,
-        wiki: wiki,
-        overview: req.body.overview,
-        question: req.body.question,
-        approach: req.body.approach,
-        result: req.body.result,
-        keywords: req.body.keywords,
-        announcement: req.body.announcement,
-        term: projectTerm,
-        further_details: req.body.furtherDetails,
-        website: req.body.website,
-        src: req.body.src,
-        caption: req.body.caption,
-        contact_lastname: req.body.contactName,
-        contact_email: req.body.contactEmail,
-        leader_lastname: req.body.leaderName,
-        leader_email: req.body.leaderEmail
-      }
-      
-      methods.addProjectOverview(projectOverviewData, function(err){
-        if (err) {
-          //req.flash('error', "Failed")
-          req.flash('error', "Fehlgeschlagen")
-          res.redirect('/addProjectOverview');
-        }
-        else {
-          req.flash('success', 'Your project has been created.')
-          res.redirect('/project');
-        }
-      })
-    }
-  })
-
-  app.post('/addprojectoverview', function (req, res) {
-    if (req.isAuthenticated()) {
-      var wiki = 0
-      if (req.body.wiki)
-        wiki = 1
-
-      var projectLogo = req.files.logo
-      var projectPicture = req.files.src
-      var projectLogoPath, projectPicturePath
-      
-      if (projectLogo) {
-        // raise error if size limit is exceeded
-        if (projectLogo.size === pictSizeLimit) {
-          req.flash('error', 'Projektlogo exceeds 1 MB');
-          res.redirect('/addprojectoverview');
-        }
-        else {
-          // TEST PATH FOR DEVELOPMENT (LOCALHOST)
-          projectLogoPath = './folder-in-server-to-save-projektlogo/'+req.body.pname+'/'+projectLogo.name
-          // PATH FOR TEST/LIVE SERVER
-          // var projectLogoPath = to-be-defined
-        }
-      }
-      if (projectPicture) {
-        // raise error if size limit is exceeded
-        if (projectPicture.size === pictSizeLimit) {
-          req.flash('error', 'Projektbild exceeds 1 MB');
-          res.redirect('/addprojectoverview');
-        }
-        else {
-          // TEST PATH FOR DEVELOPMENT (LOCALHOST)
-          projectPicturePath = './folder-in-server-to-save-projektbild/'+req.body.pname+'/'+projectPicture.name
-          // PATH FOR TEST/LIVE SERVER
-          // var projectPicturePath = to-be-defined
-        }
-        
-      }
-      
-      var projectTerm = req.body.termForm + " - " + req.body.termTo
-      var projectOverviewData = {
-        pname: req.body.pname,
-        title: req.body.title,
-        onelinesummary: req.body.summary,
-        category: req.body.category,
-        logo: projectLogoPath,
-        gitlab: req.body.gitlabURL,
-        wiki: wiki,
-        overview: req.body.overview,
-        question: req.body.question,
-        approach: req.body.approach,
-        result: req.body.result,
-        keywords: req.body.keywords,
-        announcement: req.body.announcement,
-        term: projectTerm,
-        further_details: req.body.furtherDetails,
-        website: req.body.website,
-        src: projectPicturePath,
-        caption: req.body.caption,
-        contact_lastname: req.body.contactName,
-        contact_email: req.body.contactEmail,
-        leader_lastname: req.body.leaderName,
-        leader_email: req.body.leaderEmail
-      }
-      
-      // save pictures
-      if (projectLogo) {
-        projectLogo.mv(projectLogoPath, function(err) {
-          if (err) {
-            console.error(err)
-            res.status(500).render(lang+'/500', {
-              error: err
-            })
-          }
-        });
-      }
-      if (projectPicture) {
-        projectPicture.mv(projectPicturePath, function(err) {
-          if (err) {
-            console.error(err)
-            res.status(500).render(lang+'/500', {
-              error: err
-            })
-          }
-        });
-      }
-
-      /* RS: Temporary solution while Project DB is still in early phase.
-              When User DB and Project DB are integrated and quite stabil, this operation should be done in 1 transaction.
-      */
-      var userId // todo: make this global variable?
-      async.waterfall([
-        // get userId by email from userdb
-        function(done) {
-          methods.getUserIdByEmail(req.user.email, function(id, err) {
-            if (!err) {
-              userId = id
-              done(err)
-            }
-          })
-        },
-        // add project overview
-        function(done) {
-          methods.addProjectOverview(projectOverviewData, function(data, err){
-            if (err) {
-              res.status(500).render(lang+'/500', {
-                error: err
-              })
-            }
-            else {
-              done(err, data.insertId)
-            }
-          })
-        },
-        // assign the created overview to logged-in user
-        function(projectOverviewId, done) {
-          var userProjectRoleData = {
-            project_id: projectOverviewId,
-            user_id: userId,
-            role_id: 3 // OVERVIEW_CREATOR
-          }
-          methods.addUserProjectRole(userProjectRoleData, function(userProjects, err) {
-            if (err) {
-              //req.flash('error', "Failed")
-              req.flash('error', "Fehlgeschlagen")
-              res.redirect('/addProjectOverview');
-            }
-            else {
-              req.flash('success', 'Your project has been created.')
-              res.redirect('/project');
-            }
-          })
-        }
-      ])
-    }
-  })
-
-  app.get('/updateprojectoverview', function (req, res) {
-    // only their own project
-  })
-
-  app.post('/updateprojectoverview', function (req, res) {
-    // only their own project
-  })
-
-  app.get('/projectoverview', function(req, res){
-    async.waterfall([
-            function(done) {
-                methods.getProjectOverviewById(req.query.projectID, function(projectOverview, err) {
-                    if (!err) {
-                        done(err, projectOverview)
-                    }
-                })
-            },
-            function(projectOverview,done){
-                methods.getProjectImagesById(req.query.projectID, function(projectImages, err) {
-                    if (!err) {
-                        done(err, projectImages, projectOverview)
-                    }
-                })
-            },
-            // render projectOverview page
-            function(projectImages, projectOverview, done) {
-
-                console.log(projectImages);
-                partnerWebsites = helpers.stringToArray(projectOverview[0].partner_website);
-                partnerNames = helpers.stringToArray(projectOverview[0].partner_name);
-                awardSites = helpers.stringToArray(projectOverview[0].award_website);
-                awardNames = helpers.stringToArray(projectOverview[0].award_name);
-                sponsorWebsites = helpers.stringToArray(projectOverview[0].sponsor_website);
-                sponsorImgs = helpers.stringToArray(projectOverview[0].sponsor_img);
-                sponsorNames = helpers.stringToArray(projectOverview[0].sponsor_name);
-
-                res.render(lang+'/project/projectOverview', {
-                    isUserAuthenticated: req.isAuthenticated(),
-                    user: req.user,
-                    projectOV: projectOverview,
-                    projectImgs: projectImages,
-                    partnerWS: partnerWebsites,
-                    partnerN: partnerNames,
-                    awardWS: awardSites,
-                    awardN: awardNames,
-                    sponsorWS: sponsorWebsites,
-                    sponsorIMG: sponsorImgs,
-                    sponsorN: sponsorNames
-                });
-            }
-        ])
-  })
-
-  app.get('/videoconferences', function(req, res){
-      res.render(lang+'/project/videoconferences', {
-              isUserAuthenticated: req.isAuthenticated(),
-              user: req.user,
-      });
-  })
-
-  app.get('/landingpage', function(req, res){
-        res.render(lang+'/project/landingpage', {
-                isUserAuthenticated: req.isAuthenticated(),
-                user: req.user,
-        });
-    })
-};
\ No newline at end of file
diff --git a/views/DE/project/addProjectOverview.pug b/views/DE/project/addProjectOverview.pug
deleted file mode 100644
index 8119c861..00000000
--- a/views/DE/project/addProjectOverview.pug
+++ /dev/null
@@ -1,144 +0,0 @@
-doctype html
-html(lang="de")
-  head
-    title= "Add Project Overview"
-    meta(charset="UTF-8")
-    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.min.css")
-    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
-    link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
-    // jQuery UI - Datepicker
-    link(rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css")
-    style.
-        .collapse {
-            display: none;
-        }
-        .collapse.in {
-            display: block;
-        }
-        .collapsing {
-            position: relative;
-            height: 0;
-            overflow: hidden;
-            -webkit-transition-timing-function: ease;
-            -o-transition-timing-function: ease;
-            transition-timing-function: ease;
-            -webkit-transition-duration: .35s;
-            -o-transition-duration: .35s;
-            transition-duration: .35s;
-            -webkit-transition-property: height,visibility;
-            -o-transition-property: height,visibility;
-            transition-property: height,visibility;
-        }
-        .warning {
-            color: red;
-            font-size: 11px;
-        }
-  body
-    div(class="container-fluid")
-        div(class="row")
-            div(class="col-md-6 offset-md-2")
-                h4(class="mb-3 font-weight-bold") Neues Projekt
-            div(class="col-md-6 offset-md-3")
-                if errors
-                    for error, i in errors
-                        div.alert.alert-danger.alert-dismissible.fade.show #{ error }
-                            a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
-                form(method="POST" encType="multipart/form-data")
-                    div(class='form-row')
-                        div(class='form-group col-md-12')
-                            input#inputPname(name="title" class="form-control" type="text" placeholder="Projekttitel*" required)
-                        div(class="form-group col-md-12")
-                            input#inputTitle(name="pname" class="form-control" type="text" placeholder="Akronym*" required)
-                        div(class="form-group col-md-12")
-                            input#inputSummary(name="summary" class="form-control" type="text" placeholder="Kurzbeschreibung")
-                        div(class='form-group col-md-12')
-                            select#inputCategory(name="category", class="form-control")
-                                option(value="") - Projektkategorie -
-                                option(value="Experten-Gruppe") Experten-Gruppe
-                                option(value="Student-Projekt") Student-Projekt
-                                option(value="Lehr Projekt") Lehr Projekt
-                                option(value="Transfer-projekt") Transfer-projekt
-                        div(class="form-group col-md-12")
-                            div(class='form-group row')
-                                label(for="projectLogo" class="col-sm-3 col-form-label") Projektlogo (max. 1 MB)
-                                div(class="col-md-9")
-                                    input#inputLogo(name="logo" class="form-control" type="file")
-                        div(class="form-group col-md-12")
-                            div(class="input-group mb-3")
-                                input#inputGitlabURL(name="gitlabURL" type="text" class="form-control" placeholder="M4_LAB GitLab Project URL, z.B. https://transfer.hft-stuttgart.de/gitlab/username/projectname")
-                                div(class="input-group-prepend")
-                                    div(class="input-group-text")
-                                        input#inputWiki(name="wiki" type="checkbox")
-                                        | &nbsp; Wiki
-                                
-                    h5(class="mb-3 font-weight-bold") Inhalte
-                    div(class='form-row')
-                        div(class='form-group col-md-12')
-                            textarea#inputOverview(name="overview" class="form-control" type="text" rows="5" placeholder="Projektüberblick")
-                        div(class="form-group col-md-12")
-                            textarea#inputQuestion(name="question" class="form-control" type="text" rows="5" placeholder="Fragestellung")
-                        div(class='form-group col-md-12')
-                            textarea#inputApproach(name="approach" class="form-control" type="text" rows="5" placeholder="Vorgehensweise")
-                        div(class="form-group col-md-12")
-                            textarea#inputResult(name="result" class="form-control" type="text" rows="5" placeholder="Ergebnis und Nutzung")
-                        div(class="form-group col-md-12")
-                            input#inputKeywords(name="keywords" class="form-control" type="text" placeholder="keywords")
-                    h5(class="mb-3 font-weight-bold") Projektinformationen
-                    div(class='form-row')
-                        div(class='form-group col-md-12')
-                            input#inputAnnouncement(name="announcement" class="form-control" type="text" rows="5" placeholder="Ausschreibung")
-                        div(class="form-group col-md-12")
-                            div(class='form-group row')
-                                label(for="projectLogo" class="col-sm-2 col-form-label") Laufzeit
-                                div(class="col-md-5")
-                                    input#inputTermFrom(name="termForm" class="form-control" type="text" placeholder="von (dd.mm.yyyy)")
-                                div(class="col-md-5")
-                                    input#inputTermTo(name="termTo" class="form-control" type="text" placeholder="bis (dd.mm.yyyy)")
-                        div(class='form-group col-md-12')
-                            textarea#inputFurtherDetails(name="furtherDetails" class="form-control" type="text" rows="5" placeholder="Weitere Informationen (bspw. Links zu Berichten)")
-                        div(class="form-group col-md-12")
-                            input#inputWebsite(name="website" class="form-control" type="text" placeholder="Projekt-Website")
-                    h5(class="mb-3 font-weight-bold") Bilder
-                    div(class='form-row')
-                        div(class="form-group col-md-12")
-                            div(class='form-group row')
-                                label(for="projectPicture" class="col-sm-3 col-form-label") Projektbild (max. 1 MB)
-                                div(class="col-md-9")
-                                    input#inputSrc(name="src" class="form-control" type="file")
-                        div(class="form-group col-md-12")
-                            input#inputCaption(name="caption" class="form-control" type="text" placeholder="Bildunterschrift/Bildquelle")
-                    h5(class="mb-3 font-weight-bold") Kontakt
-                    div(class='form-row')
-                        div(class="form-group col-md-2")
-                            <p class="font-weight-normal">Ansprechperson</p>
-                        div(class="form-group col-md-5")
-                            input#inputContactName(name="contactName" class="form-control" type="text" placeholder="Anrede, Titel, Vorname, Nachname")
-                        div(class="form-group col-md-5")
-                            input#inputContactEmail(name="contactEmail" class="form-control" type="email" placeholder="E-Mail-Adresse")
-                        div(class="form-group col-md-2")
-                            <p class="font-weight-normal">Projektleitung</p>
-                        div(class="form-group col-md-5")
-                            input#inputLeaderName(name="leaderName" class="form-control" type="text" placeholder="Anrede, Titel, Vorname, Nachname")
-                        div(class="form-group col-md-5")
-                            input#inputLeaderEmail(name="leaderEmail" class="form-control" type="email" placeholder="E-Mail-Adresse")
-                    p <em><small>* Pflichtfeld</small></em>
-                    input#submitBtn(type="submit", class="btn btn-outline-dark btn-block", value="Projekt Anlegen")
-
-    // jQuery
-    script(src="https://code.jquery.com/jquery-3.3.1.min.js")
-    script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
-    // jQuery UI - Datepicker
-    script(src="https://code.jquery.com/ui/1.12.1/jquery-ui.js")
-    script(src="/js/jquery-ui/i18n/datepicker-de.js")
-    //script(src="i18n/datepicker-de.js")
-    // Bootstrap
-    script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
-    // Header
-    script(src="/js/headfoot.js")
-    script.
-        $( function() {
-            $.datepicker.setDefaults( $.datepicker.regional["de"] );
-            $("#inputTermFrom").datepicker();
-            $("#inputTermTo").datepicker();
-        });
\ No newline at end of file
diff --git a/views/DE/project/landingpage.html b/views/DE/project/landingpage.html
deleted file mode 100644
index d9c19d49..00000000
--- a/views/DE/project/landingpage.html
+++ /dev/null
@@ -1,68 +0,0 @@
-        <!-- content -->
-
-        <div class="flex-container" style="align-items:flex-start">
-
-            <div id="Textblock-startseite" class="text" style="flex-basis:600px">
-                <div style="flex-grow: 1">
-                    <p>
-                    <h1>Als innovative Hochschule wollen wir den Wandel in der Gesellschaft zukunftsfähig und verantwortungsvoll mitgestalten.</h1>
-                    <br/>
-                    <h2>Unser Ziel ist die Beantwortung gesellschaftlich relevanter Zukunftsfragen.</h2>
-
-                    Diese bearbeiten wir durch Forschungs-, Innovations- und Transferprojekte und entwickeln dabei anwendungsbezogene Lösungen.
-                    Als Impulsgeber ermöglichen wir den Transfer innovativer Ideen, indem wir Kooperationen fördern und Räume für kreativen Austausch schaffen.
-                    <br/>
-                    Dabei verknüpfen wir unsere Expertise mit Partnern innerhalb und außerhalb der Region Stuttgart. Wir informieren und involvieren Interessierte und Beteiligte durch die unterschiedlichsten Events und Formate.
-                    <br/>
-                    <h2>Willst du dabei sein?</h2>
-
-                    Dann findest du unter <span onclick="event.stopPropagation();hint_navbar('0')" ><i class="fas fa-chevron-right"></i> Informationen</span> mehr über unsere Expertise, Projekte, Publikationen und Lösungen.
-                    <br/>
-                    Erfahre mehr über unsere <span onclick="event.stopPropagation();hint_navbar('2')" ><i class="fas fa-chevron-right"></i> Events</span> und über die Möglichkeiten zur <span onclick="event.stopPropagation();hint_navbar('1')" ><i class="fas fa-chevron-right"></i> Zusammenarbeit</span>.
-                    </p>
-                </div>
-            </div>
-
-
-            <div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel" style="flex-basis: 50%" style="flex-grow: 1">
-                <ol class="carousel-indicators">
-                    <li data-target="#carouselExampleIndicators" data-slide-to="0"></li>
-                    <li data-target="#carouselExampleIndicators" data-slide-to="1" class="active"></li>
-                    <li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
-                </ol>
-                <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
-                    <i class="fas fa-chevron-left"></i>
-                    <!--    <span class="carousel-control-prev-icon" aria-hidden="true"></span>-->
-                    <span class="sr-only">Previous</span>
-                </a>
-                <div class="carousel-inner" role="listbox">
-                    <div class="carousel-item">
-                        <img class="d-block w-100" src="/images/3DModell_Wermelskirchen_Startseite.jpg" alt="First slide">
-                        <div id="Bildunterschrift-slide1" class="Bildunterschrift">
-                            <br>
-                            <p><a href="/projectoverview?projectID=3" ><i class="fas fa-chevron-right"></i> AG Qualität zur Definition von 3D-Stadtmodellen</a></p>&emsp;
-                        </div>
-                    </div>
-                    <div class="carousel-item active">
-                        <img class="d-block w-100" src="/images/M4_LAB_Vision.gif" alt="Second slide">
-                        <div id="Bildunterschrift-slide2" class="Bildunterschrift">
-                            <br>
-                            <p><a href="/projectoverview?projectID=1" ><i class="fas fa-chevron-right"></i> Innovationslabor M4_LAB</a></p>&emsp;
-                        </div>
-                    </div>
-                    <div class="carousel-item">
-                        <img class="d-block w-100" src="/images/SmartPollen_Projekt/SmartPollenM2GIF.gif" alt="Third slide">
-                        <div id="Bildunterschrift-slide3" class="Bildunterschrift">
-                            <br>
-                            <p><a href="/projectoverview?projectID=2" ><i class="fas fa-chevron-right"></i> Studierendenprojekt Smart-Pollen</a></p>&emsp;
-                        </div>
-                    </div>
-                </div>
-                <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
-                    <i class="fas fa-chevron-right"></i>
-                    <!--    <span class="carousel-control-next-icon" aria-hidden="true"></span>-->
-                    <span class="sr-only">Next</span>
-                </a>
-            </div>
-
-        </div>
\ No newline at end of file
diff --git a/views/DE/project/landingpage.pug b/views/DE/project/landingpage.pug
deleted file mode 100644
index 5aaf31a5..00000000
--- a/views/DE/project/landingpage.pug
+++ /dev/null
@@ -1,24 +0,0 @@
-doctype html
-html(lang="de")
-  head
-    title= "Project List"
-    meta(charset="UTF-8")
-    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.min.css")
-    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
-    link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
-
-  body
-    include landingpage.html
-
-
-    // jQuery
-    script(src="https://code.jquery.com/jquery-3.3.1.min.js")
-    script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
-    // Bootstrap
-    script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
-    // Header
-    if isUserAuthenticated
-        script(src="/js/headfootLogout.js")
-    else
-        script(src="/js/headfoot.js")
\ No newline at end of file
diff --git a/views/DE/project/mailinglists.pug b/views/DE/project/mailinglists.pug
deleted file mode 100644
index bf3c747b..00000000
--- a/views/DE/project/mailinglists.pug
+++ /dev/null
@@ -1,79 +0,0 @@
-html(lang="de")
-  head
-    title= "Mailinglisten"
-    meta(charset="UTF-8")
-    meta(name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no")
-    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
-    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
-    link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
-    link(rel="stylesheet" href="/fonts/ionicons.min.css")
-    link(rel="stylesheet" href="/css/Testimonials.css")
-  body
-    div(class="container")
-        div(class="row")
-            div(class="col-md-12" style="margin-bottom: 40px;")
-                img(class="mx-auto" src="/img/Mailinglisten.jpg" width="100%")
-    div(class="container")
-        div(class="row")
-            div(class="col-md-12" style="margin-bottom: 30px;")
-                h4(class="text-center") Durch Mailinglisten können Sie interessierten Personen<br/> <strong>regelmäßig Informationen</strong> zu Ihrem Projekt oder Thema zukommen lassen.<br/> Ebenso können Sie über ein Abonnement in einer Mailingliste Mitglied des Verteilers<br/>werden und so <strong>im Austausch</strong> bleiben. <br/>
-            div(class="col-md-12" style="margin-bottom: 30px;")
-                h2(class="text-center" style="color: #708090;") <strong>Aktive Mailinglisten</strong>
-                div(class="table-responsive table-borderless")
-                    table(class="table table-striped table-bordered table-hover")
-                        thead()
-                            tr()
-                                th Name
-                                th Zum Abonnement der Mailingliste
-                                th Zum zugehörigen Projekt
-                                th Keywords
-                        tbody()
-                            for item in mailinglists
-                                if item.projectstatus == '1'
-                                    tr
-                                        td #{item.name}
-                                        td <a href="#{item.src}">#{item.src}</a>
-                                        td <a href='projectoverview?projectID=#{item.id}'>#{item.project_title}</a>
-                                        td #{item.keywords}
-    div(id="aboText" style="background-color: #dadada;margin-top: 40px;")
-        div(class="container")
-            div(class="row" style="margin-bottom: 0;padding-top: 20px;padding-bottom: 20px;")
-                div(class="col-lg-12" style="background-color: #ffffff;")
-                    h2(class="text-center" style="color: #708090;margin-top: 15px;") <strong> Mailingliste abonnieren </strong>
-                div(class="col-md-4 col-lg-6" style="background-color: #ffffff;")
-                    p() Das Deutsche Forschungsnetz (DFN) bietet Mailinglisten für Wissenschaft und Forschung an. Mailinglisten sind E-Mail-Verteilerlisten, d.h. Personen, die sich für Ihr Forschungsthema interessieren, können sich über das DFN registrieren und erhalten im Anschluss daran regelmäßig die über die Mailinglisten geteilten Informationen.
-                    p() Sie als Verteiler senden die zu versendende Mail folglich nur noch an die festgelegte Mailinglistenadresse und das Programm leitet die Nachricht an alle registrierten Personen weiter.
-                div(class="col-md-4 col-lg-6 justify-content-between flex-wrap" style="background-color: #ffffff;")
-                    div(class="justify-content-between order-2" style="background-color: rgba(255,255,255,0);")
-                        p(class="text-left d-flex d-md-flex flex-row flex-grow-1 flex-shrink-1 flex-fill justify-content-between align-items-start align-content-start align-self-start flex-wrap order-1 justify-content-md-center align-items-md-start justify-content-lg-start") Oben finden Sie eine Übersicht über die aktiven Mailinglisten. Wenn Sie sich in eine Mailingliste eintragen wollen, dann klicken Sie auf den entsprechend hinterlegten Link.
-                        p() Es öffnet sich daraufhin die Hauptseite der Liste. Nach der Auswahl des Buttons "Abonnieren", können Sie Ihre Mailadresse hinterlegen und sich in die Liste eintragen.
-                    a(class="btn btn-primary text-center d-inline-flex d-lg-flex flex-column flex-grow-1 flex-shrink-1 flex-fill justify-content-between align-items-baseline align-content-center align-self-baseline flex-wrap order-3 justify-content-md-center align-items-md-end align-items-lg-center justify-content-xl-center mx-auto" role="button" style="background-color: #E0001B; margin-top:10px; margin-bottom:10px;" href="/downloads/Handout_Mailinglisten_Abonnieren.pdf") <strong>Erste Schritte (Anleitung als PDF)</strong>
-                    a(class="btn btn-primary text-center d-inline-flex d-lg-flex flex-column flex-grow-1 flex-shrink-1 flex-fill justify-content-between align-items-baseline align-content-center align-self-baseline flex-wrap mb-auto justify-content-md-center align-items-md-end align-items-lg-center justify-content-xl-center mx-auto" role="button" style="background-color: #E0001B;" href="https://www.listserv.dfn.de/sympa/help") <strong>Weitergehende Dokumentation bei DFN (externer Link)</strong>
-
-    div(id="newListText" style="background-color: #dadada;margin-top: 0px;")
-        div(class="container")
-            div(class="row" style="margin-bottom: 0;padding-top: 20px;padding-bottom: 20px;")
-                div(class="col-lg-12" style="background-color: #ffffff;")
-                    h2(class="text-center" style="color: #708090;margin-top: 15px;") <strong>Neue Mailingliste erstellen</strong>
-                div(class="col-md-4 col-lg-6" style="background-color: #ffffff;")
-                    p() Über das Transferportal können Sie selbst eine Liste zu Ihrem Projekt anlegen, um mit Ihren Partnern in Verbindung zu bleiben.
-                    p() Folgen Sie hierzu der Anleitung des DFN.
-
-                div(class="col-md-4 col-lg-6 justify-content-between flex-wrap" style="background-color: #ffffff;")
-                    a(class="btn btn-primary text-center d-inline-flex d-lg-flex flex-column flex-grow-1 flex-shrink-1 flex-fill justify-content-between align-items-baseline align-content-center align-self-baseline flex-wrap order-3 justify-content-md-center align-items-md-end align-items-lg-center justify-content-xl-center mx-auto" role="button" style="background-color: #E0001B; margin-top:10px; margin-top:10px;" href="/downloads/Handout_Mailinglisten_Erstellen.pdf") <strong>Erste Schritte (Anleitung als PDF)</strong>
-                    a(class="btn btn-primary text-center d-inline-flex d-lg-flex flex-column flex-grow-1 flex-shrink-1 flex-fill justify-content-between align-items-baseline align-content-center align-self-baseline flex-wrap order-3 justify-content-md-center align-items-md-end align-items-lg-center justify-content-xl-center mx-auto" role="button" style="background-color: #E0001B; margin-top:10px; margin-top:10px;" href="https://www.listserv.dfn.de/sympa/help/admin") <strong>Gesamtes Tutorial bei DFN (externer Link)</strong>
-
-    div(id="addListText" style="background-color: #dadada;margin-top: 0px;")
-        div(class="container")
-            div(class="row" style="margin-bottom: 0;padding-top: 20px;padding-bottom: 20px;")
-                div(class="col-lg-12" style="background-color: #ffffff;")
-                    h2(class="text-center" style="color: #708090;margin-top: 15px;") <strong>Neue Mailingliste eintragen</strong>
-                div(class="col-xl" style="background-color: #ffffff;")
-                    p() Um Ihre beim DFN angelegte Mailingliste hier aufzunehmen, schicken Sie uns bitte eine Email an <a href="mailto:support-transfer@hft-stuttgart.de">support-transfer@hft-stuttgart.de</a>
-    // jQuery
-    script(src="https://code.jquery.com/jquery-3.3.1.min.js")
-    script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
-    // Bootstrap
-    script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
-    // Header
-    script(src="/js/headfoot.js")
\ No newline at end of file
diff --git a/views/DE/project/project-simplified.pug b/views/DE/project/project-simplified.pug
deleted file mode 100644
index 5219c290..00000000
--- a/views/DE/project/project-simplified.pug
+++ /dev/null
@@ -1,52 +0,0 @@
-doctype html
-html(lang="de")
-  head
-    title= "Project List"
-    meta(charset="UTF-8")
-    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.min.css")
-    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
-    link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
-    style.
-      .help .card-title > a:before {
-        float: right !important;
-        content: "-";
-        padding-right: 5px;
-      }
-      .help .card-title > a.collapsed:before {
-          float: right !important;
-          content: "+";
-      }
-      .help h3 > a {
-        color: #708090;
-        text-decoration: none;
-        display: block;
-      }
-      .help a {
-          display: inline;
-      }
-      .help .card > .card-header {
-        color: #fff;
-      }
-      .card-title {
-        margin-bottom: 0.5rem;
-        margin-top: 0.5rem;
-      }
-      #infoicon {
-        color: #708090;
-      }
-      .heading {
-        color: #708090;
-      }
-  body
-    include project.html
-
-
-    // jQuery
-    
-    script(src="https://code.jquery.com/jquery-3.3.1.min.js")
-    script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
-    // Bootstrap
-    script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
-    // Header
-    script(src="/js/headfoot.js")
diff --git a/views/DE/project/project.html b/views/DE/project/project.html
deleted file mode 100644
index 73cd0ee5..00000000
--- a/views/DE/project/project.html
+++ /dev/null
@@ -1,220 +0,0 @@
-<div>
-    <div class="container">
-        <div class="row">
-            <div class="col-md-12" style="margin-bottom: 40px;"><img class="mx-auto" src="/img/Projekte.png"
-                    width="100%"></div>
-        </div>
-    </div>
-</div>
-<div>
-    <div class="container">
-        <div class="row">
-            <div class="col-md-12" style="margin-bottom: 30px;">
-                <h4 class="text-center">Diese Seite bietet den Einstieg zu den Inhalten der unterschiedlichen Projekte,
-                    die über das Portal zur Verfügung gestellt werden.</h4>
-            </div>
-        </div>
-    </div>
-</div>
-<div>
-    <div class="container">
-        <div class="row">
-            <div class="col-lg-1"></div>
-            <div class="col-md-6 col-lg-4" style="padding-right: 5px;padding-left: 5px;">
-                <img class="d-flex d-lg-flex justify-content-center align-items-center align-content-center align-self-center mx-auto"
-                    src="/img/Icon_Haken.png" height="150" />
-                <br />
-                <h2 class="text-center heading"><small><strong>Open-Source-/Open-Data-Projekte</strong></small><br></h2>
-                <p class="text-left">Für die Veröffentlichung von Open-Source-Projekten steht Ihnen eine von der HFT
-                    Stuttgart selbstverwaltete Gitlab-Instanz bereit.
-                    <br /> <br />
-                    Eine Übersicht der aktuellen Open-Source-/Open-Data-Projekte erreichen Sie über diesen <a
-                        href="https://transfer.hft-stuttgart.de/gitlab/explore/projects">
-                        <i class="fas fa-chevron-right">Link zu den Gitlab-Projekten</i></a>.<br />
-                </p>
-            </div>
-            <div class="col-lg-2"></div>
-            <div class="col-md-6 col-lg-4" style="padding-right: 5px;padding-left: 5px;">
-                <img src="/img/Icon_Sandclock.png"
-                    class="d-flex d-lg-flex justify-content-center align-items-center align-content-center align-self-center mx-auto"
-                    height="150px" />
-                <br />
-                <h2 class="text-center heading"><small><strong>Andere Projekte</strong></small><br></h2>
-                <p class="text-left">Aktuell unterstützt das Transferportal Projekte, die einer Open-Source bzw.
-                    Open-Data-Lizenz
-                    unterliegen. Die Gründe hierfür liegen in den Lizenzbedingungen unserer Gitlab-Instanz als
-                    Plattform.
-                    <br /> <br />
-                    Künftig möchten wir auch andere Projekttypen unterstützen. Es soll dann beispielsweise möglich sein,
-                    Projektergebnisse zu veröffentlichen ohne die dazugehörigen Quellcodes oder Rohdaten offenzulegen.
-                    <br /> <br />
-                    Wir entwickeln das Portal kontinuierlich weiter und prüfen dabei auch andere Plattformen zur
-                    Nutzung.
-                </p>
-            </div>
-            <div class="col-lg-1"></div>
-        </div>
-        <hr />
-        <!-- text: Zweck dieser Seite / purpose of this page -->
-        <div>
-            <p class="text-justify"><i id="infoicon" class="fas fa-info-circle fa-lg"></i> Falls Sie mehr über die
-                Weiterentwicklung des Portals
-                erfahren wollen oder sich mit Anregungen auch aktiv einbringen
-                wollen, regen wir an, unsere Mailingliste <a href="https://www.listserv.dfn.de/sympa/info/transferportalhft">
-                <i class="fas fa-chevron-right">transferportalhft</i></a> zu abonnieren. Sie können uns aber auch
-                jederzeit
-                direkt unter <a href="/account/contact"><i class="fas fa-chevron-right">Kontakt</i></a> anschreiben.
-            </p>
-        </div>
-    </div>
-</div>
-
-
-
-
-
-
-<div class="container">
-    <!-- text: Hilfestellung zu Gitlab / short help about Gitlab -->
-    <hr />
-
-    <h2 class="text-center heading"><small><strong>Hilfestellung zu GitLab</strong></small></h2>
-
-    <br />
-
-    <div class="help">
-        <div class="card">
-            <div class="card-header">
-                <h3 class="card-title">
-                    <a class="collapsed" data-toggle="collapse" href="#collapse1" aria-expanded="false"
-                        aria-controls="collapse1">
-                        <small>Möchten Sie die Projektinhalte ansehen oder herunterladen?</small></a>
-                </h3>
-            </div>
-            <div id="collapse1" class="card-body collapse">
-                <p>
-                    Dann klicken Sie auf diesen
-                    <a href="https://transfer.hft-stuttgart.de/gitlab/explore/projects"><i
-                            class="fas fa-chevron-right">Link zu den Gitlab-Projekten</i></a>
-                    um die Liste aller im Gitlab erfassten Projekte zu sehen. Vor dort können Sie dann auf die einzelnen
-                    Projekte zugreifen.
-                    Ein Anmelden am Portal ist dazu nicht nötig.
-                </p>
-            </div>
-        </div>
-
-        <br />
-
-        <div class="card">
-            <div class="card-header">
-                <h3 class="card-title">
-                    <a class="collapsed" data-toggle="collapse" href="#collapse2" aria-expanded="false"
-                        aria-controls="collapse2">
-                        <small>Möchten Sie zu einem Projekt beitragen?</small></a>
-                </h3>
-            </div>
-            <div id="collapse2" class="card-body collapse">
-                <p>
-                    Sie können mittels Issues dem Projekteigentümer eine Rückmeldung geben bzw. einen Fehler melden.
-                    Darüberhinaus können Sie sich auch aktiv beteiligen. Dazu müssen Sie im Portal als Nutzer
-                    registriert sein.
-                </p>
-                <p>
-                    Wenn Sie noch kein Benutzerkonto haben, klicken Sie bitte oben auf den Link Benutzerkonto und folgen
-                    Sie dem System durch die Registrierungsprozedur.
-                </p>
-                <p>
-                    Haben Sie ein Benutzerkonto, befolgen Sie bitte folgende Schritte:
-                </p>
-                <ol>
-                    <li>
-                        Folgen Sie dem <a href="https://transfer.hft-stuttgart.de/gitlab/explore/projects">
-                            <i class="fas fa-chevron-right">Link zu den Gitlab-Projekten</i></a>, um zum Gitlab zu
-                        gelangen.
-                    </li>
-                    <li>
-                        Melden Sie sich bei Gitlab an, indem Sie im Gitlab auf den Link Sign-In klicken.
-                    </li>
-                    <li>
-                        Sie werden dann auf eine Anmeldeseite von unserem Portal geführt. Geben Sie dort bitte ihre
-                        Benutzerdaten vom Portal ein.
-                    </li>
-                    <li>
-                        Nach erfolgreichem Anmelden werden Sie zum Gitlab zurückgeführt.
-                    </li>
-                    <li>
-                        Navigieren Sie dann zum Projekt Ihrer Wahl.
-                    </li>
-                    <li>
-                        Abhängig davon wie der Projekteigentümer das Projekt konfiguriert hat, können Sie entweder
-                        direkt loslegen, oder Sie müssen zunächst noch beim Projekteigentümer Zugang zum Projekt
-                        anfragen, indem Sie im Gitlab bei der entsprechende Projektseite auf den Link Request Access
-                        klicken.
-                    </li>
-                </ol>
-            </div>
-        </div>
-
-        <br />
-
-        <div class="card">
-            <div class="card-header">
-                <h3 class="card-title">
-                    <a class="collapsed" data-toggle="collapse" href="#collapse3" aria-expanded="false"
-                        aria-controls="collapse3">
-                        <small>Möchten Sie selbst ein Projekt anlegen, um es der Öffentlichkeit
-                            bereitzustellen?</small></a>
-                </h3>
-            </div>
-            <div id="collapse3" class="card-body collapse">
-                <p>
-                    Vorraussetzung dazu ist, dass Sie aktives oder ehemaliges Mitglied der Hochschule für Technik sind,
-                    d.h. eine (noch) gültige HFT-Emailadresse haben, und zudem im Portal als Nutzer registriert sein.
-                </p>
-                <p>
-                    Wenn Sie noch kein Benutzerkonto haben, klicken Sie bitte oben auf den Link Benutzerkonto und folgen
-                    Sie dem System durch die Registrierungsprozedur.
-                </p>
-                <p>
-                    Haben Sie ein Benutzerkonto, befolgen Sie bitte folgende Schritte:
-                </p>
-                <ol>
-                    <li>
-                        Folgen Sie dem <a href="https://transfer.hft-stuttgart.de/gitlab/explore/projects">
-                            <i class="fas fa-chevron-right">Link zu den Gitlab-Projekten</i></a>, um zum Gitlab zu
-                        gelangen.
-                    </li>
-                    <li>
-                        Melden Sie sich bei Gitlab an, indem Sie im Gitlab auf den Link Sign-In klicken.
-                    </li>
-                    <li>
-                        Sie werden dann auf eine Anmeldeseite von unserem Portal geführt. Geben Sie dort bitte ihre
-                        Benutzerdaten vom Portal ein.
-                    </li>
-                    <li>
-                        Nach erfolgreichem Anmelden werden Sie zum Gitlab zurückgeführt.
-                    </li>
-                    <li>
-                        Erstellen Sie dann in Gitlab ein neues Projekt durch Klicken auf den grünen New Project-Knopf
-                        und anschließendem Befolgen der Eingabemaske von Gitlab.
-                    </li>
-                </ol>
-                <p>
-                    Weitere Hilfestellung zum Anlegen von Projekten in Gitlab finden Sie in der <a
-                        href="https://docs.gitlab.com/ee/gitlab-basics/create-project.html"
-                        target="_blank">Gitlab-Dokumentation</a>.
-                </p>
-                <p>
-                    Hinweis: Um Inhalte zum Gitlab "pushen" zu können, verwendet die Gitlab-Instanz unseres Portals die
-                    s.g. "SSH Keys".
-                    Weitere Informationen dazu finden Sie in der <a
-                        href="https://transfer.hft-stuttgart.de/gitlab/help/ssh/README" target="_blank">
-                        <i class="fas fa-chevron-right">Gitlab-Dokumentation zu SSH Keys</i></a>.
-                </p>
-            </div>
-        </div>
-    </div>
-
-    <hr />
-    <!-- / content body -->
-</div>
\ No newline at end of file
diff --git a/views/DE/project/projectOverview.pug b/views/DE/project/projectOverview.pug
deleted file mode 100644
index 8c9ab406..00000000
--- a/views/DE/project/projectOverview.pug
+++ /dev/null
@@ -1,135 +0,0 @@
-doctype html
-html(lang="de")
-  head
-    title= "Project List"
-    meta(charset="UTF-8")
-    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.min.css")
-    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
-    link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
-
-  body
-    div(class="container")
-        for project in projectOV
-            div(class="row")
-                div(class="col-sm-8 pt-3")
-                    h1 #{project.title}
-                    div(style="float:right; margin-left:30px; margin-bottom:0px; width:50%;")
-                        img(src=project.src, width="100%")
-                        p(style="text-align:right") #{project.caption}
-
-                    h2(class="pt-4") Projektüberblick
-                    p !{project.overview}
-                    br
-                    b keywords:
-                    span #{project.keywords}
-                    h2(class="pt-4") Fragestellung
-                    p !{project.question}
-                    h2(class="pt-4") Vorgehensweise
-                    p !{project.approach}
-                    h2(class="pt-4") Ergebnis und Nutzung
-                    p !{project.result}
-                div(class="col-sm-4 pt-3" style="background-color: #f1f1f1")
-                    for image in projectImgs
-                        if image.pos == '2' || image.pos == '3'
-                            div(class="projectimg")
-                                <img src="#{image.src}", width="100%">
-                                if image.caption
-                                    span #{image.caption}
-                                </img>
-
-                    div(class="fakeimg")
-                        if project.leader_lastname
-                            p
-                                b Projektleitung HfT: &nbsp;
-                                <a href="mailto: #{project.leader_email}">#{project.leader_lastname}</a>
-                    div(class="fakeimg")
-                        if project.contact_lastname
-                            p
-                                b Ansprechperson: &nbsp;
-                                <a href="mailto: #{project.contact_email}">#{project.contact_lastname} </a>
-                    div(class="fakeimg")
-                        if project.announcement
-                            p
-                                b Ausschreibung: &nbsp;
-                                span !{project.announcement}
-
-                    div(class="fakeimg")
-                        if project.partner_name
-                            p
-                                b Projektpartner:
-                                br
-                                for website, i in partnerWS
-                                    if website
-                                        <a href="#{website}">#{partnerN[i]}</a>
-                                        br
-                                    else
-                                        #{partnerN[i]}
-                                        br
-
-                    div(class="fakeimg")
-                        if project.term
-                            p
-                                b Projektlaufzeit: &nbsp;
-                                span #{project.term}
-
-                    div(class="fakeimg")
-                        if project.award_name
-                            p
-                                b Preise:
-                                br
-                                for awardsite, i in awardWS
-                                    if awardsite
-                                        <a href="#{awardsite}">#{awardN[i]}</a>
-                                        br
-                                    else
-                                        #{awardN[i]}
-                                        br
-
-                    div(class="fakeimg")
-                        if project.administrator
-                            p
-                                b Projektträger: &nbsp;
-                                span #{project.administrator}
-
-                    div(class="fakeimg")
-                        if project.sponsor_name
-                            p
-                                b Geldgeber:
-                                br
-                                for website, i in sponsorWS
-                                    if website
-                                        <a href="#{website}">#{sponsorN[i]}</a>
-                                        br
-                                    else
-                                        #{sponsorN[i]}
-                                        br
-
-                    div(class="fakeimg")
-                        if project.website || project.further_details
-                        p
-                            b Mehr Informationen: &nbsp;
-                            if project.website
-                                <a href="#{project.website}">#{project.website}</a>
-                            br
-                            span !{project.further_details}
-
-                    if project.pname == 'M4LAB'
-                        div(class="Downloads" style="height:200px;")
-                            h5 Downloads
-
-                        div(class="Projektlogos")
-                            img(src="./images/M4_LAB_Projekt/WRS_Logo.jpg" width="32%")
-                            img(src="./images/M4_LAB_Projekt/IBA2027_Logo.jpg" width="32%")
-                            img(src="./images/M4_LAB_Projekt/GWK_Logo.jpg" width="32%")
-                            br
-                            br
-                            img(src="./images/M4_LAB_Projekt/Innovative_Hochschule_Initiative_BMBF_GWK_RGB.png" width="100%")
-
-    //jQuery
-    script(src="https://code.jquery.com/jquery-3.3.1.min.js")
-    script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
-    // Bootstrap
-    script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
-    // Header
-    script(src="/js/headfoot.js")
\ No newline at end of file
diff --git a/views/DE/project/projects.pug b/views/DE/project/projects.pug
deleted file mode 100644
index 44748f8a..00000000
--- a/views/DE/project/projects.pug
+++ /dev/null
@@ -1,91 +0,0 @@
-doctype html
-html(lang="de")
-  head
-    title= "Project List"
-    meta(charset="UTF-8")
-    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.min.css")
-    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
-    link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
-
-  body
-    div(class="container-fluid")
-        if isUserAuthenticated
-            p Auf dieser Seite sehen Sie die Liste der über dieses Portal veröffentlichten Projekte.
-            a(href="/addprojectoverview" class="btn btn-primary" role="button" aria-pressed="true") Projekt anlegen
-        else
-            p Auf dieser Seite sehen Sie die Liste der über dieses Portal veröffentlichten Projekte.
-            p Möchten Sie ein neues Projekt anlegen, dann klicken Sie bitte auf #[a(href="/addprojectoverview") Anmelden und Projekt anlegen]
-        if successes
-            for success in successes
-                div.alert.alert-success.alert-dismissible #{ success }
-                    a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
-        // Active projects
-        h3(class="mb-3 font-weight-bold") Aktive Projekte
-        table(class="table table-striped")
-            thead
-                tr
-                    th Logo
-                    th Akronym
-                    th Title
-                    th Kernziel
-                    th Kategorie
-                    th Ansprechpartner
-                    th Projektinhalte
-            tbody
-                for item in active
-                    tr
-                        //td #{item.status}
-                        td
-                            img(src=item.logo, width="40", height="40")
-                        td #{item.akronym}
-                        td #{item.title}
-                        td #{item.summary}
-                        td #{item.category}
-                        td #[a(class="nav-link", href="mailto:"+ item.cp) #{item.cp}]
-                        td #[a(class="nav-link", href="https://m4lab.hft-stuttgart.de/projectoverview?projectID="+item.id) Zur Projektübersicht]
-                            if item.gitlab
-                                a(class="nav-link", href="https://transfer.hft-stuttgart.de/gitlab/"+item.gitlab+"/tree/master") Projektdateien
-                                a(class="nav-link", href="https://transfer.hft-stuttgart.de/gitlab/"+item.gitlab+"/wikis/home") Projektwiki
-                            else
-                                a(class="nav-link", href="#") Projektdateien
-                                a(class="nav-link", href="#") Projektwiki
-        br
-        // Non-active projects
-        h3(class="mb-3 font-weight-bold") Abgeschlossene Projekte
-        table(class="table table-striped")
-            thead
-                tr
-                    th Logo
-                    th Akronym
-                    th Title
-                    th Kernziel
-                    th Kategorie
-                    th Ansprechpartner
-                    th Projektinhalte
-            tbody
-                for item in nonActive
-                    tr
-                        //td #{item.status}
-                        td
-                            img(src=item.logo, width="40", height="40")
-                        td #{item.akronym}
-                        td #{item.title}
-                        td #{item.summary}
-                        td #{item.category}
-                        td #[a(class="nav-link", href="mailto:"+ item.cp) #{item.cp}]
-                        td #[a(class="nav-link", href="https://m4lab.hft-stuttgart.de/projectoverview?projectID="+item.id) Zur Projektübersicht]
-                            if item.gitlab
-                                a(class="nav-link", href="https://transfer.hft-stuttgart.de/gitlab/"+item.gitlab+"/tree/master") Projektdateien
-                                a(class="nav-link", href="https://transfer.hft-stuttgart.de/gitlab/"+item.gitlab+"/wikis/home") Projektwiki
-                            else
-                                a(class="nav-link", href="#") Projektdateien
-                                a(class="nav-link", href="#") Projektwiki
-
-    // jQuery
-    script(src="https://code.jquery.com/jquery-3.3.1.min.js")
-    script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
-    // Bootstrap
-    script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
-    // Header
-    script(src="/js/headfoot.js")
\ No newline at end of file
diff --git a/views/DE/project/videoconferences.pug b/views/DE/project/videoconferences.pug
deleted file mode 100644
index de48a2a4..00000000
--- a/views/DE/project/videoconferences.pug
+++ /dev/null
@@ -1,43 +0,0 @@
-doctype html
-html(lang="de")
-  head
-    title= "Project List"
-    meta(charset="UTF-8")
-    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.min.css")
-    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
-    link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
-  body
-    div(class="flex-container")
-        div(class="main")
-            h1 Videokonferenzen
-
-            p Wir bieten grundsätzlich zwei Möglichkeiten an, Viodeokonferenzen abzuhalten:
-
-            h2 Jitsi
-
-            p
-                <a href="https://jitsi.org">Jitsi</a> ist ein Opensource Videokonferenz-System, welches es ermöglicht, direkt über den Browser Videokonferenzen abzuhalten.
-                br
-                span Da die Hauptlast bei diesem System Clientseitig getragen wird, raten wir zu einer Nutzung auf Desktopsystemen bzw. Laptops.
-
-            p   Um eine Videokonferenz starten zu können, muss sich zunächst ein Organisator am Portal anmelden und die Videokonferenz eröffnen. Weitere Teilnehmer können dann ohne Anmeldung einfach über einen Link hinzugefügt werden.
-
-            p   Der Zugang zu Jitsi findet sich <a href="https://telemeeting.hft-stuttgart.de">hier</a>
-
-            h2  GoToMeeting
-
-            p   Eine weitere Option, die wir anbieten werden, ist die Organisation von Videokonferenzen via GoToMeeting
-
-            p   Mehr Informationen darüber erhalten Sie zu gegebener Zeit an dieser Stelle
-
-
-
-
-    //jQuery
-    script(src="https://code.jquery.com/jquery-3.3.1.min.js")
-    script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
-    // Bootstrap
-    script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
-    // Header
-    script(src="/js/headfoot.js")
\ No newline at end of file
diff --git a/views/EN/error.pug b/views/EN/error.pug
deleted file mode 100644
index bf750c00..00000000
--- a/views/EN/error.pug
+++ /dev/null
@@ -1,6 +0,0 @@
-html
-  head 
-    title Error
-  body
-    h1 An error occurred!
-    block content
\ No newline at end of file
diff --git a/views/EN/layout.pug b/views/EN/layout.pug
deleted file mode 100644
index 32d27e01..00000000
--- a/views/EN/layout.pug
+++ /dev/null
@@ -1,12 +0,0 @@
-doctype html
-html
-    head
-        title PassportJS SAML example
-        block links
-            link(rel='stylesheet', href='bower_components/bootstrap/dist/css/bootstrap.css')
-    body
-        div.container
-            block content
-        script(src='bower_components/jquery/dist/jquery.min.js')
-        script(src='bower_components/bootstrap/dist/js/bootstrap.min.js')
-        block scripts
diff --git a/views/EN/project/addProjectOverview.pug b/views/EN/project/addProjectOverview.pug
deleted file mode 100644
index d0a4b0eb..00000000
--- a/views/EN/project/addProjectOverview.pug
+++ /dev/null
@@ -1,115 +0,0 @@
-doctype html
-html(lang="de")
-  head
-    title= "Add Project Overview"
-    meta(charset="UTF-8")
-    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.css")
-    link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
-    style.
-        .collapse {
-            display: none;
-        }
-        .collapse.in {
-            display: block;
-        }
-        .collapsing {
-            position: relative;
-            height: 0;
-            overflow: hidden;
-            -webkit-transition-timing-function: ease;
-            -o-transition-timing-function: ease;
-            transition-timing-function: ease;
-            -webkit-transition-duration: .35s;
-            -o-transition-duration: .35s;
-            transition-duration: .35s;
-            -webkit-transition-property: height,visibility;
-            -o-transition-property: height,visibility;
-            transition-property: height,visibility;
-        }
-        .warning {
-            color: red;
-            font-size: 11px;
-        }
-  body
-    div(class="container-fluid")
-        div(class="row")
-            div(class="col-md-6 offset-md-2")
-                h4(class="mb-3 font-weight-bold") Neues Projekt
-            div(class="col-md-6 offset-md-3")
-                if errors
-                    for error, i in errors
-                        div.alert.alert-danger.alert-dismissible.fade.show #{ error }
-                            a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
-                form(method="POST")
-                    div(class='form-row')
-                        div(class='form-group col-md-12')
-                            input#inputPname(name="pname" class="form-control" type="text" placeholder="human-readable short project name*" required)
-                        div(class="form-group col-md-12")
-                            input#inputTitle(name="title" class="form-control" type="text" placeholder="official title of the project*" required)
-                        div(class="form-group col-md-12")
-                            input#inputSummary(name="summary" class="form-control" type="text" placeholder="one line summary of the project")
-                        div(class="form-group col-md-12")
-                            input#inputCategory(name="category" class="form-control" type="text" placeholder="category of the project")
-                        div(class="form-group col-md-12")
-                            input#inputLogo(name="logo" class="form-control" type="text" placeholder="official logo of the project")
-                        div(class="form-group col-md-12")
-                            div(class="input-group mb-3")
-                                input#inputGitlabURL(name="gitlabURL" type="text" class="form-control" placeholder="M4_LAB GitLab Project URL, z.B. https://transfer.hft-stuttgart.de/gitlab/username/projectname")
-                                div(class="input-group-prepend")
-                                    div(class="input-group-text")
-                                        input#inputWiki(name="wiki" type="checkbox")
-                                        | &nbsp; Wiki
-                                
-                    h5(class="mb-3 font-weight-bold") Content
-                    div(class='form-row')
-                        div(class='form-group col-md-12')
-                            textarea#inputOverview(name="overview" class="form-control" type="text" rows="5" placeholder="overview")
-                        div(class="form-group col-md-12")
-                            textarea#inputQuestion(name="question" class="form-control" type="text" rows="5" placeholder="question")
-                        div(class='form-group col-md-12')
-                            textarea#inputApproach(name="approach" class="form-control" type="text" rows="5" placeholder="approach")
-                        div(class="form-group col-md-12")
-                            textarea#inputResult(name="result" class="form-control" type="text" rows="5" placeholder="result")
-                        div(class="form-group col-md-12")
-                            input#inputKeywords(name="keywords" class="form-control" type="text" placeholder="keywords")
-                    h5(class="mb-3 font-weight-bold") Info
-                    div(class='form-row')
-                        div(class='form-group col-md-12')
-                            textarea#inputAnnouncement(name="announcement" class="form-control" type="text" rows="5" placeholder="Ausschreibung")
-                        div(class="form-group col-md-12")
-                            input#inputTerm(name="term" class="form-control" type="text" placeholder="Laufzeit")
-                        div(class='form-group col-md-12')
-                            textarea#inputFurtherDetails(name="furtherDetails" class="form-control" type="text" rows="5" placeholder="Mehr informationen")
-                        div(class="form-group col-md-12")
-                            input#inputWebsite(name="website" class="form-control" type="text" placeholder="website")
-                    h5(class="mb-3 font-weight-bold") Images
-                    div(class='form-row')
-                        div(class="form-group col-md-12")
-                            input#inputSrc(name="src" class="form-control" type="text" placeholder="link to the image source")
-                        div(class="form-group col-md-12")
-                            input#inputCaption(name="caption" class="form-control" type="text" placeholder="caption of the image")
-                    h5(class="mb-3 font-weight-bold") Contact
-                    div(class='form-row')
-                        div(class="form-group col-md-4")
-                            input#inputContactFirstname(name="contactFirstname" class="form-control" type="text" placeholder="contact firstname")
-                        div(class="form-group col-md-4")
-                            input#inputContactLastname(name="contactLastname" class="form-control" type="text" placeholder="contact lastname")
-                        div(class="form-group col-md-4")
-                            input#inputContactEmail(name="contactEmail" class="form-control" type="email" placeholder="contact email")
-                        div(class="form-group col-md-4")
-                            input#inputLeaderFirstname(name="leaderFirstname" class="form-control" type="text" placeholder="leader firstname")
-                        div(class="form-group col-md-4")
-                            input#inputLeaderLastname(name="leaderLastname" class="form-control" type="text" placeholder="leader lastname")
-                        div(class="form-group col-md-4")
-                            input#inputLeaderEmail(name="leaderEmail" class="form-control" type="email" placeholder="leader email")
-                    p <em><small>* Pflichtfeld</small></em>
-                    input#submitBtn(type="submit", class="btn btn-outline-dark btn-block", value="Projekt Anlegen")
-
-    // jQuery
-    script(src="https://code.jquery.com/jquery-3.3.1.min.js")
-    script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
-    // Bootstrap
-    script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
-    // Header
-    script(src="/js/headfootLogout.js")
\ No newline at end of file
diff --git a/views/EN/project/mailinglists.pug b/views/EN/project/mailinglists.pug
deleted file mode 100644
index fdc0ef23..00000000
--- a/views/EN/project/mailinglists.pug
+++ /dev/null
@@ -1,61 +0,0 @@
-html(lang="en")
-  head
-    title= "Mailinglisten"
-    meta(charset="UTF-8")
-    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.css")
-    link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
-    style.
-        .collapse {
-            display: none;
-        }
-        .collapse.in {
-            display: block;
-        }
-        .collapsing {
-            position: relative;
-            height: 0;
-            overflow: hidden;
-            -webkit-transition-timing-function: ease;
-            -o-transition-timing-function: ease;
-            transition-timing-function: ease;
-            -webkit-transition-duration: .35s;
-            -o-transition-duration: .35s;
-            transition-duration: .35s;
-            -webkit-transition-property: height,visibility;
-            -o-transition-property: height,visibility;
-            transition-property: height,visibility;
-        }
-  body
-    <hr />
-    div()
-        h5(align="left") Aktive Mailinglisten
-        div(class="flex-container" style="align-items:flex-start")
-            div(class="table")
-                table(border="0" id="listtable" class="table table-striped")
-                    thead
-                        tr
-                            th Name
-                            th Link
-                            th zugeh. Projekt
-                    tbody
-                        for item in mailinglists
-                            if item.projectstatus == '1'
-                                tr
-                                    td #{item.name}
-                                    td <a href="#{item.src}">#{item.src}</a>
-                                    td <a href='projectoverview?projectID=#{item.id}'>#{item.project_title}</a>
-    <hr />
-    div()
-        h5(align="left") Eintragung in Mailingliste
-        p() Wenn Sie sich in eine Mailingliste eintragen wollen, folgen Sie folgender Anleitung:
-    // jQuery
-    script(src="https://code.jquery.com/jquery-3.3.1.min.js")
-    script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
-    // Bootstrap
-    script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
-    // Header
-    if isUserAuthenticated
-        script(src="/js/headfootLogout.js")
-    else
-        script(src="https://transfer.hft-stuttgart.de/js/headfoot.js")
\ No newline at end of file
diff --git a/views/EN/project/projects.pug b/views/EN/project/projects.pug
deleted file mode 100644
index f1ecc579..00000000
--- a/views/EN/project/projects.pug
+++ /dev/null
@@ -1,117 +0,0 @@
-doctype html
-html(lang="de")
-  head
-    title= "Project List"
-    meta(charset="UTF-8")
-    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.css")
-    link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
-    style.
-        .collapse {
-            display: none;
-        }
-        .collapse.in {
-            display: block;
-        }
-        .collapsing {
-            position: relative;
-            height: 0;
-            overflow: hidden;
-            -webkit-transition-timing-function: ease;
-            -o-transition-timing-function: ease;
-            transition-timing-function: ease;
-            -webkit-transition-duration: .35s;
-            -o-transition-duration: .35s;
-            transition-duration: .35s;
-            -webkit-transition-property: height,visibility;
-            -o-transition-property: height,visibility;
-            transition-property: height,visibility;
-        }
-        .warning {
-            color: red;
-            font-size: 11px;
-        }
-  body
-    div(class="container-fluid")
-        if isUserAuthenticated
-            p Auf dieser Seite sehen Sie die Liste der über dieses Portal veröffentlichten Projekte.
-            a(href="/addprojectoverview" class="btn btn-primary" role="button" aria-pressed="true") Projekt anlegen
-        else
-            p Auf dieser Seite sehen Sie die Liste der über dieses Portal veröffentlichten Projekte.
-            p Möchten Sie ein neues Projekt anlegen, dann klicken Sie bitte auf #[a(href="/addprojectoverview") Anmelden und Projekt anlegen]
-        if successes
-            for success in successes
-                div.alert.alert-success.alert-dismissible #{ success }
-                    a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
-        // Active projects
-        h3(class="mb-3 font-weight-bold") Aktive Projekte
-        table(class="table table-striped")
-            thead
-                tr
-                    th Logo
-                    th Akronym
-                    th Title
-                    th Kernziel
-                    th Kategorie
-                    th Ansprechpartner
-                    th Projektinhalte
-            tbody
-                for item in active
-                    tr
-                        //td #{item.status}
-                        td
-                            img(src=item.logo, width="40", height="40")
-                        td #{item.akronym}
-                        td #{item.title}
-                        td #{item.summary}
-                        td #{item.category}
-                        td #[a(class="nav-link", href="mailto:"+ item.cp) #{item.cp}]
-                        td #[a(class="nav-link", href="https://m4lab.hft-stuttgart.de/projectoverview?projectID="+item.id) Zur Projektübersicht]
-                            if item.gitlab
-                                a(class="nav-link", href=item.gitlab+"/tree/master") Projektdateien
-                                a(class="nav-link", href=item.gitlab+"/wikis/home") Projektwiki
-                            else
-                                a(class="nav-link", href="#") Projektdateien
-                                a(class="nav-link", href="#") Projektwiki
-        br
-        // Non-active projects
-        h3(class="mb-3 font-weight-bold") Abgeschlossene Projekte
-        table(class="table table-striped")
-            thead
-                tr
-                    th Logo
-                    th Akronym
-                    th Title
-                    th Kernziel
-                    th Kategorie
-                    th Ansprechpartner
-                    th Projektinhalte
-            tbody
-                for item in nonActive
-                    tr
-                        //td #{item.status}
-                        td
-                            img(src=item.logo, width="40", height="40")
-                        td #{item.akronym}
-                        td #{item.title}
-                        td #{item.summary}
-                        td #{item.category}
-                        td #[a(class="nav-link", href="mailto:"+ item.cp) #{item.cp}]
-                        td #[a(class="nav-link", href="https://m4lab.hft-stuttgart.de/projectoverview?projectID="+item.id) Zur Projektübersicht]
-                            if item.gitlab
-                                a(class="nav-link", href="https://transfer.hft-stuttgart.de/gitlab/"+item.gitlab+"/tree/master") Projektdateien
-                                a(class="nav-link", href="https://transfer.hft-stuttgart.de/gitlab/"+item.gitlab+"/wikis/home") Projektwiki
-                            else
-                                a(class="nav-link", href="#") Projektdateien
-                                a(class="nav-link", href="#") Projektwiki
-
-    // jQuery
-    script(src="https://code.jquery.com/jquery-3.3.1.min.js")
-    script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
-    // Bootstrap
-    script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
-    // Header
-    if isUserAuthenticated
-        script(src="/js/headfootLogout.js")
-    else
-        script(src="https://transfer.hft-stuttgart.de/js/headfoot.js")
\ No newline at end of file
-- 
GitLab


From b98aacea02537aeea656146b22f54ab853f56e43 Mon Sep 17 00:00:00 2001
From: sanny <rosanny.sihombing@hft-stuttgart.de>
Date: Wed, 15 Jul 2020 12:15:17 +0200
Subject: [PATCH 33/40] remove lines that has been moved to "Project Page"
 project

---
 app.js            |  1 -
 routes/methods.js | 33 ---------------------------------
 2 files changed, 34 deletions(-)

diff --git a/app.js b/app.js
index 3e4b3a6f..f03f1c29 100644
--- a/app.js
+++ b/app.js
@@ -69,7 +69,6 @@ app.use(function(req, res, next) {
 });
 
 require('./routes/routes-account')(app, config, passport, i18n);
-require('./routes/routes-project')(app, config, passport);
 require('./routes/api')(app, config, passport);
 
 // Handle 404
diff --git a/routes/methods.js b/routes/methods.js
index 7b34268a..91b75af3 100644
--- a/routes/methods.js
+++ b/routes/methods.js
@@ -212,39 +212,6 @@ var methods = {
             })
             callback(err)
         })
-    },
-    // ======================= project db =======================
-    getAllProjects: function(callback) {
-        dbconn.project.query('CALL getAllprojects', function (err, rows, fields){
-            if (err) throw err;
-            callback(rows[0], err);
-        })
-    },
-    getAllMailinglists: function(callback) {
-        dbconn.project.query('CALL getAllLists', function (err, rows, fields){
-            if (err) throw err;
-            callback(rows[0], err);
-	    })
-    },
-    getProjectOverviewById: function(projectId, callback) {
-        dbconn.project.query('CALL GetProjectInformationByProjectID(' + projectId+ ')', function (err, rows, fields){
-            if (err) throw err;
-            callback(rows[0], err);
-    	})
-    },
-    getProjectImagesById: function(projectId, callback) {
-        dbconn.project.query('CALL getImagesByProjectID(' + projectId+ ')', function (err, rows, fields){
-            if (err) throw err;
-            callback(rows[0], err);
-        })
-    },
-    addProjectOverview: function(data, callback) {
-        dbconn.project.query('INSERT INTO project_overview SET ?', data, function (err, results, fields){
-            if (err) {
-                console.error(err);
-            }
-            callback(results, err);
-        })
     }
 };
 
-- 
GitLab


From 3fb7744f141cbd6b97b62060af9a19ba8d8dc7ca Mon Sep 17 00:00:00 2001
From: sanny <rosanny.sihombing@hft-stuttgart.de>
Date: Wed, 15 Jul 2020 14:06:12 +0200
Subject: [PATCH 34/40] small update

---
 package.json | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/package.json b/package.json
index 2df85495..0abe26eb 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
   "name": "m4lab-user-account",
   "version": "0.0.1",
-  "description": "Example for PassportJS SAML strategy",
+  "description": "M4_LAB User Account",
   "author": {
     "name": "Rosanny Sihombing",
     "email": "rosanny.sihombing@hft-stuttgart.de",
@@ -9,12 +9,11 @@
   },
   "keywords": [
     "m4_lab",
-    "saml",
-    "sso"
+    "account"
   ],
   "repository": {
     "type": "git",
-    "url": "https://transfer.gitlab.com/tbd.git"
+    "url": "https://transfer.hft-stuttgart.de/gitlab/m4lab_tv1/user-account.git"
   },
   "scripts": {
     "start": "nodemon app.js",
-- 
GitLab


From 1d915c1d6cd00894040314c36066d0d2774db545 Mon Sep 17 00:00:00 2001
From: sanny <rosanny.sihombing@hft-stuttgart.de>
Date: Wed, 15 Jul 2020 18:30:52 +0200
Subject: [PATCH 35/40] postponed getting users' project

---
 routes/routes-account.js | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/routes/routes-account.js b/routes/routes-account.js
index f0477561..5e6292c1 100644
--- a/routes/routes-account.js
+++ b/routes/routes-account.js
@@ -180,6 +180,10 @@ module.exports = function (app, config, passport, i18n) {
       methods.getUserByEmail(req.user.email, function(data, err){
         if (!err) {
           if (data.verificationStatus == 1) {
+            res.render(lang+'/account/services', {
+              user: data
+            });
+            /* !!! DO NOT DELETE. TEMPORARILY DISABLED FOR FUTURE USE. !!!
             async.waterfall([
               // get userId by email from userdb
               function(done) {
@@ -237,6 +241,7 @@ module.exports = function (app, config, passport, i18n) {
                 });
               }
             ])
+            */
           }
           else {
             res.render(lang+'/account/home', {
-- 
GitLab


From ba9ff1871abd1c332c245f4668f0fe05409f39e3 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Fri, 17 Jul 2020 16:28:45 +0200
Subject: [PATCH 36/40] express js best practices

---
 app.js            |   6 +-
 package-lock.json | 165 +++++++++++++++++++++++++++++++++++++++++++---
 package.json      |   2 +
 3 files changed, 163 insertions(+), 10 deletions(-)

diff --git a/app.js b/app.js
index f03f1c29..bbf16ae8 100644
--- a/app.js
+++ b/app.js
@@ -9,6 +9,8 @@ const session = require('express-session');
 const errorhandler = require('errorhandler');
 const flash = require('express-flash');
 const fileUpload = require('express-fileupload');
+const helmet = require('helmet');
+const compression = require('compression');
 
 const i18n = require('i18n'); // internationalization
 i18n.configure({
@@ -16,7 +18,7 @@ i18n.configure({
   directory: './locales'
 });
 
-var env = process.env.NODE_ENV || 'testing';
+var env = process.env.NODE_ENV || 'development';
 const config = require('./config/config')[env];
 
 var app = express();
@@ -33,6 +35,8 @@ app.use(fileUpload({
   }
 }));
 
+app.use(helmet());
+app.use(compression());
 app.use(morgan('combined'));
 app.use(cookieParser());
 app.use(bodyParser.json());
diff --git a/package-lock.json b/package-lock.json
index 8def6205..f3d2af9d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -102,9 +102,9 @@
       },
       "dependencies": {
         "lodash": {
-          "version": "4.17.15",
-          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
-          "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
+          "version": "4.17.19",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
+          "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ=="
         }
       }
     },
@@ -158,6 +158,11 @@
         "type-is": "~1.6.17"
       }
     },
+    "bowser": {
+      "version": "2.9.0",
+      "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.9.0.tgz",
+      "integrity": "sha512-2ld76tuLBNFekRgmJfT2+3j5MIrP6bFict8WAIT3beq+srz1gcKNAdNKMqHqauQt63NmAa88HfP1/Ypa9Er3HA=="
+    },
     "boxen": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
@@ -214,6 +219,11 @@
       "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
       "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
     },
+    "camelize": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz",
+      "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs="
+    },
     "capture-stack-trace": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
@@ -293,6 +303,42 @@
       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
       "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
     },
+    "compressible": {
+      "version": "2.0.18",
+      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+      "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+      "requires": {
+        "mime-db": ">= 1.43.0 < 2"
+      },
+      "dependencies": {
+        "mime-db": {
+          "version": "1.44.0",
+          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
+          "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
+        }
+      }
+    },
+    "compression": {
+      "version": "1.7.4",
+      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
+      "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+      "requires": {
+        "accepts": "~1.3.5",
+        "bytes": "3.0.0",
+        "compressible": "~2.0.16",
+        "debug": "2.6.9",
+        "on-headers": "~1.0.2",
+        "safe-buffer": "5.1.2",
+        "vary": "~1.1.2"
+      },
+      "dependencies": {
+        "bytes": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+          "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
+        }
+      }
+    },
     "concat-map": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -335,6 +381,11 @@
         "safe-buffer": "5.1.2"
       }
     },
+    "content-security-policy-builder": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/content-security-policy-builder/-/content-security-policy-builder-2.1.0.tgz",
+      "integrity": "sha512-/MtLWhJVvJNkA9dVLAp6fg9LxD2gfI6R2Fi1hPmfjYXSahJJzcfvoeDOxSyp4NvxMuwWv3WMssE9o31DoULHrQ=="
+    },
     "content-type": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
@@ -397,6 +448,11 @@
       "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
       "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4="
     },
+    "dasherize": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/dasherize/-/dasherize-2.0.0.tgz",
+      "integrity": "sha1-bYCcnNDPe7iVLYD8hPoT1H3bEwg="
+    },
     "debug": {
       "version": "2.6.9",
       "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -453,6 +509,11 @@
       "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
       "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk="
     },
+    "dont-sniff-mimetype": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/dont-sniff-mimetype/-/dont-sniff-mimetype-1.1.0.tgz",
+      "integrity": "sha512-ZjI4zqTaxveH2/tTlzS1wFp+7ncxNZaIEWYg3lzZRHkKf5zPT/MnEG6WL0BhHMJUabkh8GeU5NL5j+rEUCb7Ug=="
+    },
     "dot-prop": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
@@ -643,6 +704,11 @@
         }
       }
     },
+    "feature-policy": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/feature-policy/-/feature-policy-0.3.0.tgz",
+      "integrity": "sha512-ZtijOTFN7TzCujt1fnNhfWPFPSHeZkesff9AXZj+UEjYBynWNUIYpC87Ve4wHzyexQsImicLu7WsC2LHq7/xrQ=="
+    },
     "fill-range": {
       "version": "7.0.1",
       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -753,6 +819,72 @@
       "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
       "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg=="
     },
+    "helmet": {
+      "version": "3.23.3",
+      "resolved": "https://registry.npmjs.org/helmet/-/helmet-3.23.3.tgz",
+      "integrity": "sha512-U3MeYdzPJQhtvqAVBPntVgAvNSOJyagwZwyKsFdyRa8TV3pOKVFljalPOCxbw5Wwf2kncGhmP0qHjyazIdNdSA==",
+      "requires": {
+        "depd": "2.0.0",
+        "dont-sniff-mimetype": "1.1.0",
+        "feature-policy": "0.3.0",
+        "helmet-crossdomain": "0.4.0",
+        "helmet-csp": "2.10.0",
+        "hide-powered-by": "1.1.0",
+        "hpkp": "2.0.0",
+        "hsts": "2.2.0",
+        "nocache": "2.1.0",
+        "referrer-policy": "1.2.0",
+        "x-xss-protection": "1.3.0"
+      },
+      "dependencies": {
+        "depd": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+          "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
+        }
+      }
+    },
+    "helmet-crossdomain": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/helmet-crossdomain/-/helmet-crossdomain-0.4.0.tgz",
+      "integrity": "sha512-AB4DTykRw3HCOxovD1nPR16hllrVImeFp5VBV9/twj66lJ2nU75DP8FPL0/Jp4jj79JhTfG+pFI2MD02kWJ+fA=="
+    },
+    "helmet-csp": {
+      "version": "2.10.0",
+      "resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.10.0.tgz",
+      "integrity": "sha512-Rz953ZNEFk8sT2XvewXkYN0Ho4GEZdjAZy4stjiEQV3eN7GDxg1QKmYggH7otDyIA7uGA6XnUMVSgeJwbR5X+w==",
+      "requires": {
+        "bowser": "2.9.0",
+        "camelize": "1.0.0",
+        "content-security-policy-builder": "2.1.0",
+        "dasherize": "2.0.0"
+      }
+    },
+    "hide-powered-by": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/hide-powered-by/-/hide-powered-by-1.1.0.tgz",
+      "integrity": "sha512-Io1zA2yOA1YJslkr+AJlWSf2yWFkKjvkcL9Ni1XSUqnGLr/qRQe2UI3Cn/J9MsJht7yEVCe0SscY1HgVMujbgg=="
+    },
+    "hpkp": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/hpkp/-/hpkp-2.0.0.tgz",
+      "integrity": "sha1-EOFCJk52IVpdMMROxD3mTe5tFnI="
+    },
+    "hsts": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/hsts/-/hsts-2.2.0.tgz",
+      "integrity": "sha512-ToaTnQ2TbJkochoVcdXYm4HOCliNozlviNsg+X2XQLQvZNI/kCHR9rZxVYpJB3UPcHz80PgxRyWQ7PdU1r+VBQ==",
+      "requires": {
+        "depd": "2.0.0"
+      },
+      "dependencies": {
+        "depd": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+          "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
+        }
+      }
+    },
     "http-errors": {
       "version": "1.7.2",
       "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
@@ -988,9 +1120,9 @@
       "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
     },
     "lodash": {
-      "version": "4.17.15",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
-      "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg="
+      "version": "4.17.19",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
+      "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ=="
     },
     "longest": {
       "version": "1.0.1",
@@ -1101,9 +1233,9 @@
       }
     },
     "minimist": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
     },
     "morgan": {
       "version": "1.9.1",
@@ -1143,6 +1275,11 @@
       "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
       "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs="
     },
+    "nocache": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.1.0.tgz",
+      "integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q=="
+    },
     "node-forge": {
       "version": "0.7.6",
       "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz",
@@ -1636,6 +1773,11 @@
         "picomatch": "^2.0.4"
       }
     },
+    "referrer-policy": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/referrer-policy/-/referrer-policy-1.2.0.tgz",
+      "integrity": "sha512-LgQJIuS6nAy1Jd88DCQRemyE3mS+ispwlqMk3b0yjZ257fI1v9c+/p6SD5gP5FGyXUIgrNOAfmyioHwZtYv2VA=="
+    },
     "regenerator-runtime": {
       "version": "0.11.1",
       "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
@@ -2044,6 +2186,11 @@
         "signal-exit": "^3.0.2"
       }
     },
+    "x-xss-protection": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/x-xss-protection/-/x-xss-protection-1.3.0.tgz",
+      "integrity": "sha512-kpyBI9TlVipZO4diReZMAHWtS0MMa/7Kgx8hwG/EuZLiA6sg4Ah/4TRdASHhRRN3boobzcYgFRUFSgHRge6Qhg=="
+    },
     "xdg-basedir": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
diff --git a/package.json b/package.json
index 0abe26eb..6a35d13c 100644
--- a/package.json
+++ b/package.json
@@ -23,6 +23,7 @@
     "async": "^3.1.0",
     "bcryptjs": "^2.4.3",
     "body-parser": "^1.19.0",
+    "compression": "^1.7.4",
     "cookie-parser": "1.4.3",
     "crypto": "^1.0.1",
     "errorhandler": "1.4.3",
@@ -31,6 +32,7 @@
     "express-flash": "0.0.2",
     "express-session": "^1.17.0",
     "fs": "0.0.1-security",
+    "helmet": "^3.23.3",
     "i18n": "^0.8.5",
     "morgan": "^1.9.1",
     "mysql": "^2.17.1",
-- 
GitLab


From 7b309b2960a3ce9d57d6082f96bc29eefb1aa456 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Fri, 17 Jul 2020 16:57:52 +0200
Subject: [PATCH 37/40] set env to testing

---
 app.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app.js b/app.js
index bbf16ae8..daa83468 100644
--- a/app.js
+++ b/app.js
@@ -18,7 +18,7 @@ i18n.configure({
   directory: './locales'
 });
 
-var env = process.env.NODE_ENV || 'development';
+var env = process.env.NODE_ENV || 'testing';
 const config = require('./config/config')[env];
 
 var app = express();
-- 
GitLab


From 66ee50016a7a877ee3e375858c92fdab3f2cbec7 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Wed, 16 Sep 2020 11:52:52 +0000
Subject: [PATCH 38/40] Update .gitlab-ci.yml

---
 .gitlab-ci.yml | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 80cb7c29..583e6b40 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,7 @@
-pages-testing:    
+deploy-testing:    
   stage: deploy
   script:
+    - cat $configfiledev > ./config/config.js
     - npm install
     - "pm2 delete --silent account || :"
     - pm2 start ./app.js --name=account
@@ -9,4 +10,16 @@ pages-testing:
     - testing
   only: 
     - testing
-    - test_logoutbutton
\ No newline at end of file
+
+deploy-master:    
+  stage: deploy
+  script:
+    - cat $configfileprod > ./config/config.js
+    - npm install
+    - "pm2 delete --silent account || :"
+    - pm2 start ./app.js --name=account
+    - pm2 save
+  tags: 
+    - production
+  only: 
+    - master
\ No newline at end of file
-- 
GitLab


From f582ea0d6e5108258c7b30a512ae4e2ea0d43472 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Wed, 16 Sep 2020 11:56:30 +0000
Subject: [PATCH 39/40] Update config.js, removed credentials

---
 config/config.js | 46 ++++++++++++++++++++++------------------------
 1 file changed, 22 insertions(+), 24 deletions(-)

diff --git a/config/config.js b/config/config.js
index 1535c914..eaab8764 100644
--- a/config/config.js
+++ b/config/config.js
@@ -9,28 +9,28 @@ module.exports = {
       strategy: 'saml',
       saml: {
         path: process.env.SAML_PATH || '/saml/SSO',
-        entryPoint: process.env.SAML_ENTRY_POINT || 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SSOService.php',
-        issuer: 'sp-account.m4lab.hft-stuttgart.de', //local metadata
-        logoutUrl: 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SingleLogoutService.php'
+        entryPoint: process.env.SAML_ENTRY_POINT || 'Saml Entry Point',
+        issuer: 'SAML issuer', //local metadata
+        logoutUrl: 'SAML logout URL'
       }
     },
     database: {
       host: 'localhost',      	  // DB host
-      user: 'DBManager',          // DB username
-      password: 'Stuttgart2019',  // DB password
+      user: 'usernamedb',          // DB username
+      password: 'passworddb',  // DB password
       port: 3306,                 // MySQL port
       dbUser: 'userdb',           // User DB
       host_project: 'localhost', // DB host project db
-      dbProject: 'projectDB'     // Project DB
+      dbProject: 'projectdb'     // Project DB
     },
     mailer: {
-      host: 'mail.hft-stuttgart.de',  // hostname
+      host: 'mailhost',  // hostname
       secureConnection: false,        // TLS requires secureConnection to be false
       port: 587,                      // port for secure SMTP
-      authUser: 'ad\\support-transfer',
-      authPass: '6laumri2',
+      authUser: 'mailuser',
+      authPass: 'mailpass',
       tlsCiphers: 'SSLv3',
-      from: 'support-transfer@hft-stuttgart.de',
+      from: 'mailfrom',
     }
   },
   testing: {
@@ -43,30 +43,28 @@ module.exports = {
       strategy: 'saml',
       saml: {
         path: process.env.SAML_PATH || '/saml/SSO',
-        entryPoint: process.env.SAML_ENTRY_POINT || 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SSOService.php',
-        //issuer: 'sp-account.m4lab.hft-stuttgart.de', //local metadata
-        issuer: 'sp-account-testing.m4lab.hft-stuttgart.de', //testing metadata
-        //issuer: 'sp-account-prod.m4lab.hft-stuttgart.de', //production metadata
-        logoutUrl: 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SingleLogoutService.php'
+        entryPoint: process.env.SAML_ENTRY_POINT || 'saml entry point',
+        issuer: 'SAML issuer', //testing metadata
+        logoutUrl: 'SAML logout URL'
       }
     },
     database: {
-      host: 'transfer.hft-stuttgart.de',      	  // DB host
-      user: 'DBManager',          // DB username
-      password: 'Stuttgart2019',  // DB password
+      host: 'dbhost',      	  // DB host
+      user: 'dbuser',          // DB username
+      password: 'dbpass',  // DB password
       port: 3306,                 // MySQL port
       dbUser: 'userdb',           // User DB
-      host_project: 'm4lab.hft-stuttgart.de', // DB host project db
-      dbProject: 'projectDB'     // Project DB
+      host_project: 'dbhost', // DB host project db
+      dbProject: 'projectdb'     // Project DB
     },
     mailer: {
-      host: 'mail.hft-stuttgart.de',  // hostname
+      host: 'mailhost',  // hostname
       secureConnection: false,        // TLS requires secureConnection to be false
       port: 587,                      // port for secure SMTP
-      authUser: 'ad\\support-transfer',
-      authPass: '6laumri2',
+      authUser: 'mailuser',
+      authPass: 'mailpass',
       tlsCiphers: 'SSLv3',
-      from: 'support-transfer@hft-stuttgart.de',
+      from: 'mailfrom',
     }
   }
 }
\ No newline at end of file
-- 
GitLab


From 53937cc86ccc5f4317ac12614bc310be76bf4dc6 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Fri, 18 Sep 2020 16:03:56 +0200
Subject: [PATCH 40/40] [bugfix] certificates moved to variables, cicd config
 adapted

---
 .gitlab-ci.yml | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 583e6b40..0d650171 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,6 +2,9 @@ deploy-testing:
   stage: deploy
   script:
     - cat $configfiledev > ./config/config.js
+    - cat $cert > ./routes/cert/cert.pem
+    - cat $certidp > ./routes/cert/cert_idp.pem
+    - cat $key > ./routes/cert/key.pem
     - npm install
     - "pm2 delete --silent account || :"
     - pm2 start ./app.js --name=account
@@ -15,6 +18,9 @@ deploy-master:
   stage: deploy
   script:
     - cat $configfileprod > ./config/config.js
+    - cat $cert > ./routes/cert/cert.pem
+    - cat $certidp > ./routes/cert/cert_idp.pem
+    - cat $key > ./routes/cert/key.pem
     - npm install
     - "pm2 delete --silent account || :"
     - pm2 start ./app.js --name=account
-- 
GitLab