Loading...
 

Voting_System

Voting_System is one simple yet very powerful use of Trackers in Tiki. This profile will enable the tracker feature and create a basic wiki page to act as a custom reduced interface to vote in the system, while hiding some fields to the end user, that are needed to ensure that the user is recognized as a member of the only group that can vote ("Group1"), and that only one vote per user is allowed.

Two users are created for demo purposes: user1, which belongs to group1, and user2, which belongs to group2. Therefore, only user1 can vote, beyond the admin, that can also vote since no permissions are checked against user admin, who has the ability to create and fine tune the system.

You can easily enhance the system as admin by:
  1. enabling users to get notified by email of changes to their items. This way, a user casting a vote will receive also a notification email with a copy of the choices made in that vote casted (also if only voting once and no furher change is made to that vote).
    You can do so by means of:
    1. go to list your trackers, and choose to list the tracker fields for the tracker of the voting system
    2. edit the field "User selector: Username"
    3. at the option "Options for User Selector", choose "Email Notification: No". And click at the OK button below to save your changes.

     
  2. Set some period for the voting. No votes will be allowed before and after these dates you chose.
    You can do so by means of:
    1. go to list your trackers and edit the tracker for the voting system
    2. go to the "Permissions" section in that popup window, below at the "Creation date constraint", and click at the "After" and "Before" checkboxes.
    3. Choose your preferred date and time for each parameter, and click at the OK button below to save your changes.


This page will be created:
https://profiles.tiki.org/Profile_Voting_System_voting_page

YAML
preferences:
 feature_trackers: y
 feature_wiki_argvariable: y
 useGroupHome: y
 limitedGoGroupHome: y
 trackerfield_autoincrement: y
 trackerfield_dropdownother: y
 wikiplugin_jq: y
 wikiplugin_tabs: y
 wikiplugin_remarksbox: y
 wikiplugin_tracker: y
 wikiplugin_trackerstat: y
 instructions: Profile_Voting_System_voting_page
objects: 
  - 
    type: tracker
    ref: Voting_System
    data: 
      name: Tracker for the Voting System
      description: >
        Voting for the New Board according to the proposal shown in the minutes from last general meeting.
      sort_default_order: desc
      sort_default_field: creation
      restrict_end: 0
      restrict_start: 0
      allow: 
        - one_item_per_user
      show: 
        - list_creation_date
        - creation_date
        - status_admin_only
  - 
    type: tracker_field
    ref: voting_notaSobreLaVotaciN
    data: 
      name: Note from the Voting System
      permname: notaSobreLaVotaciN
      tracker: $profileobject:Voting_System$
      options: 
        wikiparse: 1
        max: 100
      type: static
      order: 0
      visible: admin_only
      description: |
        ^Choose the pre-selected, as proposed in the last General Meeting, or type in the full name of your personal proposal, at the "__Other__" box for the appropriate role. ~~red:Keep i mind that by writing something in the "__Other__" field, the different choice placed in the drop-down will be overridden. Moreover, if you choose "__Other__" in the drop-down, but you leave the box blank, that vote will be counted as "__Null Vote__", just as if you wrote the name and surname of someone who does not appear in the Members List~~. %%% %%%Please note that you can choose the option "__Blank vote__" or "__Null vote__", if you prefer, directly through from the drop-down itself. %%% %%%If you made a mistake and you want to correct your vote, all you have to do is to vote again, your old vote will be replaced by your new choice.^
      descparsed: y
      flags: 
        - public
  - 
    type: tracker_field
    ref: voting_presidente
    data: 
      name: Presidency
      permname: presidente
      tracker: $profileobject:Voting_System$
      options: 
        options: 
          - Mrs Mary Jones
          - Mrs Mary Jones
          - Blank vote
          - Null vote
          - other
      type: dropdown_other
      order: 10
      flags:
        - list
        - searchable
        - public
        - mandatory
  - 
    type: tracker_field
    ref: voting_vicepresidente
    data: 
      name: Vicepresidency
      permname: vicepresidente
      tracker: $profileobject:Voting_System$
      options: 
        options: 
          - Armando Bronca PhD.
          - Armando Bronca PhD.
          - Blank vote
          - Null vote
          - other
      type: dropdown_other
      order: 20
      flags: 
        - list
        - searchable
        - public
        - mandatory
  - 
    type: tracker_field
    ref: voting_secretariado
    data: 
      name: Secretarial
      permname: secretariado
      tracker: $profileobject:Voting_System$
      options: 
        options: 
          - Mr John Smith
          - Mr John Smith
          - Blank vote
          - Null vote
          - other
      type: dropdown_other
      order: 30
      flags: 
        - list
        - searchable
        - public
        - mandatory
  - 
    type: tracker_field
    ref: voting_tesorerA
    data: 
      name: Treasury
      permname: tesorerA
      tracker: $profileobject:Voting_System$
      options: 
        options: 
          - Robin Hood Jr.
          - Robin Hood Jr.
          - Blank vote
          - Null vote
          - other
      type: dropdown_other
      order: 40
      flags: 
        - list
        - searchable
        - public
        - mandatory
  - 
    type: tracker_field
    ref: voting_vocalA_1
    data: 
      name: Extra Membership 1
      permname: vocalA_1
      tracker: $profileobject:Voting_System$
      options: 
        options: 
          - John Doe Sr.
          - John Doe Sr.
          - Blank vote
          - Null vote
          - other
      type: dropdown_other
      order: 50
      flags: 
        - list
        - searchable
        - public
        - mandatory
  - 
    type: tracker_field
    ref: voting_vocalA_2
    data: 
      name: Extra Membership 2
      permname: vocalA_2
      tracker: $profileobject:Voting_System$
      options: 
        options: 
          - Lara Croft
          - Lara Croft
          - Blank vote
          - Null vote
          - other
      type: dropdown_other
      order: 60
      flags: 
        - list
        - searchable
        - public
        - mandatory
  - 
    type: tracker_field
    ref: voting_vocalA_3
    data: 
      name: Extra Membership 3
      permname: vocalA_3
      tracker: $profileobject:Voting_System$
      options: 
        options: 
          - Perico Los Palotes
          - Perico Los Palotes
          - Blank vote
          - Null vote
          - other
      type: dropdown_other
      order: 70
      flags: 
        - list
        - searchable
        - public
        - mandatory
  - 
    type: tracker_field
    ref: voting_vocalA_4
    data: 
      name: Extra Membership 4
      permname: vocalA_4
      tracker: $profileobject:Voting_System$
      options: 
        options: 
          - Aytor Tilladepa Tatas
          - Aytor Tilladepa Tatas
          - Blank vote
          - Null vote
          - other
      type: dropdown_other
      order: 80
      flags: 
        - list
        - searchable
        - public
        - mandatory
  - 
    type: tracker_field
    ref: voting_usuario
    data: 
      name: Username
      permname: usuario
      tracker: $profileobject:Voting_System$
      options: 
        autoassign: 1
      type: user
      order: 90
      visible: admin_only
      description: >
        ~~grey:''This field is necessary to check that the user is a member, and restrict the system to one vote per person in the members group. This field is only visible by the person voting at the time of the vote, and the system administrator to ensure that the system worked properly and there is a single vote per person, at any time if doubts arise about the voting system. No other member of the organization will have access to view voters. Also, once the voting period is over, and no computer issues were detected, then this user field will be deleted by the system administrator, so that the vote record will be completely anonymous regarding who voted what.''~~
      descparsed: y
      flags: 
        - list
        - mandatory
  - 
    type: tracker_field
    ref: voting_voto
    data: 
      name: 'Vote #'
      permname: voto
      tracker: $profileobject:Voting_System$
      options: 
        start: 1
        prepend: '#'
      type: auto_increment
      order: 100
      flags: 
        - list
        - searchable
        - link
        - public




