Guest User

Untitled

a guest
Dec 1st, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.18 KB | None | 0 0
  1. /** GLOBALS ********************************************************/
  2. var handlerGlobals = {
  3.  
  4. /* jquery selectors */
  5. selectors: {
  6. messageConsole: "#response-message",
  7. registerForm : "#register-form",
  8. usernameField : "#username-field",
  9. emailField: "#email-field",
  10. passwordField: "#pass-field",
  11. pass2Field: "#pass2-field",
  12. requiredField: ".required-input"
  13. },
  14.  
  15. /* classes */
  16. classes : {
  17. success: "success",
  18. error: "error"
  19. },
  20.  
  21. /* base url / directory for rest calls */
  22. ajaxUri : "/Calendar/rest",
  23.  
  24. ajaxUrls : {
  25. register : "user/register"
  26. },
  27.  
  28. /* getters for globals */
  29. getSelector : function(key){
  30. return this.selectors[key];
  31. },
  32.  
  33. getClass : function(key){
  34. return this.classes[key];
  35. },
  36.  
  37.  
  38. getAjaxUrl : function(key){
  39. return this.ajaxUrls[key];
  40. //return "";
  41. },
  42.  
  43. print_r : function(obj){
  44. for(key in obj)
  45. alert(key + " = " + obj[key]);
  46. }
  47. /* **************************/
  48.  
  49. };
  50. /** END GLOBALS **********************************************************************/
  51.  
  52. /** FormHandler Class ****************************************************************/
  53. function FormHandler(){
  54. var handler = this;
  55. messages = new Array();
  56. success = false;
  57. ajaxItems = {};
  58.  
  59. /* initialize ready events */
  60. initEvents = function(){
  61. handler = this;
  62. registerSelector = handlerGlobals.getSelector("registerForm");
  63. $(registerSelector).bind("submit", function(){
  64. form = $(this);
  65. return handler.handleRegisterForm(form);
  66. });
  67.  
  68. };
  69.  
  70. /* getter / setter for ajax items */
  71. getAjax = function(key){
  72. return this.ajaxItems[key];
  73. };
  74.  
  75. addAjax = function(key, ajaxItem){
  76. this.ajaxItems[key] = ajaxItem;
  77. };
  78.  
  79. /**
  80. * ajaxError
  81. * standard Ajax error handler function.
  82. */
  83. ajaxError = function(xhr, status, error ){
  84.  
  85. message = "An error occurred querying the server. Please try again later.";
  86.  
  87. addErrorMessage(message);
  88. displayMessages();
  89. return false;
  90. };
  91.  
  92. /**
  93. * FormHandler.registerCallback()
  94. * function: callback for registering a new user with an Ajax call.
  95. * The JSON object returned is a UserResponse
  96. * (@see calendar.rest.data.UserResponse.java), with the following keys:
  97. * Root element: Response,
  98. * boolean succeeded: -- was the user operation (registration) a success
  99. * List<User> users: -- list of users associated with the operation
  100. * (the newly registered user).
  101. * List<String> messages: status messages.
  102. */
  103. registerCallback = function(data){
  104.  
  105. message = "";
  106.  
  107. if(data.succeeded){
  108. user = data.users;
  109. message = "The user " + user.username + " has registered successfully";
  110. addSuccessMessage(message);
  111. }else{
  112. addErrorMessage(data.messages);
  113. }
  114.  
  115. displayMessages();
  116.  
  117. };
  118.  
  119. /* ** FormHandler.messages -- Success / Error messages to display to the user **/
  120. /**
  121. * Add a message or array of messages to be displayed to the user.
  122. * @param msg - the message to be added.
  123. * @param retainMessages - if true, old messages that are stored will be kept,
  124. * otherwise, old messages will be deleted.
  125. */
  126. addMessage = function(msg, retainMessages){
  127.  
  128. if(!retainMessages)
  129. this.clearMessages();
  130.  
  131. if(isArray(msg)){
  132. for(i in msg)
  133. this.messages.push(msg[i]);
  134. }else{
  135. this.messages.push(msg);
  136. }
  137.  
  138. };
  139.  
  140. /* delete all stored status messages */
  141. clearMessages = function(){
  142. this.messages = new Array();
  143. };
  144.  
  145. /**
  146. * addSuccessMessage()
  147. * add a success message for the user.
  148. * @param msg - the message.
  149. * @param retainMessages - whether to retain the existing messages.
  150. */
  151. addSuccessMessage = function(msg, retainMessages){
  152. this.setSuccess(true);
  153. this.addMessage(msg, retainMessages);
  154. };
  155.  
  156. /* add a message, and record an error */
  157. addErrorMessage = function(msg, retainMessages){
  158.  
  159. this.setSuccess(false);
  160. this.addMessage(msg, retainMessages);
  161. };
  162.  
  163. /* display all status messages */
  164. displayMessages = function(retainMessages){
  165. selector = handlerGlobals.getSelector("messageConsole");
  166. msgContainer = $(selector);
  167. msgContainer.html("");
  168.  
  169. containerClass = this.succeeded() ? handlerGlobals.getClass("success") :
  170. handlerGlobals.getClass("error");
  171. msgContainer.addClass(containerClass);
  172. for( i in this.messages)
  173. msgContainer.append(this.getMessageHtml(this.messages[i]));
  174.  
  175. if(!retainMessages)
  176. this.clearMessages();
  177. };
  178.  
  179. /* helper to render messages in html form */
  180. getMessageHtml = function(msg){
  181. return "<p>" + msg + "</p>";
  182. };
  183.  
  184. /* ** FormHandler.success -- Was the submission of the form a success? ***/
  185. setSuccess = function(succeeded){
  186. this.success = succeeded;
  187. };
  188.  
  189. succeeded = function(){
  190. return this.success;
  191. };
  192.  
  193.  
  194.  
  195. handleRegisterForm = function(form){
  196.  
  197. if(this.requiredFieldsEmpty(form)){
  198.  
  199. displayMessages();
  200. return false;
  201. }
  202. data = {};
  203. data.username = form.find(handlerGlobals.getSelector("usernameField")).val();
  204. data.email = form.find(handlerGlobals.getSelector("emailField")).val();
  205. data.password = form.find(handlerGlobals.getSelector("passwordField")).val();
  206. pass2 = form.find(handlerGlobals.getSelector("pass2Field")).val();
  207.  
  208.  
  209. if(data.password != pass2){
  210. this.addErrorMessage("Your passwords did not match.");
  211. this.displayMessages();
  212. return false;
  213. }
  214.  
  215. //alert("u: " + data.username + ", e: " + data.email + ", p: " + data.password + ", p2: " + pass2);
  216. register = this.getAjax("register");
  217. register.execute(data);
  218. return false;
  219. };
  220.  
  221. getInputLabel = function(field){
  222. container = field.parent();
  223. return container.find("label");
  224. };
  225.  
  226. requiredFieldsEmpty = function(form){
  227.  
  228. handler = this;
  229. fieldsEmpty = false;
  230. requiredSelector = handlerGlobals.getSelector("requiredField");
  231.  
  232. form.find(requiredSelector).each(function(){
  233. var input = $(this);
  234. value = input.val();
  235.  
  236. if(value.trim() == ""){
  237. fieldsEmpty = true;
  238. var labelHtml = getInputLabel(input).html();
  239.  
  240. addErrorMessage("You must enter a value for the field " + labelHtml + ".",
  241. true);
  242. }
  243. });
  244. return fieldsEmpty;
  245. };
  246.  
  247. addAjax("register", new AjaxItem(handlerGlobals.getAjaxUrl('register'),
  248. "POST", registerCallback, ajaxError, false)
  249. );
  250.  
  251. initEvents();
  252. };
  253.  
  254. /** END FormHandler Class */
  255. /************************************************************************************/
  256.  
  257.  
  258. /** AjaxItem -- Object to represent Ajax configurations ******************************/
  259.  
  260. function AjaxItem( actionUrl, actionMethod, success, failure, async){
  261. uri = handlerGlobals.ajaxUri;
  262.  
  263. this.url = uri + "/" + actionUrl;
  264. this.method = actionMethod;
  265. this.success = success;
  266. this.error = failure;
  267. this.async = async;
  268.  
  269. this.execute = function(ajaxData){
  270. handler = this.formHandler;
  271. isGet = this.method == "GET";
  272. if(isGet)
  273. this.url += ajaxData;
  274.  
  275. $.ajax({
  276. url: this.url,
  277. type: this.method,
  278. async: this.async,
  279. data: isGet ? null : ajaxData,
  280. success: this.success,
  281. error: this.error
  282. });
  283.  
  284. };
  285.  
  286. };
  287.  
  288. /** END: AjaxItem **************************************************************/
Add Comment
Please, Sign In to add comment