XE에 내장된 투표 모듈의 경우 기본적으로 비밀 투표 형태로 진행된다. 내부적으로도 중복 투표를 막기 위해 로그를 기록하기는 하지만 비밀 투표 답게 선택 항목은 기재하지 않고 투표의 시퀀스 넘버, IP 주소와 날짜, 그리고 회원이 투표한 경우에 회원 번호가 기록된다. 따라서 DB에 접근한다 하더라도 누가 무엇을 선택하였는지 알 수 없는 구조이다.
기본적으로는 훌륭한 구조임은 맞지만 간혹 누가 무엇을 선택했는지 알아야 하는 투표를 진행하려면 DB를 열어도 누가 무엇을 골랐는지 알 수 없다는 문제가 있다.
따라서 투표 모듈을 개조해보았다.
DB쪽에는 xe_poll_log 테이블에 seleted_srl 컬럼을 만들어 무엇을 선택했는지 기록을 추가하였다. 이 과정에서 당연히 controller의 procPoll과 insertPollLog 쿼리문에도 수정을 가했다.
이 작업으로 일단 필요할 경우 누가 무엇을 골랐는지 찾아 볼 수 있게는 해두었으나 DB에만 기록되다보니 일반 회원은 결과를 알 수 없고 관리자 역시 DB를 일일히 열기는 어려운 만큼 투표 결과에도 수정을 가했다.
처음에는 항목을 클릭하면 팝업 등의 형태를 생각했으나 간단하게 처리하기 위해 사진과 같은 형태로 처리하였다. 원래는 퍼센트 표시 막대 아래에 표시하려는 계획이었으나 그냥 넣어보니 저 위치에 출력되었다. css 쪽을 확인해봐야 할 것 같은데 저 상태로도 모양이 나쁘지 않아 그대로 두기로.
이제 여기에 비밀/공개 투표 선택 여부를 투표 생성 시 선택하고 그에 따라 항목 기록/표시를 처리하도록 수정하면 작업이 완료될 것 같다.