Skip to content
GitLab
    • Explore Projects Groups Snippets
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
  • Project Page Project Page
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
    • Requirements
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test Cases
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Metrics
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Insights
    • Issue
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • m4lab_tv1
  • Project PageProject Page
  • Merge requests
  • !3

Testing

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Wolfgang Knopki requested to merge testing into master 5 years ago
  • Overview 0
  • Commits 24
  • Pipelines 0
  • Changes 30

get cicd started

  • Wolfgang Knopki @knopkiwg merged 5 years ago

    merged

  • Wolfgang Knopki @knopkiwg mentioned in commit 95fa0590 5 years ago

    mentioned in commit 95fa0590

  • Loading
  • Loading
  • You're only seeing other activity in the feed. To add a comment, switch to one of the following options.
Please register or sign in to reply
Compare
  • master (base)

and
  • latest version
    5fd55ca6
    24 commits, 5 years ago

30 files
+ 5859
- 0

    Preferences

    File browser
    Compare changes
con‎fig‎
ce‎rt‎
cert‎.pem‎ +34 -0
cert_i‎dp.pem‎ +1 -0
key‎.pem‎ +52 -0
conf‎ig.js‎ +70 -0
public/js/jq‎uery-ui/i18n‎
datepick‎er-de.js‎ +37 -0
rou‎tes‎
dbco‎nn.js‎ +54 -0
helpe‎rs.js‎ +11 -0
mail‎er.js‎ +31 -0
metho‎ds.js‎ +72 -0
routes-p‎roject.js‎ +358 -0
vi‎ews‎
D‎E‎
pro‎ject‎
addProjectO‎verview.pug‎ +124 -0
mailingl‎ists.pug‎ +79 -0
manageProjec‎tOverview.pug‎ +124 -0
project-sim‎plified.pug‎ +53 -0
projec‎t.html‎ +220 -0
projectOv‎erview.pug‎ +135 -0
projec‎ts.pug‎ +91 -0
projec‎ts_.pug‎ +51 -0
404‎.pug‎ +30 -0
500‎.pug‎ +31 -0
E‎N‎
pro‎ject‎
addProjectO‎verview.pug‎ +115 -0
mailingl‎ists.pug‎ +61 -0
projec‎ts.pug‎ +117 -0
404‎.pug‎ +4 -0
500‎.pug‎ +8 -0
.giti‎gnore‎ +3 -0
.gitlab‎-ci.yml‎ +23 -0
app‎.js‎ +77 -0
package-‎lock.json‎ +3745 -0
packag‎e.json‎ +48 -0
config/cert/cert.pem 0 → 100644
+ 34
- 0
  • View file @ 5fd55ca6

  • Edit in single-file editor

  • Open in Web IDE

 
-----BEGIN CERTIFICATE-----
 
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
 
uno=
 
-----END CERTIFICATE-----
config/cert/cert.pem 0 → 100644
+ 34
- 0
  • View file @ 5fd55ca6

  • Edit in single-file editor

  • Open in Web IDE

 
-----BEGIN CERTIFICATE-----
 
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
 
uno=
 
-----END CERTIFICATE-----
config/cert/cert_idp.pem 0 → 100644
+ 1
- 0
  • View file @ 5fd55ca6

  • Edit in single-file editor

  • Open in Web IDE

 
MIIEOzCCAyOgAwIBAgIJAOC0MmIzTM7fMA0GCSqGSIb3DQEBCwUAMIGzMQswCQYDVQQGEwJERTEdMBsGA1UECAwUQmFkZW4tV8ODwrxydHRlbWJlcmcxEjAQBgNVBAcMCVN0dXR0Z2FydDEWMBQGA1UECgwNSGZUIFN0dXR0Z2FydDEPMA0GA1UECwwGSVotSVRPMRcwFQYDVQQDDA4xOTMuMTk2LjUyLjIxNzEvMC0GCSqGSIb3DQEJARYgd29sZmdhbmcua25vcGtpQGhmdC1zdHV0dGdhcnQuZGUwHhcNMjAwMTA4MTA0MTUxWhcNMjUwMTA2MTA0MTUxWjCBszELMAkGA1UEBhMCREUxHTAbBgNVBAgMFEJhZGVuLVfDg8K8cnR0ZW1iZXJnMRIwEAYDVQQHDAlTdHV0dGdhcnQxFjAUBgNVBAoMDUhmVCBTdHV0dGdhcnQxDzANBgNVBAsMBklaLUlUTzEXMBUGA1UEAwwOMTkzLjE5Ni41Mi4yMTcxLzAtBgkqhkiG9w0BCQEWIHdvbGZnYW5nLmtub3BraUBoZnQtc3R1dHRnYXJ0LmRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwD4SZ+XT2HRmjGGanHLAPu792pv4GSB8Z8vwz+w7k8W4R4pWG9IH/L0ftroy/BsE/kZbbpIDXk1XbkEX4OGhYguVr5snCZZYZx0aRewrqcXPZNLeRQ7EGfencrcZgnNLMvE+QHAAl52wqNaZlpiEsBlKg21SUyb4o9kgo5clQOwk4wMrrMI+hMWEszR3ehgcyPZkS6cFEjic0dvzDgpCWkHm6TQD8x1W2xiQcOzOjZBziObuR+NmtD/1m37kjwUXLOz6YCgStf0cdoNDxdIrxKiImcqV7cBJ83NAAcIGXXlqLYgNpFVwenUjyKky2hu1N+Qzfs7fk5nDdjny+5LotQIDAQABo1AwTjAdBgNVHQ4EFgQUBiJg3KXaFUobk3xkDsueM4w7jrowHwYDVR0jBBgwFoAUBiJg3KXaFUobk3xkDsueM4w7jrowDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAONBKzgy1b5/x0ijp7wZ3i/xlAOZ2Dy702lmsuyhSuQs+1xWFKgb0LkkNziZrq+xa2vAkEoMmqnqxze3VsAT0vek3x4uOo/ejJmxneGzTKMhAF0d/oIpjgJnxwyvF2w7SQNO8ggPNnrVd17+tX3MUb46amljSQnip7vA6Xl6ur5/pUuD2OPP6EQB3ExLB9CZkWSHXR2A7N6Di6PCuLXMPsw3MwXL3tuE2lEKUDjA8WV7NDvfXkFOTzqZZUO9LJ+NLDbnQ/GlkrYQfq3B0bPNXJtVUzSkpkxl8/gogRlvQbXxi+ZOn69yqMFghRcIsw0px0ds9m8wefwypz+O4DEHnrw==
 
