Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

pirms 13 gadiem
pirms 13 gadiem
pirms 12 gadiem
pirms 11 gadiem
pirms 13 gadiem
pirms 13 gadiem
pirms 13 gadiem
pirms 13 gadiem
pirms 13 gadiem
pirms 13 gadiem
pirms 13 gadiem
pirms 12 gadiem
pirms 13 gadiem
pirms 13 gadiem
pirms 13 gadiem
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
  2. // MIT License. See license.txt
  3. // My HTTP Request
  4. wn.provide('wn.request');
  5. wn.request.url = '/';
  6. // generic server call (call page, object)
  7. wn.call = function(opts) {
  8. var args = $.extend({}, opts.args);
  9. // cmd
  10. if(opts.module && opts.page) {
  11. args.cmd = opts.module+'.page.'+opts.page+'.'+opts.page+'.'+opts.method;
  12. } else if(opts.doc) {
  13. $.extend(args, {
  14. cmd: "runserverobj",
  15. docs: wn.model.compress(wn.model.get_doclist(opts.doc.doctype,
  16. opts.doc.name)),
  17. method: opts.method,
  18. args: opts.args,
  19. });
  20. } else if(opts.method) {
  21. args.cmd = opts.method;
  22. }
  23. // stringify args if required
  24. for(key in args) {
  25. if(args[key] && typeof args[key] != 'string') {
  26. args[key] = JSON.stringify(args[key]);
  27. }
  28. }
  29. return wn.request.call({
  30. type: opts.type || "POST",
  31. args: args,
  32. success: opts.callback,
  33. error: opts.error,
  34. btn: opts.btn,
  35. freeze: opts.freeze,
  36. show_spinner: !opts.no_spinner,
  37. progress_bar: opts.progress_bar,
  38. async: opts.async
  39. });
  40. }
  41. wn.request.call = function(opts) {
  42. wn.request.prepare(opts);
  43. // all requests will be post, set _type as POST for commit
  44. opts.args._type = opts.type;
  45. var ajax_args = {
  46. url: opts.url || wn.request.url,
  47. data: opts.args,
  48. type: 'POST',
  49. dataType: opts.dataType || 'json',
  50. success: function(r, xhr) {
  51. wn.request.cleanup(opts, r);
  52. opts.success && opts.success(r, xhr.responseText);
  53. },
  54. error: function(xhr, textStatus) {
  55. wn.request.cleanup(opts, {});
  56. show_alert(wn._("Unable to complete request: ") + textStatus)
  57. opts.error && opts.error(xhr)
  58. },
  59. async: opts.async
  60. };
  61. wn.last_request = ajax_args.data;
  62. if(opts.progress_bar) {
  63. var interval = null;
  64. $.extend(ajax_args, {
  65. xhr: function() {
  66. var xhr = jQuery.ajaxSettings.xhr();
  67. interval = setInterval(function() {
  68. if(xhr.readyState > 2) {
  69. var total = parseInt(xhr.getResponseHeader('Original-Length') || 0) ||
  70. parseInt(xhr.getResponseHeader('Content-Length'));
  71. var completed = parseInt(xhr.responseText.length);
  72. var percent = (100.0 / total * completed).toFixed(2);
  73. opts.progress_bar.css('width', (percent < 10 ? 10 : percent) + '%');
  74. }
  75. }, 50);
  76. wn.last_xhr = xhr;
  77. return xhr;
  78. },
  79. complete: function() {
  80. opts.progress_bar.css('width', '100%');
  81. clearInterval(interval);
  82. }
  83. })
  84. }
  85. return $.ajax(ajax_args);
  86. }
  87. // call execute serverside request
  88. wn.request.prepare = function(opts) {
  89. // btn indicator
  90. if(opts.btn) $(opts.btn).set_working();
  91. // navbar indicator
  92. if(opts.show_spinner) wn.set_loading();
  93. // freeze page
  94. if(opts.freeze) wn.dom.freeze();
  95. // no cmd?
  96. if(!opts.args.cmd) {
  97. console.log(opts)
  98. throw "Incomplete Request";
  99. }
  100. }
  101. wn.request.cleanup = function(opts, r) {
  102. // stop button indicator
  103. if(opts.btn) $(opts.btn).done_working();
  104. // hide button indicator
  105. if(opts.show_spinner) wn.done_loading();
  106. // un-freeze page
  107. if(opts.freeze) wn.dom.unfreeze();
  108. // session expired? - Guest has no business here!
  109. if(r.session_expired || wn.get_cookie("sid")==="Guest") {
  110. if(!wn.app.logged_out) {
  111. msgprint(wn._('Session Expired. Logging you out'));
  112. wn.app.logout();
  113. }
  114. return;
  115. }
  116. // show messages
  117. if(r._server_messages) {
  118. r._server_messages = JSON.parse(r._server_messages)
  119. msgprint(r._server_messages);
  120. }
  121. // show errors
  122. if(r.exc) {
  123. r.exc = JSON.parse(r.exc);
  124. if(r.exc instanceof Array) {
  125. $.each(r.exc, function(i, v) {
  126. if(v)console.log(v);
  127. })
  128. } else {
  129. console.log(r.exc);
  130. }
  131. };
  132. // debug messages
  133. if(r._debug_messages) {
  134. console.log("-")
  135. console.log("-")
  136. console.log("-")
  137. if(opts.args) {
  138. console.log("<<<< arguments ");
  139. console.log(opts.args);
  140. console.log(">>>>")
  141. }
  142. $.each(JSON.parse(r._debug_messages), function(i, v) { console.log(v); });
  143. console.log("<<<< response");
  144. delete r._debug_messages;
  145. console.log(r);
  146. console.log(">>>>")
  147. console.log("-")
  148. console.log("-")
  149. console.log("-")
  150. }
  151. if(r['403']) {
  152. wn.show_not_permitted(wn.get_route_str());
  153. }
  154. if(r.docs) {
  155. r.docs = wn.model.sync(r);
  156. }
  157. if(r.__messages) {
  158. $.extend(wn._messages, r.__messages);
  159. }
  160. wn.last_response = r;
  161. }