Groups

Create a group "group1" which has permission to cast a vote in the Voting system. The other group "group2" can't add items to that tracker (therefore, its members can't vote).

YAML
permissions:
 Group1:
  home:  $profileobject:voting_page$
  description: Members of the organization allowed to cast a vote in the Voting System 
  allow:
   - create_tracker_items
   - list_trackers
   - view_trackers
  include: [ Registered ]
  objects:
   -
    type: tracker
    id: $profileobject:Voting_System$
    allow:
     - create_tracker_items
     - list_trackers
     - view_trackers
 Group2:
  description: Other registered users to the site, that are not allowed to cast a vote in the Voting System
  allow:
   - create_tracker_items
   - list_trackers
   - view_trackers
  include: [ Registered ]
  objects:
   -
    type: tracker
    id: $profileobject:Voting_System$
    deny:
     - create_tracker_items
     - list_trackers
     - view_trackers



Users

Add a user to the group Members
YAML
objects:
 -
  type: user
  data: 
    name: user1
    pass: user1
    email: user1@example.com
    change: n
    groups: [ Group1 ]
 -
  type: user
  data: 
    name: user2
    pass: user2
    email: user2@example.com
    change: n
    groups: [ Group2 ]



Sample vote from user1


YAML
objects:
 -
  type: tracker_item
  ref: vote_001
  data:
   tracker: '$Voting_System$'
   status: open
   values:
    - [ '$notaSobreLaVotaciN$', '' ]
    - [ '$voting_presidente$', Mr Bean ]
    - [ '$voting_vicepresidente$', Armando Bronca PhD. ]
    - [ '$voting_secretariado$',  Blank vote ]
    - [ '$voting_tesorerA$', Robin Hood Jr. ]
    - [ '$voting_vocalA_1$', Null vote ]
    - [ '$voting_vocalA_2$', foo ]
    - [ '$voting_vocalA_3$', Perico Los Palotes ]
    - [ '$voting_vocalA_4$', Aytor Tilladepa Tatas ]
    - [ '$voting_usuario$', user1 ]
    - [ '$voting_voto$', 1 ]


Add a form to add a vote and show the results from the voting


This will include: Profile_Voting_System_voting_page

YAML
instructions: Voting
preferences:
  enable: [ feature_wiki ]
objects:
  -
    type: wiki_page
    ref:  voting_page
    data:
      name: Voting
      description: The Voting System
      lang: en
      content: wikicontent:Profile_Voting_System_voting_page