diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 273c37c201f929bfc816bdecc014e0b205da7be9..64817da6af7c48e8ec34472a5cfe0666b75cf4bb 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -9,4 +9,16 @@ pages-devel:
- testing
only:
- testing
- - test_logoutbutton
\ No newline at end of file
+ - test_logoutbutton
+
+pages-devel:
+ stage: deploy
+ script:
+ - npm install
+ - "pm2 delete --silent account || :"
+ - pm2 start ./app.js --name=account
+ - pm2 save
+ tags:
+ - production
+ only:
+ - master
\ No newline at end of file
diff --git a/app.js b/app.js
index f3ed756b08f43e2b00d9a2ba38528dca12308b2f..68d3e9442d8290a20f6bded553c389810031c0ac 100644
--- a/app.js
+++ b/app.js
@@ -8,6 +8,8 @@ const bodyParser = require('body-parser');
const session = require('express-session');
const errorhandler = require('errorhandler');
const flash = require('express-flash');
+const fileUpload = require('express-fileupload');
+
const i18n = require('i18n'); // internationalization
i18n.configure({
locales:['de', 'en'],
@@ -22,12 +24,20 @@ var app = express();
app.set('port', config.app.port);
app.set('views', __dirname + '/views');
app.set('view engine', 'pug');
+
+// enable files upload
+app.use(fileUpload({
+ createParentPath: true,
+ limits: {
+ fileSize: 1000000 // 1 MB max. file size
+ }
+}));
+
app.use(morgan('combined'));
app.use(cookieParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(express.static(path.join(__dirname, 'public')));
-
app.use(i18n.init);
app.use((req, res, next) => {
res.setLocale('de');
diff --git a/config/config.js b/config/config.js
index 5c0c2cfc56bd3d8e619413a1928de3eac06e9c9f..1d20eccc7b3402b66bfb31fca3c6f78798604be0 100644
--- a/config/config.js
+++ b/config/config.js
@@ -8,11 +8,11 @@ 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',
+ entryPoint: process.env.SAML_ENTRY_POINT || 'https://transfer.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'
+ //issuer: 'sp-account-testing.m4lab.hft-stuttgart.de', //testing metadata
+ issuer: 'sp-account-prod.m4lab.hft-stuttgart.de', //production metadata
+ logoutUrl: 'https://transfer.hft-stuttgart.de/idp/saml2/idp/SingleLogoutService.php'
}
},
database: {
@@ -21,7 +21,8 @@ module.exports = {
password: 'Stuttgart2019', // DB password
port: 3306, // MySQL port
dbUser: 'userdb', // User DB
- host_project: 'm4lab.hft-stuttgart.de', // DB host project db
+ host_project: 'transfer.hft-stuttgart.de', // DB host project db
+ //host_project: 'localhost', // local
dbProject: 'projectDB' // Project DB
},
mailer: {
diff --git a/package-lock.json b/package-lock.json
index 23c18b893acaa6380eacf6dafc631388f394e344..8def620529bb811a0d3e89dcac0b8c7aa8a42574 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -196,6 +196,14 @@
"fill-range": "^7.0.1"
}
},
+ "busboy": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz",
+ "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==",
+ "requires": {
+ "dicer": "0.3.0"
+ }
+ },
"bytes": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
@@ -432,6 +440,14 @@
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
},
+ "dicer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz",
+ "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==",
+ "requires": {
+ "streamsearch": "0.1.2"
+ }
+ },
"doctypes": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
@@ -579,6 +595,14 @@
}
}
},
+ "express-fileupload": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.1.6.tgz",
+ "integrity": "sha512-w24zPWT8DkoIxSVkbxYPo9hkTiLpCQQzNsLRTCnecBhfbYv+IkIC5uLw2MIUAxBZ+7UMmXPjGxlhzUXo4RcbZw==",
+ "requires": {
+ "busboy": "^0.3.1"
+ }
+ },
"express-flash": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/express-flash/-/express-flash-0.0.2.tgz",
@@ -1759,6 +1783,11 @@
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
},
+ "streamsearch": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
+ "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
+ },
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
diff --git a/package.json b/package.json
index 2c3a256225dfdd55c4ad54c364b6e4d650af6004..2df854950e08a3f9e37eb6ff7ff44b94f786b621 100644
--- a/package.json
+++ b/package.json
@@ -28,6 +28,7 @@
"crypto": "^1.0.1",
"errorhandler": "1.4.3",
"express": "^4.17.1",
+ "express-fileupload": "^1.1.6",
"express-flash": "0.0.2",
"express-session": "^1.17.0",
"fs": "0.0.1-security",
diff --git a/public/js/registration.js b/public/js/registration.js
index 3e6184f9f79ee61c290e2bfb44a7b5046c276e46..8f2c1b545b0233b55082491a416359b98920c2ef 100644
--- a/public/js/registration.js
+++ b/public/js/registration.js
@@ -8,7 +8,7 @@ $('#inputEmail').change(function(){
$('#emailWarning').empty()
isEmailValid = data
if(!isEmailValid) {
- $('#emailWarning').html('M4_LAB account with this email address is already exist.')
+ $('#emailWarning').html('Mit dieser E-Mail-Adresse existiert bereits ein Benutzerkonto in unserem Transferportal.')
}
switchSubmitButton()
})
diff --git a/routes/routes-account.js b/routes/routes-account.js
index 5c84648e4a9e20bcd3fb050b93b13e913efacb46..43394cac613791892e2b9bb950a3b827ec394e3a 100644
--- a/routes/routes-account.js
+++ b/routes/routes-account.js
@@ -58,7 +58,7 @@ module.exports = function (app, config, passport, i18n) {
app.post(config.passport.saml.path,
passport.authenticate(config.passport.strategy,
{
- failureRedirect: '/',
+ failureRedirect: '/account/',
failureFlash: true
}),
function (req, res) {
@@ -67,7 +67,7 @@ module.exports = function (app, config, passport, i18n) {
);
// to generate Service Provider's XML metadata
- app.get('/saml/metadata',
+ app.get('/saml/metadata',
function(req, res) {
res.type('application/xml');
var spMetadata = samlStrategy.generateServiceProviderMetadata(fs.readFileSync(__dirname + '/cert/cert.pem', 'utf8'));
@@ -104,8 +104,8 @@ module.exports = function (app, config, passport, i18n) {
}
})
} else {
- res.redirect('/account/login'); // localhost
- }
+ res.redirect('/login'); // localhost
+ }
});
app.get('/login',
@@ -118,14 +118,14 @@ module.exports = function (app, config, passport, i18n) {
app.get('/logout', function (req, res) {
if (req.user == null) {
- return res.redirect('/account/');
+ return res.redirect('/');
}
req.user.nameID = req.user.id;
req.user.nameIDFormat = req.user.idFormat;
return samlStrategy.logout(req, function(err, uri) {
req.logout();
-
+
if ( req.session ) {
req.session.destroy((err) => {
if(err) {
@@ -133,7 +133,7 @@ module.exports = function (app, config, passport, i18n) {
}
});
}
-
+
return res.redirect(uri);
});
});
@@ -149,7 +149,7 @@ module.exports = function (app, config, passport, i18n) {
}
})
} else {
- res.redirect('/account/login');
+ res.redirect('/login');
}
});
@@ -183,7 +183,7 @@ module.exports = function (app, config, passport, i18n) {
// 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)
@@ -213,7 +213,7 @@ module.exports = function (app, config, passport, i18n) {
}
])
} else {
- res.redirect('/account/login');
+ res.redirect('/login');
}
});
@@ -223,7 +223,7 @@ module.exports = function (app, config, passport, i18n) {
user: req.user // useful for view engine, useless for HTML
});
} else {
- res.redirect('/account/login');
+ res.redirect('/login');
}
});
@@ -238,7 +238,7 @@ module.exports = function (app, config, passport, i18n) {
industry: req.body.inputIndustry,
speciality: req.body.inputSpeciality,
}
-
+
if (req.isAuthenticated()) {
if (userData.email) {
dbconn.user.query('UPDATE user SET ? WHERE email = "' +userData.email+'"', userData, function (err, rows, fields) {
@@ -254,10 +254,10 @@ module.exports = function (app, config, passport, i18n) {
})
}
} else {
- res.redirect('/account/login');
+ res.redirect('/login');
}
});
-
+
app.post('/changePwd', function (req, res) {
if (req.isAuthenticated()) {
var currPwd = req.body.inputCurrPwd
@@ -269,16 +269,20 @@ module.exports = function (app, config, passport, i18n) {
// Load hashed passwd from DB
dbconn.user.query('SELECT password FROM credential WHERE user_id='+userId, function (err, rows, fields) {
if (err) {
- res.redirect('/500')
- throw err
+ console.error(err)
+ res.status(500).render(lang+'/500', {
+ error: err
+ })
}
var userPwd = rows[0].password
// check if the password is correct
bcrypt.compare(currPwd, userPwd, function(err, isMatch) {
if (err) {
- res.redirect('/500')
- throw err
+ console.error(err)
+ res.status(500).render(lang+'/500', {
+ error: err
+ })
}
else if (!isMatch) {
//req.flash('error', "Sorry, your password was incorrect. Please double-check your password.")
@@ -288,7 +292,8 @@ module.exports = function (app, config, passport, i18n) {
}
else {
if ( newPwd != retypePwd ) {
- req.flash('error', "Passwords do no match. Please make sure you re-type your new password correctly.")
+ //req.flash('error', "Passwords do no match. Please make sure you re-type your new password correctly.")
+ req.flash('error', 'Passwörter stimmen nicht überein. Bitte stellen Sie sicher, dass Sie das Passwort beide Male genau gleich eingeben.')
res.redirect('/account/security')
}
else {
@@ -324,13 +329,13 @@ module.exports = function (app, config, passport, i18n) {
});
}
}
- })
+ })
})
}
- })
+ })
}
else {
- res.redirect('/account/login');
+ res.redirect('/login');
}
});
@@ -348,7 +353,7 @@ module.exports = function (app, config, passport, i18n) {
"we've received a request to reset your password. However, this email address is not on our database of registered users.\n\n"+
"Thanks,\nM4_LAB Team";
var emailSubject = "Account Access Attempted"; */
-
+
async.waterfall([
function(done) {
crypto.randomBytes(20, function(err, buf) {
@@ -416,7 +421,7 @@ module.exports = function (app, config, passport, i18n) {
//req.flash('error', 'Password reset token is invalid or has expired.');
req.flash('error', 'Der Schlüssel zum zurücksetzen des Passworts ist ungültig oder abgelaufen.');
//res.redirect('/forgotPwd'); // deployment
- res.redirect('/account/forgotPwd'); // localhost
+ res.redirect('/account/forgotPwd'); // deployment
}
else {
res.render(lang+'/account/reset');
@@ -455,7 +460,7 @@ module.exports = function (app, config, passport, i18n) {
}
});
// redirect to login page
- res.redirect('/account/login')
+ res.redirect('/login')
}
})
});
@@ -463,10 +468,10 @@ module.exports = function (app, config, passport, i18n) {
}
else {
req.flash('error', "User not found.")
- res.redirect('/account/login')
+ res.redirect('/login')
}
});
-
+
});
// todo: user registration with captcha
@@ -507,7 +512,7 @@ module.exports = function (app, config, passport, i18n) {
}
else {
//req.flash('success', 'Your account has been created. Please log in.')
- req.flash('success', 'Ihr Benutzerkonto wurde angelegt. Bitte melden Sie sich an.')
+ req.flash('success', 'Ihr Benutzerkonto wurde angelegt. Bitte melden Sie sich an.')
}
res.redirect('/account/registration');
})
diff --git a/routes/routes-project.js b/routes/routes-project.js
index a85058ff18155ccb4347ce0d512e491da30d5d0a..d34bab483d73e2db2a259a6290b000caadbe2755 100644
--- a/routes/routes-project.js
+++ b/routes/routes-project.js
@@ -2,6 +2,8 @@ const methods = require('./methods')
const async = require('async')
const helpers = require('./helpers')
+const pictSizeLimit = 1000000 // 1 MB
+
module.exports = function (app) {
// ======== APP ROUTES - PROJECT ====================
@@ -26,7 +28,8 @@ module.exports = function (app) {
name: mailinglistOverview[i].name,
src: mailinglistOverview[i].src,
projectstatus: mailinglistOverview[i].projectstatus,
- project_title: mailinglistOverview[i].project_title
+ project_title: mailinglistOverview[i].project_title,
+ keywords: mailinglistOverview[i].keywords
});
}
@@ -104,7 +107,7 @@ module.exports = function (app) {
res.render(lang+'/project/addProjectOverview')
}
else {
- res.redirect('/account/login')
+ res.redirect('/login')
}
})
@@ -144,7 +147,7 @@ module.exports = function (app) {
if (err) {
//req.flash('error', "Failed")
req.flash('error', "Fehlgeschlagen")
- res.redirect('/account/addProjectOverview');
+ res.redirect('/addProjectOverview');
}
else {
req.flash('success', 'Your project has been created.')
@@ -160,13 +163,45 @@ module.exports = function (app) {
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: req.body.logo,
+ logo: projectLogoPath,
gitlab: req.body.gitlabURL,
wiki: wiki,
overview: req.body.overview,
@@ -178,7 +213,7 @@ module.exports = function (app) {
term: projectTerm,
further_details: req.body.furtherDetails,
website: req.body.website,
- src: req.body.src,
+ src: projectPicturePath,
caption: req.body.caption,
contact_lastname: req.body.contactName,
contact_email: req.body.contactEmail,
@@ -186,6 +221,28 @@ module.exports = function (app) {
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.
*/
@@ -224,7 +281,7 @@ module.exports = function (app) {
if (err) {
//req.flash('error', "Failed")
req.flash('error', "Fehlgeschlagen")
- res.redirect('/account/addProjectOverview');
+ res.redirect('/addProjectOverview');
}
else {
req.flash('success', 'Your project has been created.')
diff --git a/views/DE/account/contact.pug b/views/DE/account/contact.pug
new file mode 100644
index 0000000000000000000000000000000000000000..25e4dc9c402ef556088b707e1bbe2ce99b41c2a5
--- /dev/null
+++ b/views/DE/account/contact.pug
@@ -0,0 +1,80 @@
+doctype html
+html(lang="de")
+ head
+ 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="/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", 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")
+ div(class="col-md-12" style="margin-bottom: 40px;")
+ img(class="mx-auto" src="/img/Kontakt.jpg" width="100%")
+ div(class="contact-clean" style="background-color: rgb(234,234,234);")
+ if successes
+ for success in successes
+ div.alert.alert-success.alert-dismissible #{ success }
+ a(class="close", href="#", data-dismiss="alert", aria-label="close") ×
+ 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") ×
+ form(method="POST")
+ h2(class="text_center") Kontaktieren Sie uns
+ div(class="form-group")
+ input#name(class="form-control" type="text" name="name" placeholder="Name")
+ div(class="form-group")
+ input#inputEmail(name="inputEmail", type="email", class="form-control", placeholder="E-Mail-Adresse*", maxlength="45" required)
+ div(class="form-group")
+ textarea#message(class="form-control" name="message" placeholder="Nachricht" rows="14")
+ div(class="form-group")
+ input#submitBtn(class="btn btn-primary" type="submit" style="background-color: #8a348b;" value="SENDEN")
+ div(class="contact-clean" style="background-color: rgb(234,234,234);padding: 80px;padding-top: 0px;")
+ form(method="POST")
+ p(style="margin-top: 25px;") Hochschule für Technik Stuttgart
Institut für Angewandte Forschung
Innovative Hochschule - Projekt M4_LAB
Schellingstr. 24
70174 Stuttgart
Deutschland
support-transfer@hft-stuttgart.de
www.hft-stuttgart.de / www.hft-stuttgart.de/M4LAB
+ div(style="background-color: rgba(138,52,139,0.45);")
+ div(class="container")
+ div(class="row")
+ div(class="col-md-4 col-lg-2")
+ div(class="col-md-4 col-lg-8")
+ div(style="background-color: #feffff;margin: 0px;padding: 60px;padding-top: 20px;padding-bottom: 20px;")
+ img(class="d-flex d-lg-flex justify-content-center justify-content-lg-center align-items-lg-start mx-auto" src="/img/Logo_TV1.png" width="100px" style="padding-bottom: 35px;")
+ h2(class="text-center" style="color: #8a348b;") Transferportal
+ p(class="text-center") Das Transferportal entsteht in einem Teilprojekt der Innovativen Hochschule für Technik Stuttgart. Im Innovationslabor M4_LAB wird das Transferportal als eine Webpräsenz entwickelt, welches Wissen, Lösungen und Dienste für HFT-Mitglieder, externe Partner und die allgemeine Öffentlichkeit bereitstellt.
Es ergänzt die Informationen der allgemeinen HFT-Webseite durch konkrete Ergebnisse aus Forschung und Entwicklung, verfügbar in verschiedenster Form wie beispielsweise Daten, Dokumentationen und Software-Code.
Zudem stellt es Kollaborationsmittel für Projektpartner und später auch Partizipationsmöglichkeiten für die breite Öffentlichkeit bereit.
+ div(class="col-md-4 col-lg-2")
+
+
+ // 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")
+ // M4_LAB
+ script(src="/js/headfoot.js")
diff --git a/views/DE/account/home.pug b/views/DE/account/home.pug
index dc4e1c83fb6e851c47dd4e86cc07792f1f05c2f9..fa11d3f7d186ba91c1f1bccae8307e5602df3e24 100644
--- a/views/DE/account/home.pug
+++ b/views/DE/account/home.pug
@@ -6,40 +6,36 @@ 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="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;
- }
body
div(class="container-fluid")
- div(class="row")
- div(class="col-3")
- h5
- span #{user.firstname} #{user.lastname}
- div(class="nav flex-column nav-pills", id="v-pills-tab", role="tablist", aria-orientation="vertical")
- a(class="nav-link" href="/account/profile" aria-selected="true") Benutzerprofil
- a(class="nav-link" href="/account/security" aria-selected="false") Sicherheitseinstellungen
- a(class="nav-link" href="/account/services" aria-selected="false") Projekte und Dienste
- a(class="nav-link" href="/logout" aria-selected="false") Logout
- div(class="col-sm-9")
- p content goes here
+ 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.
Dazu finden Sie auf der linken Seite verschiedene Menüs.
+ p Bei Rückfragen kontaktieren Sie uns bitte unter: support-transfer@hft-stuttgart.de
// jQuery
script(src="https://code.jquery.com/jquery-3.3.1.min.js")
@@ -47,4 +43,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/headfootLogout.js")
\ No newline at end of file
+ script(src="/js/headfoot.js")
\ No newline at end of file
diff --git a/views/DE/account/profile.pug b/views/DE/account/profile.pug
index eba579b384e8e1667f795e742fe7366b29fd0c3b..12f789894c9c8b1348e41bf12e12cd5c81d9433c 100644
--- a/views/DE/account/profile.pug
+++ b/views/DE/account/profile.pug
@@ -6,39 +6,33 @@ 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="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;
- }
body
div(class="container-fluid")
- div(class="row")
- div(class="col-3")
- h5
- span #{user.firstname} #{user.lastname}
- div(class="nav flex-column nav-pills", id="v-pills-tab", role="tablist", aria-orientation="vertical")
- a(class="nav-link" href="#" aria-selected="true") Benutzerprofil
- a(class="nav-link" href="/account/security" aria-selected="false") Sicherheitseinstellungen
- a(class="nav-link" href="/account/services" aria-selected="false") Projekte und Dienste
- a(class="nav-link" href="/logout" aria-selected="false") Logout
- div(class="col-sm-9")
+ 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" 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
+ 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")
if successes
for success in successes
div.alert.alert-success.alert-dismissible #{ success }
@@ -47,7 +41,7 @@ html(lang="de")
for error, i in errors
div.alert.alert-danger.alert-dismissible.fade.show #{ error }
a(class="close", href="#", data-dismiss="alert", aria-label="close") ×
- form#profileForm(method="POST", action="/account/updateProfile")
+ form#profileForm(method="POST", action="/updateProfile")
div(class="form-row")
div(class='form-group col-md-2')
label(for="title") Anrede
@@ -77,26 +71,26 @@ html(lang="de")
}
div(class='form-group col-md-2')
label(for="firstname") Vorname
- input#inputFirstname(name="inputFirstname", type="text", class="form-control", placeholder="Vorname", value=user.firstname required)
+ input#inputFirstname(name="inputFirstname", type="text", class="form-control", placeholder="Vorname", value=user.firstname, maxlength="45" required)
div(class='form-group col-md-2')
label(for="lastname") Nachname
- input#inputLastname(name="inputLastname", type="text", class="form-control", placeholder="Nachname", value=user.lastname required)
+ input#inputLastname(name="inputLastname", type="text", class="form-control", placeholder="Nachname", value=user.lastname, maxlength="45" required)
div(class="form-row")
div(class='form-group col-md-8')
label(for="email") E-mail Adresse
- input#inputEmail(name="inputEmail", type="email", class="form-control", placeholder="Email", value=email required)
+ input#inputEmail(name="inputEmail", type="email", class="form-control", placeholder="Email", value=email, maxlength="45" required)
div(class="form-row")
div(class='form-group col-md-8')
label(for="organisation") Unternehmen
- input#inputOrganisation(name="inputOrganisation", type="text", class="form-control", placeholder="Unternehmen", value=user.organisation)
+ input#inputOrganisation(name="inputOrganisation", type="text", class="form-control", placeholder="Unternehmen", value=user.organisation, maxlength="45")
div(class="form-row")
div(class='form-group col-md-8')
label(for="industry") Branche
- input#inputIndustry(name="inputIndustry", type="text", class="form-control", placeholder="Branche", value=user.industry)
+ input#inputIndustry(name="inputIndustry", type="text", class="form-control", placeholder="Branche", value=user.industry, maxlength="45")
div(class="form-row")
div(class='form-group col-md-8')
label(for="speciality") Fachgebiete
- input#inputSpeciality(name="inputSpeciality", type="text", class="form-control", placeholder="Fachgebiete", value=user.speciality)
+ input#inputSpeciality(name="inputSpeciality", type="text", class="form-control", placeholder="Fachgebiete", value=user.speciality, maxlength="100")
input(type="submit", class="btn btn-primary", value="Speichern")
// jQuery
@@ -105,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/headfootLogout.js")
\ No newline at end of file
+ script(src="/js/headfoot.js")
\ No newline at end of file
diff --git a/views/DE/account/security.pug b/views/DE/account/security.pug
index 7d81edee3e47dcb85db9c70cfa392b1e7591e61e..15c438871580fd7d9edc0ffdfef78a0bbc531827 100644
--- a/views/DE/account/security.pug
+++ b/views/DE/account/security.pug
@@ -7,41 +7,36 @@ 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 {
font-size: 11px;
}
body
div(class="container-fluid")
- div(class="row")
- div(class="col-3")
- h5
- span #{user.firstName} #{user.lastName}
- div(class="nav flex-column nav-pills", id="v-pills-tab", role="tablist", aria-orientation="vertical")
- a(class="nav-link" href="/account/profile" aria-selected="true") Benutzerprofil
- a(class="nav-link" href="#" aria-selected="false") Sicherheitseinstellungen
- a(class="nav-link" href="/account/services" aria-selected="false") Projekte und Dienste
- a(class="nav-link" href="/logout" aria-selected="false") Logout
- div(class="col-sm-9")
+ 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" 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")
+ 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")
if successes
for success in successes
div.alert.alert-success.alert-dismissible #{ success }
@@ -51,20 +46,23 @@ html(lang="de")
div.alert.alert-danger.alert-dismissible.fade.show #{ error }
a(class="close", href="#", data-dismiss="alert", aria-label="close") ×
form(class="needs-validation", method="post", action="/account/changePwd" novalidate)
- div(class="form-group row")
- label(for="currPwd") Aktuelles Passwort
- input(id="inputCurrPwd", name="inputCurrPwd", type="password", class="form-control" required)
- div(class="invalid-feedback") Bitte füllen Sie dieses Feld aus.
- div(class="form-group row")
- label(for="newPwd") Neues Passwort
- input#inputNewPwd(name="inputNewPwd", type="password", class="form-control" required)
- span#recommendation
- div(class="invalid-feedback") Bitte füllen Sie dieses Feld aus.
- div(class="form-group row")
- label(for="confirm") Bestätigen Sie das neue Passwort
- input#inputConfirm(name="inputConfirm", type="password", class="form-control" required)
- span#message
- div(class="invalid-feedback") Bitte füllen Sie dieses Feld aus.
+ div(class="form-row")
+ div(class='form-group col-md-8')
+ label(for="currPwd") Aktuelles Passwort
+ input(id="inputCurrPwd", name="inputCurrPwd", type="password", class="form-control" required)
+ div(class="invalid-feedback") Bitte füllen Sie dieses Feld aus.
+ div(class="form-row")
+ div(class='form-group col-md-8')
+ label(for="newPwd") Neues Passwort
+ input#inputNewPwd(name="inputNewPwd", type="password", class="form-control" required)
+ span#recommendation
+ div(class="invalid-feedback") Bitte füllen Sie dieses Feld aus.
+ div(class="form-row")
+ div(class='form-group col-md-8')
+ label(for="confirm") Bestätigen Sie das neue Passwort
+ input#inputConfirm(name="inputConfirm", type="password", class="form-control" required)
+ 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
@@ -75,7 +73,7 @@ html(lang="de")
// M4_LAB
script(src="/js/security.js")
script(src="/js/generalFunction.js")
- script(src="/js/headfootLogout.js")
+ script(src="/js/headfoot.js")
script.
// check input fields
'use strict';
diff --git a/views/DE/account/services.pug b/views/DE/account/services.pug
index 525041ef0bc99e2b461d545eef822466dae4bb3f..8b99f630e68a19498f6f833937b1296b580c962e 100644
--- a/views/DE/account/services.pug
+++ b/views/DE/account/services.pug
@@ -6,73 +6,39 @@ 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="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;
- }
body
div(class="container-fluid")
- div(class="row")
- div(class="col-3")
- h5
- span #{user.firstName} #{user.lastName}
- div(class="nav flex-column nav-pills", id="v-pills-tab", role="tablist", aria-orientation="vertical")
- a(class="nav-link" href="/account/profile" aria-selected="true") Benutzerprofil
- a(class="nav-link" href="/account/security" aria-selected="false") Sicherheitseinstellungen
- a(class="nav-link" href="#" aria-selected="false") Projekte und Dienste
- a(class="nav-link" href="/logout" aria-selected="false") Logout
- div(class="col-sm-9")
- if successes
- for success in successes
- div.alert.alert-success.alert-dismissible #{ success }
- a(class="close", href="#", data-dismiss="alert", aria-label="close") ×
- 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") ×
- table
- for item in project
- tr
- td #{item.title}
- if item.userStatus
- td
- button(type="button", class="btn btn-secondary", onclick="unsubscribe()") Projektbeteiligung beenden
- else
- td
- button(type="button", class="btn btn-success", onclick="subscribe()") Am Projekt beteiligen
- tr
- td(colspan="2") #{item.summary}
- tr
- td(colspan="2") Ansprechpartner: #{item.cp}
-
+ 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" 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")
+ 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 Auf dieser Seite werden in Zukunft Funktionen bereitgestellt, um Ihre Beteiligung an Projekten und Aktivierung von Diensten zu organisieren. Diese Funktionen stehen zurzeit aber noch nicht zur Verfügung.
+
// 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")
// M4_LAB
- script(src="/js/headfootLogout.js")
- script.
- function subscribe() {
- alert("To be implemented: Ihre Anfrage wird an den zuständigen Projektleiter gesendet.")
- }
- function unsubscribe() {
- alert("To be implemented: Ihre Projektbeteiligung wurde beendet und der zuständige Projektleiter in Kenntnis gesetzt.")
- }
\ No newline at end of file
+ script(src="/js/headfoot.js")
\ No newline at end of file
diff --git a/views/DE/project/addProjectOverview.pug b/views/DE/project/addProjectOverview.pug
index 08a391713c561222dec2b9336e60137c3c12dcde..f6517d29faccb116a9e7345b04084ca0a86e53d5 100644
--- a/views/DE/project/addProjectOverview.pug
+++ b/views/DE/project/addProjectOverview.pug
@@ -43,12 +43,12 @@ html(lang="de")
for error, i in errors
div.alert.alert-danger.alert-dismissible.fade.show #{ error }
a(class="close", href="#", data-dismiss="alert", aria-label="close") ×
- form(method="POST")
+ form(method="POST" encType="multipart/form-data")
div(class='form-row')
div(class='form-group col-md-12')
- input#inputPname(name="pname" class="form-control" type="text" placeholder="Projekttitel*" required)
+ input#inputPname(name="title" class="form-control" type="text" placeholder="Projekttitel*" required)
div(class="form-group col-md-12")
- input#inputTitle(name="title" class="form-control" type="text" placeholder="Akronym*" required)
+ 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')
@@ -59,7 +59,10 @@ html(lang="de")
option(value="Lehr Projekt") Lehr Projekt
option(value="Transfer-projekt") Transfer-projekt
div(class="form-group col-md-12")
- input#inputLogo(name="logo" class="form-control" type="text" placeholder="Projektlogo, to be implemented: upload picture")
+ 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")
@@ -85,12 +88,11 @@ html(lang="de")
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-row')
- div(class="form-group col-md-2")
-
Laufzeit
- div(class="form-group col-md-5") + 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="form-group col-md-5") + 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)") @@ -99,7 +101,10 @@ html(lang="de") h5(class="mb-3 font-weight-bold") Bilder div(class='form-row') div(class="form-group col-md-12") - input#inputSrc(name="src" class="form-control" type="text" placeholder="To be implemented: upload picture") + 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 @@ -129,7 +134,7 @@ 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") // Header - script(src="/js/headfootLogout.js") + script(src="/js/headfoot.js") script. $( function() { $.datepicker.setDefaults( $.datepicker.regional["de"] ); diff --git a/views/DE/project/mailinglists.pug b/views/DE/project/mailinglists.pug index 1bc8f5c2c30b1c97c2a1f4bbe859532afd28295f..c38c8042e3dead88fbbf9febf47439d6258e1eab 100644 --- a/views/DE/project/mailinglists.pug +++ b/views/DE/project/mailinglists.pug @@ -2,9 +2,11 @@ html(lang="de") head title= "Mailinglisten" meta(charset="UTF-8") - meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no") + 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", 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") style. .collapse { display: none; @@ -27,35 +29,71 @@ html(lang="de") transition-property: height,visibility; } body -Hinweis: Die Nutzeroberfläche von GitLab ist in Englisch.
+Für die Veröffentlichung von Open-Source-Projekten steht Ihnen eine von der HFT
+ Stuttgart selbstverwaltete Gitlab-Instanz bereit.
+
+ Eine Übersicht der aktuellen Open-Source-/Open-Data-Projekte erreichen Sie über diesen
+ Link zu den Gitlab-Projekten.
+
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.
+
+ 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.
+
+ Wir entwickeln das Portal kontinuierlich weiter und prüfen dabei auch andere Plattformen zur
+ Nutzung.
+
Falls Sie mehr über die + Weiterentwicklung des Portals + erfahren wollen oder sich mit Anregungen auch aktiv einbringen + wollen, regen wir an, unsere Mailingliste + transferportalhft zu abonnieren. Sie können uns aber auch + jederzeit + direkt unter Kontakt anschreiben. +
+- Dann klicken Sie auf diesen Link zu den Gitlab-Projekten 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. -
- -- Wenn Sie dem Projekteigentümer eine Rückmeldung bzw. einen Fehler melden wollen, navigieren Sie im Gitlab zunächst zum entsprechenden Projekt. - Anschließend können Sie dann dort die Möglichkeit nutzen, ein neues "Issues" einzureichen. - Ein Anmelden am Portal ist dazu nicht nötig. -
-- Wenn Sie darüberhinaus beitragen wollen, befolgen Sie bitte folgende Schritte: -
-+ Dann klicken Sie auf diesen + Link zu den Gitlab-Projekten + 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. +
++ 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. +
++ Wenn Sie noch kein Benutzerkonto haben, klicken Sie bitte oben auf den Link Benutzerkonto und folgen + Sie dem System durch die Registrierungsprozedur. +
++ Haben Sie ein Benutzerkonto, befolgen Sie bitte folgende Schritte: +
++ 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. +
++ Wenn Sie noch kein Benutzerkonto haben, klicken Sie bitte oben auf den Link Benutzerkonto und folgen + Sie dem System durch die Registrierungsprozedur. +
++ Haben Sie ein Benutzerkonto, befolgen Sie bitte folgende Schritte: +
++ Weitere Hilfestellung zum Anlegen von Projekten in Gitlab finden Sie in der Gitlab-Dokumentation. +
++ 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 + Gitlab-Dokumentation zu SSH Keys. +
+