Hormold

VK Change (#1387203305)

Dec 16th, 2013
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 14.98 KB | None | 0 0
  1. Файл - profile_edit_job.js (Старый размер - 12385 | Новый - 0):
  2. 0.  - var ProfileEditorJob = {
  3. 1.  -
  4. 2.  -   init: function() {
  5. 3.  -     cur.globalCounter = 0;
  6. 4.  -     cur.worksCount = 0;
  7. 5.  -
  8. 6.  -     selectsData.setCountries(cur.selData.countries_list);
  9. 7.  -     for (var i in cur.selData.countries) {
  10. 8.  -       selectsData.setCities(i, cur.selData.countries[i]);
  11. 9.  -     }
  12. 10.  -
  13. 11.  -     if (!isVisible('works')) {
  14. 12.  -       cur.worksCount = cur.works.length;
  15. 13.  -       if (cur.worksCount) {
  16. 14.  -         for (var i = 0; i < cur.works.length; ++i) {
  17. 15.  -           ge('works').appendChild(this.genWorkRow(cur.works[i].id));
  18. 16.  -           cur.works[i] = this.initWorkRow(cur.works[i]);
  19. 17.  -         }
  20. 18.  -       } else {
  21. 19.  -         this.addWork();
  22. 20.  -       }
  23. 21.  -       show('works');
  24. 22.  -     }
  25. 23.  -
  26. 24.  -     if (cur.worksCount >= 7) {
  27. 25.  -       hide('add_work_link');
  28. 26.  -     } else {
  29. 27.  -       show('add_work_link');
  30. 28.  -     }
  31. 29.  -   },
  32. 30.  -
  33. 31.  -   genOneRow: function(field, id, label, params, additional) {
  34. 32.  -     var key = field + id;
  35. 33.  -     if (!params) {
  36. 34.  -       params = '';
  37. 35.  -     }
  38. 36.  -     if (!additional) {
  39. 37.  -       additional = '';
  40. 38.  -     }
  41. 39.  -     return '<div class="pedit_edu_row" id="row_' + key + '">' +
  42. 40.  -               '<div class="label fl_l ta_r">' + label + '</div>' +
  43. 41.  -               '<div class="labeled fl_l"><input id="' + key + '" name="' + key + '" ' + params + '/></div>' +
  44. 42.  -            additional + '</div>';
  45. 43.  -   },
  46. 44.  -
  47. 45.  -   genWorkRow: function(work_id) {
  48. 46.  -     return ce('div', {
  49. 47.  -       className: 'pedit_edu_big_row',
  50. 48.  -       id: 'work' + work_id,
  51. 49.  -       innerHTML: '<div id="content' + work_id + '">' +
  52. 50.  -         this.genOneRow('country', work_id, getLang('select_country'), '',
  53. 51.  -         '<img src="/images/upload.gif" id="progress' + work_id + '" />' +
  54. 52.  -         '<a class="fl_r" onclick="ProfileEditorJob.deleteWork(' + work_id + ')">' + getLang('global_delete') + '</a>') +
  55. 53.  -         this.genOneRow('city', work_id, getLang('select_city')) +
  56. 54.  -         '<div id="details' + work_id + '" style="display: none">' +
  57. 55.  -           this.genOneRow('company', work_id, getLang('select_company'), 'type="text" class="text"') +
  58. 56.  -           this.genOneRow('start', work_id, getLang('select_work_start')) +
  59. 57.  -           this.genOneRow('finish', work_id, getLang('select_work_finish')) +
  60. 58.  -           this.genOneRow('position', work_id, getLang('select_work_position'), 'id="position' + work_id + '_name"') +
  61. 59.  -         '</div></div>' +
  62. 60.  -         '<div class="deleted" id="deleted' + work_id + '"><div></div>' +
  63. 61.  -           '<a class="fl_r" onclick="ProfileEditorJob.restoreWork(' + work_id + ')">' + getLang('global_dont_delete') + '</a>' +
  64. 62.  -         '</div><div class="separator"><div></div></div>'
  65. 63.  -     }, {display: 'none'});
  66. 64.  -   },
  67. 65.  -
  68. 66.  -   get_by_id: function(elem, id) {
  69. 67.  -     if (elem.id == id) {
  70. 68.  -       return elem;
  71. 69.  -     }
  72. 70.  -     for (var i = 0; i < elem.childNodes.length; ++i) {
  73. 71.  -       var result = this.get_by_id(elem.childNodes[i], id);
  74. 72.  -       if (result) {
  75. 73.  -         return result;
  76. 74.  -       }
  77. 75.  -     }
  78. 76.  -     return false;
  79. 77.  -   },
  80. 78.  -
  81. 79.  -   initWorkRow: function(work, elem) {
  82. 80.  -     var g = elem ? function(id) { return ProfileEditorJob.get_by_id(elem, id); } : ge;
  83. 81.  -     work.uiStart = new Dropdown(g('start' + work.id), [[0, getLang('select_year_not_selected')]].concat(cur.selData.years), {
  84. 82.  -       width: 200,
  85. 83.  -       autocomplete: true,
  86. 84.  -       placeholder: getLang('select_year_not_selected'),
  87. 85.  -       placeholderColor: '#000',
  88. 86.  -       noResult: getLang('select_year_not_found'),
  89. 87.  -       onChange: function(value) {
  90. 88.  -         value = intval(value);
  91. 89.  -         var new_finish_data = [];
  92. 90.  -         if (!value) {
  93. 91.  -           work.uiStart.clear();
  94. 92.  -           new_finish_data = cur.selData.years;
  95. 93.  -         } else {
  96. 94.  -           var finish_value = intval(work.uiFinish.val());
  97. 95.  -           if (finish_value && finish_value < value) {
  98. 96.  -             work.uiFinish.val(value);
  99. 97.  -           }
  100. 98.  -           for (var i = 0; i < cur.selData.years.length; ++i) {
  101. 99.  -             if (cur.selData.years[i][0] >= value) {
  102. 100.  -               new_finish_data.push(cur.selData.years[i]);
  103. 101.  -             }
  104. 102.  -           }
  105. 103.  -         }
  106. 104.  -         work.uiFinish.setOptions({defaultItems: [[0, getLang('select_year_not_selected')]].concat(new_finish_data)});
  107. 105.  -         work.uiFinish.setData(new_finish_data);
  108. 106.  -       }
  109. 107.  -     });
  110. 108.  -     work.uiStart.setData(cur.selData.years);
  111. 109.  -     work.uiFinish = new Dropdown(g('finish' + work.id), [[0, getLang('select_year_not_selected')]].concat(cur.selData.years), {
  112. 110.  -       width: 200,
  113. 111.  -       autocomplete: true,
  114. 112.  -       placeholder: getLang('select_year_not_selected'),
  115. 113.  -       placeholderColor: '#000',
  116. 114.  -       noResult: getLang('select_year_not_found'),
  117. 115.  -       onChange: function(value) {
  118. 116.  -         value = intval(value);
  119. 117.  -         var new_start_data = [];
  120. 118.  -         if (!value) {
  121. 119.  -           work.uiFinish.clear();
  122. 120.  -           new_start_data = cur.selData.years;
  123. 121.  -         } else {
  124. 122.  -           var start_value = intval(work.uiStart.val());
  125. 123.  -           if (start_value && start_value > value) {
  126. 124.  -             work.uiStart.val(value);
  127. 125.  -           }
  128. 126.  -           for (var i = 0; i < cur.selData.years.length; ++i) {
  129. 127.  -             if (cur.selData.years[i][0] <= value) {
  130. 128.  -               new_start_data.push(cur.selData.years[i]);
  131. 129.  -             }
  132. 130.  -           }
  133. 131.  -         }
  134. 132.  -         work.uiStart.setOptions({defaultItems: [[0, getLang('select_year_not_selected')]].concat(new_start_data)});
  135. 133.  -         work.uiStart.setData(new_start_data);
  136. 134.  -       }
  137. 135.  -     });
  138. 136.  -     work.uiFinish.setData(cur.selData.years);
  139. 137.  -
  140. 138.  -     work.uiStart.val(work.start, true);
  141. 139.  -     work.uiFinish.val(work.finish, true);
  142. 140.  -
  143. 141.  -     work.uiPosition = new Selector(g('position' + work.id), 'select.php?act=apositions', {
  144. 142.  -       width: 200,
  145. 143.  -       multiselect: false,
  146. 144.  -       noResult: getLang('select_work_position_select'),
  147. 145.  -       introText: getLang('select_work_position_select'),
  148. 146.  -       selectedItems: [work.position_val],
  149. 147.  -       dropdown: false,
  150. 148.  -       enableCustom: true,
  151. 149.  -       progressBar: 'progress' + work.id,
  152. 150.  -       onChange: function(value) {
  153. 151.  -         var val = intval(value);
  154. 152.  -         if (!val) {
  155. 153.  -           work.uiPosition.clear();
  156. 154.  -         }
  157. 155.  -       }
  158. 156.  -     });
  159. 157.  -
  160. 158.  -     work.uiCity = new CitySelect(g('city' + work.id), g('row_city' + work.id), {
  161. 159.  -       width: 200,
  162. 160.  -       progressBar: 'progress' + work.id,
  163. 161.  -       country: work.country,
  164. 162.  -       city: work.city_val,
  165. 163.  -       onChange: function(value) {
  166. 164.  -         if (intval(value)) {
  167. 165.  -           show('details' + work.id);
  168. 166.  -         } else {
  169. 167.  -           hide('details' + work.id);
  170. 168.  -         }
  171. 169.  -       }
  172. 170.  -     });
  173. 171.  -     work.uiCountry = new CountrySelect(g('country' + work.id), g('row_country' + work.id), {
  174. 172.  -       width: 200,
  175. 173.  -       progressBar: 'progress' + work.id,
  176. 174.  -       country: work.country_val,
  177. 175.  -       citySelect: work.uiCity
  178. 176.  -     });
  179. 177.  -
  180. 178.  -     g('company' + work.id).value = winToUtf(work.company_name);
  181. 179.  -     //g('position' + work.id).value = winToUtf(work.position);
  182. 180.  -
  183. 181.  -     g('work' + work.id).style.display = 'block';
  184. 182.  -     if (work.city) {
  185. 183.  -       g('details' + work.id).style.display = 'block';
  186. 184.  -     }
  187. 185.  -
  188. 186.  -     return work;
  189. 187.  -   },
  190. 188.  -
  191. 189.  -   addWork: function() {
  192. 190.  -     if (cur.worksCount >= 7) {
  193. 191.  -       return false;
  194. 192.  -     }
  195. 193.  -     var new_work = {
  196. 194.  -       id: -(++cur.globalCounter),
  197. 195.  -       country: cur.selData.mem.country,
  198. 196.  -       country_val: cur.selData.mem.country_val,
  199. 197.  -       city: cur.selData.mem.city,
  200. 198.  -       city_val: cur.selData.mem.city_val,
  201. 199.  -       company_name: '',
  202. 200.  -       start: 0,
  203. 201.  -       finish: 0,
  204. 202.  -       position: 0,
  205. 203.  -       position_val: ''
  206. 204.  -     };
  207. 205.  -     ge('works').appendChild(this.genWorkRow(new_work.id));
  208. 206.  -     new_work = this.initWorkRow(new_work);
  209. 207.  -     if (!cur.works.length) {
  210. 208.  -       cur.works = new Array();
  211. 209.  -     }
  212. 210.  -     cur.works.push(new_work);
  213. 211.  -     ++cur.worksCount;
  214. 212.  -     if (cur.worksCount >= 7) {
  215. 213.  -       hide('add_work_link');
  216. 214.  -     }
  217. 215.  -     return false;
  218. 216.  -   },
  219. 217.  -
  220. 218.  -   getIndex: function(data, id) {
  221. 219.  -     for (var i = 0; i < data.length; ++i) {
  222. 220.  -       if (data[i].id == id) {
  223. 221.  -         return i;
  224. 222.  -       }
  225. 223.  -     }
  226. 224.  -     return false;
  227. 225.  -   },
  228. 226.  -
  229. 227.  -   deleteWork: function(id) {
  230. 228.  -     --cur.worksCount;
  231. 229.  -     show('add_work_link');
  232. 230.  -     if ((ge('company' + id).value.length) || (ge('position' + id).value.length) || (id > 0)) {
  233. 231.  -       hide('content' + id);
  234. 232.  -       ge('deleted' + id).firstChild.innerHTML = getLang('profileEdit_work_will_be_deleted');
  235. 233.  -       show('deleted' + id);
  236. 234.  -     } else {
  237. 235.  -       var index = this.getIndex(cur.works, id);
  238. 236.  -       cur.works[index] = cur.works[cur.works.length - 1];
  239. 237.  -       cur.works.pop();
  240. 238.  -       ge('work' + id).parentNode.removeChild(ge('work' + id));
  241. 239.  -       if (cur.works.length == 0) {
  242. 240.  -         this.addWork();
  243. 241.  -       }
  244. 242.  -     }
  245. 243.  -     return false;
  246. 244.  -   },
  247. 245.  -
  248. 246.  -   restoreWork: function(id) {
  249. 247.  -     if (cur.worksCount >= 7) {
  250. 248.  -       return false;
  251. 249.  -     }
  252. 250.  -     hide('deleted' + id);
  253. 251.  -     show('content' + id);
  254. 252.  -     ++cur.worksCount;
  255. 253.  -     if (cur.worksCount >= 7) {
  256. 254.  -       hide('add_work_link');
  257. 255.  -     }
  258. 256.  -     return false;
  259. 257.  -   },
  260. 258.  -
  261. 259.  -   addFields: function() {
  262. 260.  -     var params = arguments[0];
  263. 261.  -     var id = arguments[1];
  264. 262.  -     var index = arguments[2];
  265. 263.  -     for (var i = 3; i < arguments.length; ++i) {
  266. 264.  -       if (intval(ge(arguments[i] + id).value)) {
  267. 265.  -         params[arguments[i] + index] = ge(arguments[i] + id).value;
  268. 266.  -       }
  269. 267.  -     }
  270. 268.  -     return params;
  271. 269.  -   },
  272. 270.  -
  273. 271.  -   addTextFields: function() {
  274. 272.  -     var params = arguments[0];
  275. 273.  -     var id = arguments[1];
  276. 274.  -     var index = arguments[2];
  277. 275.  -     for (var i = 3; i < arguments.length; ++i) {
  278. 276.  -       if (ge(arguments[i] + id).value.length) {
  279. 277.  -         params[arguments[i] + index] = ge(arguments[i] + id).value;
  280. 278.  -       }
  281. 279.  -     }
  282. 280.  -     return params;
  283. 281.  -   },
  284. 282.  -
  285. 283.  -   saveWorks: function(btn) {
  286. 284.  -     var params = {act: 'a_save_career', hash: ge('hash').value};
  287. 285.  -     for (var i = 0; i < cur.works.length; ++i) {
  288. 286.  -       var id = cur.works[i].id;
  289. 287.  -       params['id' + i] = id;
  290. 288.  -       if (isVisible('content' + id) && (ge('company' + id).value.length || ge('position' + id).value.length)) {
  291. 289.  -         params = this.addFields(params, id, i, 'country', 'city', 'start', 'finish');
  292. 290.  -         params = this.addTextFields(params, id, i, 'company');
  293. 291.  -         var position_val = cur.works[i].uiPosition.val_full(), position = position_val[1] || '';
  294. 292.  -         if (position.length) {
  295. 293.  -           params['position' + i] = position;
  296. 294.  -         }
  297. 295.  -       } else {
  298. 296.  -         params['deleted' + i] = 1;
  299. 297.  -       }
  300. 298.  -     }
  301. 299.  -
  302. 300.  -     var doneHandler = function(response) {
  303. 301.  -       var to_remove = [];
  304. 302.  -       for (var i = 0; i < cur.works.length; ++i) {
  305. 303.  -         var new_work_id = response['res' + i];
  306. 304.  -         if (intval(new_work_id)) {
  307. 305.  -           cur.works[i] = this.updateWork(cur.works[i], new_work_id, ge('works'));
  308. 306.  -         } else {
  309. 307.  -           to_remove.push(i);
  310. 308.  -         }
  311. 309.  -       }
  312. 310.  -       for (var i = 0; i < to_remove.length; ++i) {
  313. 311.  -         var index = to_remove[i];
  314. 312.  -         ge('work' + cur.works[index].id).parentNode.removeChild(ge('work' + cur.works[index].id));
  315. 313.  -         cur.works[index] = cur.works[cur.works.length - 1];
  316. 314.  -         for (var j = i + 1; j < to_remove.length; ++j) {
  317. 315.  -           if (to_remove[j] == cur.works.length - 1) {
  318. 316.  -             to_remove[j] = index;
  319. 317.  -           }
  320. 318.  -         }
  321. 319.  -         cur.works.pop();
  322. 320.  -       }
  323. 321.  -       cur.worksCount = cur.works.length;
  324. 322.  -       if (cur.worksCount >= 7) {
  325. 323.  -         hide('add_work_link');
  326. 324.  -       } else {
  327. 325.  -         show('add_work_link');
  328. 326.  -       }
  329. 327.  -       if (!cur.worksCount) {
  330. 328.  -         this.addWork();
  331. 329.  -       }
  332. 330.  -     }
  333. 331.  -
  334. 332.  -     ajax.post('al_profileEdit.php', params, {
  335. 333.  -       onDone: function (job_data) {
  336. 334.  -         doneHandler.call(ProfileEditorJob, job_data);
  337. 335.  -         ProfileEditor.showMsg(getLang('profileEdit_works_saved'));
  338. 336.  -       },
  339. 337.  -       showProgress: lockButton.pbind(btn),
  340. 338.  -       hideProgress: unlockButton.pbind(btn)
  341. 339.  -     });
  342. 340.  -     return false;
  343. 341.  -   },
  344. 342.  -
  345. 343.  -   updateWork: function(old_work, new_work_id, parent) {
  346. 344.  -     old_work.country = old_work.uiCountry.val();
  347. 345.  -     old_work.country_val = old_work.uiCountry.val_full();
  348. 346.  -     old_work.city = old_work.uiCity.val();
  349. 347.  -     old_work.city_val = old_work.uiCity.val_full();
  350. 348.  -     old_work.company_name = ge('company' + old_work.id).value;
  351. 349.  -     old_work.start = old_work.uiStart.val();
  352. 350.  -     old_work.finish = old_work.uiFinish.val();
  353. 351.  -     old_work.position = old_work.uiPosition.val();
  354. 352.  -     old_work.position_val = old_work.uiPosition.val_full();
  355. 353.  -
  356. 354.  -     var new_elem = this.genWorkRow(new_work_id);
  357. 355.  -     var old_elem = ge('work' + old_work.id);
  358. 356.  -     old_work.id = new_work_id;
  359. 357.  -     new_work = this.initWorkRow(old_work, new_elem);
  360. 358.  -     parent.replaceChild(new_elem, old_elem);
  361. 359.  -
  362. 360.  -     return new_work;
  363. 361.  -   },
  364. 362.  -
  365. 363.  -   workChanged: function(work) {
  366. 364.  -     var old_position = work.position_val[1] || '', position = (work.uiPosition.val_full() || [])[1] || '';
  367. 365.  -     return !isVisible('content' + work.id) ||
  368. 366.  -            work.country != work.uiCountry.val() || work.city != work.uiCity.val() ||
  369. 367.  -            winToUtf(work.company_name) != ge('company' + work.id).value || winToUtf(old_position) != winToUtf(position) ||
  370. 368.  -            work.start != work.uiStart.val() || work.finish != work.uiFinish.val();
  371. 369.  -   }
  372. 370.  - };
  373. 372.  - try{stManager.done('profile_edit_job.js');}catch(e){}
  374. ------
Advertisement
Add Comment
Please, Sign In to add comment