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/
- 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.