Commit 584074d6 authored by Frank Bergmann's avatar Frank Bergmann

- Simple Survey:

  - Added changes for project scoring:
  - Beautified code
parent b63de946
......@@ -17,6 +17,7 @@ ad_library {
proc_doc survsimp_question_display {
question_id
{edit_previous_response_p "f"}
{previous_response_id ""}
} "
Returns a string of HTML to display for a question,
suitable for embedding in a form.
......@@ -79,6 +80,23 @@ proc_doc survsimp_question_display {
)
"
if {"" != $previous_response_id} {
# We are editing an explicitely given response
set prev_response_query "
select choice_id,
boolean_answer,
clob_answer,
number_answer,
varchar_answer,
date_answer,
attachment_file_name
from survsimp_question_responses
where question_id = :question_id
and response_id = :previous_response_id
"
}
set count 0
db_foreach survsimp_response $prev_response_query {
incr count
......
......@@ -17,7 +17,7 @@
</if>
<form enctype=multipart/form-data method="post" action="@package_url;noquote@/process-response">
<%= [export_form_vars survey_id related_object_id related_context_id task_id return_url] %>
<%= [export_form_vars survey_id response_id related_object_id related_context_id task_id return_url] %>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td class="tabledata">
......
......@@ -16,6 +16,7 @@ if {![info exists task]} {
} {
survey_id:integer,notnull
{ response_id:integer "" }
{ related_object_id:integer "" }
{ related_context_id:integer "" }
return_url:optional
......@@ -62,6 +63,8 @@ if {![info exists task]} {
if {![info exists return_url]} { set return_url [im_url_with_query] }
set message ""
set response_id ""
# Determine the simple-survey from the "Header" of the panel.
# This is not the intended use of the "Header", but comes in very handy.
set wf_panel_header [db_string panel_header "
......@@ -97,9 +100,9 @@ if {![info exists task]} {
ad_require_permission $survey_id survsimp_take_survey
set user_id [ad_maybe_redirect_for_registration]
set package_url "/simple-survey"
db_1row survey_info "select name, description, single_response_p, single_editable_p, display_type
from survsimp_surveys where survey_id = :survey_id"
......@@ -138,9 +141,13 @@ if {$single_response_p == "t" && $single_editable_p == "f"} {
set modification_allowed_p "t"
}
if {"" != $response_id} {
set edit_previous_response_p "t"
}
# build a list containing the HTML (generated with survsimp_question_display) for each question
set rownum 0
set questions [list]
db_foreach question_ids_select {
......@@ -150,7 +157,7 @@ db_foreach question_ids_select {
and active_p = 't'
order by sort_key
} {
lappend questions [survsimp_question_display $question_id $edit_previous_response_p]
lappend questions [survsimp_question_display $question_id $edit_previous_response_p $response_id]
}
# return_url is used for infoshare - if it is set
......
......@@ -17,6 +17,7 @@ ad_page_contract {
@cvs-id $Id$
} {
survey_id:integer,notnull
{ response_id:integer "" }
{ related_object_id:integer "" }
{ related_context_id:integer "" }
return_url:optional
......@@ -129,11 +130,14 @@ ad_page_contract {
ad_require_permission $survey_id survsimp_take_survey
set user_id [ad_verify_and_get_user_id]
set response_id [db_nextval acs_object_id_seq]
set creation_ip [ad_conn peeraddr]
set create_response_p 0
if {"" == $response_id} {
set response_id [db_nextval acs_object_id_seq]
set create_response_p 1
}
# -----------------------------------------------------
# Workflow Action
......@@ -160,6 +164,7 @@ if {"" != $task_id} {
db_transaction {
if {$create_response_p} {
db_exec_plsql create_response {
begin
:1 := survsimp_response.new (
......@@ -170,6 +175,7 @@ db_transaction {
);
end;
}
}
db_dml update_oid "
update survsimp_responses set
......@@ -178,12 +184,22 @@ db_transaction {
where response_id = :response_id
"
set question_info_list [db_list_of_lists survsimp_question_info_list {
select question_id, question_text, abstract_data_type, presentation_type, required_p
if {!$create_response_p} {
# Delete old answers
db_dml delete_old_response "delete from survsimp_question_responses where response_id = :response_id"
}
set question_info_list [db_list_of_lists survsimp_question_info_list "
select question_id,
question_text,
abstract_data_type,
presentation_type,
required_p
from survsimp_questions
where survey_id = :survey_id
and active_p = 't'
order by sort_key }]
order by sort_key
"]
foreach question $question_info_list {
......@@ -204,29 +220,34 @@ db_transaction {
set response_value [db_null]
}
db_dml survsimp_question_response_checkbox_insert "insert into survsimp_question_responses (response_id, question_id, choice_id)
values (:response_id, :question_id, :response_value)"
db_dml survsimp_question_response_checkbox_insert "
insert into survsimp_question_responses (response_id, question_id, choice_id)
values (:response_id, :question_id, :response_value)
"
}
} else {
if { [empty_string_p $response_value] } {
set response_value [db_null]
}
db_dml survsimp_question_response_choice_insert "insert into survsimp_question_responses (response_id, question_id, choice_id)
values (:response_id, :question_id, :response_value)"
db_dml survsimp_question_response_choice_insert "
insert into survsimp_question_responses (response_id, question_id, choice_id)
values (:response_id, :question_id, :response_value)"
}
}
"shorttext" {
db_dml survsimp_question_choice_shorttext_insert "insert into survsimp_question_responses (response_id, question_id, varchar_answer)
values (:response_id, :question_id, :response_value)"
db_dml survsimp_question_choice_shorttext_insert "
insert into survsimp_question_responses (response_id, question_id, varchar_answer)
values (:response_id, :question_id, :response_value)"
}
"boolean" {
if { [empty_string_p $response_value] } {
set response_value [db_null]
}
db_dml survsimp_question_response_boolean_insert "insert into survsimp_question_responses (response_id, question_id, boolean_answer)
values (:response_id, :question_id, :response_value)"
db_dml survsimp_question_response_boolean_insert "
insert into survsimp_question_responses (response_id, question_id, boolean_answer)
values (:response_id, :question_id, :response_value)"
}
"number" {}
"integer" {
......@@ -234,8 +255,9 @@ db_transaction {
set response_value [db_null]
}
db_dml survsimp_question_response_integer_insert "insert into survsimp_question_responses (response_id, question_id, number_answer)
values (:response_id, :question_id, :response_value)"
db_dml survsimp_question_response_integer_insert "
insert into survsimp_question_responses (response_id, question_id, number_answer)
values (:response_id, :question_id, :response_value)"
}
"text" {
if { [empty_string_p $response_value] } {
......@@ -246,18 +268,19 @@ db_transaction {
set clob_answer $response_value
db_dml survsimp_question_response_text_insert "
insert into survsimp_question_responses
(response_id, question_id, clob_answer)
values (:response_id, :question_id, empty_clob())
returning clob_answer into :1" -clobs [list $response_value]
insert into survsimp_question_responses (response_id, question_id, clob_answer)
values (:response_id, :question_id, empty_clob())
returning clob_answer into :1
" -clobs [list $response_value]
}
"date" {
if { [empty_string_p $response_value] } {
set response_value [db_null]
}
db_dml survsimp_question_response_date_insert "insert into survsimp_question_responses (response_id, question_id, date_answer)
values (:response_id, :question_id, :response_value)"
db_dml survsimp_question_response_date_insert "
insert into survsimp_question_responses (response_id, question_id, date_answer)
values (:response_id, :question_id, :response_value)"
}
"blob" {
if { ![empty_string_p $response_value] } {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment