Below is the rich text field for the Phase 1 Approved button. The others follow a similar pattern. In the updateStatus variable, the status field for the phase is set to Approved (fid = 26) and the status log field is set to Approved (fid = 35). Updating the status log field writes to the history of that field (including user and datetime of approval).
var bool isApproved = [Phase 1 Status] = "Approved";
var bool canEdit = (ToText(UserRoles("Name")) = "Administrator" or ToText(UserRoles("Name")) = "Scholarly Activity Reviewer") and [Phase] = [Scholarly Activity Tracker Phase 1];
var text buttonColor = If($isApproved, "#ffffff", "#6BBD57");
var text textColor = If($isApproved, "#6BBD57", "#ffffff");
var text readOnlyColor = "#A9A9A9";
var date curDate = Today();
var text status = "Approved";
var text newPhase = Case([Type], "Presentation", "Conference Approval",
"Manuscript", "REI Review",
"Other", "Final Updates"
, "");
var text updateStatus = "<a class='Vibrant Primary' style=\"width:150px; text-align: center;background: " & $buttonColor & "; border-color: " & $buttonColor & "\" href='" & URLRoot() & "db/" & Dbid() & "?a=API_EditRecord&rid=" & [Record ID#] & "&apptoken=APPTOKEN&_fid_17=" & $newPhase &"&_fid_26=" & $status & "&_fid_35=" & $status & "&_fid_54=" & $curDate & "&_fid_136=" & $curDate & "&rdr=" & URLEncode(URLRoot() & "db/" & Dbid() & "?a=er&rid=" & [Record ID#]) & "'>Approved</a>";
var text retainStatus = "<a title='Current status is Approved' class='Vibrant' style=\"width:150px; text-align: center; color: #6BBD57; background: " & $buttonColor & "; border-color: " & $buttonColor & ";\"><b>APPROVED</a>";
var text readOnly = "<a class='Vibrant Primary' style=\"width:150px; text-align: center; color: #000cad; background: " & $readOnlyColor & "; border-color: " & $readOnlyColor & ";\"><i>Approved</a>";
If($canEdit and $isapproved = false, $updateStatus, If($isapproved, $retainStatus, $readOnly))