\ No newline at end of file
config/cert/key.pem 0 → 100644
+ 52
- 0
  • View file @ 5fd55ca6

  • Edit in single-file editor

  • Open in Web IDE

 
-----BEGIN PRIVATE KEY-----
 
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
 
ZRsv9lQ7diIpqcaPLK7OfxLqZahx
 
-----END PRIVATE KEY-----
config/config.js 0 → 100644
+ 70
- 0
  • View file @ 5fd55ca6

  • Edit in single-file editor

  • Open in Web IDE

 
module.exports = {
 
development: {
 
app: {
 
name: 'Project Page Manager',
 
port: process.env.PORT || 8888
 
},
 
passport: {
 
strategy: 'saml',
 
saml: {
 
path: process.env.SAML_PATH || '/saml/SSO',
 
entryPoint: process.env.SAML_ENTRY_POINT || 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SSOService.php',
 
issuer: 'sp-project.m4lab.hft-stuttgart.de',
 
logoutUrl: 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SingleLogoutService.php'
 
}
 
},
 
database: {
 
user: 'DBManager', // DB username
 
password: 'Stuttgart2019', // DB password
 
port: 3306, // MySQL port
 
dbUser: 'userdb', // User DB
 
host_project: 'localhost', // local
 
dbProject: 'projectDB' // Project DB
 
},
 
mailer: {
 
host: 'mail.hft-stuttgart.de', // hostname
 
secureConnection: false, // TLS requires secureConnection to be false
 
port: 587, // port for secure SMTP
 
authUser: 'ad\\support-transfer',
 
authPass: '6laumri2',
 
tlsCiphers: 'SSLv3',
 
from: 'support-transfer@hft-stuttgart.de',
 
}
 
},
 
testing: {
 
app: {
 
name: 'Project Page Manager',
 
port: process.env.PORT || 8888
 
},
 
passport: {
 
strategy: 'saml',
 
saml: {
 
path: process.env.SAML_PATH || '/saml/SSO',
 
entryPoint: process.env.SAML_ENTRY_POINT || 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SSOService.php',
 
issuer: 'sp-project-testing.m4lab.hft-stuttgart.de',
 
logoutUrl: 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SingleLogoutService.php'
 
}
 
},
 
database: {
 
host: 'transfer.hft-stuttgart.de', // DB host
 
user: 'DBManager', // DB username
 
password: 'Stuttgart2019', // DB password
 
port: 3306, // MySQL port
 
dbUser: 'userdb', // User DB
 
host_project: 'm4lab.hft-stuttgart.de', // DB host project db
 
dbProject: 'projectDB' // Project DB
 
},
 
mailer: {
 
host: 'mail.hft-stuttgart.de', // hostname
 
secureConnection: false, // TLS requires secureConnection to be false
 
port: 587, // port for secure SMTP
 
authUser: 'ad\\support-transfer',
 
authPass: '6laumri2',
 
tlsCiphers: 'SSLv3',
 
from: 'support-transfer@hft-stuttgart.de',
 
}
 
},
 
production: {
 
// to be defined
 
}
 
}
public/js/jquery-ui/i18n/datepicker-de.js 0 → 100644
+ 37
- 0
  • View file @ 5fd55ca6

  • Edit in single-file editor

  • Open in Web IDE

 
/* German initialisation for the jQuery UI date picker plugin. */
 
/* Written by Milian Wolff (mail@milianw.de). */
 
( function( factory ) {
 
if ( typeof define === "function" && define.amd ) {
 
 
// AMD. Register as an anonymous module.
 
define( [ "../widgets/datepicker" ], factory );
 
} else {
 
 
// Browser globals
 
factory( jQuery.datepicker );
 
}
 
}( function( datepicker ) {
 
 
datepicker.regional.de = {
 
closeText: "Schließen",
 
prevText: "<Zurück",
 
nextText: "Vor>",
 
currentText: "Heute",
 
monthNames: [ "Januar","Februar","März","April","Mai","Juni",
 
"Juli","August","September","Oktober","November","Dezember" ],
 
monthNamesShort: [ "Jan","Feb","Mär","Apr","Mai","Jun",
 
"Jul","Aug","Sep","Okt","Nov","Dez" ],
 
dayNames: [ "Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag" ],
 
dayNamesShort: [ "So","Mo","Di","Mi","Do","Fr","Sa" ],
 
dayNamesMin: [ "So","Mo","Di","Mi","Do","Fr","Sa" ],
 
weekHeader: "KW",
 
dateFormat: "dd.mm.yy",
 
firstDay: 1,
 
isRTL: false,
 
showMonthAfterYear: false,
 
yearSuffix: "" };
 
datepicker.setDefaults( datepicker.regional.de );
 
 
return datepicker.regional.de;
 
 
} ) );
 
