Index: openacs-4/packages/oct-election/www/election.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/oct-election/www/election.tcl,v diff -u -N -r1.1.1.1 -r1.1.1.1.2.1 --- openacs-4/packages/oct-election/www/election.tcl 14 May 2005 19:49:49 -0000 1.1.1.1 +++ openacs-4/packages/oct-election/www/election.tcl 14 May 2005 23:21:36 -0000 1.1.1.1.2.1 @@ -5,7 +5,7 @@ } set user_id [auth::require_login] -set admin_p [acs_user::site_wide_admin_p] +set admin_p [permission::permission_p -object_id [ad_conn package_id] -privilege create] set valid_voter [oct-election::valid_voter_p -election_id $election_id -user_id $user_id] set valid_voter_p [lindex $valid_voter 0] set valid_voter_text [lindex $valid_voter 1] @@ -14,11 +14,20 @@ select start_time, end_time, vote_forum_cutoff, - label + number_of_candidates, + label, + (case when now() > start_time then 1 else 0 end) as past_start_p, + (case when now() > end_time then 1 else 0 end) as past_end_p from oct_election where election_id = :election_id } +set ballot_count [db_string get_ballot_count { + select count(*) + from oct_ballot + where election_id = :election_id; +}] + set page_title $label set context $page_title @@ -31,29 +40,51 @@ } delete { link_url_col delete_url - display_template { - - } + display_template " + + + + " sub_class narrow } + count { + label "Votes" + } } +if {$past_end_p} { + set order_clause "order by label" +} else { + set order_clause "order by cand_count desc" +} + db_multirow \ -extend { delete_url - } candidates candidates_select { - select candidate_id, - label as candidate_label - from oct_candidate - where election = :election_id - } { + count + } candidates candidates_select " + select oc.candidate_id, + oc.label as candidate_label, + count(ov.candidate_id) as cand_count + from oct_candidate oc left outer join oct_vote ov using (candidate_id) + where oc.election = :election_id + group by oc.candidate_id, oc.label + $order_clause + " { set delete_url [export_vars -base "candidate-delete" {candidate_id election_id}] + if {$past_end_p} { + set count $cand_count + } else { + set count "Results pending" + } } -#TODO: show vote total if election is over #TODO: hide delete button if not admin #TODO: sort candidates by vote total if election is over, or alpha if not +#DEBUG +db_1row get_now { + select now() as now + from dual; +} - -