Jonathan Bernard 439a080f14 Started adding implementation of client-side functionality.
- Changed ts_api:dispatch_user/3 to return information for the user currently,
  authenticated if a valid session id is presented and no username is presented.
- Moved the generic styling of form > * elements to be specific to .bar > form.
- Added jQuery U 1.8.0.
- Created login dialog that will automatically load upon page load if the user
  is not logged in.
- Added styling for jQuery UI login dialog.
- Implemented login functionality on the client page.
- Implemented functionality to load user and timeline records on the client
  side.
2011-03-01 08:23:51 -06:00

123 lines
3.1 KiB
JavaScript

$(document).ready(function(){
$("#login-dialog").dialog({
autoOpen: false,
height: 300,
width: 300,
modal: true,
buttons: {
Login: function(){login()}
}
});
$.ajax({
url: "/ts_api/users/",
type: "GET",
error: function(jqXHR, textStatus, error) {
$("#login-dialog").dialog("open"); },
success: function(data, textStatus, jqXHR) {
loadUser(data.user.username); }});
})
var user = []
var timelines = []
var activeTimeline = []
function login() {
var name = $("#login-name");
var pwd = $("#login-password");
$.ajax({
url: "/ts_api/login",
processData: false,
data: JSON.stringify({username: name.val(), password: pwd.val()}),
type: "POST",
error: function(jqXHR, textStatus, error) {
var tips = $(".validate-tips");
tips.text("Incorrect username/password combination.");
tips.addClass("ui-state-error");
tips.slideDown();
},
success: function(data, textStatus, jqXHR) {
loadUser(name.val());
$("#login-dialog").dialog("close");
}});
}
function logout(event) {
alert("TODO: log user out via AJAX.");
event.preventDefault();
}
function loadUser(username) {
$.ajax({
url: "/ts_api/app/user_summary/" + username,
type: "GET",
success: function(data, textStatus, jqXHR) {
user = data.user;
timelines = data.timelines;
$("#fullname").text(user.name);
$("#username").text("- " + user.username);
// TODO: not working
$("#fullname-input").text(user.name);
$("#email-input").text(user.email);
activeTimeline = timelines[0];
$("#timeline-name").text(activeTimeline.timeline_id + " |");
$("#timeline-desc").text(activeTimeline.description);
loadTimeline(user, activeTimeline)
},
error: function(jqXHR, textStatus, error) {
alert("TODO: handle error for user load.")
}
});
}
function loadTimeline(user, timeline) {
$.ajax({
url: "/ts_api/entries/" + user.username + "/" + timeline.timeline_id,
type: "GET",
success: function(data, textStatus, jqXHR) {
}
});
}
function toggleUserInfo(event) {
$("#user-info").slideToggle("slow");
event.preventDefault();
}
function showChangePwd(event) { $("#change-pwd").slideToggle("slow"); }
function updateUser(event) {
alert("TODO: update user via AJAX.");
event.preventDefault();
}
function toggleTimelineInfo(event) {
$("#timeline-info").slideToggle("slow");
event.preventDefault();
}
function showTimelineMenu(event) {
alert("TODO: show other timelines via a popup menu");
event.preventDefault();
}
function updateTimeline(event) {
alert("TODO: update timeline via AJAX.");
event.preventDefault();
}
function showNewNotes(event) { $("#add-notes").slideToggle("slow"); }
function newEntry(event) {
alert("TODO: create entry vi AJAX");
event.preventDefault();
}