Details

    • Type: New Feature
    • Status: Done/Fixed
    • Priority: Major
    • Resolution: Fixed/Completed
    • Affects Version/s: 1.4
    • Fix Version/s: 1.4
    • Labels:
      None

      Description

      Provide a way to recognize exceptional volunteers. At this point, we are looking for a simple, positive-feedback-only system that associates the exceptional performance with both a contact and a volunteer project.

      Exceptional volunteerism is modeled as a new Activity Type "Volunteer Commendation." The source contact represents the volunteer project manager who is recognizing the volunteer, the target contact represents the recognized volunteer, and the assignee contact is not used. The activity has a custom field project_id, which is a foreign key to civicrm_volunteer_project.

      We decided against modeling exceptional volunteerism in the existing Volunteer activity for the following reasons:

      • having a separate activity is more extensible (e.g., the description field could be used to explain why the recognition was warranted)
      • we wanted to represent the recognizer, and all our contact fields are presently in use
      • recognizing exceptional volunteerism by shift rather than project seemed like overkill

      Volunteers will be recognized in the Log Hours UI. A column will be added to this screen with a star icon. This interface is not built in backbone, so to avoid re-engineering it, we'll add a listener that, when clicked:

      • sends an AJAX request to the server to create/delete the activity
      • toggles all the stars for that contact in the project (recognition is by project, not shift)

        Attachments

          Activity

          [VOL-42] Volunteer commendation
          Frank J. Gómez added a comment -

          Playing devil's advocate, mightn't it be better to extend the existing Volunteer activity to support the new functionality? We could add custom fields to the activity (i.e., boolean "is_recognized," contact reference "recognizer_contact_id" for the contact recognizing the volunteer, note/textarea "recognition_note") to achieve the same effect.

          What I don't like about the separate "Volunteer Recognition" activity type is that to some extent we're storing the same data in two places. It becomes possible for a contact to have a "Volunteer Recognition" record for a project but no actual "Volunteer" activity. And it raises questions about how to maintain data integrity: e.g., if we delete a user's "Volunteer" record, should we automatically delete the "Volunteer Recognition" record associated with that project? And if we do, we don't want to do it every time a "Volunteer" activity is deleted for a project, but only if the "Volunteer" activity is the last one associated with the project.

          Open to other opinions here.

          Frank J. Gómez added a comment -
          Frank J. Gómez added a comment -

          While working on the UI a few workflow questions came to me:

          1) We discussed the possibility of using the activity's description field to explain why the commendation was warranted, but we didn't establish when the volunteer coordinator would be prompted to provide such text. It makes sense to me that clicking the star would reveal a free-text field and a save button (probably in a modal). The description field is optional, but the activity doesn't get created until the coordinator clicks save.

          The advantage? Well, I haven't gotten used to my new computer's touchpad, and I end up making stray clicks all the time. Without a confirmation step, I would be pretty likely to give out commendations without intending to.

          2) What about undo? With a confirmation step this is less important, I think, but it wouldn't be hard to pop up a "You are about to delete this activity" dialog. The commendation activity is deleted when the volunteer coordinator confirms the deletion. A "whoops, cancel!" button closes the dialog with no DB changes.

          Feedback?

          Michael Z Daryabeygi added a comment -

          I think:

          • clicking a star creates a commendation
          • clicking again, marks the commendation is_deleted
          • hover on a star reveals a free-text field to enter a description.
          • description is not saved until "save" is clicked
          • this implies that is_deleted activities should be loaded into the interface so that an "undo" of a deletion can be performed in a later session... or else we only support undo within one load of the interface.
          • avoiding excess commendations from miss-clicks is a premature optimization.
          • maybe a better optimization would be on-close of the interface to run a clean up of is-deleted commendations with no descriptions.
          Craig Sinclair added a comment -

          I agree with Michael's suggestions as refinements of Frank's.

          Keeping it clean ad simple, even if we're collecting a lot of information is for the best.

          The one thing I wonder is how hover over - "- hover on a star reveals a free-text field to enter a description." - works when entering this on a tablet or phone?

          Frank J. Gómez added a comment -

          See PR: https://github.com/civicrm/civivolunteer/pull/222. If the PR passes QA/code review, this closes the issue.

          Frank J. Gómez added a comment -

          I've Q/A'ed this on 4.5.5, and the code is already merged, so I'm closing the issue.

            People

            • Assignee:
              Michael Z Daryabeygi
              Reporter:
              Frank J. Gómez

              Dates

              • Created:
                Updated:
                Resolved: