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;") <strong>Hochschule für Technik Stuttgart</strong><br/>Institut für Angewandte Forschung<br/>Innovative Hochschule - Projekt M4_LAB<br/>Schellingstr. 24<br/>70174 Stuttgart<br/>Deutschland<br/><br/><a href="mailto:support-transfer@hft-stuttgart.de">support-transfer@hft-stuttgart.de</a><br/><br/><a href="https://www.hft-stuttgart.de/">www.hft-stuttgart.de</a> / <a href="https://www.hft-stuttgart.de/M4LAB">www.hft-stuttgart.de/M4LAB</a><br/> + 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;") <strong>Transferportal</strong> + p(class="text-center") Das Transferportal entsteht in einem Teilprojekt der Innovativen <a href="https://www.hft-stuttgart.de">Hochschule für Technik Stuttgart</a>. Im <a href="https://www.hft-stuttgart.de/forschung/innovative-hochschule-m4-lab">Innovationslabor M4_LAB</a> 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.<br/><br/>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.<br/><br/>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.<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") @@ -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 <strong>#{item.title}</strong> - 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") <i>Ansprechpartner: #{item.cp}</i> - + 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") - <p class="font-weight-normal">Laufzeit</p> - 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 - <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: + 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" 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(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 - if isUserAuthenticated - script(src="/js/headfootLogout.js") - else - script(src="/js/headfoot.js") \ No newline at end of file + 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 index 6dead87fc997ba03a27b908f3246c1fd91d9522d..cb868f9ab04683fb3d9c4d4cd5c514c91083f284 100644 --- a/views/DE/project/project-simplified.pug +++ b/views/DE/project/project-simplified.pug @@ -7,41 +7,45 @@ 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; - } + .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 - if isUserAuthenticated - script(src="/js/headfootLogout.js") - else - script(src="/js/headfoot.js") \ No newline at end of file + script(src="/js/headfoot.js") diff --git a/views/DE/project/project.html b/views/DE/project/project.html index df461962e13ae4c15eb13caa79d5e4a948d96260..73cd0ee53cc11528b2806c7f66a7fa886b0bbdea 100644 --- a/views/DE/project/project.html +++ b/views/DE/project/project.html @@ -1,70 +1,220 @@ - <div class="container"> - <hr /> - <!-- text: Zweck dieser Seite / purpose of this page --> - <i class="fas fa-info-circle"></i> Diese Seite bietet den Einstieg zu den unterschiedlichen Projekten, die in unserem Portal für die Öffentlichkeit bereitgestellt werden. - Für diesen Zweck steht zur Zeit ein Dienst bereit: eine von der HFT selbst verwaltete Gitlab-Instanz. - Alle der in diesem Gitlab erfassten Projektinhalte unterliegen einer Open Source bzw. Open Data Lizenz. - <p>Hinweis: Die Nutzeroberfläche von GitLab ist in Englisch.</p> +<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> - <!-- link: Gitlab Projekte / Gitlab project list --> - <h2> Direkteinstieg </h2> - <a href="https://transfer.hft-stuttgart.de/gitlab/explore/projects"> <i class="fas fa-chevron-right">Gitlab Projects</i></a> - - <!-- text: Hilfestellung zu Gitlab / short help about Gitlab --> - <hr /> - <h2> Hilfestellung zu GitLab </h2> - <h3> <i class="fas fa-question-circle"></i> Möchten Sie die Projektinhalte ansehen oder herunterladen? </h3> - <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> - - <h3> <i class="fas fa-question-circle"></i> Möchten Sie zu einem Projekt beitragen? </h3> - <p> - 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. - </p> - <p> - Wenn Sie darüberhinaus beitragen wollen, befolgen Sie bitte folgende Schritte: - </p> - <ol> - <li> - Melden Sie sich bitte im Portal an. <br> - Sofern Sie noch nicht als Nutzer im Portal eingetragen sind, wird das System Sie durch die Registrierung leiten. <br> - Zur Anmeldung bzw. Registrierung gelangen Sie entweder über das Menü am oberen Seitenrand oder durch Klicken auf diesen <a href="https://m4lab.hft-stuttgart.de/account/"> <i class="fas fa-chevron-right">Link zum Benutzerkonto</i></a>. - </li> - <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> - Fragen Sie beim Projekteigentümer um Zugang, indem Sie im Gitlab bei der entsprechende Projektseite auf den Link <em>Request Access</em> klicken. Solbald dieser ihre Anfrage bestätigt hat, können Sie loslegen. - </li> - </ol> - <h3> <i class="fas fa-question-circle"></i> Möchten Sie selbst ein Projekt anlegen, um es der Öffentlichkeit bereitzustellen? </h3> - - </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. - Dann befolgen Sie bitte folgende Schritte: - </p> - - <ol> - <li> - Melden Sie sich bitte im Portal an. <br> - Sofern Sie noch nicht als Nutzer im Portal eingetragen sind, wird das System Sie durch die Registrierung leiten. <br> - Zur Anmeldung bzw. Registrierung gelangen Sie entweder über das Menü am oberen Seitenrand oder durch Klicken auf diesen <a href="https://m4lab.hft-stuttgart.de/account/"> <i class="fas fa-chevron-right">Link zum Benutzerkonto</i></a>. - </li> - <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> - Erstellen Sie dann in Gitlab ein neues Projekt durch Klicken auf den grünen <em>New Project</em>-Knopf und anschließendem Befolgen der Eingabemaske von Gitlab. <br> - Weitere Hilfestellung zum Anlegen von Projekten in Gitlab finden Sie in der <a href="https://docs.gitlab.com/ee/gitlab-basics/create-project.html"> <i class="fas fa-chevron-right">Gitlab-Dokumentation</i></a>. - </li> - </ol> - - <!-- / content body --> - </div> \ No newline at end of file + + + +<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 index 7cf545fb6210357de971c9550079ac7210ca1314..3b0b68f1fe5f285d6377aae28b6c0fcacfa7f95b 100644 --- a/views/DE/project/projectOverview.pug +++ b/views/DE/project/projectOverview.pug @@ -141,20 +141,21 @@ html(lang="de") br span !{project.further_details} - div(class="Downloads" style="height:200px;") - h5 Downloads - p - i(class="fas fa-file-download") - a(href="./images/M4_LAB_Projekt/transferstrategie.pdf" download target="_blank") Transferstrategie der HfT Stuttgart + if project.pname == 'M4LAB' + div(class="Downloads" style="height:200px;") + h5 Downloads + p + i(class="fas fa-file-download") + a(href="./images/M4_LAB_Projekt/transferstrategie.pdf" download target="_blank") Transferstrategie der HfT Stuttgart - 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/bbf_logo.png" width="32%") - img(src="./images/M4_LAB_Projekt/ihs_logo.jpg" width="32%") + 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/bbf_logo.png" width="32%") + img(src="./images/M4_LAB_Projekt/ihs_logo.jpg" width="32%") //jQuery script(src="https://code.jquery.com/jquery-3.3.1.min.js") @@ -162,7 +163,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") // Header - if isUserAuthenticated - script(src="/js/headfootLogout.js") - else - script(src="/js/headfoot.js") \ No newline at end of file + 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 index 78a12ecfa73a2435d13067a944440feae19ecaaa..c2730b807aa30e4e7446275dc791777989f1c30b 100644 --- a/views/DE/project/projects.pug +++ b/views/DE/project/projects.pug @@ -111,7 +111,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") // Header - if isUserAuthenticated - script(src="/js/headfootLogout.js") - else - script(src="/js/headfoot.js") \ No newline at end of file + 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 index 12fc17a9e3cc681096f35dcc1790bf36f1db7450..e6ee7b6907023ec96a97b4e4345c72d94587491e 100644 --- a/views/DE/project/videoconferences.pug +++ b/views/DE/project/videoconferences.pug @@ -64,7 +64,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") // Header - if isUserAuthenticated - script(src="/js/headfootLogout.js") - else - script(src="/js/headfoot.js") \ No newline at end of file + script(src="/js/headfoot.js") \ No newline at end of file