\ No newline at end of file
routes/dbconn.js 0 → 100644
+ 54
- 0
  • View file @ 5fd55ca6

  • Edit in single-file editor

  • Open in Web IDE

 
const mysql = require('mysql')
 
 
var env = process.env.NODE_ENV || 'testing';
 
const config = require('../config/config')[env]
 
 
// ==== USER ACOOUNT DB CONNECTION ====
 
var userConnection = mysql.createConnection({
 
host: config.database.host,
 
user: config.database.user,
 
password: config.database.password,
 
port: config.database.port,
 
database: config.database.dbUser,
 
multipleStatements: true
 
})
 
 
userConnection.connect(function(err) {
 
if (err) throw err;
 
})
 
userConnection.query('USE '+config.database.dbUser)
 
 
// user db connection test
 
userConnection.query('SELECT 1 + 5 AS solution', function (err, rows, fields) {
 
if (err) throw err
 
console.log('Solution = ', rows[0].solution)
 
})
 
//userConnection.end()
 
 
// ==== PROJECT DB CONNECTION ====
 
var projectConnection = mysql.createConnection({
 
host: config.database.host_project,
 
user: config.database.user,
 
password: config.database.password,
 
port: config.database.port,
 
database: config.database.dbProject
 
})
 
 
projectConnection.connect(function(err) {
 
if (err) throw err;
 
})
 
projectConnection.query('USE '+config.database.dbProject)
 
 
// projectdb connection test
 
projectConnection.query('SELECT 10 + 5 AS project', function (err, rows, fields) {
 
if (err) throw err
 
console.log('Project = ', rows[0].project)
 
})
 
//projectConnection.end()
 
 
var connection = {
 
user: userConnection,
 
project: projectConnection
 
}
 
 
module.exports = connection
 
\ No newline at end of file
routes/helpers.js 0 → 100644
+ 11
- 0
  • View file @ 5fd55ca6

  • Edit in single-file editor

  • Open in Web IDE

 
var helpers = {
 
stringToArray: function (input){
 
if(input != null){
 
return input.split(',');
 
}else{
 
return null;
 
}
 
}
 
};
 
 
module.exports = helpers;
 
\ No newline at end of file
routes/mailer.js 0 → 100644
+ 31
- 0
  • View file @ 5fd55ca6

  • Edit in single-file editor

  • Open in Web IDE

 
const nodemailer = require('nodemailer')
 
 
var env = process.env.NODE_ENV || 'testing';
 
const config = require('../config/config')[env]
 
 
var smtpTransport = nodemailer.createTransport({
 
host: config.mailer.host,
 
secureConnection: config.mailer.secureConnection,
 
port: config.mailer.port,
 
auth: {
 
user: config.mailer.authUser,
 
pass: config.mailer.authPass
 
},
 
tls: {
 
ciphers: config.mailer.tlsCiphers
 
}
 
});
 
 
var mailOptions = {
 
to: "",
 
from: config.mailer.from,
 
subject: "",
 
text: ""
 
};
 
 
var mailer = {
 
transport: smtpTransport,
 
options: mailOptions
 
}
 
 
module.exports = mailer
 
\ No newline at end of file
routes/methods.js 0 → 100644
+ 72
- 0
  • View file @ 5fd55ca6

  • Edit in single-file editor

  • Open in Web IDE

 
const dbconn = require('./dbconn');
 
 
var methods = {
 
// test method
 
currentDate: function() {
 
console.log('Current Date is: ' + new Date().toISOString().slice(0, 10));
 
},
 
// ===================== user db =====================
 
getUserIdByEmail: function(email, callback) {
 
var userId
 
dbconn.user.query('SELECT id FROM user WHERE email = "' +email+'"', function (err, rows, fields) {
 
if (err) {
 
throw err;
 
}
 
else {
 
if ( rows.length > 0) {
 
userId = rows[0].id;
 
}
 
}
 
callback(userId, err);
 
});
 
},
 
/*
 
getUserProjectRole: function(userId, callback) {
 
dbconn.user.query('SELECT project_id, role_id FROM user_project_role WHERE user_id = "' +userId+'"', function (err, rows, fields) {
 
if (err) throw err;
 
callback(rows, err);
 
});
 
},
 
*/
 
addUserProjectRole: function(data, callback) {
 
dbconn.user.query('INSERT INTO user_project_role SET ?', data, function (err, results, fields){
 
if (err) throw err;
 
callback(err);
 
})
 
},
 
// ======================= project db =======================
 
getAllProjects: function(callback) {
 
dbconn.project.query('CALL getAllprojects', function (err, rows, fields){
 
if (err) throw err;
 
callback(rows[0], err);
 
})
 
},
 
getAllMailinglists: function(callback) {
 
dbconn.project.query('CALL getAllLists', function (err, rows, fields){
 
if (err) throw err;
 
callback(rows[0], err);
 
})
 
},
 
getProjectOverviewById: function(projectId, callback) {
 
dbconn.project.query('CALL GetProjectInformationByProjectID(' + projectId+ ')', function (err, rows, fields){
 
if (err) throw err;
 
callback(rows[0], err);
 
})
 
},
 
getProjectImagesById: function(projectId, callback) {
 
dbconn.project.query('CALL getImagesByProjectID(' + projectId+ ')', function (err, rows, fields){
 
if (err) throw err;
 
callback(rows[0], err);
 
})
 
},
 
addProjectOverview: function(data, callback) {
 
dbconn.project.query('INSERT INTO project_overview SET ?', data, function (err, results, fields){
 
if (err) {
 
console.error(err);
 
}
 
callback(results, err);
 
})
 
}
 
};
 
 
module.exports = methods;
 
