commit 7a74507b9df5c5adbfc1cc670a0bd02cb075f9c8 Author: Nils Gerstner Date: Fri Aug 18 15:27:32 2017 +0200 Nils Playground diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8f51a4a --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +.idea/* +target/* +<<<<<<< HEAD +======= +*.war +>>>>>>> 21f7771889fbd331d8067aeaacba276c2ab841e7 +target/RotanaReg.war +com.rotanareg.skolan.iml diff --git a/README.md b/README.md new file mode 100644 index 0000000..beaaedf --- /dev/null +++ b/README.md @@ -0,0 +1,27 @@ +# README + +Project Java EE Kurs + +## Hemsida för kursverksamhet + +Bygga en hemsida där man kan lägga upp kurser registrera lärare och elever. Föra närvaro per lektionstillfälle. Varje användare kommer ha en login med rättigheter enligt nedan + +Elev ska kunna: + +- Registrera sig till en eller flera kurser +- Avregistrera sig till en kurs +- Se sin närvaro statistik + +Lärare ska kunna: + +- Se de kurser de håller inklusive elever +- Kunna föra närvaro för de kurser de håller +- Se närvaro statisk för de kurser de håller + +Administrator ska kunna + +- Registrera lärare och elever +- Lägga till kurser och ansluta lärare och elever +- Se närvaro statistik per kurs/elev .. +- Få daglig statistik på närvaro för alla kurser +- Ska kunna med JMS ”standalone” på närvaro \ No newline at end of file diff --git a/docs/20170818_mötet_fredag.jpg b/docs/20170818_mötet_fredag.jpg new file mode 100644 index 0000000..6d52725 Binary files /dev/null and b/docs/20170818_mötet_fredag.jpg differ diff --git a/docs/Rotana-prototyp.pdf b/docs/Rotana-prototyp.pdf new file mode 100644 index 0000000..8a580d5 Binary files /dev/null and b/docs/Rotana-prototyp.pdf differ diff --git a/docs/gitsetup.pdf b/docs/gitsetup.pdf new file mode 100644 index 0000000..b22a4d0 Binary files /dev/null and b/docs/gitsetup.pdf differ diff --git a/docs/gitworkflow.pdf b/docs/gitworkflow.pdf new file mode 100644 index 0000000..a57fc4d Binary files /dev/null and b/docs/gitworkflow.pdf differ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..6c35d5f --- /dev/null +++ b/pom.xml @@ -0,0 +1,58 @@ + + + + 4.0.0 + javaEE.x + com.rotanareg.skolan + war + RotanaReg + 1.1.0-SNAPSHOT + + + UTF-8 + + + RotanaReg + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 1.8 + 1.8 + + + + + + + + + + + javax + javaee-api + 7.0 + + + + org.primefaces + primefaces + 6.1 + + + + org.eclipse.persistence + org.eclipse.persistence.jpa + 2.6.4 + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/rotanareg/skolan/Role.java b/src/main/java/com/rotanareg/skolan/Role.java new file mode 100644 index 0000000..070e1ae --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/Role.java @@ -0,0 +1,22 @@ +package com.rotanareg.skolan; + +/** + * Created by Marko K. Seppänen. + */ +public enum Role { + STUDENT, TEACHER, ADMIN; + + @Override + public String toString() { + switch (this) { + case STUDENT: + return "Student"; + case TEACHER: + return "Teacher"; + case ADMIN: + return "Admin"; + } + + return "--not defined--"; // should never happen + } +} diff --git a/src/main/java/com/rotanareg/skolan/course/Course.java b/src/main/java/com/rotanareg/skolan/course/Course.java new file mode 100644 index 0000000..8b1f8f9 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/course/Course.java @@ -0,0 +1,28 @@ +package com.rotanareg.skolan.course; +import java.io.Serializable; + +public final class Course implements Serializable { + + private static final long serialVersionUID = 1L; + + private final long id; + private final String name; + private final String description; + +public Course (long id, String name, String description){ + this.id = id; + this.name = name; + this.description = description; +} + public long getId() { + return id; + } + + public String getName() { + return name; + } + + public String getDescription() { + return description; + } +} diff --git a/src/main/java/com/rotanareg/skolan/course/CourseDetails.java b/src/main/java/com/rotanareg/skolan/course/CourseDetails.java new file mode 100644 index 0000000..17b1146 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/course/CourseDetails.java @@ -0,0 +1,35 @@ +package com.rotanareg.skolan.course; + +import javax.faces.view.ViewScoped; +import javax.inject.Inject; +import javax.inject.Named; +import java.io.Serializable; + +@Named +@ViewScoped +public class CourseDetails implements Serializable{ + private static final long serialVersionUID = 1L; + + @Inject + private CourseService courseService; + + private long courseId; + + private Course course; + + public long getCourseId() { + return courseId; + } + + public void setCourseId(long courseId) { + this.courseId = courseId; + } + + public void onload() { + course = courseService.getCourse(courseId); + } + + //public course getCourse() { + // return course; + //} +} \ No newline at end of file diff --git a/src/main/java/com/rotanareg/skolan/course/CourseService.java b/src/main/java/com/rotanareg/skolan/course/CourseService.java new file mode 100644 index 0000000..7e0ed37 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/course/CourseService.java @@ -0,0 +1,7 @@ +package com.rotanareg.skolan.course; +import java.util.List; + +public interface CourseService { + List getMostStudiedCourses (); + Course getCourse (long id); +} diff --git a/src/main/java/com/rotanareg/skolan/course/CourseServiceImpl.java b/src/main/java/com/rotanareg/skolan/course/CourseServiceImpl.java new file mode 100644 index 0000000..15f2595 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/course/CourseServiceImpl.java @@ -0,0 +1,36 @@ +package com.rotanareg.skolan.course; + +import javax.enterprise.context.ApplicationScoped; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@ApplicationScoped +public class CourseServiceImpl implements CourseService { + + private final Map courses; + + private final List mostStudiedCourses; + + public CourseServiceImpl (){ + Map map = new HashMap<>(); + map.put(1L, new Course(1L,"Design och konstruktion av grafiska gränssnitt","Kursen innehåller en genomgång av standardklasserna i ett välutvecklat grafiskt bibliotek, en översikt över vilka riktlinjer som krävs för att skapa lättanvända gränssnitt samt metoder för att iterativt utveckla och förbättra ett gränssnitt. Kursen ger praktisk erfarenhet i implementering samt användbarhet genom ett grupprojekt som ger en fördjupning av delmomentet kring grafiska komponenter från kursen Objektorienterad programvaruutveckling. Projektets mål är att utveckla en applikation för en specifik användargrupp och att genom att låta dessa testa programmet iterativt förbättra det.")); + map.put(2L, new Course(2L," Objektorienterad programmering","Grundläggande begrepp i objektorienterad programutveckling. Vad som skiljer det objektorienterade synsättet från andra synsätt.I kursen används programspråket Java. Momenten så som objekt och klass, datainkapsling,konstruktorer, metoder, instansvariabler, klassvariabler behandals men även modularisering av program, användning av dokumentation för standardbibliotek, användning av standardklasser för datasamlingar samt kodningsstandard, namnsättning och kommentering. Testning av program också ingår i kursen och det behandlas även arv, dynamisk bindning och polymorfism, abstrakta klasser och gränssnitt, grafiska användargränssnitt, händelser och lyssnare.")); + map.put(3L, new Course(3L,"Datastrukturer","Abstrakta datatyper. Enkel komplexitetsanalys. Vanliga datastrukturer som fält, listor, träd och hashtabeller samt hur dessa kan användas för att implementera abstrakta datatyper som köer, prioritetsköer, lexika och grafer. Standardalgoritmer för dessa datastrukturer och deras resurskrav. Iteratorer. Sorteringsalgoritmer. Standardbibliotek för datastrukturer och algoritmer.")); + + courses =Collections.unmodifiableMap(map); + mostStudiedCourses = Collections.unmodifiableList(new ArrayList<>(courses.values())); + +} + @Override + public List getMostStudiedCourses() { + return mostStudiedCourses; + } + @Override + public Course getCourse (long id) { + return courses.get(id); + + } +} diff --git a/src/main/java/com/rotanareg/skolan/course/MostStudiedCourses.java b/src/main/java/com/rotanareg/skolan/course/MostStudiedCourses.java new file mode 100644 index 0000000..be78cec --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/course/MostStudiedCourses.java @@ -0,0 +1,26 @@ +package com.rotanareg.skolan.course; + +import javax.annotation.PostConstruct; +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import javax.inject.Named; +import java.util.List; + +@Named +@RequestScoped +public class MostStudiedCourses { + + @Inject + private com.rotanareg.skolan.course.CourseService courseService; + + private List courses; + + @PostConstruct + public void initialize() { + courses = courseService.getMostStudiedCourses (); + } + + public List getCourses() { + return courses; + } +} diff --git a/src/main/java/com/rotanareg/skolan/user/EmailAddressValidator.java b/src/main/java/com/rotanareg/skolan/user/EmailAddressValidator.java new file mode 100644 index 0000000..755e6d8 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/EmailAddressValidator.java @@ -0,0 +1,20 @@ +package com.rotanareg.skolan.user; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class EmailAddressValidator implements ConstraintValidator { + + @Override + public void initialize(ValidEmailAddress constraintAnnotation) { + } + + @Override + public boolean isValid(String value, ConstraintValidatorContext context) { + return value == null || value.equals("") || value.contains("@"); + } +} + + + + diff --git a/src/main/java/com/rotanareg/skolan/user/PhoneNumber.java b/src/main/java/com/rotanareg/skolan/user/PhoneNumber.java new file mode 100644 index 0000000..b709b99 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/PhoneNumber.java @@ -0,0 +1,28 @@ +package com.rotanareg.skolan.user; + +import java.io.Serializable; + +public class PhoneNumber implements Serializable { + + private static final long serialVersionUID = 1L; + + private String countryCode; + private String subscriberNumber; + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } + + + public String getSubscriberNumber() { + return subscriberNumber; + } + + public void setSubscriberNumber(String subscriberNumber) { + this.subscriberNumber = subscriberNumber; + } +} diff --git a/src/main/java/com/rotanareg/skolan/user/PhoneNumberConverter.java b/src/main/java/com/rotanareg/skolan/user/PhoneNumberConverter.java new file mode 100644 index 0000000..2e43326 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/PhoneNumberConverter.java @@ -0,0 +1,45 @@ +package com.rotanareg.skolan.user; + +import javax.faces.application.FacesMessage; +import javax.faces.component.UIComponent; +import javax.faces.context.FacesContext; +import javax.faces.convert.Converter; +import javax.faces.convert.ConverterException; +import javax.faces.convert.FacesConverter; +import java.util.regex.Pattern; + +@FacesConverter(forClass = PhoneNumber.class) +public class PhoneNumberConverter implements Converter { + + private static final Pattern PHONE_NUMBER_PATTERN = Pattern.compile("[0-8]{2}-[0-8]{3}-[0-8]{3}"); + + @Override + public Object getAsObject(FacesContext context, UIComponent component, String value) { + if (value == null || value.equals("")) { + return null; + } + + if (!PHONE_NUMBER_PATTERN.matcher(value).matches()) { + throw new ConverterException( + new FacesMessage("Fyll i det rätta formen på telefonummer: 00-000-000.")); + } + + PhoneNumber phoneNumber = new PhoneNumber(); + phoneNumber.setCountryCode(value.substring(0, 2)); + phoneNumber.setSubscriberNumber(value.substring(3)); + + return phoneNumber; + } + + @Override + public String getAsString(FacesContext context, UIComponent component, Object value) { + if (value == null) { + return null; + } + + PhoneNumber phoneNumber = (PhoneNumber) value; + + return phoneNumber.getCountryCode() + "-" + phoneNumber.getSubscriberNumber(); + } +} + diff --git a/src/main/java/com/rotanareg/skolan/user/PhoneNumberValidator.java b/src/main/java/com/rotanareg/skolan/user/PhoneNumberValidator.java new file mode 100644 index 0000000..691d22e --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/PhoneNumberValidator.java @@ -0,0 +1,33 @@ +package com.rotanareg.skolan.user; + +import javax.faces.application.FacesMessage; +import javax.faces.component.UIComponent; +import javax.faces.context.FacesContext; +import javax.faces.validator.FacesValidator; +import javax.faces.validator.Validator; +import javax.faces.validator.ValidatorException; + + +@FacesValidator("com.rotanareg.skolan.user.PhoneNumber") +public class PhoneNumberValidator implements Validator { + + @Override + public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException { + PhoneNumber phoneNumber = (PhoneNumber) value; + + + + if (phoneNumber != null) { + checkCountryCode(phoneNumber.getCountryCode()); + + } + } + + private void checkCountryCode(String countryCode) { + int firstDigit = Character.digit(countryCode.charAt(0), 10); + if (firstDigit == 0 || firstDigit == 1) { + throw new ValidatorException( + new FacesMessage("Första siffran i ditt tfn får inte vara 0 or 1.")); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/rotanareg/skolan/user/SignIn.java b/src/main/java/com/rotanareg/skolan/user/SignIn.java new file mode 100644 index 0000000..ec31961 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/SignIn.java @@ -0,0 +1,42 @@ +package com.rotanareg.skolan.user; + +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import javax.inject.Named; +import javax.validation.constraints.Pattern; +import javax.validation.constraints.Size; + +@Named +@RequestScoped +public class SignIn { + + @Inject + private UserManager userManager; + + @Pattern(regexp = "[A-Za-z0-9]{2,20}", message = "Användarnamnet skall innehålla bara bokstäver och siffror samt vara långt mellan 2 och 20 tecken.") + private String username; + + @Size(min = 8, message = "Ditt password måste innehålla minst 8 tecken.") + private String password; + + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String submit() { + return userManager.signIn(username, password); + } +} diff --git a/src/main/java/com/rotanareg/skolan/user/User.java b/src/main/java/com/rotanareg/skolan/user/User.java new file mode 100644 index 0000000..be0094a --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/User.java @@ -0,0 +1,102 @@ +package com.rotanareg.skolan.user; + +import com.rotanareg.skolan.Role; + +import java.util.ArrayList; +import java.util.Date; +import java.io.Serializable; +import java.util.List; + +public class User implements Serializable { + + private static final long serialVersionUID = 1L; + + private String username; + private String password; + private String firstName; + private String lastName; + private String emailAddress; + private String phoneNumber; + private Date birthDate; + private Role role; + private List rolesList; + + public User(){ + rolesList = new ArrayList(); + rolesList.add(Role.STUDENT); + rolesList.add(Role.TEACHER); + rolesList.add(Role.ADMIN); + role = Role.STUDENT; // set the first role as default + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getEmailAddress() { + return emailAddress; + } + + public void setEmailAddress(String emailAddress) { + this.emailAddress = emailAddress; + } + + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + public Date getBirthDate() { + return birthDate; + } + + public void setBirthDate(Date birthDate) { + this.birthDate = birthDate; + } + + public Role getRole() { + return role; + } + + public void setRole(Role role) { + this.role = role; + } + + public List getRolesList() { + return rolesList; + } + + +} + diff --git a/src/main/java/com/rotanareg/skolan/user/UserDetail.java b/src/main/java/com/rotanareg/skolan/user/UserDetail.java new file mode 100644 index 0000000..5a3fa93 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/UserDetail.java @@ -0,0 +1,30 @@ +package com.rotanareg.skolan.user; + + +import javax.faces.view.ViewScoped; +import javax.inject.Inject; +import javax.inject.Named; +import java.io.Serializable; +@Named +@ViewScoped +public class UserDetail implements Serializable { + private static final long serialVersionUID = 1L; + + @Inject + private UserManager userManager; + + private User user; + + public User getUser() { + return user; + } + + public void onload() { + user = userManager.isSignedIn() ? userManager.getCurrentUser() : new User(); + } + + public String submit() { + return userManager.save(user); + } + +} diff --git a/src/main/java/com/rotanareg/skolan/user/UserManager.java b/src/main/java/com/rotanareg/skolan/user/UserManager.java new file mode 100644 index 0000000..fd0d5c5 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/UserManager.java @@ -0,0 +1,54 @@ +package com.rotanareg.skolan.user; + +import javax.enterprise.context.SessionScoped; +import javax.faces.application.FacesMessage; +import javax.faces.context.FacesContext; +import javax.inject.Inject; +import javax.inject.Named; +import java.io.Serializable; + +@Named +@SessionScoped // Marko jobbar på +public class UserManager implements Serializable { + + private static final long serialVersionUID = 1L; + + @Inject + private UserService userService; + + private User currentUser; + + public boolean isSignedIn() { + return currentUser != null; + } + + public User getCurrentUser() { + return currentUser; + } + + public String signIn(String username, String password) { + User user = userService.getUser(username); + if (user == null || !password.equals(user.getPassword())) { + FacesContext.getCurrentInstance().addMessage(null, + new FacesMessage("Skriv in ditt användarnamn och password")); + return "failure"; + } + + currentUser = user; + return "success"; + } + + public void signOut() { + + FacesContext.getCurrentInstance().getExternalContext().invalidateSession(); + //return "index?faces-redirect =true"; + } + + public String save(User user) { + userService.saveUser(user); + currentUser = user; + return "index"; + } +} + + diff --git a/src/main/java/com/rotanareg/skolan/user/UserService.java b/src/main/java/com/rotanareg/skolan/user/UserService.java new file mode 100644 index 0000000..721cdf3 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/UserService.java @@ -0,0 +1,9 @@ +package com.rotanareg.skolan.user; + +public interface UserService { + // get information om användare + User getUser(String username); + + // spara information om användare + void saveUser(User user); +} diff --git a/src/main/java/com/rotanareg/skolan/user/UserServiceImpl.java b/src/main/java/com/rotanareg/skolan/user/UserServiceImpl.java new file mode 100644 index 0000000..5df98d8 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/UserServiceImpl.java @@ -0,0 +1,23 @@ +package com.rotanareg.skolan.user; + +import javax.enterprise.context.ApplicationScoped; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +@ApplicationScoped // skall stored i databas +public class UserServiceImpl implements UserService { + + + private final Map users = new ConcurrentHashMap<>(); + + @Override + public User getUser(String username) { + return users.get(username); + } + + @Override + public void saveUser(User user) { + users.put(user.getUsername(), user); + } +} + diff --git a/src/main/java/com/rotanareg/skolan/user/ValidEmailAddress.java b/src/main/java/com/rotanareg/skolan/user/ValidEmailAddress.java new file mode 100644 index 0000000..4cb0ed5 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/ValidEmailAddress.java @@ -0,0 +1,20 @@ +package com.rotanareg.skolan.user; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Constraint(validatedBy = EmailAddressValidator.class) +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +public @interface ValidEmailAddress { + + String message() default "Skriv din rätta e-mail adressen."; + + Class[] groups() default {}; + + Class[] payload() default {}; +} diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml new file mode 100644 index 0000000..90b915e --- /dev/null +++ b/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,19 @@ + + + + + + + jdbc/person + false + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/faces-config.xml b/src/main/webapp/WEB-INF/faces-config.xml new file mode 100644 index 0000000..c2df863 --- /dev/null +++ b/src/main/webapp/WEB-INF/faces-config.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..3346942 --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,29 @@ + + + + + MyProject web.xml + + + + Faces Servlet + javax.faces.webapp.FacesServlet + 1 + + + + + Faces Servlet + *.xhtml + + + + + index.xhtml + + + \ No newline at end of file diff --git a/src/main/webapp/admin.xhtml b/src/main/webapp/admin.xhtml new file mode 100644 index 0000000..06c7be8 --- /dev/null +++ b/src/main/webapp/admin.xhtml @@ -0,0 +1,32 @@ + + + + + + + + + +
+ Registrera nya användare +

+ Registrera nya kurser +
+
+ + + +
+

här kommer mer

+ + +
+
+
+ + + diff --git a/src/main/webapp/contracts/device/style.css b/src/main/webapp/contracts/device/style.css new file mode 100644 index 0000000..de4fe49 --- /dev/null +++ b/src/main/webapp/contracts/device/style.css @@ -0,0 +1,58 @@ +html { + margin: 0; + padding: 0; + font-family: Tahoma, sans-serif; +} + +body { + margin: 0; + padding: 0; +} + +h1, h2, h3, h4, h5, h6 { + margin: 0 0 8px 0; + padding: 0; +} + +p { + margin: 8px 0 0 0; + padding: 0; +} + +input, button,select { + font-family: Tahoma, sans-serif; + font-size: 100%; +} + +body > header { + padding: 16px; + clear: both; + text-align: center; + font-size: 200%; +} + +body > header > h1 { + margin: 0; +} + +body > section , body > form > section{ + margin: 8px 20%; + padding: 18px; + overflow: hidden; + .bild + background-image: url("testBild2.jpg"); + background-repeat: no-repeat; + background-size: cover; + background-position: 100%; +} + +body > footer { + padding: 8px; + clear: both; + font-size: 13px; + text-align: center; +} + +body > footer > p { + margin: 0; +} diff --git a/src/main/webapp/contracts/theme/blueheven.css b/src/main/webapp/contracts/theme/blueheven.css new file mode 100644 index 0000000..8850ee4 --- /dev/null +++ b/src/main/webapp/contracts/theme/blueheven.css @@ -0,0 +1,45 @@ +body { + background-color: rgba(118, 203, 224, 0.1); +} + +a:link, a:visited { + color: #8d52a0; +} + +a:hover, a:active { + color: #76cbe0; +} + +input, select { + background-color: #ffffff; + color: #000000; + border: 1px solid #396280; + padding: 4px; +} +option { + background-color: white; + color: black; +} +input[readonly] { + color: #808080; +} + +input[type="submit"], input[type="button"] { + border-radius: 4px; + padding: 4px 12px; +} + +body > header { + background-color: #2badca; + color: white; +} + +body > section, body > form > section { + background-color: rgba(114, 207, 179, 0.38); + color: black; +} + +body > footer { + background-color: #2badca; + color: #e5e5e5; +} \ No newline at end of file diff --git a/src/main/webapp/course.xhtml b/src/main/webapp/course.xhtml new file mode 100644 index 0000000..b64e7be --- /dev/null +++ b/src/main/webapp/course.xhtml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/src/main/webapp/course_details.xhtml b/src/main/webapp/course_details.xhtml new file mode 100644 index 0000000..db413f7 --- /dev/null +++ b/src/main/webapp/course_details.xhtml @@ -0,0 +1,25 @@ + + + + + + + + + + + + +
+ +

#{courseDetails.course.name}

+

#{courseDetails.course.description}

+
+
+
+
+ diff --git a/src/main/webapp/create_course.xhtml b/src/main/webapp/create_course.xhtml new file mode 100644 index 0000000..b64e7be --- /dev/null +++ b/src/main/webapp/create_course.xhtml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/src/main/webapp/index.xhtml b/src/main/webapp/index.xhtml new file mode 100644 index 0000000..d5d0d08 --- /dev/null +++ b/src/main/webapp/index.xhtml @@ -0,0 +1,19 @@ + + + + + + + + +
+ +
+
+ +
+ diff --git a/src/main/webapp/resources/skola/images/testBild2.jpg b/src/main/webapp/resources/skola/images/testBild2.jpg new file mode 100644 index 0000000..c622c86 Binary files /dev/null and b/src/main/webapp/resources/skola/images/testBild2.jpg differ diff --git a/src/main/webapp/signIn.xhtml b/src/main/webapp/signIn.xhtml new file mode 100644 index 0000000..5fd2b3b --- /dev/null +++ b/src/main/webapp/signIn.xhtml @@ -0,0 +1,53 @@ + + + + + + + + +
+ +

Logga in

+

Skriv ditt användarnamn

+
+ + + +

Välkommen, #{userManager.currentUser.firstName}!

+

Du är redan inloggad. + Vill dulogga ut?

+
+
+
+
+ + + + +
+ + + + Användarnamn + + + + + Password + + + + + + +
+
+
+ +
+ diff --git a/src/main/webapp/student.xhtml b/src/main/webapp/student.xhtml new file mode 100644 index 0000000..034995a --- /dev/null +++ b/src/main/webapp/student.xhtml @@ -0,0 +1,34 @@ + + + + + + + + +
+ +
+
+ + +
+

Mest lästa kurser

+ + + + + + + + +
+
+
+ + + diff --git a/src/main/webapp/teacher.xhtml b/src/main/webapp/teacher.xhtml new file mode 100644 index 0000000..6984f2f --- /dev/null +++ b/src/main/webapp/teacher.xhtml @@ -0,0 +1,21 @@ + + + + + + + +
+ + +
+
+
+ + + + diff --git a/src/main/webapp/templates/panel_top.xhtml b/src/main/webapp/templates/panel_top.xhtml new file mode 100644 index 0000000..11959eb --- /dev/null +++ b/src/main/webapp/templates/panel_top.xhtml @@ -0,0 +1,26 @@ + + + + + + +
+ +

Logga in

+
+ + + +

Välkommen #{userManager.currentUser.firstName}!

+ +

Logga ut

+
+
+
+
+ + diff --git a/src/main/webapp/templates/panel_top_admin.xhtml b/src/main/webapp/templates/panel_top_admin.xhtml new file mode 100644 index 0000000..fd15065 --- /dev/null +++ b/src/main/webapp/templates/panel_top_admin.xhtml @@ -0,0 +1,19 @@ + + + + +
+ + +

Välkommen #{userManager.currentUser.firstName}!

+ +

Logga ut

+
+
+
+
+ diff --git a/src/main/webapp/templates/template_footer.xhtml b/src/main/webapp/templates/template_footer.xhtml new file mode 100644 index 0000000..328fa4f --- /dev/null +++ b/src/main/webapp/templates/template_footer.xhtml @@ -0,0 +1,17 @@ + + + + + +
+ + + +
+
+ + diff --git a/src/main/webapp/templates/template_header.xhtml b/src/main/webapp/templates/template_header.xhtml new file mode 100644 index 0000000..1d33a5e --- /dev/null +++ b/src/main/webapp/templates/template_header.xhtml @@ -0,0 +1,15 @@ + + + + +
+ + + +
+
+ \ No newline at end of file diff --git a/src/main/webapp/templates/template_page.xhtml b/src/main/webapp/templates/template_page.xhtml new file mode 100644 index 0000000..e23331e --- /dev/null +++ b/src/main/webapp/templates/template_page.xhtml @@ -0,0 +1,47 @@ + + + + + + + + + RotanaReg Skolan - #{pageTitle} + + + + + + + + + + +
+ +
+
+ + +
+

Main Panel

+

Placeholder text.

+
+
+ + +
+
+ diff --git a/src/main/webapp/user_detail.xhtml b/src/main/webapp/user_detail.xhtml new file mode 100644 index 0000000..6e4048b --- /dev/null +++ b/src/main/webapp/user_detail.xhtml @@ -0,0 +1,62 @@ + + + + + + + + + + +
+ Tillbaka +
+
+ +
+ + + Användarnamn + + + Password + + + Förnamn + + + Efternamn + + + E-mail address + + + Telefon nummer + + + Födelsedatum + + + + + + + + + + + + + + +
+
+
+