Guest User

Untitled

a guest
Jan 22nd, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 37.53 KB | None | 0 0
  1. {include file='header.tpl'}
  2. <script type="text/javascript" src="{$base_url}libs/js/date-picker-v5/js/datepicker.js">{literal}{"describedby":"fd-dp-aria-describedby"}{/literal}</script>
  3. <link href="{$base_url}libs/js/date-picker-v5/css/datepicker.css" rel="stylesheet" type="text/css" />
  4. <script type="text/javascript" src="{$base_url}libs/js/jquery/jquery-ui-1.8.1.custom.min.js"></script>
  5. {literal}<style type="text/css">
  6. #div_links{margin: 15px 0px;padding: 3px 0px;}
  7. ul.sortable{margin-top: 10px;}
  8. .sortable, .sortable li{
  9. list-style-type: none;
  10. margin: 0;
  11. padding: 0;
  12. width: 660px;
  13. }
  14.  
  15. .sortable li, .sortable li:active{
  16. cursor: move;
  17. margin: 0px 0px 5px 0px;
  18. border: 1px solid #dddddd;
  19. background-color: #f1f1f1;
  20. height: 32px;
  21. }
  22.  
  23. .sortable li .act{float: left; width: 60px; height: 18px;margin-left:540px;margin-top: -20px;}
  24. .sortable li table{margin: 4px 10px 0px 4px;}
  25. .sortable li td a{color: red;cursor: pointer;padding: 1px 3px;font-size: 16pt;font-weight: bold;}
  26. .sortable li td a:hover{color: #ffffff;background-color: red;}
  27.  
  28. div.hotel{
  29. border: 1px solid #bbb;
  30. margin-right: 100px;
  31. margin-bottom: 20px;
  32. padding: 10px;
  33. background: #fcfcfc;
  34. }
  35.  
  36. div.hotel:hover{border: 1px solid #000;background: #fbfbfb;}
  37.  
  38. .hotel-del{float: right;}
  39. .hotel-del a{color: red;}
  40. .hotel-del a:hover{background: red;color: #fff;}
  41.  
  42.  
  43. </style>{/literal}
  44. <script type="text/javascript" src="{$base_url}libs/js/jquery/tab.js"></script>
  45. <!-- TinyMCE -->
  46. <script type="text/javascript" src="{$base_url}libs/js/tiny_mce/tiny_mce.js"></script>
  47. <script type="text/javascript" src="{$base_url}libs/js/tiny_mce/tiny_mce_init.js"></script>
  48. <script type="text/javascript" src="{$base_url}libs/js/tiny_mce/plugins/tinybrowser/tb_tinymce.js.php"></script>
  49. {literal}
  50. <script type="text/javascript">
  51. _initTinyMCE({width: '900', height: '300', language: 'en'});
  52. </script>
  53. {/literal}
  54. <!-- /TinyMCE -->
  55. <link rel="stylesheet" type="text/css" href="{$base_url}libs/js/vTip/css/vtip.css"/>
  56. <script type="text/javascript" src="{$base_url}libs/js/vTip/vtip-min.js"></script>
  57. <script type="text/javascript">
  58. var base_url = '{$base_url}';
  59. var submitEnable = true;
  60. var _sel_city = {if isset($form.city)}'{$form.city}'{else}false{/if};
  61. var firstSelected = true;
  62. //var count_dates = {if isset($count_dates) && $count_dates!=''}{$count_dates}{else}0{/if};
  63. var datesArray = [{$dates_arr}];
  64. var hotelsArray = [{$hotels_arr}];
  65. var isEdit = false;
  66. var edit_hid = -1;
  67. var edit_did = -1;
  68.  
  69. var count_hotels = {if isset($count_hotels) && $count_hotels!=''}{$count_hotels}{else}0{/if};
  70.  
  71. {literal}
  72. function changeCountry()
  73. {
  74. var country_id = parseInt($('#sel_country').val());
  75. if (country_id < 1) return;
  76.  
  77. submitEnable = false;
  78. $('#sel_city').attr('disabled', 'disabled');
  79.  
  80. $.ajax(
  81. {
  82. type: 'get',
  83. dataType: 'text',
  84. url: base_url+'main/main/eturas/?req=cake/hotels_booking/country_regions/'+country_id,
  85. success: function(_data)
  86. {
  87. $('#sel_city option').remove();
  88. $('#sel_city').append('<option value="">-- Select destination --</option>');
  89.  
  90. var opts = '';
  91. var item;
  92. var item_t;
  93.  
  94. if (_data != '"#not_found#"')
  95. {
  96. _data = _data.replace('{','').replace('}','').replace(/\"/g,'').split(',');
  97.  
  98. var _selItem = _sel_city;
  99. if (!firstSelected) _selItem = false;
  100.  
  101. for(var i in _data)
  102. {
  103. item = _data[i].split(':');
  104. eval('item_t = {"txt": "'+item[1]+'"}');
  105.  
  106. if (_selItem != false)
  107. {
  108. if (item_t.txt == _selItem)
  109. {
  110. $('#sel_city').append('<option value="'+item_t.txt+'" selected="selected">'+item_t.txt+'</option>');
  111. }
  112. else
  113. {
  114. $('#sel_city').append('<option value="'+item_t.txt+'">'+item_t.txt+'</option>');
  115. }
  116. }
  117. else
  118. {
  119. $('#sel_city').append('<option value="'+item_t.txt+'">'+item_t.txt+'</option>');
  120. }
  121. }
  122.  
  123. submitEnable = true;
  124. }
  125.  
  126. $('#sel_city').attr('disabled', '');
  127. }
  128. });
  129.  
  130. }
  131.  
  132. function changeEmailType()
  133. {
  134. document.getElementById('txt_email').disabled = document.getElementById('email_type_global').checked;
  135. }
  136.  
  137. //hotels
  138. /*----------------------------------------------------------------------------------*/
  139.  
  140. function selectHotelImage(base_url, field)
  141. {
  142. try{
  143. var w = window.open(base_url+'libs/js/tinybrowser/tinybrowser.php?type=image&_field='+field, 'img_select_wnd', 'left='+(screen.width-670)/2+', top='+(screen.height-490)/2+', width=670, height=490, menubar=0, toolbar=0, scrollbars=1, status=0, resizable=1');
  144. } catch(err){}
  145.  
  146. }
  147.  
  148. function previewHotelImage(field)
  149. {
  150. try{
  151. var url = document.getElementById('txt_'+field).value;
  152. w = window.open(url, 'img_preview_wnd');
  153. } catch(err){}
  154. }
  155.  
  156. function deleteHotelImage(field)
  157. {
  158. try{
  159. document.getElementById('img_'+field).src = '';
  160. document.getElementById('img_'+field).style.display = 'none';
  161. document.getElementById('txt_'+field).value = '';
  162. } catch(err){}
  163. }
  164.  
  165.  
  166. function addHotel()
  167. {
  168. var tmp = _createElement( "div", {'id': "hotel_"+count_hotels, 'class': 'hotel', 'style': 'display: none;'});
  169. document.getElementById('hotelsArea').appendChild(tmp);
  170.  
  171. var _tmpd = '<div class="hotel-del"><a href="#" onclick="deleteHotel('+count_hotels+');return false;">delete</a></div>';
  172. _tmpd += '<span class="req">*</span>Hotel name:<br />';
  173. _tmpd += '<input type="text" value="" id="txt_title'+count_hotels+'" maxlength="250" style="width: 300px;" class="inputbox" /> <br /><br />';
  174.  
  175. _tmpd += 'Image: ';
  176. _tmpd += '<div style="margin-top: 5px;">';
  177. _tmpd += '<input type="hidden" value="" id="txt_image'+count_hotels+'" maxlength="255" />';
  178. _tmpd += '<img src="" style="cursor: url(\'{/literal}{$base_url}{literal}app/admin/views/images/cursor_zoom.gif\'), auto;margin: 3px 0px;border:none; display: none;" id="img_image'+count_hotels+'" alt="" class="selectimg" onclick="previewHotelImage(\'image'+count_hotels+'\');" />';
  179. _tmpd += '<input type="button" class="button-blue small" value="Select" onclick="selectHotelImage(\'{/literal}{$base_url}{literal}\', \'image'+count_hotels+'\')" /> <input type="button" class="button-blue small" value="Delete" onclick="deleteHotelImage(\'image'+count_hotels+'\')" />';
  180. _tmpd += '</div><br /><br />';
  181.  
  182. _tmpd += '<div style="border-bottom: 1px solid #bbb;padding-bottom: 15px;">';
  183. _tmpd += '<table id="tbl_addform'+count_hotels+'"><tr>';
  184. _tmpd += '<td><span class="req">*</span>Date start:<br /><input type="text" id="txt_date_start'+count_hotels+'" o1nchange="alert(33);changeDate('+count_hotels+')" style="width: 90px;" readonly="readonly" class="inputbox" /></td>';
  185. _tmpd += '<td style="padding-left: 5px;"><span class="req">*</span>Date end:<br /><input type="text" id="txt_date_end'+count_hotels+'" o1nchange="changeDate('+count_hotels+')" style="width: 90px;" readonly="readonly" class="inputbox" /></td>';
  186. _tmpd += '<td style="padding-left: 5px;"><span class="req">*</span>Period:<br /><select class="inputbox" style="width: 120px;" id="sel_period'+count_hotels+'"></select></td>';
  187. _tmpd += '<td style="padding-left: 5px;"><span class="req">*</span>Price:<br /><input type="text" id="txt_price'+count_hotels+'" style="width: 80px;" class="inputbox" /></td>';
  188. _tmpd += '<td style="padding-left: 5px;">&nbsp;<br /><input type="button" class="button-blue small" onclick="addLink('+count_hotels+')" value="Add date" /></td></tr></table>';
  189. _tmpd += '</div><div id="div_links'+count_hotels+'"><ul id="sortable'+count_hotels+'" class="sortable"></ul></div>';
  190.  
  191. $('#hotel_'+count_hotels).html(_tmpd);
  192. $('#hotel_'+count_hotels).fadeIn(500);
  193.  
  194. eval("elem = {'txt_date_start"+count_hotels+"': 'Y-ds-m-ds-d'};");
  195. var opts = {formElements: elem, noFadeEffect:true, callbackFunctions:{"dateset":[changeDate]} };
  196. datePickerController.createDatePicker(opts);
  197. eval("elem = {'txt_date_end"+count_hotels+"': 'Y-ds-m-ds-d'};");
  198. opts = {formElements: elem, noFadeEffect:true, callbackFunctions:{"dateset":[changeDate]}};
  199. datePickerController.createDatePicker(opts);
  200.  
  201. document.getElementById('hotel_'+count_hotels).scrollIntoView(true);
  202.  
  203. hotelsArray[count_hotels] = {'title': '', 'dates': [], 'act': '1'};
  204.  
  205. $("#sortable"+count_hotels).sortable({ update: function(){} });
  206.  
  207. count_hotels++;
  208. }
  209.  
  210. function changeDate(arg)
  211. {
  212. var _d = dateFormat(arg.date, "yyyy-mm-dd");
  213. if (_d =='' || _d=='0000-00-00') return;
  214.  
  215. var _arr = arg.id.split('txt_date_start');
  216. var id = -1;
  217. if (_arr.length==2 && parseInt(_arr[1])>=0)
  218. {
  219. id = parseInt(_arr[1]);
  220. $('#txt_date_start'+id).val(_d);
  221. }
  222. else
  223. {
  224. _arr = arg.id.split('txt_date_end');
  225. if (_arr.length==2 && parseInt(_arr[1])>=0)
  226. {
  227. id = parseInt(_arr[1]);
  228. $('#txt_date_end'+id).val(_d);
  229. }
  230. }
  231. if (id=='NaN' || id<0) return;
  232. $('#sel_period'+id+' option').remove();
  233.  
  234. var date_start = $('#txt_date_start'+id).val();
  235. var date_end = $('#txt_date_end'+id).val();
  236.  
  237. if (date_start=='' || (/^[0-9]{4}\-((0[1-9])|(1[0-2]))\-(([1-2][0-9])|([0][1-9])|(3[0-1]))$/.test(date_start) == false) ||
  238. date_end=='' || (/^[0-9]{4}\-((0[1-9])|(1[0-2]))\-(([1-2][0-9])|([0][1-9])|(3[0-1]))$/.test(date_end) == false) )
  239. {
  240. return;
  241. }
  242.  
  243. buildPeriodSelect(date_start, date_end, 'sel_period'+id, '');
  244.  
  245. }
  246.  
  247. function changeDateEdit(arg)
  248. {
  249. if (edit_hid == -1 || edit_did == -1) return;
  250. if (hotelsArray[edit_hid] == '-1' || hotelsArray[edit_hid].dates[edit_did] == '-1' || !isEdit) return;
  251.  
  252. var _d = dateFormat(arg.date, "yyyy-mm-dd");
  253. if (_d =='' || _d=='0000-00-00') return;
  254.  
  255. $('#'+arg.id).val(_d);
  256.  
  257. $('#sel_period_edit option').remove();
  258.  
  259. var date_start = $('#txt_date_start_edit').val();
  260. var date_end = $('#txt_date_end_edit').val();
  261.  
  262. if (date_start=='' || (/^[0-9]{4}\-((0[1-9])|(1[0-2]))\-(([1-2][0-9])|([0][1-9])|(3[0-1]))$/.test(date_start) == false) ||
  263. date_end=='' || (/^[0-9]{4}\-((0[1-9])|(1[0-2]))\-(([1-2][0-9])|([0][1-9])|(3[0-1]))$/.test(date_end) == false) )
  264. {
  265. return;
  266. }
  267.  
  268. buildPeriodSelect(date_start, date_end, 'sel_period_edit', hotelsArray[edit_hid].dates[edit_did].period);
  269. }
  270.  
  271. function deleteHotel(id)
  272. {
  273. try{
  274. hotelsArray[id] = '-1';
  275. //datesArray[id] = '-1';
  276. $('#hotel_'+id).fadeOut(600);
  277. setTimeout(function(){$('#hotel_'+id).remove();}, 600)
  278. }catch(err){}
  279. }
  280.  
  281. function buildPeriodSelect(date_start, date_end, eid, sel)
  282. {
  283. $('#'+eid+' option').remove();
  284.  
  285. var date1 = new Date(date_start);
  286. var date2 = new Date(date_end);
  287. if (date1>date2)
  288. {
  289. alert('Date-end should be bigger than date-start');
  290. return;
  291. }
  292.  
  293. var days = Math.floor( (date2 - date1)/86400000 );
  294. var _selected = '';
  295. if (days == 0)
  296. {
  297. _selected = (sel=='1 d.')?' selected="selected" ':'';
  298. $('#'+eid).append('<option value="1 d."'+_selected+'>1 d.</option>');
  299. _selected = (sel=='1 d. / 1 n.')?' selected="selected" ':'';
  300. $('#'+eid).append('<option value="1 d. / 1 n."'+_selected+'>1 d. / 1 n.</option>');
  301. }
  302. else if (days>0)
  303. {
  304. _selected = (sel==(days+1)+' d.')?' selected="selected" ':'';
  305. $('#'+eid).append('<option value="'+(days+1)+' d."'+_selected+'>'+(days+1)+' d.</option>');
  306. if (days>0)
  307. {
  308. _selected = (sel==(days+1)+' d. / '+(days)+' n.')?' selected="selected" ':'';
  309. $('#'+eid).append('<option value="'+(days+1)+' d. / '+(days)+' n."'+_selected+'>'+(days+1)+' d. / '+(days)+' n.</option>');
  310. }
  311. _selected = (sel==(days+1)+' d. / '+(days+1)+' n.')?' selected="selected" ':'';
  312. $('#'+eid).append('<option value="'+(days+1)+' d. / '+(days+1)+' n."'+_selected+'>'+(days+1)+' d. / '+(days+1)+' n.</option>');
  313. }
  314.  
  315. }
  316.  
  317.  
  318. //dates
  319. /*----------------------------------------------------------------------------------*/
  320.  
  321. function addLink(id)
  322. {
  323. if (hotelsArray[id] == '-1') return;
  324.  
  325. var count_dates = hotelsArray[id].dates.length;
  326.  
  327. try{
  328. var date_start = $('#txt_date_start'+id).val();
  329. var date_end = $('#txt_date_end'+id).val();
  330. var period = $('#sel_period'+id).val();
  331. var price = $('#txt_price'+id).val();
  332. if (date_start=='' || (/^[0-9]{4}\-((0[1-9])|(1[0-2]))\-(([1-2][0-9])|([0][1-9])|(3[0-1]))$/.test(date_start) == false) )
  333. {
  334. alert('Enter date-start');
  335. $('#txt_date_start'+id).focus();
  336. return;
  337. }
  338. if (date_end=='' || (/^[0-9]{4}\-((0[1-9])|(1[0-2]))\-(([1-2][0-9])|([0][1-9])|(3[0-1]))$/.test(date_end) == false))
  339. {
  340. alert('Enter Date-end');
  341. $('#txt_date_end'+id).focus();
  342. return;
  343. }
  344. if (period=='' || period=='NaN' || period==null || period=='null')
  345. {
  346. alert('Select period');
  347. $('#sel_period'+id).focus();
  348. return;
  349. }
  350. if (price=='' || (/^([\+\-]{0,1})([\d]{1,8})([\.]{0,1})([\d]{0,3})$/.test(price) == false))
  351. {
  352. alert('Enter Price');
  353. $('#txt_price'+id).focus();
  354. return;
  355. }
  356.  
  357.  
  358. var tmp = _createElement( "li", {'id': "lnk"+id+"_"+count_dates, 'style': 'display: none;'});
  359. document.getElementById('sortable'+id).appendChild(tmp);
  360.  
  361. var _tmpd = '<table width="100%"><tr>';
  362. _tmpd += '<td>Date: <b>'+date_start + ' - '+date_end+'</b></span></td>';
  363. _tmpd += '<td width="240">Period: <b>'+period+'</b></td>';
  364. _tmpd += '<td width="100">Price: <span style="font-weight: bold;color: red;">'+price+'</span></td>';
  365. _tmpd += '<td width="65"><label><input type="checkbox" id="chk'+id+'_'+count_dates+'" checked="checked" onchange="chkLink('+id+', '+count_dates+')" /> Active</label></td>';
  366. _tmpd += '<td align="right" style="width: 48px;padding-right: 5px;"><a onclick="editLink('+id+', '+count_dates+')" title="Edit"><img src="'+base_url+'app/admin/views/images/edit16.png" alt="" border="0" /></a><a onclick="deleteLink('+id+', '+count_dates+')" title="Delete"><img src="'+base_url+'app/admin/views/images/del16.png" alt="" border="0" /></a></td>';
  367. _tmpd += '</tr></table>';
  368.  
  369. hotelsArray[id].dates[count_dates] = {'date_start': date_start, 'date_end': date_end, 'period': period, 'price': price, 'act': '1'};
  370. $('#txt_date_start'+id).val('');
  371. $('#txt_date_end'+id).val('');
  372. $('#sel_period'+id).val('');
  373. $('#sel_period'+id+' option').remove();
  374. $('#txt_price'+id).val('');
  375.  
  376. $('#lnk'+id+'_'+count_dates).html(_tmpd);
  377. $('#lnk'+id+'_'+count_dates).fadeIn(1000)
  378.  
  379. }catch(err){alert(err);}
  380. }
  381.  
  382. /*-----------------------------------------------------------------------------*/
  383.  
  384. function chkLink(hid, did)
  385. {
  386. if (hotelsArray[hid] == '-1' || hotelsArray[hid].dates[did] == '-1') return;
  387. hotelsArray[hid].dates[did].act = (document.getElementById('chk'+hid+'_'+did).checked)?'1':'0';
  388. }
  389.  
  390. /*-----------------------------------------------------------------------------*/
  391.  
  392. function editLink(hid, did)
  393. {
  394. if (hotelsArray[hid] == '-1' || hotelsArray[hid].dates[did] == '-1' || isEdit) return;
  395.  
  396. isEdit = true;
  397. edit_hid = hid;
  398. edit_did = did;
  399.  
  400. $('#tbl_addform'+hid+' *').attr('disabled', 'true');
  401.  
  402. var _tmpd = '<table style="margin: 3px;"><tr>';
  403. _tmpd += '<td>Date start:<br /><input type="text" id="txt_date_start_edit" style="width: 90px;" value="'+_htmlspecialchars(hotelsArray[hid].dates[did].date_start)+'" class="inputbox" /></td>';
  404. _tmpd += '<td style="padding-left: 5px;">Date end:<br /><input type="text" id="txt_date_end_edit" style="width: 90px;" value="'+_htmlspecialchars(hotelsArray[hid].dates[did].date_end)+'" class="inputbox" /></td>';
  405. _tmpd += '<td style="padding-left: 5px;">Period:<br /><select class="inputbox" style="width: 120px;" id="sel_period_edit"></select></td>';
  406. _tmpd += '<td style="padding-left: 5px;">Price:<br /><input type="text" id="txt_price_edit" style="width: 145px;" value="'+_htmlspecialchars(hotelsArray[hid].dates[did].price)+'" class="inputbox" /></td>';
  407. _tmpd += '<td style="padding-left: 5px;"><input type="button" class="button-red small" onclick="cancelLink('+hid+','+did+')" value="Cancel" style="width: 50px;" /><div style="margin-top: 3px;"><input type="button" class="button-green small" onclick="saveLink('+hid+','+did+')" value="Save" style="width: 50px;" /></div></td></tr></table>';
  408.  
  409. $('#lnk'+hid+'_'+did).css('height', '50px');
  410. $('#lnk'+hid+'_'+did).html(_tmpd);
  411.  
  412. var opts = {formElements:{"txt_date_start_edit":"Y-ds-m-ds-d"}, noFadeEffect:true, callbackFunctions:{"dateset":[changeDateEdit]} };
  413. datePickerController.createDatePicker(opts);
  414. opts = {formElements:{"txt_date_end_edit":"Y-ds-m-ds-d"}, noFadeEffect:true, callbackFunctions:{"dateset":[changeDateEdit]} };
  415. datePickerController.createDatePicker(opts);
  416.  
  417. buildPeriodSelect(hotelsArray[hid].dates[did].date_start, hotelsArray[hid].dates[did].date_end, 'sel_period_edit', hotelsArray[hid].dates[did].period);
  418.  
  419.  
  420. }
  421.  
  422. /*-----------------------------------------------------------------------------*/
  423.  
  424. function saveLink(hid, did)
  425. {
  426. if (!isEdit) return;
  427. var date_start = $('#txt_date_start_edit').val();
  428. var date_end = $('#txt_date_end_edit').val();
  429. var period = $('#sel_period_edit').val();
  430. var price = $('#txt_price_edit').val();
  431. if (date_start=='' || (/^[0-9]{4}\-((0[1-9])|(1[0-2]))\-(([1-2][0-9])|([0][1-9])|(3[0-1]))$/.test(date_start) == false) )
  432. {
  433. alert('Enter date-start');
  434. $('#txt_date_start_edit').focus();
  435. return;
  436. }
  437. if (date_end=='' || (/^[0-9]{4}\-((0[1-9])|(1[0-2]))\-(([1-2][0-9])|([0][1-9])|(3[0-1]))$/.test(date_end) == false))
  438. {
  439. alert('Enter Date-end');
  440. $('#txt_date_end_edit').focus();
  441. return;
  442. }
  443. if (period=='' || period=='NaN' || period==null || period=='null')
  444. {
  445. alert('Select period');
  446. $('#sel_period_edit').focus();
  447. return;
  448. }
  449. if (price=='' || (/^([\+\-]{0,1})([\d]{1,8})([\.]{0,1})([\d]{0,3})$/.test(price) == false))
  450. {
  451. alert('Enter Price');
  452. $('#txt_price_edit').focus();
  453. return;
  454. }
  455.  
  456. hotelsArray[hid].dates[did] = {'date_start': date_start,
  457. 'date_end': date_end,
  458. 'period': period,
  459. 'price': price,
  460. 'act': hotelsArray[hid].dates[did].act};
  461.  
  462. var _chk = '';
  463. if (hotelsArray[hid].dates[did].act=='1') _chk = ' checked="checked"';
  464.  
  465. var _tmpd = '<table width="100%"><tr>';
  466. _tmpd += '<td>Date: <b>'+_htmlspecialchars(hotelsArray[hid].dates[did].date_start)+' - '+_htmlspecialchars(hotelsArray[hid].dates[did].date_end)+'</b></span></td>';
  467. _tmpd += '<td width="240">Period: <b>'+_htmlspecialchars(hotelsArray[hid].dates[did].period)+'</b></td>';
  468. _tmpd += '<td width="100">Price: <span style="font-weight: bold;color: red;">'+_htmlspecialchars(hotelsArray[hid].dates[did].price)+'</span></td>';
  469. _tmpd += '<td width="65"><label><input type="checkbox" id="chk'+hid+'_'+did+'"'+_chk+' onchange="chkLink('+hid+','+did+')" /> Active</label></td>';
  470. _tmpd += '<td align="right" style="width: 48px;padding-right: 5px;"><a onclick="editLink('+hid+','+did+')" title="Edit"><img src="'+base_url+'app/admin/views/images/edit16.png" alt="" border="0" /></a><a onclick="deleteLink('+hid+','+did+')" title="Delete"><img src="'+base_url+'app/admin/views/images/del16.png" alt="" border="0" /></a></td>';
  471. _tmpd += '</tr></table>';
  472.  
  473. $('#tbl_addform'+hid+' *').attr('disabled', '');
  474. $('#lnk'+hid+'_'+did).css('height', '32px');
  475. $('#lnk'+hid+'_'+did).html(_tmpd);
  476. isEdit = false;
  477. edit_hid = -1;
  478. edit_did = -1;
  479.  
  480. }
  481.  
  482. /*-----------------------------------------------------------------------------*/
  483.  
  484. function cancelLink(hid, did)
  485. {
  486. if (hotelsArray[hid] == '-1' || hotelsArray[hid].dates[did] == '-1' || !isEdit) return;
  487.  
  488. var _chk = '';
  489. if (hotelsArray[hid].dates[did].act=='1') _chk = ' checked="checked"';
  490.  
  491. var _tmpd = '<table width="100%"><tr>';
  492. _tmpd += '<td>Date: <b>'+_htmlspecialchars(hotelsArray[hid].dates[did].date_start)+' - '+_htmlspecialchars(hotelsArray[hid].dates[did].date_end)+'</b></span></td>';
  493. _tmpd += '<td width="240">Period: <b>'+_htmlspecialchars(hotelsArray[hid].dates[did].period)+'</b></td>';
  494. _tmpd += '<td width="100">Price: <span style="font-weight: bold;color: red;">'+_htmlspecialchars(hotelsArray[hid].dates[did].price)+'</span></td>';
  495. _tmpd += '<td width="65"><label><input type="checkbox" id="chk'+hid+'_'+did+'"'+_chk+' onchange="chkLink('+hid+','+did+')" /> Active</label></td>';
  496. _tmpd += '<td align="right" style="width: 48px;padding-right: 5px;"><a onclick="editLink('+hid+','+did+')" title="Edit"><img src="'+base_url+'app/admin/views/images/edit16.png" alt="" border="0" /></a><a onclick="deleteLink('+hid+','+did+')" title="Delete"><img src="'+base_url+'app/admin/views/images/del16.png" alt="" border="0" /></a></td>';
  497. _tmpd += '</tr></table>';
  498.  
  499.  
  500. $('#tbl_addform'+hid+' *').attr('disabled', '');
  501. $('#lnk'+hid+'_'+did).css('height', '32px');
  502. $('#lnk'+hid+'_'+did).html(_tmpd);
  503. isEdit = false;
  504. edit_hid = -1;
  505. edit_did = -1;
  506.  
  507. }
  508.  
  509. /*-----------------------------------------------------------------------------*/
  510.  
  511. function deleteLink(hid, did)
  512. {
  513. try
  514. {
  515. hotelsArray[hid].dates[did] = '-1';
  516. $('#lnk'+hid+'_'+did).fadeOut(600)
  517. setTimeout(function(){$('#lnk'+hid+'_'+did).remove();}, 700)
  518. }catch(err){}
  519. }
  520.  
  521. /*-----------------------------------------------------------------------------*/
  522.  
  523. function clickSaveButton(type, form_id)
  524. {
  525. if (submitForm())
  526. {
  527. $('#hdn_confirm').val(type);
  528. $('#'+form_id).submit();
  529. return true;
  530. }
  531. return false;
  532. }
  533.  
  534. function submitForm()
  535. {
  536. if (isEdit)
  537. {
  538. alert('Save all Trip dates first');
  539. return false;
  540. }
  541.  
  542. //check hotels titles
  543. var i=0;
  544. var j=0;
  545.  
  546. var _data = '';
  547. for (i=0;i<hotelsArray.length;i++)
  548. {
  549. if (hotelsArray[i]=='-1') continue;
  550.  
  551. if ( $('#txt_title'+i).val()=='' )
  552. {
  553. alert('Enter all hotels names');
  554. $('#txt_title'+i).focus();
  555. return;
  556. }
  557. _data += '<input type="hidden" name="hotels_titles[]" value="'+_htmlspecialchars($('#txt_title'+i).val())+'" />';
  558.  
  559. }
  560.  
  561. //dates
  562. var _imgSer;
  563. var _linksSerArr;
  564. var _id;
  565. var hid=0;
  566. for (i=0;i<hotelsArray.length;i++)
  567. {
  568. if (hotelsArray[i]=='-1') continue;
  569.  
  570. _data += '<input type="hidden" name="hotels_images[]" value="'+_htmlspecialchars($('#txt_image'+i).val())+'" />';
  571.  
  572. if (hotelsArray[i].dates.length==0)
  573. {
  574. _data += '<input type="hidden" name="dates_start['+hid+'][]" value="" />';
  575. _data += '<input type="hidden" name="dates_end['+hid+'][]" value="" />';
  576. _data += '<input type="hidden" name="dates_period['+hid+'][]" value="" />';
  577. _data += '<input type="hidden" name="dates_price['+hid+'][]" value="" />';
  578. _data += '<input type="hidden" name="dates_act['+hid+'][]" value="" />';
  579. continue;
  580. }
  581.  
  582. _imgSer = $("#sortable"+i).sortable('serialize');
  583. if (_imgSer == '') continue;
  584.  
  585. _linksSerArr = _imgSer.split('&');
  586.  
  587. for (i=0;i<_linksSerArr.length;i++)
  588. {
  589. _id = parseInt(_linksSerArr[i].replace('lnk'+i+'[]=', ''));
  590. if (hotelsArray[i].dates[_id] == '-1') continue;
  591.  
  592. _data += '<input type="hidden" name="dates_start['+hid+'][]" value="'+_htmlspecialchars(hotelsArray[i].dates[_id].date_start)+'" />';
  593. _data += '<input type="hidden" name="dates_end['+hid+'][]" value="'+_htmlspecialchars(hotelsArray[i].dates[_id].date_end)+'" />';
  594. _data += '<input type="hidden" name="dates_period['+hid+'][]" value="'+_htmlspecialchars(hotelsArray[i].dates[_id].period)+'" />';
  595. _data += '<input type="hidden" name="dates_price['+hid+'][]" value="'+_htmlspecialchars(hotelsArray[i].dates[_id].price)+'" />';
  596. _data += '<input type="hidden" name="dates_act['+hid+'][]" value="'+hotelsArray[i].dates[_id].act+'" />';
  597. }
  598. hid++;
  599. }
  600.  
  601. document.getElementById('hiddenvars').innerHTML = _data;
  602.  
  603. return true;
  604. }
  605.  
  606. /*-----------------------------------------------------------------------------*/
  607.  
  608. $(document).ready(function(){
  609. $("#sortable").sortable({ update: function(){} });
  610. });
  611.  
  612. {/literal}
  613. </script>
  614. <form action="{$base_url}admin.php?m={$module}&c={$controll}&a={$action}" method="post" accept-charset="utf-8" id="frm_addpage" onsubmit="return false;">
  615. <input type="hidden" name="confirm" id="hdn_confirm" value="" />
  616. <input type="hidden" name="id" value="{$id}" />
  617. <input type="hidden" name="p" value="{$p}" />
  618.  
  619. {$filter_hidden}
  620.  
  621. <div id="mainbody">
  622. <div class="boxin">
  623. <div class="header">
  624. <h3>{if $action == 'add'}Add{else}Edit{/if} trip</h3>
  625. <div class="buttons">
  626. <input type="button" value="Close" class="button-red" onclick="document.location.href='{$base_url}admin.php?m={$module}&p={$p}{$filter_url}';" />
  627. {if $save_behavior == '2buttons'}<input type="button" value="Apply" class="button-blue" onclick="clickSaveButton('apply', 'frm_addpage');" /> {/if}
  628. <input type="button" value="Save" class="button-green" onclick="clickSaveButton('save', 'frm_addpage');" />
  629. </div>
  630. </div>
  631. <div class="content">
  632. {include file='sys/flashmessage.tpl'}
  633.  
  634.  
  635. <div id="tabs" class="tabs">
  636. <a tab="#tab_general" id="a_tab_general">General</a>
  637. <a tab="#tab_dates" id="a_tab_dates">Hotels & Dates</a>
  638. </div>
  639.  
  640. <div id="tab_general">
  641.  
  642. <span class="req">*</span>Transport type:{if isset($errors.transport)} <span class="error">{$errors.transport}</span>{/if}
  643. <div style="border: 1px solid {if isset($errors.transport)}red{else}#bbb{/if}; width: 200px;padding: 4px;height: 40px;overflow: auto;">
  644. {foreach from=$transports key=i item=t}
  645. <label style="float: left;margin: 7px;height: 22px;" title="{$t.name}"><input type="radio" name="form[transport]" value="{$t.id}"{if $t.id==$form.transport} checked="checked"{/if}><img src="{$base_url}app/admin/views/images/transport/{$t.icon}" alt=""/></label>
  646. {/foreach}
  647. </div><br /><br />
  648.  
  649. <span class="req">*</span>Trip name:{if isset($errors.title)} <span class="error">{$errors.title}</span>{/if}<br />
  650. <input type="text" name="form[title]" value="{$form.title}" id="txt_title" maxlength="250" style="width: 300px;" class="inputbox{if isset($errors.title)} error{/if}" />
  651. <img align="top" src="{$base_url}app/admin/views/images/infoicon.png" class="vtip" title="1-250 charachters" alt="" />
  652. <br /><br />
  653.  
  654. Active: <label><input type="radio" name="form[active]"{if $form.active!='0'} checked="checked"{/if} value="1" />Yes</label><label><input type="radio" name="form[active]"{if $form.active=='0'} checked="checked"{/if} value="0" />No</label><br /><br />
  655.  
  656. <span class="req">*</span>Type:{if isset($errors.type)} <span class="error">{$errors.type}</span>{/if}<br />
  657. <select name="form[type]" class="inputbox{if isset($errors.type)} error{/if}">
  658. <option value="">-- Select type --</option>
  659. <option value="kruizai"{if $form.type=='kruizai'} selected="selected"{/if}>Kruizai</option>
  660. <option value="vokietijos"{if $form.type=='vokietijos'} selected="selected"{/if}>Kelionės iš Vokietijos</option>
  661. <option value="lenkijos"{if $form.type=='lenkijos'} selected="selected"{/if}>Kelionės iš Lenkijos</option>
  662. </select><br /><br />
  663.  
  664.  
  665. {assign var='image_var' value='image'}
  666. {assign var='image_var_th' value='image_th'}
  667. {*
  668. Image: {if isset($errors.image)} <span class="error">{$errors.image}</span>{/if}
  669. <div style="margin-top: 5px;">
  670. <input type="hidden" name="form[{$image_var}]" value="{$form[$image_var]}" id="txt_{$image_var}" maxlength="255" />
  671. <img src="{$form[$image_var_th]}" style="cursor: url('{$base_url}app/admin/views/images/cursor_zoom.gif'), auto;margin: 3px 0px;border:none; display: {if $form[$image_var] == ''}none{else}block{/if};" id="img_{$image_var}" alt="" class="selectimg" onclick="previewImage('{$image_var}');" />
  672. <input type="button" class="button-blue small" value="Select" onclick="selectImage('{$base_url}', '{$image_var}')" /> <input type="button" class="button-blue small" value="Delete" onclick="deleteImage('{$image_var}')" />
  673. </div><br />
  674. *}
  675.  
  676.  
  677. <span class="req">*</span>Country:{if isset($errors.country)} <span class="error">{$errors.country}</span>{/if}<br />
  678. <select name="form[country]" class="inputbox{if isset($errors.country)} error{/if}" onchange="changeCountry()" id="sel_country">
  679. <option value="">-- Select country --</option>
  680. {foreach from=$countries key=i item=c}
  681. <option value="{$i}"{if $i==$form.country} selected="selected"{/if}>{$c}</option>
  682. {/foreach}
  683. </select><br /><br />
  684.  
  685. <span class="req">*</span>Destination:{if isset($errors.city)} <span class="error">{$errors.city}</span>{/if}<br />
  686. <select name="form[city]" class="inputbox{if isset($errors.city)} error{/if}" id="sel_city">
  687. <option value="">-- Select destination --</option>
  688. {foreach from=$cities key=i item=c}
  689. <option value="{$i}"{if $i==$form.city} selected="selected"{/if}>{$c}</option>
  690. {/foreach}
  691. </select><br /><br />
  692.  
  693. <span class="req">*</span>Travel organization:{if isset($errors.travel_org)} <span class="error">{$errors.travel_org}</span>{/if}
  694. <div style="border: 1px solid {if isset($errors.travel_org)}red{else}#bbb{/if}; width: 510px;padding: 4px;height: 80px;overflow: auto;">
  695. {foreach from=$travelorgs key=i item=t}
  696. <label style="float: left;margin: 7px;height: 22px;" title="{$t.name}"><input type="radio" name="form[travel_org]" value="{$t.id}"{if $t.id==$form.travel_org} checked="checked"{/if}><img src="{$base_url}app/admin/views/images/travels_orgs/{$t.icon}" alt=""/></label>
  697. {/foreach}
  698. </div><br /><br />
  699.  
  700.  
  701. Email for reservation notify:<br />
  702. <label style="display: block;margin: 4px 0px;"><input type="radio" name="form[email_type]" value="global"{if $form.email_type=='global'} checked="checked"{/if} id="email_type_global" onchange="changeEmailType()" /> Default site email ({$site_email})</label>
  703. <label style="display: block;margin: 4px 0px;"><input type="radio" name="form[email_type]" value="custom"{if $form.email_type=='custom'} checked="checked"{/if} id="email_type_custom" onchange="changeEmailType()" /> Custom email</label>
  704. <input type="text" name="form[email]" value="{$form.email}" id="txt_email" {if $form.email_type=='global'} disabled="disabled"{/if} maxlength="250" style="width: 300px;" class="inputbox{if isset($errors.email)} error{/if}" class="inputbox" /> {if isset($errors.email)} <span class="error">{$errors.email}</span>{/if}
  705. <br /><br />
  706.  
  707.  
  708. Short description:{if isset($errors.description)} <span class="error">{$errors.description}</span>{/if}<br />
  709. <textarea name="form[description]" id="txt_text" style="width: 500px;height: 100px;" class="notinymce inputbox{if isset($errors.description)} error{/if}">{$form.description}</textarea><br /><br />
  710.  
  711. Full description:{if isset($errors.description_full)} <span class="error">{$errors.description_full}</span>{/if}<br />
  712. <textarea name="form[description_full]" id="txt_description_full">{$form.description_full}</textarea><br /><br />
  713.  
  714. {include file='sys/basic_seo.tpl'}
  715.  
  716. </div>
  717.  
  718.  
  719. <div id="tab_dates">
  720. <div style="position: fixed;right: 0;float: right;margin-right: 20px;margin-top: -47px;"><input type="button" class="button-green" value="+ Add Hotel" onclick="addHotel()" /></div>
  721. <div style="clear: both;"></div>
  722.  
  723. <div id="hotelsArea">
  724. {if isset($form.hotels) && is_array($form.hotels) && count($form.hotels)>0}
  725. {foreach from=$form.hotels key=i item=h}
  726. <div id="hotel_{$i}" class="hotel">
  727. <div class="hotel-del"><a href="#" onclick="deleteHotel({$i});return false;">delete</a></div>
  728. <span class="req">*</span>Hotel name:<br />
  729. <input type="text" id="txt_title{$i}" maxlength="250" value="{$h.title}" style="width: 300px;" class="inputbox" /> <br /><br />
  730.  
  731. Image:
  732. <div style="margin-top: 5px;">
  733. <input type="hidden" value="" id="txt_image{$i}" maxlength="255" />
  734. <img src="{$h.image_th}" style="cursor: url('{$base_url}app/admin/views/images/cursor_zoom.gif'), auto;margin: 3px 0px;border:none; display: {if $h.image_th!=''}block{else}none{/if};" id="img_image{$i}" alt="" class="selectimg" onclick="previewHotelImage('image{$i}');" />
  735. <input type="button" class="button-blue small" value="Select" onclick="selectHotelImage('{$base_url}', 'image{$i}')" /> <input type="button" class="button-blue small" value="Delete" onclick="deleteHotelImage('image{$i}')" />
  736. </div><br /><br />
  737.  
  738. <div style="border-bottom: 1px solid #bbb;padding-bottom: 15px;">
  739. <table id="tbl_addform{$i}"><tr>
  740. <td><span class="req">*</span>Date start:<br /><input type="text" id="txt_date_start{$i}" style="width: 90px;" readonly="readonly" class="inputbox" /></td>
  741. <td style="padding-left: 5px;"><span class="req">*</span>Date end:<br /><input type="text" id="txt_date_end{$i}" style="width: 90px;" readonly="readonly" class="inputbox" /></td>
  742. <td style="padding-left: 5px;"><span class="req">*</span>Period:<br /><select class="inputbox" style="width: 120px;" id="sel_period{$i}"></select></td>
  743. <td style="padding-left: 5px;"><span class="req">*</span>Price:<br /><input type="text" id="txt_price{$i}" style="width: 80px;" class="inputbox" /></td>
  744. <td style="padding-left: 5px;">&nbsp;<br /><input type="button" class="button-blue small" onclick="addLink({$i})" value="Add date" /></td></tr></table>
  745. </div><div id="div_links{$i}">
  746. <ul id="sortable{$i}" class="sortable">
  747. {if isset($h.dates) && is_array($h.dates) && count($h.dates)>0}
  748. {foreach from=$h.dates key=j item=d}
  749. <li id="lnk{$i}_{$j}">
  750. <table width="100%"><tr>
  751. <td>Date: <b>{$d.date_start} - {$d.date_end}</b></span></td>
  752. <td width="240">Period: <b>{$d.period}</b></td>
  753. <td width="100">Price: <span style="font-weight: bold;color: red;">{$d.price}</span></td>
  754. <td width="65"><label><input type="checkbox" id="chk{$i}_{$j}"{if $d.active=='1'} checked="checked"{/if} onchange="chkLink({$i},{$j})" /> Active</label></td>
  755. <td align="right" style="width: 48px;padding-right: 5px;"><a onclick="editLink({$i},{$j})" title="Edit"><img src="{$base_url}app/admin/views/images/edit16.png" alt="" border="0" /></a><a onclick="deleteLink({$i},{$j})" title="Delete"><img src="{$base_url}app/admin/views/images/del16.png" alt="" border="0" /></a></td>
  756. </tr></table>
  757. </li>
  758. {/foreach}
  759. {/if}
  760. </ul></div>
  761.  
  762. <script type="text/javascript">{literal}
  763. var opts = {formElements: {'txt_date_start{/literal}{$i}{literal}': 'Y-ds-m-ds-d'}, noFadeEffect:true, callbackFunctions:{"dateset":[changeDate]} };
  764. datePickerController.createDatePicker(opts);
  765. opts = {formElements: {'txt_date_end{/literal}{$i}{literal}': 'Y-ds-m-ds-d'}, noFadeEffect:true, callbackFunctions:{"dateset":[changeDate]} };
  766. datePickerController.createDatePicker(opts);
  767. {/literal}</script>
  768. </div>
  769. {/foreach}
  770. {/if}
  771.  
  772. </div>
  773. <br /><br />
  774.  
  775. {*<span class="req">*</span>Title/Hotel name:{if isset($errors.title)} <span class="error">{$errors.title}</span>{/if}<br />
  776. <input type="text" name="form[title]" value="{$form.title}" id="txt_title" maxlength="250" style="width: 300px;" class="inputbox{if isset($errors.title)} error{/if}" />
  777. <img align="top" src="{$base_url}app/admin/views/images/infoicon.png" class="vtip" title="1-250 charachters" alt="" />
  778. <br /><br /><br />
  779.  
  780. <div style="border-bottom: 1px solid #bbb;padding-bottom: 15px;">
  781. <table id="tbl_addform"><tr>
  782. <td>Date start:<br /><input type="text" id="txt_date_start" style="width: 90px;" readonly="readonly" class="inputbox" /></td>
  783. <td style="padding-left: 5px;">Date end:<br /><input type="text" id="txt_date_end" style="width: 90px;" readonly="readonly" class="inputbox" /></td>
  784. <td style="padding-left: 5px;">Period:<br /><input type="text" id="txt_period" class="inputbox" /></td>
  785. <td style="padding-left: 5px;">Price:<br /><input type="text" id="txt_price" class="inputbox" /></td>
  786. <td style="padding-left: 5px;">&nbsp;<br /><input type="button" class="button-blue small" onclick="addLink()" value="Add date" /></td></tr></table>
  787. <script type="text/javascript">{literal}
  788. var opts = {formElements:{"txt_date_start":"Y-ds-m-ds-d"}, noFadeEffect:true};
  789. datePickerController.createDatePicker(opts);
  790. opts = {formElements:{"txt_date_end":"Y-ds-m-ds-d"}, noFadeEffect:true};
  791. datePickerController.createDatePicker(opts);
  792. {/literal}</script>
  793. </div>
  794. <div id="div_links"><ul id="sortable">{$dates_html}</ul></div>
  795. *}
  796.  
  797. </div>
  798. <br /><br />
  799.  
  800.  
  801.  
  802. </div>
  803. </div>
  804. </div>
  805. <div id="hiddenvars" style="display: none;"></div>
  806. </form>
  807. {literal}<script type="text/javascript">
  808. $(document).ready(function(){
  809. $.tabs('#tabs a');
  810. changeCountry();
  811. });
  812. </script>{/literal}
  813. {include file='footer.tpl'}
Add Comment
Please, Sign In to add comment