Giter VIP home page Giter VIP logo

wlc-webapp's Introduction

We Love Coding — Web App

This project contains a Java EE web application which is available in German (www.welovecoding.de) and in English (www.welovecoding.com).

Build Status

Deployment

Check our wiki if you want to learn more about how to deploy our app and how to start working on it.

Authors

Benny Neugebauer on Stack Exchange

Michael Koppen on Stack Exchange

wlc-webapp's People

Contributors

bennycode avatar yserz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

yserz

wlc-webapp's Issues

YouTube Import Wizard - Validate that all given Playlist IDs start with "PL"

We can use "pattern" to verify the constraint on the clientside and <f:validateRegex> to check it on the serverside (JSF). Here is a code sample which does not work but gives an idea how to solve it:

            <h:message for="playlistId" />
            <h:inputText
              p:pattern="^PL"
              p:title="Playlist code must start with PL"
              p:placeholder="PLF544CEEC9432BF67"
              p:required="required"
              p:value="PLF544CEEC9432BF67"
              id="playlistId"
              value="#{youTubeImportWizard.playlistId}"
              >
              <f:validateRegex pattern="^PL"/>
            </h:inputText>

[Infrastructure] JVM on test system crashes sometimes doe to low memory

The JVM on the test system crashes sometimes due to low memory. If this happens you will get the following message in the Jenkins log:

...
all tests pass
...
[ERROR] Failed to execute goal org.codehaus.cargo:cargo-maven2-plugin:1.4.7:redeploy (default-cli) on project wlc-webapp: Execution default-cli of goal org.codehaus.cargo:cargo-maven2-plugin:1.4.7:redeploy failed: error submitting remote command: org.glassfish.api.admin.CommandException: Remote server does not listen for requests on [93.180.157.228:4848]. Is the server up?: Connection refused -> [Help 1]

Please track this issue here with a timestamp!

HTML tag writer

Implement a tag writer for every HTML element needed (Fieldset, ...) which supports setting an ID, setting a classname and adding children. The tag which the HTML tag writer creates should be an instance of "UIOutput".

It should work like this:

HTMLTagWriter document = new HTMLTagWriter();
Fieldset fieldset = document.createElement("fieldset");
fieldset.setId("my-id");
fieldset.setStyleClass("my-style-class");
fieldset.getChildren().add(new UIComponent...);

Good examples

org.apache.myfaces.custom.fieldset

Fieldset > AbstractFieldset > HtmlTag > AbstractHtmlTag
HtmlTagRenderer > HtmlRendererUtils

Docs

http://docs.oracle.com/javaee/6/tutorial/doc/bnavg.html
http://www.exadel.com/tutorial/jsf/HowToWriteYourOwnJSFComponents.pdf

[Service] Implement REST-Service v2

A new version of the REST-Service for WLC should be implemented. Following features should be reached:

  • new and clear URI-Paths for rest-resources
  • ETag-support

Note: The new rest-service should be places next to the old rest-service to provide support for clients which use the old rest-service. So the clients can smoothly be migrated to the new rest-service.

Change package names

I like "de.fhb" because it is short but in terms of consistency we should rename it. Because welovecoding.com will be the final URL we should use "com.welovecoding.webapp".

Task:

Rename "de.fhb" in package names to "com.welovecoding.webapp".

Eingangsfragen bei Registrierung

  • Welche Programmiersprachen interessieren dich?
  • Welche Gebiete (UI, Webentwicklung, Theorie) interessieren dich?
  • Wie hast du uns gefunden (Google, Windows 8 App, etc.)

[Service] Google OAuth 2.0 Authorization

Smiley Counter

Bei Videobeiträgen sollen alle positiven Smileys aus den Kommentaren gezählt- und als Bewertung benutzt werden. :)

[General] Bug with JDBC-Pooling

The good old JDBC-timeout error is back :/

'''
The last packet successfully received from the server was 316,924 milliseconds ago. The last packet sent successfully to the server was 1 milliseconds ago.
'''

I will investigate some time on this later but its a true show-stopper!

Stinson Mode

Als Bilder haben wir diese kleinen Nerd-Kids auf "We Love Coding". Mit dem Stinson-Mode ist es möglich, das Theme-Design zu wechseln. Anstatt der Nerd-Kiddies sind dann coole Kiddies im Anzug zu sehen. ;-) Das Feature ist ein Gag angelehnt an die Figur "Barney Stinson" aus "How I Met your Mother". Wie das Feature angeschaltet wird (etwa durch einen Lichtschalter wie beim Krokodil auf MyDealZ.de) oder durch ein Setting in den Profileinstellungen des Users, ist noch unklar.

[Domain] Save creator for categories & playlists

A reference to the creator of a category or a playlist should be saved so that we can filter items which have been saved by the "Fachhochschule Brandenburg" to display them only in the FHB app.

