Scholarships & Awards

Files:

html files on Public web site

open to public to allow browsing

html files on Gradawan website

requires log in as CAS/ fsu affliate to enter application
located at \<gradawan_url>/scholarships:

  • awardForm.js form_year and form_term are set from service_config at build time.

award settings are set in html of page as javascript globals.

award info is put in awards{} (mapped by award_id), a javascript structure (optimized for letter items) out of the site.data.awards.yaml file

determine role from CAS login. Role can be student, faculty, or admin. If admin has logged in, can assume role of student or faculty with query "?role=student" or "?role=faculty". If faculty is logged in, we assume that faculty is going to nominate someone for an award

if nomination is required and student has logged in, then we check for query "?nomkey=\<applicationid>", which will link us with the nomination application by its key on firebase. If no nomkey is found, then "Nomination required" is displayed and student can't do anything.

uplaoded pdfs are stored on Firebase Storage into directory: /award_files///_//[CV,publication,nomination_letter, etc.] ' if user leaves page, info is stored in localstorage (but not that links to local documents for upload are probably not persistent)

  • submitted.html
  • _background on donors:
  • _history_and_awards.html
  • bennison_scholarship.txt
  • loftin.txt
  • menzel_scholarship.txt
  • obitgodfrey.doc
  • short.txt

Admin Impersonating Student or Faculty:

https://www.bio.fsu.edu/gradbeta/scholarships/gradpub.html?role=student

configuation files

  • \<gradawan_url>/_data/awards.yaml provides data to build the award description (into /scholarships) and form pages (into \<gradawan_url>/scholarships)

  • \<gradawan_url>/_data/services_config.json : "awards" record configuration of service, i.e. when window for scholarships is open

layout page for forms

  • award-application-page.md in _layouts; application page for each award built using data_page_generator.rb plugin, instantiated in _config.yml
    - data: 'awards'
      template: 'award-application-page'
      name: 'id'
      extension: 'md'
      dir: 'scholarships'

Log

grad.houptlab.org/award-application.log

Mustache templates for transactional emails:

  • grad.houptlab.org/award_nomination_message.txt to confirm a nomination by a faculty member; the student will be send an award_nominee_message

  • grad.houptlab.org/award_nominee_message.txt informs applicant that they have been nominated, and that they need to ubmit an application

  • grad.houptlab.org/award_cover_template.txt text for cover page of the award pdf

  • grad.houptlab.org/award_confirmation_message.txt to confirm receipt of application from the applicant

  • grad.houptlab.org/award_letter_writer_message.txt sent to letter writer to request upload of letter; includes the submission_url for upload page

  • grad.houptlab.org/award_letter_confirmation_message.txt to confirm receipt of your letter of support for an applicant

Firebase Data

This should be located on Sic-et-Non, because it is updated to Firebase 3 to handle storage etc. - grad.houptlab.org/firebase-service-account.json

Node service apps:

These should be running on Sic-et-Non, because it is updated to Firebase 3 to handle storage etc. - grad.houptlab.org/process-award-application.js - grad.houptlab.org/process-completed-award-appl.js

HTML template files for constructing final pdf

  • grad.houptlab.org/missing_keys_template.html
  • grad.houptlab.org/missing_file_template.html
  • grad.houptlab.org/award_cover_template.html

Other Applications required for pdf construction

  • LibreOffice (at /Applications/LibreOffice.app/) for making pdf from word file from https://www.libreoffice.org; run in headless mode

  • sendEmail

  • pdfbox-app-2.0.2.jar (in grad.houptlab.org/) from http://pdfbox.apache.org to merge PDFs into one and of course java to run the jar

  • phantomjs from to generate PDF from website

  • slow-rasterize.js (in grad.houptlab.org/) part of gradphile from CE Houpt to generate printable webpage for phantom-js

  • /scholarships

  • /scholarships:

    • index.md
    • letterSubmission.html
    • letterSubmission.js
    • letterSubmissionError.html
    • letterSubmitted.html
    • old_index.html
    • submitted.html

Overview files on gradawan site

  • /scholarships_overview:
    • _awards_listing_local.html
    • _awards_listing.html
    • _awards_results_local.html
    • awardsOverviewApp.js
    • graduate_fb.html
    • graduate_results.html
    • graduate.html
    • index.html
    • toArrayFilter.js
    • undergrad_results.html
    • undergrad.html
    • upload.html
    • uploadAward.js

/scholarships

awards.yaml file

The data describing the awards and scholarships is stored in _data/awards.yaml.


