Author: [email protected]
Date: Tue Aug 9 13:57:55 2011
New Revision: 1299
Log:
Added:
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/AnswerResult.java
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/SurveyResult.java
Modified:
sandbox/ivol/ntlm/pom.xml
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/SurveyStore.java
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/Answer.java
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/Survey.java
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyColumnFamilyProvider.java
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyServiceImpl.java
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyStoreImpl.java
sandbox/ivol/ntlm/src/main/resources/jsp/enquete.jsp
sandbox/ivol/ntlm/src/main/resources/static/css/cr.css
Modified: sandbox/ivol/ntlm/pom.xml
==============================================================================
--- sandbox/ivol/ntlm/pom.xml (original)
+++ sandbox/ivol/ntlm/pom.xml Tue Aug 9 13:57:55 2011
@@ -21,7 +21,7 @@
<parent>
<groupId>org.amdatu.auth</groupId>
<artifactId>org.amdatu.auth</artifactId>
- <version>0.2.0-SNAPSHOT</version>
+ <version>0.2.1-SNAPSHOT</version>
</parent>
<artifactId>org.amdatu.auth.ntlm</artifactId>
<packaging>bundle</packaging>
@@ -121,4 +121,24 @@
</plugin>
</plugins>
</build>
+
+ <profiles>
+ <profile>
+ <!-- Profile that will copy the jar to the configured
amdatu.deploy.directory when
+ the deploy profile is activated -->
+ <id>deploy</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ <build>
+ <defaultGoal>install</defaultGoal>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
</project>
Modified: sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/SurveyStore.java
==============================================================================
--- sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/SurveyStore.java
(original)
+++ sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/SurveyStore.java
Tue Aug 9 13:57:55 2011
@@ -1,8 +1,18 @@
package org.amdatu.auth.ntlm;
+import java.util.List;
+
+import org.amdatu.auth.ntlm.domain.Answer;
import org.amdatu.auth.ntlm.domain.Survey;
+import org.amdatu.auth.ntlm.domain.SurveyResult;
import org.json.JSONException;
public interface SurveyStore {
Survey loadSurvey(String surveyId) throws JSONException;
+
+ void addAnswers(String surveyId, List<Answer> answers, String username);
+
+ SurveyResult loadAnswers(String surveyId) throws JSONException;
+
+ boolean hasSubmitted(String surveyId, String username);
}
Modified:
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/Answer.java
==============================================================================
--- sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/Answer.java
(original)
+++ sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/Answer.java
Tue Aug 9 13:57:55 2011
@@ -12,20 +12,23 @@
private String m_questionId;
@XmlAttribute(name = "answer")
- private String m_answer;
+ private String[] m_answer;
- public Answer() {
+ public Answer(String questionId, String[] answer) {
+ m_questionId = questionId;
+ m_answer = answer;
}
+
public String getQuestionId() {
return m_questionId;
}
public void setQuestionId(String questionId) {
m_questionId = questionId;
}
- public String getAnswer() {
+ public String[] getAnswer() {
return m_answer;
}
- public void setAnswer(String answer) {
+ public void setAnswer(String[] answer) {
m_answer = answer;
}
Added:
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/AnswerResult.java
==============================================================================
--- (empty file)
+++
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/AnswerResult.java
Tue Aug 9 13:57:55 2011
@@ -0,0 +1,49 @@
+package org.amdatu.auth.ntlm.domain;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name = "answerResult")
+public class AnswerResult {
+ @XmlAttribute(name = "id")
+ private String m_id;
+
+ @XmlAttribute(name = "description")
+ private String m_description;
+
+ private List<String> m_answers;
+
+ public AnswerResult() {
+ }
+
+ public String getId() {
+ return m_id;
+ }
+
+ public void setId(String id) {
+ m_id = id;
+ }
+
+ public String getDescription() {
+ return m_description;
+ }
+
+ public void setDescription(String description) {
+ m_description = description;
+ }
+
+ @XmlElementWrapper(name="answers")
+ @XmlElements(@XmlElement(name="answer"))
+ public List<String> getAnswers() {
+ return m_answers;
+ }
+
+ public void setAnswers(List<String> answers) {
+ m_answers = answers;
+ }
+}
Modified:
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/Survey.java
==============================================================================
--- sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/Survey.java
(original)
+++ sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/Survey.java
Tue Aug 9 13:57:55 2011
@@ -21,13 +21,13 @@
public class Survey {
@XmlAttribute(name = "id")
private String m_id;
-
+
@XmlElement(name = "question")
private List<Question> m_questions;
-
+
public Survey() {
}
-
+
public String getId() {
return m_id;
}
@@ -43,7 +43,16 @@
public List<Question> getQuestions() {
return m_questions;
}
-
+
+ public Question getQuestion(String questionId) {
+ for (Question question : m_questions) {
+ if (question.getId().equals(questionId)) {
+ return question;
+ }
+ }
+ return null;
+ }
+
public void loadQuestions(HSuperColumn<String, String, String> questionSC)
throws JSONException {
List<HColumn<String, String>> questions = questionSC.getColumns();
m_questions = new ArrayList<Question>();
@@ -51,12 +60,12 @@
m_questions.add(Question.load(question));
}
}
-
+
public String toJSON() throws JSONException {
JSONObject survey = new JSONObject();
survey.put("id", getId());
JSONArray questions = new JSONArray(getQuestions());
-
+
survey.put("questions", questions);
return new JSONObject().put("survey", survey).toString();
}
Added:
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/SurveyResult.java
==============================================================================
--- (empty file)
+++
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/SurveyResult.java
Tue Aug 9 13:57:55 2011
@@ -0,0 +1,44 @@
+package org.amdatu.auth.ntlm.domain;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+
+@XmlRootElement(name = "surveyResult")
+@XmlAccessorType(XmlAccessType.NONE)
+public class SurveyResult {
+ @XmlAttribute(name = "id")
+ private String m_id;
+
+ @XmlElement(name = "question")
+ private List<AnswerResult> m_answers;
+
+ public String getId() {
+ return m_id;
+ }
+
+ public void setId(String id) {
+ m_id = id;
+ }
+
+ public List<AnswerResult> getAnswers() {
+ return m_answers;
+ }
+
+ public void setAnswers(List<AnswerResult> answers) {
+ m_answers = answers;
+ }
+
+ public void addAnswer(AnswerResult answerResult) {
+ if (m_answers == null) {
+ m_answers = new ArrayList<AnswerResult>();
+ }
+ m_answers.add(answerResult);
+ }
+}
Modified:
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyColumnFamilyProvider.java
==============================================================================
---
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyColumnFamilyProvider.java
(original)
+++
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyColumnFamilyProvider.java
Tue Aug 9 13:57:55 2011
@@ -11,6 +11,8 @@
* ColumnFamily that stores the survey definitions.
*/
public static final String CF_SURVEY = "Survey";
+ public static final String CF_SURVEY_ANSWERS = "SurveyAnswers";
+ public static final String CF_SURVEY_USERS = "SurveyUsers";
public ColumnFamilyDefinition[] getColumnFamilies() {
return new ColumnFamilyDefinition[] {
@@ -19,7 +21,18 @@
new String[]
{CassandraPersistenceManager.DEFAULT_KEYSPACE},
ColumnType.SUPER,
CompareType.BYTESTYPE,
- CompareType.BYTESTYPE)};
+ CompareType.BYTESTYPE),
+ new ColumnFamilyDefinition(
+ CF_SURVEY_ANSWERS,
+ new String[]
{CassandraPersistenceManager.DEFAULT_KEYSPACE},
+ ColumnType.SUPER,
+ CompareType.BYTESTYPE,
+ CompareType.BYTESTYPE),
+ new ColumnFamilyDefinition(
+ CF_SURVEY_USERS,
+ new String[]
{CassandraPersistenceManager.DEFAULT_KEYSPACE},
+ ColumnType.STANDARD,
+ CompareType.BYTESTYPE,
+ null)};
}
-
}
Modified:
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyServiceImpl.java
==============================================================================
---
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyServiceImpl.java
(original)
+++
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyServiceImpl.java
Tue Aug 9 13:57:55 2011
@@ -1,5 +1,7 @@
package org.amdatu.auth.ntlm.service;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
@@ -14,44 +16,81 @@
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
+import jcifs.smb.NtlmPasswordAuthentication;
+
import org.amdatu.auth.ntlm.SurveyService;
import org.amdatu.auth.ntlm.SurveyStore;
+import org.amdatu.auth.ntlm.domain.Answer;
import org.amdatu.auth.ntlm.domain.Survey;
+import org.amdatu.auth.ntlm.domain.SurveyResult;
@Path("survey")
public class SurveyServiceImpl implements SurveyService {
private volatile SurveyStore m_surveyStore;
@GET
- @Path("submitted")
+ @Path("submitted/{id}")
@Produces({MediaType.TEXT_PLAIN})
- public String hasSubmitted(@Context final HttpServletRequest request) {
- Object session = request.getSession().getAttribute("NtlmHttpAuth");
-
- return "1";
+ public String hasSubmitted(@Context final HttpServletRequest request,
@PathParam("id") final String surveyId) {
+ NtlmPasswordAuthentication session = (NtlmPasswordAuthentication)
request.getSession().getAttribute("NtlmHttpAuth");
+ String userName = session.getUsername();
+ if (m_surveyStore.hasSubmitted(surveyId, userName)) {
+ return "1";
+ } else {
+ return "0";
+ }
+ }
+
+ @GET
+ @Path("username")
+ @Produces({MediaType.TEXT_PLAIN})
+ public String status(@Context final HttpServletRequest request) {
+ NtlmPasswordAuthentication session = (NtlmPasswordAuthentication)
request.getSession().getAttribute("NtlmHttpAuth");
+ return session.getUsername();
}
@POST
@Consumes("application/x-www-form-urlencoded")
public void addSurvey(@Context final HttpServletRequest request) {
- // TODO: verify that this user did not yet submit this survey
- try {
- Map parameters = request.getParameterMap();
- String surveyId = ((String[]) parameters.get("surveyId"))[0];
- Survey survey = m_surveyStore.loadSurvey(surveyId);
- for (Object key : parameters.keySet()) {
- String value = ((String[]) parameters.get(key))[0];
+ // Get the username from NTLM authentication
+ NtlmPasswordAuthentication session = (NtlmPasswordAuthentication)
request.getSession().getAttribute("NtlmHttpAuth");
+ String userName = session.getUsername();
+ if (userName != null && !"".equals(userName)) {
+ try {
+ Map parameters = request.getParameterMap();
+ String surveyId = ((String[]) parameters.get("surveyId"))[0];
+ List<Answer> answers = new ArrayList<Answer>();
+ for (Object key : parameters.keySet()) {
+ if (!"surveyId".equals(key.toString())) {
+ // Answers can be multi-valued
+ String[] value = ((String[]) parameters.get(key));
+ answers.add(new Answer(key.toString(), value));
+ }
+ }
- // Now persist the answers
+ m_surveyStore.addAnswers(surveyId, answers, userName);
+ }
+ catch (Exception e) {
+ throw new WebApplicationException(e,
Response.Status.INTERNAL_SERVER_ERROR);
}
}
+ }
+
+ @GET
+ @Path("answers/{id}")
+ @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
+ public Response getSurveyAnswers(@Context final HttpServletRequest
request, @PathParam("id") final String surveyId) {
+ try {
+ SurveyResult survey = m_surveyStore.loadAnswers(surveyId);
+ return Response.ok(survey).build();
+ }
catch (Exception e) {
throw new WebApplicationException(e,
Response.Status.INTERNAL_SERVER_ERROR);
}
}
@GET
- @Path("{id}")
+ @Path("questions/{id}")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response getSurvey(@Context final HttpServletRequest request,
@PathParam("id") final String surveyId) {
try {
@@ -62,4 +101,6 @@
throw new WebApplicationException(e,
Response.Status.INTERNAL_SERVER_ERROR);
}
}
+
+
}
Modified:
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyStoreImpl.java
==============================================================================
---
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyStoreImpl.java
(original)
+++
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyStoreImpl.java
Tue Aug 9 13:57:55 2011
@@ -1,39 +1,44 @@
package org.amdatu.auth.ntlm.service;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import me.prettyprint.hector.api.beans.HColumn;
import me.prettyprint.hector.api.beans.HSuperColumn;
import org.amdatu.auth.ntlm.SurveyStore;
import org.amdatu.auth.ntlm.domain.Answer;
+import org.amdatu.auth.ntlm.domain.AnswerResult;
import org.amdatu.auth.ntlm.domain.Question;
import org.amdatu.auth.ntlm.domain.Survey;
+import org.amdatu.auth.ntlm.domain.SurveyResult;
import org.amdatu.cassandra.persistencemanager.CassandraPersistenceManager;
import org.json.JSONException;
public class SurveyStoreImpl implements SurveyStore {
public final static String SC_QUESTIONS = "Questions";
public final static String SC_ANSWERS = "Answers";
-
+
private volatile CassandraPersistenceManager m_pm;
-
+
public void start() throws JSONException {
// Add a test survey
addTestSurvey();
-
+
// Retieve the survey
Survey survey = loadSurvey("1");
-
-
-
+
List<Question> questions = survey.getQuestions();
questions.get(0);
}
-
+
public Survey loadSurvey(String surveyId) throws JSONException {
Survey survey = new Survey();
survey.setId(surveyId);
- List<HSuperColumn<String, String, String>> superColumns =
m_pm.getSuperColumns(SurveyColumnFamilyProvider.CF_SURVEY, surveyId,
String.class);
+ List<HSuperColumn<String, String, String>> superColumns =
+ m_pm.getSuperColumns(SurveyColumnFamilyProvider.CF_SURVEY,
surveyId, String.class);
for (HSuperColumn<String, String, String> superColumn : superColumns) {
if (superColumn.getName().equals(SurveyStoreImpl.SC_QUESTIONS)) {
survey.loadQuestions(superColumn);
@@ -41,34 +46,136 @@
}
return survey;
}
+
+ public boolean hasSubmitted(String surveyId, String username) {
+ String submitted =
+ m_pm.getValue(SurveyColumnFamilyProvider.CF_SURVEY_USERS,
surveyId, null, username, String.class);
+ return "true".equals(submitted);
+ }
+
+ public void addAnswers(String surveyId, List<Answer> answers, String
username) {
+ if (hasSubmitted(surveyId, username)) {
+ // The user already submitted this survey!
+ return;
+ }
+
+ // Answers are stored in the CF_SURVEY_ANSWERS ColumnFamily. This CF
is of type SuperColumn
+ // and contains a row for each survey with a row key that equals the
survey id. Each row consists
+ // of a SuperColumn per submitted survey and each SuperColumn contains
a set of columns with a name
+ // that equals the question id and the value being the answer.
+ // First generate a unique id for the next SuperColumn to add
+ List<HSuperColumn<String, String, String>> superColumns =
+ m_pm.getSuperColumns(SurveyColumnFamilyProvider.CF_SURVEY_ANSWERS,
surveyId, String.class);
+ String id = "user-" + (superColumns.size() + 1);
+
+ for (Answer answer : answers) {
+ // Answers are String arrays
+ m_pm.setValue(SurveyColumnFamilyProvider.CF_SURVEY_ANSWERS,
surveyId, id, answer.getQuestionId(),
+ answer.getAnswer());
+ }
+
+ // Now remember that this user submitted this survey. Do this in a
different ColumnFamily, such
+ // that the users answers are anonymous
+ m_pm.setValue(SurveyColumnFamilyProvider.CF_SURVEY_USERS, surveyId,
null, username, "true");
+ }
+
+ public SurveyResult loadAnswers(String surveyId) throws JSONException {
+ List<HSuperColumn<String, String, String[]>> superColumns =
+ m_pm.getSuperColumns(SurveyColumnFamilyProvider.CF_SURVEY_ANSWERS,
surveyId, String[].class);
+ Survey survey = loadSurvey(surveyId);
+
+ // Each SuperColumn represents a submitted survey including answers
+ Map<Question, List<String[]>> results = new HashMap<Question,
List<String[]>>();
+ for (HSuperColumn<String, String, String[]> superColumn :
superColumns) {
+ List<HColumn<String, String[]>> columns = superColumn.getColumns();
+ for (HColumn<String, String[]> column : columns) {
+ String questionId = column.getName();
+ String[] answer = column.getValue();
+
+ Question question = survey.getQuestion(questionId);
+ if (question != null) {
+ List<String[]> answers = results.get(question);
+ if (answers == null) {
+ answers = new ArrayList<String[]>();
+ }
+ answers.add(answer);
+ results.put(question, answers);
+ }
+ }
+ }
+
+ SurveyResult surveyResult = new SurveyResult();
+ surveyResult.setId(surveyId);
+ for (Question question : results.keySet()) {
+ AnswerResult result = new AnswerResult();
+ result.setId(question.getId());
+ result.setDescription(question.getDescription());
+ if (question.getType().equals("check") ||
question.getType().equals("radio")) {
+ // Generate statistics
+ result.setAnswers(getStats(question.getValues(),
results.get(question)));
+ }
+ else {
+ result.setAnswers(toSingleList(results.get(question)));
+ }
+ surveyResult.addAnswer(result);
+ }
+ return surveyResult;
+ }
-
-
- private void addAnswer(Survey survey, Answer answer) {
-
+ private List<String> toSingleList(List<String[]> list) {
+ List<String> values = new ArrayList<String>();
+ for (String[] v : list) {
+ values.add(v[0]);
+ }
+ return values;
}
+ private List<String> getStats(List<String> values, List<String[]> answers)
{
+ List<String> stats = new ArrayList<String>();
+ for (String value : values) {
+ int count = 0;
+ for (String[] answer : answers) {
+ for (String a : answer) {
+ if (a.equals(value)) {
+ count++;
+ }
+ }
+ }
+ stats.add(value + " - " + count);
+ }
+ return stats;
+ }
+
private void addTestSurvey() throws JSONException {
Question q1 = new Question();
q1.setDescription("Wil je salarisverhoging?");
q1.setType("radio");
q1.addValue("Ja");
q1.addValue("Nee");
-
+
Question q2 = new Question();
- q2.setDescription("Wil vind je er allemaal van?");
+ q2.setDescription("Wat zou de OR wat jou betreft moeten aankaarten?");
q2.setType("open");
-
+
Question q3 = new Question();
- q3.setDescription("Wat vind je belangrijk?");
+ q3.setDescription("Van welke onderwerpen onder vind je dat de OR zich
zou moeten bemoeien?");
q3.setType("check");
q3.addValue("MTO");
q3.addValue("Arbeidsvoorwaarden");
- q3.addValue("Lease auto");
-
+ q3.addValue("13e maand");
+ q3.addValue("Klimaatbeheersing");
+
+ Question q4 = new Question();
+ q4.setDescription("Vind je dat salarisverhogingen relatief of absoluut
zouden moeten zijn?");
+ q4.setType("radio");
+ q4.addValue("relatief");
+ q4.addValue("absoluut");
+ q4.addValue("geen (uitgesproken) mening");
+
String surveyId = "1";
m_pm.setValue(SurveyColumnFamilyProvider.CF_SURVEY, surveyId,
SC_QUESTIONS, "Q1", q1.toJSON());
m_pm.setValue(SurveyColumnFamilyProvider.CF_SURVEY, surveyId,
SC_QUESTIONS, "Q2", q2.toJSON());
m_pm.setValue(SurveyColumnFamilyProvider.CF_SURVEY, surveyId,
SC_QUESTIONS, "Q3", q3.toJSON());
+ m_pm.setValue(SurveyColumnFamilyProvider.CF_SURVEY, surveyId,
SC_QUESTIONS, "Q4", q4.toJSON());
}
}
Modified: sandbox/ivol/ntlm/src/main/resources/jsp/enquete.jsp
==============================================================================
--- sandbox/ivol/ntlm/src/main/resources/jsp/enquete.jsp (original)
+++ sandbox/ivol/ntlm/src/main/resources/jsp/enquete.jsp Tue Aug 9
13:57:55 2011
@@ -20,7 +20,6 @@
<c:set var="contextPath" value="${pageContext.request.contextPath}"/>
<c:set var="staticPath" value="${contextPath}/oauth-consumerregistry/static"/>
-<c:set var="ntlmUrl" value="${baseUrl}/rest/ntlm"/>
<c:set var="surveyUrl" value="${baseUrl}/rest/survey"/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
@@ -55,11 +54,8 @@
<div class="rightbox">
<p>
- <form action="/rest/survey" method="POST">
- <div id="survey"></div>
- <input type="hidden" name="surveyId" value="1"/>
-
- <input type="submit"
value="Versturen" />
+ <form id="form" action="/rest/survey" method="POST">
+ <div id="survey"></div>
</form>
</p>
</div>
@@ -69,83 +65,103 @@
<script type="text/javascript">
- function getUsername() {
- var url = "${ntlmUrl}/username";
- jQuery.ajax({
- url: url,
- type: "GET",
- async:true,
- success: function(response) {
- document.getElementById("username").innerHTML = response;
- }
+ function showUsername() {
+ var url = "${surveyUrl}/username";
+ jQuery.ajax({
+ url: url,
+ type: "GET",
+ async:true,
+ success: function(response) {
+ document.getElementById("username").innerHTML = response;
}
+ }
);
}
- function hasSubmittedSurveyBefore() {
- var url = "${surveyUrl}/submitted";
- jQuery.ajax({
- url: url,
- type: "GET",
- async:true,
- success: function(response) {
- if (response == "1") {
- //alert("Deze enquete heb je reeds ingevuld");
- } else {
-
- }
- }
- }
+ function loadSurveyForm() {
+ var submitted = false;
+ var url = "${surveyUrl}/submitted/" + surveyId;
+ jQuery.ajax({
+ url: url,
+ type: "GET",
+ async:true,
+ success: function(response) {
+ if (response == "1") {
+ var html = "Je hebt deze enquete reeds ingevuld. Je kunt de enquete
slechts eenmalig invullen. Bedankt voor je medewerking!";
+ document.getElementById("survey").innerHTML = html;
+ } else {
+ showSurvey();
+ }
+ }
+ }
);
}
- function loadSurvey() {
- var url = "${surveyUrl}/1";
- jQuery.ajax({
- url: url,
- type: "GET",
- async:true,
- success: function(data, textStatus, jqXHR) {
- var survey = jQuery.parseJSON(jqXHR.responseText).survey;
- var questions = survey.question;
- var html = "<ul>";
- for (i=0; i<questions.length;i++) {
- var id = questions[i].id;
- var des = questions[i].description;
- var type = questions[i].type;
- var values = questions[i].value;
- html += questionToHtml(id, des, type, values);
- }
- html += "</ul>";
- document.getElementById("survey").innerHTML = html;
- }
- }
- );
- }
-
- function questionToHtml(id, des, type, values) {
- var html = "<li>";
- html += des + <br/>;
- if (type == "radio") {
- for (j=0; j<values.length; j++) {
- html += "<br/><input type='radio' name='" + id + "' value='" +
values[j] + "'>" + values[j];
- }
- } else if (type == "check") {
- for (j=0; j<values.length; j++) {
- html += "<br/><input type='checkbox' name='" + id + "' value='" +
values[j] + "'>" + values[j];
+ function showSurvey() {
+ var url = "${surveyUrl}/questions/" + surveyId;
+ jQuery.ajax({
+ url: url,
+ type: "GET",
+ async:true,
+ success: function(data, textStatus, jqXHR) {
+ var survey = jQuery.parseJSON(jqXHR.responseText).survey;
+ var questions = survey.question;
+ var html = "<ul>";
+ for (i=0; i<questions.length;i++) {
+ var id = questions[i].id;
+ var des = questions[i].description;
+ var type = questions[i].type;
+ var values = questions[i].value;
+ html += questionToHtml(id, des, type, values);
}
- } else {
- html += "<br/><textarea rows='3' cols='60' name='" + id +
"'></textarea>";
+ html += "</ul>";
+ html += "<input type='hidden' name='surveyId' value='" + surveyId +
"'/>";
+ html += "<input type='button' onclick='javascript:submitSurvey();'
value='Versturen' />"
+ document.getElementById("survey").innerHTML = html;
}
+ });
+ }
- html += "</li>";
- return html;
+ function submitSurvey() {
+ document.getElementById("form").submit();
+ var html = "Je antwoorden zijn verstuurd. Bedankt voor je medewerking!";
+ document.getElementById("survey").innerHTML = html;
+ }
+
+ function questionToHtml(id, des, type, values) {
+ var html = "<li>";
+ html += des + <br/>;
+ if (type == "radio") {
+ for (j=0; j<values.length; j++) {
+ html += "<br/><input type='radio' name='" + id + "' value='" +
values[j] + "'>" + values[j];
+ }
+ } else if (type == "check") {
+ for (j=0; j<values.length; j++) {
+ html += "<br/><input type='checkbox' name='" + id + "' value='" +
values[j] + "'>" + values[j];
+ }
+ } else {
+ html += "<br/><textarea rows='3' cols='60' name='" + id +
"'></textarea>";
}
+ html += "</li>";
+ return html;
+ }
+
+ function getParameter(name) {
+ name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
+ var regexS = "[\\?&]"+name+"=([^&#]*)";
+ var regex = new RegExp( regexS );
+ var results = regex.exec( window.location.href );
+ if( results == null )
+ return "";
+ else
+ return results[1];
+ }
+
+ var surveyId = getParameter("id");
- getUsername();
- hasSubmittedSurveyBefore();
- loadSurvey();
+ showUsername();
+ loadSurveyForm();
</script>
Modified: sandbox/ivol/ntlm/src/main/resources/static/css/cr.css
==============================================================================
--- sandbox/ivol/ntlm/src/main/resources/static/css/cr.css (original)
+++ sandbox/ivol/ntlm/src/main/resources/static/css/cr.css Tue Aug 9
13:57:55 2011
@@ -19,7 +19,7 @@
body {
margin: 0px;
- padding: 0;
+ padding: 10;
background: #000000;
font-family: bookman old style;
font-size: 14px;
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits