Permalink
Browse files

Merge remote-tracking branch 'origin/master'

Conflicts:
	src/main/java/nl/waisda/domain/UserSummary.java
	src/main/resources/ValidationMessages.properties
	src/main/webapp/WEB-INF/tags/body.tag
	src/main/webapp/WEB-INF/views/recap.jsp
	src/main/webapp/WEB-INF/views/register.jsp
	src/main/webapp/static/script/taggingHistory.js
  • Loading branch information...
2 parents b7b8bda + 480cea7 commit 0625d5428bed541e9e01f6e4b7b5d64276430cb3 @MedeaMelana MedeaMelana committed Jul 25, 2012
View
55 docs/customizing.md
@@ -2,37 +2,70 @@
## Adding your own videos
-* In SQL format
-* In CSV format
+To add your own videos, simply fill the `Video` table with records. They will then become available in the website for playing sessions with them and earning scores. The default video selection for the channels on the homepage chooses randomly (uniformly) from all available videos. The structure of the table is explained in the "Backend architecture" chapter.
+
+If you have existing data available in SQL format, you can import it using various MySQL graphical tools, or using the command line:
+
+```
+$ mysql < videos.sql
+```
+
+Be sure to pass extra options to `mysql` to tell it how to connect to the database.
+
+If you have video data in CSV format, again you can use one of the many MySQL tools out there, or use the command line utility [`mysqlimport`](https://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html). It allows you to map the various columns in the CSV file to specific columns in the `Video` table.
## Customizing channels
+By default, the channels on the homepage show a uniform random selection of all available videos. If you would like to customize this, the place to do that is in method `getChannelContent` of class `VideoService`. This method is called by the `HomeController` to determine what channels to show. The `VideoService` talks to the `VideoRepository` to actually query the database. By writing your own SQL queries to select videos, you can make the video selection as complex as you prefer.
+
## Adding matching tags
+Table `MatchingTag` contains tuples of normalized tags that *match* one another. When users enter tags, they receive higher scores if their tags match other tags, as explained in detail in the introduction of the documentation.
+
+To supply your own matching tags (for example, pairs of synonyms), populate the `MatchingTag` table with them. Make sure that every tuple's elements are lexicographically sorted. E.g. use `('aalmoes', 'gift')` rather than `('gift', 'aalmoes')`.
+
## Adding dictionaries
+Adding dictionaries with words is done by filling table `DictionaryEntry` with records. Each entry is tied to a dictionary which allows the scoring engine to differentiate between different dictionaries. For example, if you have entries for dictionaries `people` and `placenames`, the scoring engine could choose to award more points to place names than to people's names.
+
+An alternative use for dictionaries is to make a dictionary `stopwords` and have the scoring engine award 0 points to all such tag entries.
+
## Adding your own style
+
### Changing colors
-All colors are defined in [variables.less](https://github.com/beeldengeluid/waisda/tree/master/src/main/webapp/static/styles/less/variables.less). The easiest way to change a color throughout the whole project is changing it's RGB-value in this less-file. To establish a link between the RGB-values and what you see on screen the variable-name should describe the color. This makes it easier to recognize and visualize the values and their on-screen representation. If a variable's name does not describe the new color very well please change it accordingly and run a simple search and replace action through all the less files.
+
+All colors are defined in [variables.less](../src/main/webapp/static/styles/less/variables.less). The easiest way to change a color throughout the whole project is changing it's RGB-value in this less-file. To establish a link between the RGB-values and what you see on screen the variable-name should describe the color. This makes it easier to recognize and visualize the values and their on-screen representation. If a variable's name does not describe the new color very well please change it accordingly and run a simple search and replace action through all the less files.
### Adding your logo
-The logo is placed in the header. To change the logo place your logo-image in the [images folder](https://github.com/beeldengeluid/waisda/tree/master/src/main/webapp/static/img). And change the path for the dummy-logo image to your logo in the file [body.tag](https://github.com/beeldengeluid/waisda/blob/master/src/main/webapp/WEB-INF/tags/body.tag). To find the dummy-logo image in the code search for alt="LOGO" within this file. The logo should leave enough space for the tag-line about the amount of tags and matches. In the current setup a logo should not be wider than 220 pixels.
+
+The logo is placed in the header. To change the logo place your logo-image in the [images folder](../src/main/webapp/static/img). And change the path for the dummy-logo image to your logo in the file [body.tag](../src/main/webapp/WEB-INF/tags/body.tag). To find the dummy-logo image in the code search for alt="LOGO" within this file. The logo should leave enough space for the tag-line about the amount of tags and matches. In the current setup a logo should not be wider than 220 pixels.
### Changing the grid
-The document about [Front-end architecture](https://github.com/beeldengeluid/waisda/blob/master/docs/frontend.md) contains a description of how the grid can be accustomed to your specific needs. The current grid is based on 12 columns of 60 pixels wide divided by a 20 pixel wide gutter. This is also the document where you can find more in-debt descriptions about the front-end architecture. It's a starting point in case you need to make more changes to the visual design or layout.
+
+The document about [Front-end architecture](frontend.md) contains a description of how the grid can be accustomed to your specific needs. The current grid is based on 12 columns of 60 pixels wide divided by a 20 pixel wide gutter. This is also the document where you can find more in-debt descriptions about the front-end architecture. It's a starting point in case you need to make more changes to the visual design or layout.
## Translating pages
+Because the project is not set up to support internationalization (where the language of the UI can be changed through a simple configuration setting), translating involves going through the source files and translating individual sentences.
+
+Phrases to be translated can be found in these files:
+
+* all views in `src/main/webapp/WEB-INF/views`
+* some of the scripts in `src/main/webapp/static/script`
+* the error messages in `src/main/resources/ValidationMessages.properties`
+
## Customizing scoring
+Computing tags' scores is handled by class `ScoringService`. It takes care of doing the appropriate database queries and combining all information. After it sets the appropriate properties on the tag entries (`matchingTagEntry`, `dictionary` and `pioneer`), it calls `TagEntry.recomputeScore` to update the entry's `score` property. Then it stores the updated entry in the database.
+
## Modifying the database structure
-* Adding tables
-* Adding columns
-* Hibernate mappings
+The classes in package `nl.waisda.domain` model domain objects and have annotations on their properties that specify how they should be mapped to and from database records. This means that when you add, remove or change fields in a table, you should update the domain classes accordingly. If you don't, the website will report errors on startup.
+
+Similarly, if you add a database table and would like to be able to access it from within the application using Hibernate, you need to create a class for it. Tag the class with `@Entity` and annotate the properties. Finally, add an entry for it in `src/main/webapp/META-INF/persistence.xml`.
+
+Not all database tables are currently represented as Java classes: records in tables `DictionaryEntry` and `MatchingTag` don't need to exist as objects in the web application and so have no mappings.
## Adding new pages
-* Add controller method
-* Add JSP view
-* Possibly create new view model class
+To add a new kind of page to the application, create a JSP view. You can look at existing view pages in `src/main/webapp/WEB-INF/views` for examples. Then, in an existing or in a new controller, create a method with a `@RequestMapping` that listens to a specific URL, and return the name of the view. Use a `ModelMap` argument to supply the view with data. Again, you can look at existing controllers for plenty of examples.
View
13 sql/create-tables.sql
@@ -1,8 +1,8 @@
--- MySQL dump 10.13 Distrib 5.1.51, for apple-darwin10.4.0 (i386)
+-- MySQL dump 10.13 Distrib 5.5.16, for osx10.6 (i386)
--
-- Host: localhost Database: waisda
-- ------------------------------------------------------
--- Server version 5.1.51
+-- Server version 5.5.16
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
@@ -45,7 +45,7 @@ CREATE TABLE `Video` (
`enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'Whether this video is available for new games',
`playerType` varchar(15) NOT NULL DEFAULT 'JW' COMMENT 'Either ''JW'' or ''NPO''',
`sourceUrl` varchar(255) DEFAULT NULL COMMENT 'For playerType JW',
- `fragmentID` int(11) DEFAULT NULL COMMENT 'For playerType NPO',
+ `fragmentID` varchar(255) DEFAULT NULL COMMENT 'For playerType NPO',
`sectionNid` int(11) DEFAULT NULL COMMENT 'For playerType NPO',
`startTime` int(11) DEFAULT NULL COMMENT 'For playerType NPO',
PRIMARY KEY (`id`),
@@ -98,7 +98,7 @@ DROP TABLE IF EXISTS `TagEntry`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `TagEntry` (
- `id` int(11) NOT NULL DEFAULT '0',
+ `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`dictionary` varchar(31) CHARACTER SET utf8 DEFAULT NULL COMMENT 'Dictionary in which tag is found (awards extra points)',
`normalizedTag` varchar(63) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT 'Normalized version of tag',
`score` int(11) NOT NULL COMMENT 'Computed score (stored for performance)',
@@ -109,7 +109,8 @@ CREATE TABLE `TagEntry` (
`owner_id` int(11) NOT NULL COMMENT 'Player who entered the tag',
`matchingTagEntry_id` int(11) DEFAULT NULL COMMENT 'Matching tag, if any (may be set later; awards extra points)',
`pioneer` tinyint(1) NOT NULL COMMENT 'Whether there was no match when tag was entered',
- `creationDate` datetime NOT NULL COMMENT 'Date at which tag was entered'
+ `creationDate` datetime NOT NULL COMMENT 'Date at which tag was entered',
+ PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -179,4 +180,4 @@ CREATE TABLE `Participant` (
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2012-06-01 11:59:41
+-- Dump completed on 2012-07-18 14:27:59
View
4 src/main/java/nl/waisda/domain/Game.java
@@ -27,7 +27,7 @@
public static final int ACCEPTABLE_LAG_MS = 2 * 60 * 1000; // 2 minutes
public static final DateFormat DATE_FORMAT = new SimpleDateFormat(
- "EEEE d MMMM yyyy 'om' HH:mm", Util.DUTCH_LOCALE);
+ "EEEE d MMMM yyyy 'at' HH:mm", Util.ENGLISH_LOCALE);
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@@ -89,7 +89,7 @@ public boolean acceptsNewTagEntryAt(int time) {
}
public String getFormattedDay() {
- DateFormat df = new SimpleDateFormat("EEEE dd-MM-yyyy", Util.DUTCH_LOCALE);
+ DateFormat df = new SimpleDateFormat("EEEE dd-MM-yyyy", Util.ENGLISH_LOCALE);
String s = df.format(start);
return Character.toUpperCase(s.charAt(0)) + s.substring(1);
}
View
2 src/main/java/nl/waisda/domain/Gender.java
@@ -1,7 +1,7 @@
package nl.waisda.domain;
public enum Gender {
- MALE("m", "Man"), FEMALE("v", "Vrouw");
+ MALE("m", "Male"), FEMALE("v", "Female");
private String prettyShortName;
private String prettyLongName;
View
2 src/main/java/nl/waisda/domain/User.java
@@ -120,7 +120,7 @@ public void setId(int id) {
}
public String getName() {
- return name != null ? name : "Anoniempje";
+ return name != null ? name : "Guest";
}
public void setName(String name) {
View
2 src/main/java/nl/waisda/domain/UserSummary.java
@@ -4,7 +4,7 @@
public class UserSummary {
- public static final UserSummary GHOST = new UserSummary(0, "Spelers uit het verleden", 0,
+ public static final UserSummary GHOST = new UserSummary(0, "Previous players", 0,
"http://www.gravatar.com/avatar/0?d=mm&s=30");
private int id;
View
4 src/main/java/nl/waisda/domain/Video.java
@@ -38,7 +38,7 @@
private PlayerType playerType;
@Basic
- private Integer fragmentID;
+ private String fragmentID;
/** Start time within episode, in ms. */
@Basic
@@ -77,7 +77,7 @@ public PlayerType getPlayerType() {
return playerType;
}
- public Integer getFragmentID() {
+ public String getFragmentID() {
return fragmentID;
}
View
1 src/main/java/nl/waisda/model/Util.java
@@ -7,6 +7,7 @@
public class Util {
public static final Locale DUTCH_LOCALE = new Locale("NL", "nl");
+ public static final Locale ENGLISH_LOCALE = Locale.ENGLISH;
private Util() {
View
30 src/main/resources/ValidationMessages.properties
@@ -1,18 +1,18 @@
-Register.email.invalid=The email address you entered is invalid.
-Register.email.blank=Please enter your email address.
-Register.email.duplicate=This email address is already in use.
-SetAuth.name.blank=Please enter your name.
+Register.email.invalid=Email address is not valid.
+Register.email.blank=Email address is required.
+Register.email.duplicate=The email address is already taken.
+SetAuth.name.blank=You did not enter a name.
SetAuth.name.tooLong=This name is too long.
SetAuth.name.tooShort=This name is too short.
SetAuth.name.duplicate=This name is already in use.
-SetAuth.password.tooShort=Your password should contain at least 6 characters.
-SetAuth.repeatPassword.invalid=The passwords you entered don't match.
-Register.agreeTos.invalid=You need to agree to the Terms of Service to register.
-LoginForm.invalidCredentials=Incorrect username or password. Please try again.
-Profile.dateOfBirth.invalid=Please enter a valid date (e.g. 30-04-1980)
-Profile.socialmediaUsername.invalid=Please enter your username, not a URL.
-Profile.password.invalid=Please enter your current password.
-RequestReset.email.blank=Please enter the email address you registered with.
-RequestReset.email.nonexistent=There is no account with this email address.
-ResetPassword.expired=Sorry, the link has expired.
-ResetPassword.key.incorrect=The link is incorrect. Are you sure you have copied the URL correctly?
+SetAuth.password.tooShort=Your password needs to contain at least 6 characters.
+SetAuth.repeatPassword.invalid=The passwords do not match.
+Register.agreeTos.invalid=To use Waisda? you need to agree with the terms of use.
+LoginForm.invalidCredentials=The email address and/or password is incorrect.
+Profile.dateOfBirth.invalid=Not a valid date. Example: 30-04-1980
+Profile.socialmediaUsername.invalid=Enter your username, and not a URL.
+Profile.password.invalid=The password is incorrect.
+RequestReset.email.blank=Enter the email address that use for registration.
+RequestReset.email.nonexistent=No user found with this email address.
+ResetPassword.expired=This link expired.
+ResetPassword.key.incorrect=The code in incorrect. Did you copy the link correctly?
View
4 src/main/webapp/WEB-INF/jetty.xml
@@ -38,8 +38,8 @@
<Set name="maxPoolSize">50</Set>
<Set name="allowLocalTransactions">true</Set>
<Get name="driverProperties">
- <Put name="user">waisda</Put>
- <Put name="password">waisda</Put>
+ <Put name="user">manbijthond</Put>
+ <Put name="password">manbijthond</Put>
<Put name="url">jdbc:mysql://localhost:3306/waisda?characterEncoding=UTF-8&amp;useUnicode=true</Put>
</Get>
<Call name="init" />
View
2 src/main/webapp/WEB-INF/tags/body.tag
@@ -20,7 +20,7 @@
<c:if test="${user != null || user.playerBarVisible}">
<div class="stats pull-right">
<c:if test="${user == null || user.anonymous}">
- <p ><strong><nf:format number="${globalStats.totalTags}" /></strong> <!-- ${globalStats.totalTags} --> tags entered and<strong><nf:format number="${globalStats.totalMatches}" /> </strong> <!-- ${globalStats.totalMatches} --> matches made</p>
+ <p ><strong><nf:format number="${globalStats.totalTags}" /></strong> <!-- ${globalStats.totalTags} --> tags entered and <strong><nf:format number="${globalStats.totalMatches}" /></strong> <!-- ${globalStats.totalMatches} --> matches made</p>
</c:if>
<c:if test="${user != null && !user.anonymous}">
<p>You contributed <strong><nf:format number="${user.totalTags}"/></strong> of <strong ><nf:format number="${globalStats.totalTags}" /></strong> tags and <strong><nf:format number="${user.totalMatches}" /></strong> of <strong><nf:format number="${globalStats.totalMatches}" /></strong> matches overall</p>
View
4 src/main/webapp/WEB-INF/views/cookies.jsp
@@ -4,9 +4,9 @@
<%@ taglib tagdir="/WEB-INF/tags" prefix="tt"%>
<tt:html>
-<tt:head title="Hoe werkt het?"></tt:head>
+<tt:head title="How does it work?"></tt:head>
<tt:body pageName="cookiesUitleg">
<h1>Cookies</h1>
- <p>Om deel te nemen Waisda Waisda? moet u cookies aan hebben staan in uw browser. Schakel cookies in en <a href="${fn:escapeXml(targetUrl)}">probeer het daarna nog eens</a>.</p>
+ <p>To take part in Waisda? cookies have to be enabled in your browser. Enable cookies and <a href="${fn:escapeXml(targetUrl)}">try again</a>.</p>
</tt:body>
</tt:html>
View
10 src/main/webapp/WEB-INF/views/game.jsp
@@ -22,14 +22,14 @@
<section class="reset">
<div id="vid-overlay-screen" class="row-fluid show">
<div id="explanation" class="box clean span6">
- <div id="timer-intro" class="timer-intro"><small>Game starts in</small><strong>00:15</strong></div>
+ <div id="timer-intro" class="timer-intro"><small>The game starts in</small><strong>00:15</strong></div>
<h2 class="h4">Instructions</h2>
<ul>
- <li>Try to enter as much words that describe what you see or hear</li>
+ <li>Try to enter as many words as possible to describe what you see or hear</li>
<li>Confirm a word by pushing [enter] on your keyboard</li>
- <li>Points can be earned by making <strong>matches</strong>, when you have entered the same word as a co-player</li>
- <li>When joining the game you confirm to the following <a href="/voorwaarden" target="_blank">terms and conditions</a></li>
+ <li>Earn points by <strong>matching</strong>, which happens when you enter the same word as another player</li>
+ <li>By joining a game, you submit to the following <a href="/voorwaarden" target="_blank">terms and conditions</a></li>
</ul>
<h3 class="h5">Good luck!</h3>
</div>
@@ -63,7 +63,7 @@
<header class="rich extended">
<h1 id="playerSessionScore" class="pull-left board span2">0</h1>
<h2 id="playerPosition" class="pull-right reset">
- <small class="h4">Position</small>
+ <small class="h4">Rank</small>
<span id="playerPositionMine">-</span> / <span id="playerPositionTotal" class="h4">-</span>
</h2>
</header>
View
25 src/main/webapp/WEB-INF/views/home.jsp
@@ -13,7 +13,7 @@
<div id="addthis-bar" class="addthis_toolbox addthis_default_style pull-right spaced-bottom"
addthis:url="http://waisda.nl/"
addthis:title="Waisda?"
- addthis:description="Speelt u mee?">
+ addthis:description="Would you like to play?">
<a class="addthis_button_preferred_1"></a>
<a class="addthis_button_preferred_2"></a>
<a class="addthis_button_preferred_3"></a>
@@ -25,10 +25,8 @@
<!-- AddThis Button END -->
<p class="spaced-bottom">
- Play
- <strong>Waisda </strong>
- to make it easier to find stuff.
- </p-->
+ By playing <strong>Waisda</strong>, you're helping us improve our archives by making them easier to search through. Thanks!
+ </p>
<!--h2>Kanalen</h2-->
<ul class="row equal-cols unstyled clear-both">
@@ -42,7 +40,7 @@
<div class="overlay trigger"></div>
</div>
<h3 class="h5">${channel.video.title}</h3>
- <p class="small">${channel.video.timesPlayed} keer gespeeld<br/>hoogste score: <nf:format number="${channel.highscore}" /></p>
+ <p class="small">games: ${channel.video.timesPlayed}<br/>high score: <nf:format number="${channel.highscore}" /></p>
</a>
</li>
</c:forEach>
@@ -51,13 +49,12 @@
<!--h2 class="spaced">Hoe werkt het?</h2-->
<div class="row equal-cols">
<ol class="unstyled pull-left">
- <li class="box rich order span3 col"><span class="index">1</span>Select a video above or from the games queue</li>
- <li class="box rich order span3 col"><span class="index">2</span>Enter as many words that describe what you see and hear</li>
- <li class="box rich order span3 col"><span class="index">3</span>If others enter the same word. You have a match. This is how you score points.</li>
- <li class="box rich order span3 col"><span class="index">4</span><a href="/registreren">Register</a> to save your points and read the <a href="/spelinstructies">instructions</a></li>
+ <li class="box rich order span3 col"><span class="index">1</span>Select a video above or from the queue</li>
+ <li class="box rich order span3 col"><span class="index">2</span>Enter as many words as you can to describe what you see and hear</li>
+ <li class="box rich order span3 col"><span class="index">3</span>Score points by entering the same words as other players.</li>
+ <li class="box rich order span3 col"><span class="index">4</span>Read the <a href="/spelinstructies">instructions</a> and <a href="/registreren">register</a> to save your score.</li>
</ol>
- <p id="silverlight-message" class="clear-both small">In order to be able to join <a href="http://www.silverlight.net/">Microsoft
- Silverlight plugin</a> has to be installed.</p>
+ <p id="silverlight-message" class="clear-both small">In order to be able to join <a href="http://www.silverlight.net/">Microsoft Silverlight plugin</a> has to be installed.</p>
</div>
<!--div id="prizebanner">
<a href="/spelinstructies#wedstrijdregels">
@@ -67,7 +64,7 @@
<div class="row equal-cols">
<div class="box span4 col">
- <header class="header rich"><h2 class="h3 reset">Topscorers <small>last 7 days</small></h2></header>
+ <header class="header rich"><h2 class="h3 reset">Top Scorers <small>last 7 days</small></h2></header>
<section class="reset scroll-box">
<ol class="unstyled reset">
<c:forEach items="${globalStats.topScores.topTen}" var="u" varStatus="status">
@@ -85,7 +82,7 @@
<!-- #tagcloud -->
<div class="box span4 col leading">
- <header class="header rich"><h2 class="h3 reset">Most populair tags <small>last 7 days</small></h2></header>
+ <header class="header rich"><h2 class="h3 reset">Most popular tags <small>last 7 days</small></h2></header>
<section class="reset fixed-low">
<ul class="tagcloud unstyled">
<c:forEach items="${globalStats.tagCloud}" var="tag">
View
4 src/main/webapp/WEB-INF/views/login.jsp
@@ -11,15 +11,15 @@
<div class="box span9">
<h1 class="h2 form-shift">Log in</h1>
<c:if test="${user.totalScore > 0}">
- <p class="form-shift">Your <nf:format number="${user.totalScore}" /> points will be added to your over all score after you're logged in.</p>
+ <p class="form-shift">Your <nf:format number="${user.totalScore}" /> score will be added to your overall score after you've logged in.</p>
</c:if>
<f:form commandName="loginForm" action="/inloggen" id="loginForm" class="form-horizontal">
<fieldset>
<f:errors path="*" cssClass="error-block" />
<div class="control-group">
- <f:label path="emailaddress" cssClass="control-label">Emailaddress</f:label>
+ <f:label path="emailaddress" cssClass="control-label">Email</f:label>
<div class="controls">
<f:input path="emailaddress" id="loginName" />
</div>
View
12 src/main/webapp/WEB-INF/views/profile.jsp
@@ -13,7 +13,7 @@
<c:choose>
<c:when test="${you}">
<h1>Your profile</h1>
-<p class="spaced">This profile is visible to all visitors on this site</p>
+<p class="spaced">This profile is visible to all visitors of this site</p>
</c:when>
<c:otherwise>
@@ -27,7 +27,7 @@
<div class="box-inner">
<img src="${profile.user.avatarUrl}" class="pull-left" />
<h2 class="pull-left h3"><c:out value="${profile.user.name}"/></h2>
- <p class="h1 reset clear-both"><nf:format number="${profile.user.totalScore}" /><span class="small">Points total</span></p>
+ <p class="h1 reset clear-both"><nf:format number="${profile.user.totalScore}" /><span class="small">Total score</span></p>
</div>
</div>
@@ -149,7 +149,7 @@
</c:if>
<c:if test="${not empty profile.user.gender.prettyLongName}">
<tr>
- <th class="span2 indent">Sexe</th>
+ <th class="span2 indent">Gender</th>
<td>${profile.user.gender.prettyLongName}</td>
</tr>
</c:if>
@@ -179,7 +179,7 @@
<!-- #rankings -->
<div id="rankings" class="box span4 col leading">
<header class="rich">
- <h2 class="h3 reset">Position current week</h2>
+ <h2 class="h3 reset">Rank this week</h2>
</header>
<section class="reset">
<ol class="unstyled reset">
@@ -230,11 +230,11 @@
<div id="pioneer-matches" class="box span4">
<header class="rich relative ${you && user.countNewPioneerMatches > 0 ? 'highlight' : ''}">
- <h2 class="h3 reset">Most recent pionieermatches</h2>
+ <h2 class="h3 reset">Most recent pioneer matches</h2>
<img src="/static/img/match-pioneer-l.png" title="" class="pull-out-right" />
</header>
<section class="reset">
- <p class="small box-inner"><strong>Pionieermatches</strong> are made when another player matches on a word you entered first. This can only happens once per word. But also outside a game-session.</p>
+ <p class="small box-inner"><strong>Pioneer matches</strong> are made when you are first to enter a word that gets matched. This can only happen once per word.</p>
<div class="row box-inner">
<h3 class="h5 span1 pull-left">match</h3>
<h3 class="h5 pull-left">in game</h3>
View
26 src/main/webapp/WEB-INF/views/recap.jsp
@@ -39,36 +39,36 @@
<td class="text-right"><nf:format number="${recap.summary.countEmptyTags * 5}" /></td>
</tr>
<tr>
- <td><img src="/static/img/match-dictionary.png" title="match with dictionary" /></td>
- <td><strong><nf:format number="${recap.summary.countDictionaryMatches}"/></strong> ${recap.summary.countDictionaryMatches == 1 ? 'dictionarymatch' : 'dictionarymatches' } <span class="help" title="A dictionary match will earn you 25 points">?</span></td>
+ <td></td>
+ <td><strong><nf:format number="${recap.summary.countDictionaryMatches}"/></strong> ${recap.summary.countDictionaryMatches == 1 ? 'dictionary match' : 'dictionary matches' } <span class="help" title="A dictionary match will earn you 25 points">?</span></td>
<td class="text-right"><nf:format number="${recap.summary.countDictionaryMatches * 25}" /></td>
</tr>
<tr>
- <td><img src="/static/img/match-social.png" title="match with other player" /></td>
- <td><strong><nf:format number="${recap.summary.countMatchingTags}"/></strong> ${recap.summary.countMatchingTags == 1 ? 'match' : 'matches' } met medespelers <span class="help" title="Entering the same tag as one of your co-players will earn you 50 points">?</span></td>
+ <td><img src="/static/img/match-social.png" alt="match with other player" /></td>
+ <td><strong><nf:format number="${recap.summary.countMatchingTags}"/></strong> ${recap.summary.countMatchingTags == 1 ? 'match' : 'matches' } with other players <span class="help" title="Entering the same tag as one of your co-players will earn you 50 points">?</span></td>
<td class="text-right"><nf:format number="${recap.summary.countMatchingTags * 50}" /></td>
</tr>
<tr>
- <td><img src="/static/img/match-pioneer.png" title="door uw ge�ntroduceerde match" /></td>
- <td><strong><nf:format number="${recap.summary.countPioneerTags}"/></strong> ${recap.summary.countPioneerTags == 1 ? 'pionieermatch' : 'pionieermatches' } <span class="help" title="If you were the first to enter a word then the first match will earn you 145 points">?</span></td>
+ <td><img src="/static/img/match-pioneer.png" alt="Pioneer match" /></td>
+ <td><strong><nf:format number="${recap.summary.countPioneerTags}"/></strong> ${recap.summary.countPioneerTags == 1 ? 'pioneer match' : 'pioneer matches' } <span class="help" title="If you were the first to enter a word then the first match will earn you 145 points">?</span></td>
<td class="text-right"><nf:format number="${recap.summary.countPioneerTags * 100}" /></td>
</tr>
<tr>
<td></td>
- <td><strong>Points total</strong></td>
+ <td><strong>Total score</strong></td>
<td class="text-right"><nf:format number="${recap.ownerScore}" /></td>
</tr>
</table>
- <p class="small spaced-min">Below 'Your tags' on the right you can find a more detailled description of every match.</p>
+ <p class="small spaced-min">On the right, below 'Your tags', you can find a more detailed description of each match.</p>
- <h3>Earn more points?</h3>
- <p>Challenge friends and improve your changes to a higher score <span class="help" title="If you were the first to enter a word then the first match will earn you 145 points">?</span></p>
+ <h3>Want to earn even more points?</h3>
+ <p>Challenge your friends and improve your chances at a higher score <span class="help" title="If you were the first to enter a word then the first match will earn you 145 points">?</span></p>
<!-- AddThis Button BEGIN -->
<div id="addthis-bar" class="addthis_toolbox addthis_default_style spaced reserved-space"
addthis:url="http://waisda.nl/start-game/${recap.game.video.id}"
- addthis:title="Ik heb zojuist ${recap.ownerScore} punten behaald door ${fn:length(recap.tagEntries)} ${fn:length(recap.tagEntries) == 1 ? 'woord' : 'woorden'} aan &quot;${recap.game.video.title}&quot; toe te voegen #woordentikkertje"
- addthis:description="Speelt u mee?">
+ addthis:title="I just scored ${recap.ownerScore} points by adding ${fn:length(recap.tagEntries)} ${fn:length(recap.tagEntries) == 1 ? 'word' : 'words'} to &quot;${recap.game.video.title}&quot; #woordentikkertje"
+ addthis:description="Do you want to play?">
<a class="addthis_button_preferred_1"></a>
<a class="addthis_button_preferred_2"></a>
<a class="addthis_button_preferred_3"></a>
@@ -109,7 +109,7 @@
<header class="rich extended">
<h1 id="playerSessionScore" class="pull-left board span2"><nf:format number="${recap.ownerScore}"/></h1>
<h2 id="playerPosition" class="pull-right reset">
- <small class="h4">Position</small>
+ <small class="h4">Rank</small>
<span id="playerPositionMine">${recap.ownerPosition + 1}</span> / <span id="playerPositionTotal" class="h4">${fn:length(recap.participants)}</span>
</h2>
</header>
View
6 src/main/webapp/WEB-INF/views/register.jsp
@@ -11,13 +11,13 @@
<div class="box span9">
<h1 class="h2 form-shift">Register</h1>
<c:if test="${user.totalScore > 0}">
- <p class="form-shift">Your <nf:format number="${user.totalScore}" /> will be added after you've registered.</p>
+ <p class="form-shift">Your <nf:format number="${user.totalScore}" /> points will be added after you've registered.</p>
</c:if>
<f:form commandName="form" autocomplete="off" id="meedoenForm" class="form-horizontal">
<fieldset>
<c:set var="emailErrors"><f:errors path="email"/></c:set>
<div class="control-group ${not empty emailErrors ? 'error' : ''}">
- <f:label path="email" cssClass="control-label">Emailaddress</f:label>
+ <f:label path="email" cssClass="control-label">Email address</f:label>
<div class="controls" >
<f:input path="email" tabindex="4" cssClass="input-xlarge" /><br/>
<f:errors path="email" cssClass="help-inline"/>
@@ -67,7 +67,7 @@
<a href="#" onclick="document.getElementById('meedoenForm').submit(); return false" id="submitMeedoen" class="btn btn-primary btn-large" tabindex="9">Start</a>
</div>
- <input type="submit" value="Beginnen" tabindex="10" style="position:absolute;top:0;left:-10000px;"/>
+ <input type="submit" value="Start" tabindex="10" style="position:absolute;top:0;left:-10000px;"/>
</fieldset>
</f:form>
</div>
View
10 src/main/webapp/WEB-INF/views/tag.jsp
@@ -11,12 +11,12 @@
<h1>Tag <span class="mark">${tagEntryStats.normalizedTag}</span></h1>
-<p>Voor het eerst gebruikt door
+<p>Used first by
<a href="/profiel/${tagEntryStats.firstEntry.owner.id}">${tagEntryStats.firstEntry.owner.name}</a>
-bij <a href="/start-game/${tagEntryStats.firstEntry.game.video.id}">${tagEntryStats.firstEntry.game.video.title}</a>
-op ${tagEntryStats.firstEntry.prettyCreationDate}</p>
+during <a href="/start-game/${tagEntryStats.firstEntry.game.video.id}">${tagEntryStats.firstEntry.game.video.title}</a>
+on ${tagEntryStats.firstEntry.prettyCreationDate}</p>
-<h2 class="spaced">Fragmenten waarin <span class="mark">${tagEntryStats.normalizedTag}</span> voorkomt</h2>
+<h2 class="spaced">Clips featuring <span class="mark">${tagEntryStats.normalizedTag}</span></h2>
<ul class="row equal-cols unstyled">
<c:forEach items="${tagEntryStats.videoStats}" var="vs">
<li class="span2">
@@ -29,7 +29,7 @@ op ${tagEntryStats.firstEntry.prettyCreationDate}</p>
<h3 class="h5">${vs.video.title}</h3>
</a>
<p class="small">
- Ook getagd: <c:forEach items="${vs.topTags}" var="topTag" varStatus="topTagStatus"><a href="/tag/${topTag}" class="reset">${topTag}</a><c:if test="${topTagStatus.index < fn:length(vs.topTags) - 1}">, </c:if></c:forEach>
+ Also tagged: <c:forEach items="${vs.topTags}" var="topTag" varStatus="topTagStatus"><a href="/tag/${topTag}" class="reset">${topTag}</a><c:if test="${topTagStatus.index < fn:length(vs.topTags) - 1}">, </c:if></c:forEach>
</p>
</div>
</li>
View
6 src/main/webapp/WEB-INF/views/wachtwoord-veranderen.jsp
@@ -12,7 +12,7 @@
<h1 class="h2 form-shift">Change password</h1>
<c:choose>
<c:when test="${success}">
- <p class="help-block form-shift">Your password has been changed. Please do <a href="/inloggen">login</a> with your new password.</p>
+ <p class="help-block form-shift">Your password has been changed. Please <a href="/inloggen">log in</a> with your new password.</p>
</c:when>
<c:when test="${errorMessage != null}">
<div class="error-block">${errorMessage}</div>
@@ -22,7 +22,7 @@
<fieldset>
<f:errors path="*" cssClass="error-block" />
<c:if test="${form != null}">
- <p class="help-block form-shift spaced-min">The link in your email provides to change your password once:</p>
+ <p class="help-block form-shift spaced-min">The link in your email allows you to change your password once:</p>
<input type="hidden" value="${form.id}" id="id" name="id" />
<input type="hidden" value="${form.plainTextKey}" id="plainTextKey" name="plainTextKey"/>
<div class="control-group">
@@ -56,6 +56,6 @@
</tt:body>
<script type="text/javascript">
- $('password').focus();
+ $('#password').focus();
</script>
</tt:html>
View
10 src/main/webapp/WEB-INF/views/wachtwoord-vergeten.jsp
@@ -8,16 +8,16 @@
<tt:body pageName="wachtwoord-vergeten">
<div class="box span9">
- <h1 class="h2 form-shift">Password forgotten</h1>
+ <h1 class="h2 form-shift">Forgot your password?</h1>
<c:choose>
<c:when test="${form.user == null}">
- <p class="help-block form-shift">If you forgot your password then please fill out below the emailaddress you provided during registration.
- You will receive an email with instructions how to change your password.</p>
+ <p class="help-block form-shift">If you forgot your password then please fill out the email address you provided during registration below.
+ You will receive an email with instructions on how to change your password.</p>
<f:form commandName="form" action="/wachtwoord-vergeten" id="form"
class="form-horizontal" method="post">
<fieldset>
<div class="control-group">
- <f:label path="email" class="control-label">Emailaddress</f:label>
+ <f:label path="email" class="control-label">Email address</f:label>
<div class="controls">
<f:input path="email" id="email" /><br/>
<f:errors path="*" cssClass="help-inline" />
@@ -44,6 +44,6 @@
</tt:body>
<script type="text/javascript">
- $('email').focus();
+ $('#email').focus();
</script>
</tt:html>
View
4 src/main/webapp/static/script/taggingHistory.js
@@ -11,10 +11,10 @@ var TaggingHistory = base2.Base.extend({
el = jQuery('<div/>', { 'class' : 'tag', 'id' : this.idPrefix + tag.id });
el.append(jQuery('<span/>', { 'class' : 'points', 'text': '+' + tag.score }));
if (tag.matchingTag) {
- var ownerName = tag.matchingTagOwnerName ? tag.matchingTagOwnerName : 'Anoniempje';
+ var ownerName = tag.matchingTagOwnerName ? tag.matchingTagOwnerName : 'Guest';
var title = 'match met ' + tag.matchingTag + ' van ' + ownerName;
if (tag.pioneer) {
- title += '. You have introduced this tag';
+ title += '. You introduced this tag';
}
var iconSrc = '/static/img/' + (tag.pioneer ? 'match-pioneer.png' : 'match-social.png');
el.append(jQuery('<img/>', { 'class' : 'icon', 'title' : title, 'src' : iconSrc }));
View
2 src/main/webapp/static/styles/css/components.css
@@ -283,6 +283,8 @@ section.main {
padding: 0 9px;
}
.channel .img {
+ min-height: 78px;
+ background-color: #000000;
padding: 0;
margin-bottom: 4px;
position: relative;
View
2 src/main/webapp/static/styles/less/components.less
@@ -205,6 +205,8 @@ section.main {
padding:0 9px;
}
.img{
+ min-height:78px;
+ background-color:@black;
& * {
padding:0;
}

0 comments on commit 0625d54

Please sign in to comment.