Forums / Setup & design / Poll - how to disable empty user input

Poll - how to disable empty user input

Author Message

Marko Žmak

Saturday 22 July 2006 10:17:18 am

The title says it all. I want to disable collecting informaation in poll when the user didn't input anything (e.g. no radio button was selected). The current behaviour of eZ in this case i to increase the number of votes, but not to include this vote in any answer. So the summ of all votes for each answer now doesn't match the total votes count.

Is it possible to disable this?

--
Nothing is impossible. Not if you can imagine it!

Hubert Farnsworth

Andrew Kelly

Tuesday 08 August 2006 3:30:32 am

[Me too post]

I'd also very much like this answer as well.
Not only is the total vote count skewed, but the "voted" cookie is also set, so
if somebody mistakenly hits the vote button without making a selection and then
tries to correct their mistake, they are told they already voted.

For what it's worth, I think a page recycle would be the best solution rather than an error message of some kind. (but let's see if we even get that far first).

Andy

Andrew Kelly

Thursday 10 August 2006 7:24:10 am

Hi Marko,

here's how I dealt with the issue:

1. Edit (or create) settings/override/collect.ini.append.php

In section
[CollectionSettings]
add
CollectionUserDataList[poll]=overwrite (was probably unique)

Then,

2. Edit the active ezoption.tpl file, removing the "checked" sections

Then,

3. Add JavaScript to the poll form so that a blank vote doesn't get sent.
For example,

<b>in poll form</b>
onSubmit="return validatePoll(document.pollForm.ContentObjectAttribute_data_option_value_{$poll.0.data_map.question.id})"

<b>in page head</b>
{literal}
<script type="text/javascript">
<!--
function validatePoll(rObj){
    for (var i=0; i<rObj.length; i++) if (rObj[i].checked) return true;
    alert("Please make a selection before voting.");
    return false;
}
//-->
</script>
{/literal}

It's dependant on JS, which makes it a cheap hack, but it gets the job done.

Andy