\ No newline at end of file
routes/routes-project.js 0 → 100644
+ 358
- 0
  • View file @ 5fd55ca6

  • Edit in single-file editor

  • Open in Web IDE

 
const fs = require('fs')
 
const SamlStrategy = require('passport-saml').Strategy
 
const dbconn = require('./dbconn')
 
const methods = require('./methods')
 
// pwd encryption
 
//const bcrypt = require('bcryptjs');
 
//const saltRounds = 10;
 
//const salt = 64; // salt length
 
// forgot pwd
 
const async = require('async')
 
//const crypto = require('crypto')
 
//const mailer = require('./mailer')
 
 
const helpers = require('./helpers')
 
const pictSizeLimit = 1000000 // 1 MB
 
 
module.exports = function (app) {
 
 
// ======== APP ROUTES - PROJECT ====================
 
var lang = 'DE'
 
 
app.get('/mailinglists', function (req, res) {
 
async.waterfall([
 
function(done) {
 
methods.getAllMailinglists(function(mailinglistOverview, err) {
 
if (!err) {
 
done(err, mailinglistOverview)
 
}
 
})
 
},
 
// create JSON object of mailinglists for front-end
 
function(mailinglistOverview, done) {
 
var allMailingLists = [] // JSON object
 
for (let i = 0; i < mailinglistOverview.length; i++) {
 
// add data to JSON object
 
allMailingLists.push({
 
id: mailinglistOverview[i].id,
 
name: mailinglistOverview[i].name,
 
src: mailinglistOverview[i].src,
 
projectstatus: mailinglistOverview[i].projectstatus,
 
project_title: mailinglistOverview[i].project_title,
 
keywords: mailinglistOverview[i].keywords
 
});
 
}
 
 
res.render(lang+'/project/mailinglists', {
 
isUserAuthenticated: req.isAuthenticated(),
 
user: req.user,
 
mailinglists: allMailingLists
 
});
 
}
 
])
 
})
 
 
app.get('/project_', function (req, res) {
 
async.waterfall([
 
// get all projects from projectdb
 
function(done) {
 
methods.getAllProjects(function(projectsOverview, err) {
 
if (!err) {
 
done(err, projectsOverview)
 
}
 
})
 
},
 
// create JSON object for front-end
 
function(projectsOverview, done) {
 
var activeProjects = []
 
var nonActiveProjects = []
 
 
for (var i = 0; i < projectsOverview.length; i++) {
 
var project = {
 
id: projectsOverview[i].id,
 
logo: projectsOverview[i].logo,
 
akronym: projectsOverview[i].pname,
 
title: projectsOverview[i].title,
 
summary: projectsOverview[i].onelinesummary,
 
category: projectsOverview[i].category,
 
cp: projectsOverview[i].contact_email,
 
gitlab: projectsOverview[i].gitlab
 
}
 
if (projectsOverview[i].projectstatus == 0) {
 
nonActiveProjects.push(project)
 
}
 
else if (projectsOverview[i].projectstatus == 1) {
 
activeProjects.push(project)
 
}
 
}
 
 
// render the page
 
if (req.isAuthenticated()) {
 
res.render(lang+'/project/projects', {
 
isUserAuthenticated: true,
 
nonActive: nonActiveProjects,
 
active: activeProjects
 
});
 
}
 
else {
 
res.render(lang+'/project/projects', {
 
isUserAuthenticated: false,
 
nonActive: nonActiveProjects,
 
active: activeProjects
 
});
 
}
 
}
 
])
 
})
 
 
app.get('/', function (req, res) {
 
res.render(lang+'/project/project-simplified', {
 
isUserAuthenticated: req.isAuthenticated(),
 
user: req.user
 
});
 
})
 
 
app.get('/addprojectoverview', function (req, res) {
 
if (req.isAuthenticated()) {
 
res.render(lang+'/project/addProjectOverview')
 
}
 
else {
 
res.redirect('/login')
 
}
 
})
 
 
app.post('/addprojectoverview__', function (req, res) {
 
if (req.isAuthenticated()) {
 
var wiki = 0
 
if (req.body.wiki)
 
wiki = 1
 
 
var projectTerm = req.body.termForm + " - " + req.body.termTo
 
var projectOverviewData = {
 
pname: req.body.pname,
 
title: req.body.title,
 
onelinesummary: req.body.summary,
 
category: req.body.category,
 
logo: req.body.logo,
 
gitlab: req.body.gitlabURL,
 
wiki: wiki,
 
overview: req.body.overview,
 
question: req.body.question,
 
approach: req.body.approach,
 
result: req.body.result,
 
keywords: req.body.keywords,
 
announcement: req.body.announcement,
 
term: projectTerm,
 
further_details: req.body.furtherDetails,
 
website: req.body.website,
 
src: req.body.src,
 
caption: req.body.caption,
 
contact_lastname: req.body.contactName,
 
contact_email: req.body.contactEmail,
 
leader_lastname: req.body.leaderName,
 
leader_email: req.body.leaderEmail
 
}
 
 
methods.addProjectOverview(projectOverviewData, function(err){
 
if (err) {
 
//req.flash('error', "Failed")
 
req.flash('error', "Fehlgeschlagen")
 
res.redirect('/addProjectOverview');
 
}
 
else {
 
req.flash('success', 'Your project has been created.')
 
res.redirect('/project');
 
}
 
})
 
}
 
})
 
 
app.post('/addprojectoverview', function (req, res) {
 
if (req.isAuthenticated()) {
 
var wiki = 0
 
if (req.body.wiki)
 
wiki = 1
 
 
var projectLogo = req.files.logo
 
var projectPicture = req.files.src
 
var projectLogoPath, projectPicturePath
 
 
if (projectLogo) {
 
// raise error if size limit is exceeded
 
if (projectLogo.size === pictSizeLimit) {
 
req.flash('error', 'Projektlogo exceeds 1 MB');
 
res.redirect('/addprojectoverview');
 
}
 
else {
 
// TEST PATH FOR DEVELOPMENT (LOCALHOST)
 
projectLogoPath = './folder-in-server-to-save-projektlogo/'+req.body.pname+'/'+projectLogo.name
 
// PATH FOR TEST/LIVE SERVER
 
// var projectLogoPath = to-be-defined
 
}
 
}
 
if (projectPicture) {
 
// raise error if size limit is exceeded
 
if (projectPicture.size === pictSizeLimit) {
 
req.flash('error', 'Projektbild exceeds 1 MB');
 
res.redirect('/addprojectoverview');
 
}
 
else {
 
// TEST PATH FOR DEVELOPMENT (LOCALHOST)
 
projectPicturePath = './folder-in-server-to-save-projektbild/'+req.body.pname+'/'+projectPicture.name
 
// PATH FOR TEST/LIVE SERVER
 
// var projectPicturePath = to-be-defined
 
}
 
 
}
 
 
var projectTerm = req.body.termForm + " - " + req.body.termTo
 
var projectOverviewData = {
 
pname: req.body.pname,
 
title: req.body.title,
 
onelinesummary: req.body.summary,
 
category: req.body.category,
 
logo: projectLogoPath,
 
gitlab: req.body.gitlabURL,
 
wiki: wiki,
 
overview: req.body.overview,
 
question: req.body.question,
 
approach: req.body.approach,
 
result: req.body.result,
 
keywords: req.body.keywords,
 
announcement: req.body.announcement,
 
term: projectTerm,
 
further_details: req.body.furtherDetails,
 
website: req.body.website,
 
src: projectPicturePath,
 
caption: req.body.caption,
 
contact_lastname: req.body.contactName,
 
contact_email: req.body.contactEmail,
 
leader_lastname: req.body.leaderName,
 
leader_email: req.body.leaderEmail
 
}
 
 
// save pictures
 
if (projectLogo) {
 
projectLogo.mv(projectLogoPath, function(err) {
 
if (err) {
 
console.error(err)
 
res.status(500).render(lang+'/500', {
 
error: err
 
})
 
}
 
});
 
}
 
if (projectPicture) {
 
projectPicture.mv(projectPicturePath, function(err) {
 
if (err) {
 
console.error(err)
 
res.status(500).render(lang+'/500', {
 
error: err
 
})
 
}
 
});
 
}
 
 
/* RS: Temporary solution while Project DB is still in early phase.
 
When User DB and Project DB are integrated and quite stabil, this operation should be done in 1 transaction.
 
*/
 
var userId // todo: make this global variable?
 
async.waterfall([
 
// get userId by email from userdb
 
function(done) {
 
methods.getUserIdByEmail(req.user.email, function(id, err) {
 
if (!err) {
 
userId = id
 
done(err)
 
}
 
})
 
},
 
// add project overview
 
function(done) {
 
methods.addProjectOverview(projectOverviewData, function(data, err){
 
if (err) {
 
res.status(500).render(lang+'/500', {
 
error: err
 
})
 
}
 
else {
 
done(err, data.insertId)
 
}
 
})
 
},
 
// assign the created overview to logged-in user
 
function(projectOverviewId, done) {
 
var userProjectRoleData = {
 
project_id: projectOverviewId,
 
user_id: userId,
 
role_id: 3 // OVERVIEW_CREATOR
 
}
 
methods.addUserProjectRole(userProjectRoleData, function(userProjects, err) {
 
if (err) {
 
//req.flash('error', "Failed")
 
req.flash('error', "Fehlgeschlagen")
 
res.redirect('/addProjectOverview');
 
}
 
else {
 
req.flash('success', 'Your project has been created.')
 
res.redirect('/project');
 
}
 
})
 
}
 
])
 
}
 
})
 
 
app.get('/updateprojectoverview', function (req, res) {
 
// only their own project
 
})
 
 
app.post('/updateprojectoverview', function (req, res) {
 
// only their own project
 
})
 
 
app.get('/projectoverview', function(req, res){
 
async.waterfall([
 
function(done) {
 
methods.getProjectOverviewById(req.query.projectID, function(projectOverview, err) {
 
if (!err) {
 
done(err, projectOverview)
 
}
 
})
 
},
 
function(projectOverview,done){
 
methods.getProjectImagesById(req.query.projectID, function(projectImages, err) {
 
if (!err) {
 
done(err, projectImages, projectOverview)
 
}
 
})
 
},
 
// render projectOverview page
 
function(projectImages, projectOverview, done) {
 
console.log(projectImages)
 
partnerWebsites = helpers.stringToArray(projectOverview[0].partner_website)
 
partnerNames = helpers.stringToArray(projectOverview[0].partner_name)
 
awardSites = helpers.stringToArray(projectOverview[0].award_website)
 
awardNames = helpers.stringToArray(projectOverview[0].award_name)
 
sponsorWebsites = helpers.stringToArray(projectOverview[0].sponsor_website)
 
sponsorImgs = helpers.stringToArray(projectOverview[0].sponsor_img)
 
sponsorNames = helpers.stringToArray(projectOverview[0].sponsor_name)
 
 
res.render(lang+'/project/projectOverview', {
 
isUserAuthenticated: req.isAuthenticated(),
 
user: req.user,
 
projectOV: projectOverview,
 
projectImgs: projectImages,
 
partnerWS: partnerWebsites,
 
partnerN: partnerNames,
 
awardWS: awardSites,
 
awardN: awardNames,
 
sponsorWS: sponsorWebsites,
 
sponsorIMG: sponsorImgs,
 
sponsorN: sponsorNames
 
});
 
}
 
])
 
})
 
 
};
 
\ No newline at end of file
views/DE/project/addProjectOverview.pug 0 → 100644
+ 124
- 0
  • View file @ 5fd55ca6

  • Edit in single-file editor

  • Open in Web IDE

 
doctype html
 
html(lang="de")
 
head
 
title= "Add Project Overview"
 
meta(charset="UTF-8")
 
meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
 
link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.min.css")
 
link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/m4lab.css")
 
link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
 
// jQuery UI - Datepicker
 
link(rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css")
 
style.
 
.warning {
 
color: red;
 
font-size: 11px;
 
}
 
body
 
div(class="container-fluid")
 
div(class="row")
 
div(class="col-md-6 offset-md-2")
 
h4(class="mb-3 font-weight-bold") Neues Projekt
 
div(class="col-md-6 offset-md-3")
 
if errors
 
for error, i in errors
 
div.alert.alert-danger.alert-dismissible.fade.show #{ error }
 
a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
 
form(method="POST" encType="multipart/form-data")
 
div(class='form-row')
 
div(class='form-group col-md-12')
 
input#inputPname(name="title" class="form-control" type="text" placeholder="Projekttitel*" required)
 
div(class="form-group col-md-12")
 
input#inputTitle(name="pname" class="form-control" type="text" placeholder="Akronym*" required)
 
div(class="form-group col-md-12")
 
input#inputSummary(name="summary" class="form-control" type="text" placeholder="Kurzbeschreibung")
 
div(class='form-group col-md-12')
 
select#inputCategory(name="category", class="form-control")
 
option(value="") - Projektkategorie -
 
option(value="Experten-Gruppe") Experten-Gruppe
 
option(value="Student-Projekt") Student-Projekt
 
option(value="Lehr Projekt") Lehr Projekt
 
option(value="Transfer-projekt") Transfer-projekt
 
div(class="form-group col-md-12")
 
div(class='form-group row')
 
label(for="projectLogo" class="col-sm-3 col-form-label") Projektlogo (max. 1 MB)
 
div(class="col-md-9")
 
input#inputLogo(name="logo" class="form-control" type="file")
 
div(class="form-group col-md-12")
 
div(class="input-group mb-3")
 
input#inputGitlabURL(name="gitlabURL" type="text" class="form-control" placeholder="M4_LAB GitLab Project URL, z.B. https://transfer.hft-stuttgart.de/gitlab/username/projectname")
 
div(class="input-group-prepend")
 
div(class="input-group-text")
 
input#inputWiki(name="wiki" type="checkbox")
 
| &nbsp; Wiki
 
 
h5(class="mb-3 font-weight-bold") Inhalte
 
div(class='form-row')
 
div(class='form-group col-md-12')
 
textarea#inputOverview(name="overview" class="form-control" type="text" rows="5" placeholder="Projektüberblick")
 
div(class="form-group col-md-12")
 
textarea#inputQuestion(name="question" class="form-control" type="text" rows="5" placeholder="Fragestellung")
 
div(class='form-group col-md-12')
 
textarea#inputApproach(name="approach" class="form-control" type="text" rows="5" placeholder="Vorgehensweise")
 
div(class="form-group col-md-12")
 
textarea#inputResult(name="result" class="form-control" type="text" rows="5" placeholder="Ergebnis und Nutzung")
 
div(class="form-group col-md-12")
 
input#inputKeywords(name="keywords" class="form-control" type="text" placeholder="keywords")
 
h5(class="mb-3 font-weight-bold") Projektinformationen
 
div(class='form-row')
 
div(class='form-group col-md-12')
 
input#inputAnnouncement(name="announcement" class="form-control" type="text" rows="5" placeholder="Ausschreibung")
 
div(class="form-group col-md-12")
 
div(class='form-group row')
 
label(for="projectLogo" class="col-sm-2 col-form-label") Laufzeit
 
div(class="col-md-5")
 
input#inputTermFrom(name="termForm" class="form-control" type="text" placeholder="von (dd.mm.yyyy)")
 
div(class="col-md-5")
 
input#inputTermTo(name="termTo" class="form-control" type="text" placeholder="bis (dd.mm.yyyy)")
 
div(class='form-group col-md-12')
 
textarea#inputFurtherDetails(name="furtherDetails" class="form-control" type="text" rows="5" placeholder="Weitere Informationen (bspw. Links zu Berichten)")
 
div(class="form-group col-md-12")
 
input#inputWebsite(name="website" class="form-control" type="text" placeholder="Projekt-Website")
 
h5(class="mb-3 font-weight-bold") Bilder
 
div(class='form-row')
 
div(class="form-group col-md-12")
 
div(class='form-group row')
 
label(for="projectPicture" class="col-sm-3 col-form-label") Projektbild (max. 1 MB)
 
div(class="col-md-9")
 
input#inputSrc(name="src" class="form-control" type="file")
 
div(class="form-group col-md-12")
 
input#inputCaption(name="caption" class="form-control" type="text" placeholder="Bildunterschrift/Bildquelle")
 
h5(class="mb-3 font-weight-bold") Kontakt
 
div(class='form-row')
 
div(class="form-group col-md-2")
 
<p class="font-weight-normal">Ansprechperson</p>
 
div(class="form-group col-md-5")
 
input#inputContactName(name="contactName" class="form-control" type="text" placeholder="Anrede, Titel, Vorname, Nachname")
 
div(class="form-group col-md-5")
 
input#inputContactEmail(name="contactEmail" class="form-control" type="email" placeholder="E-Mail-Adresse")
 
div(class="form-group col-md-2")
 
<p class="font-weight-normal">Projektleitung</p>
 
div(class="form-group col-md-5")
 
input#inputLeaderName(name="leaderName" class="form-control" type="text" placeholder="Anrede, Titel, Vorname, Nachname")
 
div(class="form-group col-md-5")
 
input#inputLeaderEmail(name="leaderEmail" class="form-control" type="email" placeholder="E-Mail-Adresse")
 
p <em><small>* Pflichtfeld</small></em>
 
input#submitBtn(type="submit", class="btn btn-outline-dark btn-block", value="Projekt Anlegen")
 
 
// jQuery
 
script(src="https://code.jquery.com/jquery-3.3.1.min.js")
 
script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
 
// jQuery UI - Datepicker
 
script(src="https://code.jquery.com/ui/1.12.1/jquery-ui.js")
 
script(src="/js/jquery-ui/i18n/datepicker-de.js")
 
//script(src="i18n/datepicker-de.js")
 
// Bootstrap
 
script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
 
// Header
 
script(src="https://transfer.hft-stuttgart.de/js/headfoot.js")
 
script.
 
$( function() {
 
$.datepicker.setDefaults( $.datepicker.regional["de"] );
 
$("#inputTermFrom").datepicker();
 
$("#inputTermTo").datepicker();
 
});
 
\ No newline at end of file
views/DE/project/mailinglists.pug 0 → 100644
+ 79
- 0
  • View file @ 5fd55ca6

  • Edit in single-file editor

  • Open in Web IDE

 
html(lang="de")
 
head
 
title= "Mailinglisten"
 
meta(charset="UTF-8")
 
meta(name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no")
 
link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
 
link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
 
link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
 
link(rel="stylesheet" href="/fonts/ionicons.min.css")
 
link(rel="stylesheet" href="/css/Testimonials.css")
 
body
 
div(class="container")
 
div(class="row")
 
div(class="col-md-12" style="margin-bottom: 40px;")
 
img(class="mx-auto" src="/img/Mailinglisten.jpg" width="100%")
 
div(class="container")
 
div(class="row")
 
div(class="col-md-12" style="margin-bottom: 30px;")
 
h4(class="text-center") Durch Mailinglisten können Sie interessierten Personen<br/> <strong>regelmäßig Informationen</strong> zu Ihrem Projekt oder Thema zukommen lassen.<br/> Ebenso können Sie über ein Abonnement in einer Mailingliste Mitglied des Verteilers<br/>werden und so <strong>im Austausch</strong> bleiben. <br/>
 
div(class="col-md-12" style="margin-bottom: 30px;")
 
h2(class="text-center" style="color: #708090;") <strong>Aktive Mailinglisten</strong>
 
div(class="table-responsive table-borderless")
 
table(class="table table-striped table-bordered table-hover")
 
thead()
 
tr()
 
th Name
 
th Zum Abonnement der Mailingliste
 
th Zum zugehörigen Projekt
 
th Keywords
 
tbody()
 
for item in mailinglists
 
if item.projectstatus == '1'
 
tr
 
td #{item.name}
 
td <a href="#{item.src}">#{item.src}</a>
 
td <a href='projectoverview?projectID=#{item.id}'>#{item.project_title}</a>
 
td #{item.keywords}
 
div(id="aboText" style="background-color: #dadada;margin-top: 40px;")
 
div(class="container")
 
div(class="row" style="margin-bottom: 0;padding-top: 20px;padding-bottom: 20px;")
 
div(class="col-lg-12" style="background-color: #ffffff;")
 
h2(class="text-center" style="color: #708090;margin-top: 15px;") <strong> Mailingliste abonnieren </strong>
 
div(class="col-md-4 col-lg-6" style="background-color: #ffffff;")
 
p() Das Deutsche Forschungsnetz (DFN) bietet Mailinglisten für Wissenschaft und Forschung an. Mailinglisten sind E-Mail-Verteilerlisten, d.h. Personen, die sich für Ihr Forschungsthema interessieren, können sich über das DFN registrieren und erhalten im Anschluss daran regelmäßig die über die Mailinglisten geteilten Informationen.
 
p() Sie als Verteiler senden die zu versendende Mail folglich nur noch an die festgelegte Mailinglistenadresse und das Programm leitet die Nachricht an alle registrierten Personen weiter.
 
div(class="col-md-4 col-lg-6 justify-content-between flex-wrap" style="background-color: #ffffff;")
 
div(class="justify-content-between order-2" style="background-color: rgba(255,255,255,0);")
 
p(class="text-left d-flex d-md-flex flex-row flex-grow-1 flex-shrink-1 flex-fill justify-content-between align-items-start align-content-start align-self-start flex-wrap order-1 justify-content-md-center align-items-md-start justify-content-lg-start") Oben finden Sie eine Übersicht über die aktiven Mailinglisten. Wenn Sie sich in eine Mailingliste eintragen wollen, dann klicken Sie auf den entsprechend hinterlegten Link.
 
p() Es öffnet sich daraufhin die Hauptseite der Liste. Nach der Auswahl des Buttons "Abonnieren", können Sie Ihre Mailadresse hinterlegen und sich in die Liste eintragen.
 
a(class="btn btn-primary text-center d-inline-flex d-lg-flex flex-column flex-grow-1 flex-shrink-1 flex-fill justify-content-between align-items-baseline align-content-center align-self-baseline flex-wrap order-3 justify-content-md-center align-items-md-end align-items-lg-center justify-content-xl-center mx-auto" role="button" style="background-color: #E0001B; margin-top:10px; margin-bottom:10px;" href="/downloads/Handout_Mailinglisten_Abonnieren.pdf") <strong>Erste Schritte (Anleitung als PDF)</strong>
 
a(class="btn btn-primary text-center d-inline-flex d-lg-flex flex-column flex-grow-1 flex-shrink-1 flex-fill justify-content-between align-items-baseline align-content-center align-self-baseline flex-wrap mb-auto justify-content-md-center align-items-md-end align-items-lg-center justify-content-xl-center mx-auto" role="button" style="background-color: #E0001B;" href="https://www.listserv.dfn.de/sympa/help") <strong>Weitergehende Dokumentation bei DFN (externer Link)</strong>
 
 
div(id="newListText" style="background-color: #dadada;margin-top: 0px;")
 
div(class="container")
 
div(class="row" style="margin-bottom: 0;padding-top: 20px;padding-bottom: 20px;")
 
div(class="col-lg-12" style="background-color: #ffffff;")
 
h2(class="text-center" style="color: #708090;margin-top: 15px;") <strong>Neue Mailingliste erstellen</strong>
 
div(class="col-md-4 col-lg-6" style="background-color: #ffffff;")
 
p() Über das Transferportal können Sie selbst eine Liste zu Ihrem Projekt anlegen, um mit Ihren Partnern in Verbindung zu bleiben.
 
p() Folgen Sie hierzu der Anleitung des DFN.
 
 
div(class="col-md-4 col-lg-6 justify-content-between flex-wrap" style="background-color: #ffffff;")
 
a(class="btn btn-primary text-center d-inline-flex d-lg-flex flex-column flex-grow-1 flex-shrink-1 flex-fill justify-content-between align-items-baseline align-content-center align-self-baseline flex-wrap order-3 justify-content-md-center align-items-md-end align-items-lg-center justify-content-xl-center mx-auto" role="button" style="background-color: #E0001B; margin-top:10px; margin-top:10px;" href="/downloads/Handout_Mailinglisten_Erstellen.pdf") <strong>Erste Schritte (Anleitung als PDF)</strong>
 
a(class="btn btn-primary text-center d-inline-flex d-lg-flex flex-column flex-grow-1 flex-shrink-1 flex-fill justify-content-between align-items-baseline align-content-center align-self-baseline flex-wrap order-3 justify-content-md-center align-items-md-end align-items-lg-center justify-content-xl-center mx-auto" role="button" style="background-color: #E0001B; margin-top:10px; margin-top:10px;" href="https://www.listserv.dfn.de/sympa/help/admin") <strong>Gesamtes Tutorial bei DFN (externer Link)</strong>
 
 
div(id="addListText" style="background-color: #dadada;margin-top: 0px;")
 
div(class="container")
 
div(class="row" style="margin-bottom: 0;padding-top: 20px;padding-bottom: 20px;")
 
div(class="col-lg-12" style="background-color: #ffffff;")
 
h2(class="text-center" style="color: #708090;margin-top: 15px;") <strong>Neue Mailingliste eintragen</strong>
 
div(class="col-xl" style="background-color: #ffffff;")
 
p() Um Ihre beim DFN angelegte Mailingliste hier aufzunehmen, schicken Sie uns bitte eine Email an <a href="mailto:support-transfer@hft-stuttgart.de">support-transfer@hft-stuttgart.de</a>
 
// jQuery
 
script(src="https://code.jquery.com/jquery-3.3.1.min.js")
 
script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
 
// Bootstrap
 
script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
 
// Header
 
script(src="/js/headfoot.js")
 
\ No newline at end of file
Assignee
Wolfgang Knopki's avatar
Wolfgang Knopki
Assign to
0 Reviewers
None
Request review from
Labels
0
None
0
None
    Assign labels
  • Manage project labels

Milestone
No milestone
None
None
Time tracking
No estimate or time spent
Lock merge request
Unlocked
1
1 participant
Wolfgang Knopki
Reference: m4lab_tv1/project-page!3
Source branch: testing

Menu

Explore Projects Groups Snippets

Dies ist die Gitlab-Instanz des Transferportals der Hochschule für Technik Stuttgart. Hier geht es zurück zum Portal