Encoding-Bug with database

Theres an encoding bug with the actual database and SQL-Pusher.

"description": "Mitschnitt der MMT30-Konferenz zum Thema "Apps entwickeln für Windows Phone".",

Save RegEx pattern for Titles when using the YouTube Import Wizard

When importing videos from a YouTube list then you can get video names like the following:

C# Beginners Tutorial - 1 - Introduction and Installing C# 2010
C# Beginners Tutorial - 2 - Changing Forms Properties
C# Beginners Tutorial - 3 - Showing MessageBoxes
C# Beginners Tutorial - 4 - Variables
C# Beginners Tutorial - 5 - Changing Properties With Code
C# Beginners Tutorial - 6 - If Statements

It would be cool if a user could provide a RegEx pattern during the import so that parts like "C# Beginners Tutorial - 6 -" will be cut off.

Microsoft Live Connect

Maven Release Batch-Mode

We should create releases with the batchmode of the maven release plugin. Following this instructions the command will look like this:

mvn --batch-mode -Dtag=wlc-webapp/0.0.x release:prepare
-DreleaseVersion=0.0.x
-DdevelopmentVersion=0.0.(x+1)-SNAPSHOT

[UI] URL-SessionID doesn't work

Sometimes Chrome gets crazy and doesn't store the session id into an cookie. Instead it writes everything into the URL. Thats uncool und unsafe but in the end it should work nevertheless. Instead of routing to a proper page when Playlists, Authors etc. were clicked it will end up by the admin-index-page all the time. So I guess something is wrong with the way we link pages with JSF (h:commandLink etc.).

Access List for Backend Authentication

At the moment all user who have access to the backend of our site are defined in the "AdminPagesFilter" with the following constant:

private static final String[] ALLOWED_EMAILS = {
"[email protected]",
"[email protected]"
};

It would be nice to have these user inside a configuration file or an basic auth realm. If there is no auth realm, then the user mentioned in the constant should be used as a fallback.

Security in a Java Web Application - Tutorial 01 (GlassFish + Basic Authentication):
https://www.youtube.com/watch?v=v-J7OpNFOU4

JDBC Realm and Form Based Authentication with GlassFish 3.1.2.2:
http://blog.eisele.net/2013/01/jdbc-realm-glassfish312-primefaces342.html

I suggest to use a file based security realm on our GlassFish for the first implementation / iteration of this feature.

[UI] Fehlerbehandlung für Formulareingaben

Bei Fehleingabe in Formularfeldern soll dem Benutzer eine Nachricht neben dem entsprechendem Feld angezeigt werden.

Beispiel-Code:

public String update() {
    try {
        getFacade().edit(current);
        JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("AuthorUpdated"));
        return "View";
    } catch (Exception e) {
        JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
        return null;
    }
}

Bearbeiten von Entities

Wenn man Autoren, Kategorien, etc. bearbeiten möchte, dann wird zwar im Eingabeformular der Name der Entity anzeigt; bei einem Klick auf "Speichern" wird jedoch ein neuer Eintrag erstellt anstatt den vorhandenen zu bearbeiten.

Java DSL for administration interface customization

I like the idea of having sth. similiar like that for the configuration of the forms generated by our GenFormBaseController:

 fragmentBuilder.field("deliveryAddress").caption("Delivery Address").editor(textArea()).build()

Sample taken from: http://lightadmin.org/

At the moment we have the config cluttered across the whole web project. There is sth. like the FormModel which defines the representation of the input field design (like editor(textArea())) and there is a FormInput which has a Label which does in connection with the "backend.properties" sth. like "caption("Delivery Address")" and there is a GenFormController which knows the fields (similiar to field("deliveryAddress")).

With a fragment builder (like in Light Admin) we could have to logic of the form customization in one place! :)

[Service] Implement YouTube-Service 3.x

Since the YouTube-Service implementation in version 1.x is broken because of a really old dependency to guava/google-collections a new implementation of the YouTube-Service in version 2.x is needed to import YouTube playlists.

[General] Delete unused resources

The project should be cleaned up before a release is made. Following resources/files/folders are marked for deletion:

  • src/main/webapp/fonts
  • src/main/java/com (or at least moved to de/fhb or opposite)
  • src/main/java/de/fhb/producer
  • /assets

Code Fragments with Syntax Highlighting

It should be possible to display code fragments in blog posts and/or page articles. It should be possible to save those code fragments in the database. Afterwards it should be possible to use them with a BB code in our WYSIWYG editor, like: [code id="2333"][/code]. To make this story easier to solve it would be fine if we just pase the code with a HTML wrapper in the WYSIWYG editor, like:

This is my blog post inside our WYSIWYG editor...

<pre lang="java">
the code...
</pre>

Includes:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.