- short_name: Thrower Scholarship (Graduate)
  id: thrower_grad
  abbr: Thrower
  full_name: Ben and Karen Thrower Scholarship
  category: graduate
  award_amount: $500
  balance: "$1,330"
  description: A scholarship of $500 will be awarded each fall term to provide support for a graduate student within the Department of Biological Science.
  icon: star.svg
  type: achievement
  eligibility: Currently enrolled Biological Science graduate students with a minimum GPA of 3.5 is required.
  selection_criteria: Selection is based on academic merit. Preference will be given to PhD students who have reached candidacy in any area of the biological sciences and who have strong standardized scores on the GRE.
  application_items: Applicant should submit an abstract of his/her most recent research; a paragraph outlining how the area of research will facilitate his/her future long-term career goal; and a CV. In addition the faculty mentor should submit a one page letter outlining the scholarship of the student,length of time the applicant has pursued research under their mentorship,and other important facets to distinguish the applicants abilities such as publication productivity, national recognitions and collegiality.
  committee_composition: A committee consisting of the Associate Chairman for Graduates Studies and faculty representing the three areas
  deadline:
  nomination: student
  form_items: 

(See Awards Form DSL below for more details on form_items).

Public Scholarship Listing Page

Scholarship Application Page

The public list of awards links each award to its application form page. The application form pages are placed in /scholarships within the padawan jekyll, so are protected by cassowary but are accessible to all fsuid holders.

For each award in awards.yaml, one angularjs application form page is generated using the award-application-page.md layout.

Uploaded pdf or word files will be stored at

    award_files/<YEAR>/<TERM>/<applicant.fsuid>/<award_id>/<file_key>

The url for downloading application files will also be stored in the award application data in the fileURLs hash, in a form such as:

  "https://firebasestorage.googleapis.com/v0/b/firebase-graddev.appspot.com/o/award_files%2F2016%2Ffall%2Fthoupt%2Fgradpub%2Fpublication?alt=media&token=209cb96d-2d4d-4430-ade1-8d392758e02e"

which downloads the file named award_files-2016-fall-thoupt-gradpub-publication.docx.

Awards Form DSL

  form_items:
        - name: Abstract
          description: an abstract of your most recent research
          type: textarea
          key: abstract
        - name: Career Relevance
          description: A paragraph outlining how the area of research will facilitate your future long-term career goal
          type: file
        - name: Curriculum Vita
          description: Your up-to-date CV
          type: file
          instructions: select your CV in pdf or .docx file format
          key: cv
        - name: Letter Writer
          description: Letter of evaluation to be requested from major professor
          instructions:  The faculty mentor should submit a one page letter outlining the scholarship of the student, length of time the applicant has pursued research under their mentorship,  and other important facets to distinguish the applicants abilities such as publication productivity, national recognitions and collegiality
          type: letter_request
          key: letter_writer

Award Application Data on Firebase

Award Database

https://graddev.firebaseio.com/awards/<year>/<term>

each application has random firebase key.

stores firebase storage links to uploaded documents

eg

{
    "award_abbr": "McAllister", 
    "award_id": "mcallister", 
    "award_short_name": "McAllister Scholarship", 
    "career_plans_name": "Career Information Statement.docx", 
    "completed_timestamp": 1475626036220, 
    "confirmation_email_timestamp": 1474051432059, 
    "email": "mjb13@my.fsu.edu", 
    "emplid": "200010730", 
    "fileURLs": {
        "career_plans": {
            "downloadURL": "https://firebasestorage.googleapis.com/v0/b/firebase-graddev.appspot.com/o/award_files%2F2016%2Ffall%2Fmjb13%2Fmcallister%2Fcareer_plans?alt=media&token=2a55626c-8475-4515-ae8b-3eccf82d9437"
        }, 
        "financial_need": {
            "downloadURL": "https://firebasestorage.googleapis.com/v0/b/firebase-graddev.appspot.com/o/award_files%2F2016%2Ffall%2Fmjb13%2Fmcallister%2Ffinancial_need?alt=media&token=bfda5f75-c248-499b-af1d-73bc8d18402b"
        }, 
        "letter_writer1_letter": {
            "downloadURL": "https://firebasestorage.googleapis.com/v0/b/firebase-graddev.appspot.com/o/award_files%2F2016%2Ffall%2FBetters_Melissa%2Fmcallister%2Fletter_writer1_letter.pdf?alt=media&token=af1363d1-da9d-4dfb-a8d5-13eaa55fccc0"
        }, 
        "letter_writer2_letter": {
            "downloadURL": "https://firebasestorage.googleapis.com/v0/b/firebase-graddev.appspot.com/o/award_files%2F2016%2Ffall%2FBetters_Melissa%2Fmcallister%2Fletter_writer2_letter.pdf?alt=media&token=5f3d9f22-16c9-4201-9683-2b248806ff44"
        }, 
        "transcript": {
            "downloadURL": "https://firebasestorage.googleapis.com/v0/b/firebase-graddev.appspot.com/o/award_files%2F2016%2Ffall%2FBetters_Melissa%2Fmcallister%2Ftranscript.pdf?alt=media&token=2153733d-89b2-48e2-8292-8d1cab90688e"
        }
    }, 
    "financial_need_name": "Evidence of Need.docx", 
    "first_name": "Melissa", 
    "fsuid": "mjb13", 
    "ip_address": "128.186.177.221", 
    "last_name": "Betters", 
    "letter_writers": {
        "letter_writer1": {
            "name": "Dr. Don Levitan", 
            "time_stamp": 1475173877095
        }, 
        "letter_writer2": {
            "name": "Dr. Scott Burgess", 
            "time_stamp": 1475173645140
        }
    }, 
    "permanent_address": "4842 Lake Breeze Ter., Sarasota, FL 34243", 
    "research_plan": "I am currently working on an Honors Thesis in marine biology. My thesis defense will take place next semester (Spring 2017). The research I will be conducting will help to deepen our understanding of broadcast spawning populations and their reproductive patterns. A broadcast spawning population is any marine population that sends its eggs and sperm into the water for fertilization, rather than reproducing by internal fertilization like most land animals. Specifically, my research will be challenging assumptions made by previous studies about female mating choice. The phenomenon known as polyandry, or when females mate with multiple males, is still poorly understood and scarcely studied. My research will attempt to address this topic as well as looking at the variability of gametes produced by individuals. The broadcast spawning sea urchin Lytechinus variegatus will be the subject for this research.", 
    "tallahassee_address": "1704 W. Call St. #304, Tallahassee, FL 32304", 
    "term": "fall", 
    "time_stamp": 1473982416272, 
    "year": 2016
}

