PageRenderTime 59ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/javascript/init.js

https://github.com/xavier7179/MultiWebTranslator
JavaScript | 376 lines | 278 code | 74 blank | 24 comment | 30 complexity | e7f04a5ebb0accd2d5fc6807f65fd9b8 MD5 | raw file
  1. //<![CDATA[
  2. function InviaDati(url, query, successFn, errorFn, reqFn) {
  3. var req = new ajaxRequest();
  4. req.setRequestFn(reqFn);
  5. req.setSuccessFn(successFn);
  6. req.setFailureFn(errorFn)
  7. req.send(url, query);
  8. }
  9. window.addEvent('domready', function() {
  10. var addproject = $('new_project_form');
  11. var delproject = $('del_project_form');
  12. var manproject = $('man_project_form');
  13. var meditproject = $('languageWrapper');
  14. var adduser = $('add_users_form');
  15. var deluser = $('delete_users');
  16. var timer;
  17. // istanza dell'immagine per pre-caricamento
  18. var loadIMG = new Element('img', {
  19. 'id': '',
  20. 'src':'../img/ajax-loader.gif',
  21. 'class': 'centered_thing'
  22. });
  23. // functions to manage the onRequest loading image
  24. var ajax_onload_img = function (fields) {
  25. loader = loadIMG.clone();
  26. timer = (function () {
  27. var c = new Chain();
  28. c.chain(
  29. function () { fields.dissolve(); } ,
  30. function () { fields.getParent().adopt(loader); }
  31. );
  32. c.callChain();
  33. c.callChain();
  34. }).delay(250);
  35. return loader;
  36. }
  37. var ajax_onsuc_img = function (fields, loader) {
  38. var c = new Chain();
  39. clearTimeout(timer);
  40. c.chain(
  41. function () { loader.destroy(); },
  42. function () { fields.reveal(); }
  43. );
  44. c.callChain();
  45. c.callChain();
  46. }
  47. var failureFN = function() { clearTimeout(timer); new MooDialog.Error("Error on Ajax Request");}
  48. if (addproject) {
  49. // Input ID=new_project_name
  50. var prj_name = $('new_project_name');
  51. var prj_submitBTN = $('new_project_submit');
  52. var addprojectfields = $('new_project_fields');
  53. var wait_img;
  54. // set a short duration
  55. addprojectfields.set('reveal', {'duration':'short'});
  56. // Aggiunge l'evento per la gestione del Submit di un nuovo progetto
  57. addproject.addEvent('submit', function (event) {
  58. event.stop();
  59. InviaDati(
  60. "dbInsProj.php",
  61. addproject.toQueryString(),
  62. function (response) {
  63. if (response != -1) {
  64. //alert("Creation DONE");
  65. /* PER GIANFRA!!!! parte di aggiornamento della select box per il delete ma serve che ritorni ID */
  66. var new_option = new Element('option', {
  67. 'id': 'prj_' + response,
  68. 'value': response
  69. })
  70. .set('html', prj_name.get('value'))
  71. .inject($('project_id'));
  72. prj_name.set('value', '').fireEvent('blur');
  73. }
  74. ajax_onsuc_img(addprojectfields, wait_img);
  75. },
  76. failureFN,
  77. function () {
  78. wait_img = ajax_onload_img(addprojectfields);
  79. }
  80. );
  81. });
  82. // gestisce l'onFocus per l'INPUT del nome progetto
  83. prj_name.addEvent('focus', function (){
  84. if (prj_name.get('value') == 'Inserire Nome Progetto') {
  85. prj_submitBTN.removeProperty('disabled');
  86. prj_name.set('value', '')
  87. .removeClass('overlaytext');
  88. }
  89. });
  90. // gestice il blur dell'Input del nome progetto
  91. prj_name.addEvent('blur', function() {
  92. if (prj_name.get('value') == '') {
  93. prj_submitBTN.setProperty('disabled', 'true');
  94. prj_name.set('value', 'Inserire Nome Progetto')
  95. .addClass('overlaytext');
  96. }
  97. });
  98. }
  99. if (delproject) {
  100. var prj_id = $('project_id');
  101. var delprojectfields = $('del_project_fields');
  102. var wait_img;
  103. prj_id.addEvent('change', function () {
  104. var submitBTN = $('del_project_submit');
  105. if (prj_id.get('value') != '-1')
  106. submitBTN.removeProperty('disabled');
  107. else
  108. submitBTN.setProperty('disabled', 'true');
  109. });
  110. delproject.addEvent('submit', function (e) {
  111. e.stop();
  112. // Verifica che l'utente voglia davvero eliminare il progetto
  113. new MooDialog.Confirm('Confermi di voler cancellare il progetto? La cancellazione &egrave; definitiva',
  114. function(){
  115. var prj_option_elem = $('prj_' + prj_id.get('value'));
  116. if (prj_id.get('value') != '-1') {
  117. InviaDati(
  118. "dbdeleteProj.php",
  119. delproject.toQueryString(),
  120. function(response) {
  121. // elimina la selezione fatta
  122. prj_option_elem.destroy();
  123. // disabilita nuovamente il bottone (onchange non viene chiamato dalla delete dell'elemento)
  124. prj_id.fireEvent('change');
  125. ajax_onsuc_img(delprojectfields, wait_img);
  126. },
  127. failureFN,
  128. function () {
  129. wait_img = ajax_onload_img(delprojectfields);
  130. }
  131. );
  132. }
  133. }, null);
  134. });
  135. //delproject.confirmFormSubmit('Confermi di voler cancellare il progetto? La cancellazione &egrave; definitiva');
  136. }
  137. if (manproject) {
  138. var prj_id = $('project_id');
  139. var wait_img;
  140. manproject.addEvent('change', function(e) {
  141. e.stop();
  142. var userdiv = $('user_list');
  143. if (prj_id.get('value') != '-1') {
  144. InviaDati (
  145. "dbselectProj.php",
  146. manproject.toQueryString(),
  147. function (response) {
  148. //alert("Retrieve Project DONE");
  149. userdiv.empty().set('html', response);
  150. /* setta evento per ciascun element*/
  151. userdiv.getElements('input')
  152. .each(function(elem) {
  153. elem.addEvent(
  154. 'change',
  155. function () {
  156. var uid = elem.get('value');
  157. var pid = $('actual_project_id').get('value');
  158. var state = elem.getProperty('checked')?'1':'0';
  159. InviaDati (
  160. "dbcheckProj.php",
  161. "user_id=" + uid + "&proj_id=" + pid + "&state=" + state,
  162. function (response) {
  163. //alert("User Participation UPDATE");
  164. },
  165. failureFN,
  166. null
  167. );
  168. });
  169. });
  170. ajax_onsuc_img(userdiv, wait_img);
  171. },
  172. failureFN,
  173. function () {
  174. wait_img = ajax_onload_img(userdiv);
  175. }
  176. );
  177. }
  178. else userdiv.empty().set('html', '<strong>Seleziona un progetto per continuare</strong>');
  179. });
  180. }
  181. if (meditproject) {
  182. //make every div that is a form child node editable
  183. var inplace = new InPlaceEditor({
  184. property: 'html',
  185. properties: {
  186. cols:25,
  187. rows:3
  188. },
  189. toColor: "#F8F8F8",
  190. fColor: "#fff",
  191. validate: function() {return true;},
  192. onChange: function (div, value, oldValue) {
  193. var id = div.get('id').split('_');
  194. var query = "id=" + id[1];
  195. query += (value)? "&text=" + encodeURIComponent(value):'';
  196. InviaDati (
  197. "dbupdateText.php",
  198. query,
  199. function (response) {
  200. div.get('tween')
  201. .start('background-color', '#C1FFC1')
  202. .chain(function(){
  203. this.start('background-color', '#FFFFFF');
  204. });
  205. },
  206. function () {
  207. div.set('text', oldValue);
  208. },
  209. null
  210. );
  211. }
  212. });
  213. inplace.attach('div[class~=editable]');
  214. var addButton = $('addMsgWrapper');
  215. addButton.addEvent ('click', function (e) {
  216. e.stop();
  217. InviaDati (
  218. "dbInsMess.php",
  219. "project_id=" + $('project_id').get('value'),
  220. function (response) {
  221. //alert(response);
  222. if (response != "-1") {
  223. Object.each(JSON.decode(response), function (elem) {
  224. var lang = $('lang_'+ elem.lang_id);
  225. var newDiv = new Element('div', {
  226. 'id':'msg_' + elem.mess_id,
  227. 'class': 'lang_single_msg editable'})
  228. if (lang.get('id') != 'lang_1') newDiv.inject(lang, 'bottom');
  229. else newDiv.inject(addButton, 'before');
  230. inplace.attach(newDiv);
  231. });
  232. }
  233. },
  234. failureFN,
  235. null
  236. );
  237. });
  238. }
  239. if (adduser && deluser) {
  240. var userfields = $('add_users_fields');
  241. var resetBTN = adduser.getElement('input[type=reset]');
  242. var wait_img;
  243. var deleteFN = function (e) {
  244. e.stop();
  245. var id = this.get('id').split('_');
  246. //alert(id[1]);
  247. InviaDati (
  248. "dbdeleteUser.php",
  249. "user_id=" + id[1],
  250. (function (response) {
  251. if (response != "-1") {
  252. this.nix(true);
  253. }
  254. }).bind(this),
  255. failureFN,
  256. null
  257. );
  258. }
  259. adduser.addEvent('submit', function (e) {
  260. e.stop();
  261. InviaDati (
  262. "dbaddUser.php",
  263. adduser.toQueryString(),
  264. function (response) {
  265. //alert(response);
  266. if (response != -1) {
  267. var id = response;
  268. // add user to table!
  269. var removeLink = new Element ('a', {
  270. 'alt':'Cancella Utente'
  271. });
  272. new Element ('img', {'src':'./img/delete.png'}).inject(removeLink);
  273. var userTable = new HtmlTable($('users_table'));
  274. userTable.push(
  275. [ $('firstname').get('value'),
  276. $('lastname').get('value'),
  277. $('login').get('value'),
  278. $('level').getElement('option[value=' + $('level').get('value') +']').get('text'),
  279. removeLink
  280. ],
  281. {'id':'user_' + id});
  282. removeLink.addEvent('click', deleteFN.bind($('user_' + id)));
  283. }
  284. adduser.reset();
  285. ajax_onsuc_img(userfields, wait_img);
  286. },
  287. failureFN,
  288. function () {
  289. wait_img = ajax_onload_img(userfields);
  290. }
  291. );
  292. });
  293. // recupera tutti gli utenti inseriti
  294. deluser.getElements('tr').each(function(user) {
  295. if (user.get('id') != null) {
  296. var a = user.getElement('a');
  297. a.addEvent('click', deleteFN.bind(user));
  298. }
  299. });
  300. }
  301. });
  302. //]]>