Award Storage

Uploaded pdf or word files will be stored at https://graddev.firebaseio.com storage in directory "award_files//"

    award_files/<YEAR>/<TERM>/<applicant.fsuid>/<award_id>/<file_key>

The url for downloading application files will also be stored in the award application data in the fileURLs hash, in a form such as:

  "https://firebasestorage.googleapis.com/v0/b/firebase-graddev.appspot.com/o/award_files%2F2016%2Ffall%2Fthoupt%2Fgradpub%2Fpublication?alt=media&token=209cb96d-2d4d-4430-ade1-8d392758e02e"

which downloads the file named award_files-2016-fall-thoupt-gradpub-publication.docx.

Node Services on Server

process-award-application.js

Application Submission Node script

2016-8-15
  • Monitor awards/form_year/form_term/ for addition of a child containing application data.

Nominations

  • send a confirmation email to the nominator (and set nomination_confirmation_email_timestamp)
  • send an email to nominee, with link back to application NOTE: missing a time stamp to confirm that nominee letter was sent? NOTE: doesn't seem to synch with applicatin keys correctly: nominator key is different from nominee key (or they don't get put under same firebase key)
application.application_link = "http://www.bio.fsu.edu/gradbeta/scholarships/" + application.award_id + ".html?nomkey=" + application.key;

Applications

  • Send a confirmation email to the applicant (and set confirmation_email_timestamp).
  • Iterate across 'letter_writers', send email invitations to each letter writer,
    requesting that they submit a letter of support. (A random shortid is added to the letter writer child,so we can verify that only the recepient of the email invitation submitted the letter.)
letter.submission_url = "http://www.bio.fsu.edu/grad/scholarships/letterSubmission.html?key="+application.key + "&letter=" + letter.key + "&id=" + letter.shortID;

NOTE: if no letter is required, mark application as complete

Letter Submission Node script

NOTE: handled by process-award-application.js?

NOTE: Checks whenever a letter is uploaded, or after applciation is submitted, to see if the application is complete.

process-completed-award-appl.js

Submission Complete Node script

NOTE: when the "complete_time_stamp" is added to the award data, then a combined pdf file should be generated.

Web Pages

Recommendation Letter Page

Letter writers will be sent a link of the form:

  {{site.publicurl}}/scholarships/letterSubmission.html?<award_data_key>,<letter_key>,<shortid>

where award_data_kay is the key of the application data in the firebase database, e.g. the firebase reference path is

/awards/<YEAR>/<TERM>/<award_data_key>

so the data key is an inscrutable hash like -KOuUeSK9cPr8nRushnE.

The download url for the file is also stored in the award application data fileURLs hash.

The letter_key lets us look up what letter is being submitted. For example, the award at id gradpub expects a letter from major_professor.

The shortid field is set by the node processing script, and is a randomized small (7-14) nonsequential series of characters which serves to confirm that the page was reached using the emailed url (in other words, some one can't submit a letter unless the shortids match up. This is not super secure, but provides another check.)

When the letter is submitted, it is stored in firebase storage at:

award_files/<YEAR>/<TERM>/<applicant.fsuid>/<award_id>/<letter_key>_letter

Scholarship Application File

The compiled application is stored at:

{{site.gradawanurl}}/award_applications/<YEAR>/<TERM>/AwardID_LastName_fsuid.pdf

The liquid angular code in scholarships/index.html is

TODO: revise to use services_config

{{site.gradawanurl}}/award_applications/{{site.current_year}}/{{site.current_term_name}}/[[{application.award_id}]][[{application.last_name}]][[{application.fsuid}]].pdf"

Scholarship Overview Page

A list of scholarship applications is presented at /scholarships/index.html, visible only to admins.