var eEventId = new Ext.form.Hidden({ id: 'eEventId', name: 'eEventId', fieldLabel: 'Event ID' }); var eName = new Ext.form.TextField({ id: 'eName', fieldLabel: 'Tapahtuman nimi', name: 'eName', allowBlank: false, width: 201 }); var eLanguage = new Ext.form.RadioGroup({ fieldLabel: 'Tapahtuman kieli', vertical: false, id:'eLanguage', items: [ {boxLabel: 'Suomi', name: 'eLanguage', inputValue: 'Suomi', checked: true}, {boxLabel: 'English', name: 'eLanguage', inputValue: 'English'} ] }); var eMaxParticipants = new Ext.form.NumberField({ id: 'eMaxParticipants', fieldLabel: 'Osallistujamaksimi', name: 'eMaxParticipants', allowBlank: false, width: 50 }); var eJoinerCount = new Ext.form.DisplayField({ id: 'eJoinerCount', fieldLabel: 'Ilmoittautuneita', name: 'eJoinerCount', width: 50 }); var eQueueCount = new Ext.form.DisplayField({ id: 'eQueueCount', fieldLabel: 'Varasijalla', name: 'eQueueCount', width: 50 }); var eLocation = new Ext.form.TextField({ id: 'eLocation', fieldLabel: 'Sijainti', name: 'eLocation', allowBlank: false, width: 201 });var eContactPerson = new Ext.form.TextField({ id: 'eContactPerson', fieldLabel: 'Yhteyshenkilö', name: 'eContactPerson', allowBlank: true, width: 201 });var eEmail = new Ext.form.TextField({ id: 'eEmail', fieldLabel: 'Tapahtuman sähköposti', name: 'eEmail', allowBlank: true, width: 201 ,vtype: 'email' });var ePhone = new Ext.form.TextField({ id: 'ePhone', fieldLabel: 'Tapahtuman puhelin', name: 'ePhone', allowBlank: true, width: 201 }); var eDateStartTime = new Ext.ux.form.DateTime({ id: 'eDateStartTime', fieldLabel: 'Tapahtuma alkaa', name: 'eDateStartTime', width: 150, timeWidth: 60, dateWidth: 80, timeFormat:'H:i', hiddenFormat: 'Y-m-d H:i:s', timeConfig: { allowBlank:false }, dateFormat:'d.m.Y', dateConfig: { allowBlank:false } }) var eDateEndTime = new Ext.ux.form.DateTime({ id: 'eDateEndTime', fieldLabel: 'Tapahtuma päättyy', name: 'eDateEndTime', width: 150, timeWidth: 60, dateWidth: 80, timeFormat:'H:i', hiddenFormat: 'Y-m-d H:i:s', timeConfig: { allowBlank:true }, dateFormat:'d.m.Y', dateConfig: { allowBlank:true } }) var eDateBookingStartTime = new Ext.ux.form.DateTime({ id: 'eDateBookingStartTime', fieldLabel: 'Ilmoittautuminen alkaa', name: 'eDateBookingStartTime', width: 150, timeWidth: 60, dateWidth: 80, timeFormat:'H:i', hiddenFormat: 'Y-m-d H:i:s', timeConfig: { allowBlank:true }, dateFormat:'d.m.Y', dateConfig: { allowBlank:true } }) var eDateBookingEndTime = new Ext.ux.form.DateTime({ id: 'eDateBookingEndTime', fieldLabel: 'Ilmoittautuminen päättyy', name: 'eDateBookingEndTime', width: 150, timeWidth: 60, dateWidth: 80, timeFormat:'H:i', hiddenFormat: 'Y-m-d H:i:s', timeConfig: { allowBlank:true }, dateFormat:'d.m.Y', dateConfig: { allowBlank:true } })//global var var currentJoomlaArticleId=; var currentJoomlaArticleHeadline=''; var currentEventId=-1; var currentLang='fi'; var currentEventName=''; var bundle_fi; var bundle_en; var theBundle; /* EVENT LIST START */ var eventListStore = new Ext.data.Store({ id: 'eventListStore', remoteSort: true, proxy: new Ext.data.HttpProxy({ url: '/event_booking_sql.php', method: 'POST' }), baseParams:{ task: 'EVENTS_GET' }, reader: new Ext.data.JsonReader({ root: 'results', totalProperty: 'total' },[ {name: 'eEventId', type: 'string', mapping: 'eEventId'}, {name: 'eLanguage', type: 'string', mapping: 'eLanguage'}, {name: 'eName', type: 'string', mapping: 'eName'} ]) // end reader }); function selectEvent() { eventStore.load({params:{eJoomlaArticleId: currentJoomlaArticleId, eEventId: currentEventId}}); Ext.getCmp('eventJoinerSaveButton').enable(); } var eventListTpl = new Ext.XTemplate( '', '', '', '', '', '', '
{values.eName}
' ); var eventListPanel = new Ext.Panel({ id:'eventListPanel', frame:false, layout:'fit', bodyStyle: 'text-align: left; vertical-align: top', title:' ', width: 250, items: new Ext.DataView({ itemSelector: 'tr', // itemSelector REQUIRED in dataview! overClass: 'eventListHover', style: 'overflow:auto', width: 250, height: 233, store: eventListStore, tpl: eventListTpl }) }); /* EVENT LIST END */ function formatDateTime(date1) { // change to mysql datetime format return date1.getFullYear() + '-' + (date1.getMonth() < 9 ? '0' : '') + (date1.getMonth()+1) + '-' + (date1.getDate() < 10 ? '0' : '') + date1.getDate() + ' ' + (date1.getHours() < 10 ? '0' : '') + date1.getHours() + ':' + (date1.getMinutes() < 10 ? '0' : '') + date1.getMinutes() + ':' + (date1.getSeconds() < 10 ? '0' : '') + date1.getSeconds(); } /* EVENT START */ var eventStore = new Ext.data.Store({ id: 'eventStore', remoteSort: true, proxy: new Ext.data.HttpProxy({ url: '/event_booking_sql.php', method: 'POST' }), baseParams:{ task: 'EVENTS_GET' }, reader: new Ext.data.JsonReader({ root: 'results', totalProperty: 'total', id: 'eventStoreReader' },[ {name: 'eEventId', type: 'string', mapping: 'eEventId'}, {name: 'eName', type: 'string', mapping: 'eName'}, {name: 'eLanguage', type: 'string', mapping: 'eLanguage'}, {name: 'eMaxParticipants', type: 'string', mapping: 'eMaxParticipants'}, {name: 'eJoinerCount', type: 'string', mapping: 'eJoinerCount'}, {name: 'eQueueCount', type: 'string', mapping: 'eQueueCount'}, {name: 'eLocation', type: 'string', mapping: 'eLocation'}, {name: 'eContactPerson', type: 'string', mapping: 'eContactPerson'}, {name: 'eEmail', type: 'string', mapping: 'eEmail'}, {name: 'ePhone', type: 'string', mapping: 'ePhone'}, {name: 'eDateStartTime', type: 'string', mapping: 'eDateStartTime', dateFormat: 'd.m.Y H:i'}, {name: 'eDateEndTime', type: 'string', mapping: 'eDateEndTime', dateFormat: 'd.m.Y H:i'}, {name: 'eDateBookingStartTime', type: 'string', mapping: 'eDateBookingStartTime', dateFormat: 'd.m.Y H:i'}, {name: 'eDateBookingEndTime', type: 'string', mapping: 'eDateBookingEndTime', dateFormat: 'd.m.Y H:i'} ]) // end reader // update user interface language by selected event language ,listeners: { 'load': function(store, records){ setLang(currentLang); var eJoinerCount=records[0].data.eJoinerCount; var eQueueCount=records[0].data.eQueueCount; var eMaxParticipants=records[0].data.eMaxParticipants; var eDateBookingEndTime=records[0].data.eDateBookingEndTime; var eDateEndTime=records[0].data.eDateEndTime; var currentTime=formatDateTime(new Date()); if ((eDateBookingEndTime !='' && eDateBookingEndTime < currentTime) || eDateEndTime < currentTime) { // either booking time or event itself has expired document.getElementById('eventNotice').innerHTML=eval('bundle_' + currentLang).getMsg('eventExpiredAlert'); Ext.getCmp('eventJoinerForm').disable(); Ext.getCmp('eventJoinerSaveButton').disable(); } else if (parseInt(eJoinerCount) + parseInt(eQueueCount) >= parseInt(eMaxParticipants)) { Ext.getCmp('registerNotification').setText('' + eval('bundle_' + currentLang).getMsg('eventFullAlert') + '', false); Ext.getCmp('eventJoinerForm').disable(); Ext.getCmp('eventJoinerSaveButton').disable(); } else { Ext.getCmp('eventJoinerForm').enable(); Ext.getCmp('eventJoinerSaveButton').enable(); } } } }); // end eventStore var eventTpl = new Ext.XTemplate( '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '
:{values.eName}
:{values.eLanguage}
:{values.eMaxParticipants}
:{values.eJoinerCount}
:{values.eQueueCount}
:{values.eLocation}
:{values.eContactPerson}
:{values.eEmail}
:{values.ePhone}
:{[this.formatDate(values.eDateStartTime)]}
:{[this.formatDate(values.eDateEndTime)]}
:{[this.formatDate(values.eDateBookingStartTime)]}
:{[this.formatDate(values.eDateBookingEndTime)]}
', { formatDate: function(dateString) { if (dateString) { var aTmp=dateString.split(' '); var d=aTmp[0]; var t=aTmp[1]; var aDate=d.split('-'); var aTime=t.split(':'); return aDate[2] + '.' + aDate[1] + '.' + aDate[0] + ' ' + aTime[0] + ':' + aTime[1]; } else { return ''; } } }); var eventPanel = new Ext.Panel({ id:'eventPanel', frame:false, layout:'fit', bodyStyle: 'text-align: left; vertical-align: top', title:' ', width: 433, items: new Ext.DataView({ itemSelector: 'tr', // itemSelector REQUIRED in dataview! style: 'overflow:auto', width: 420, height: 233, store: eventStore, tpl: eventTpl }) }); /* EVENT END */ /* EVENT JOINER START */ var eUserId = new Ext.form.Hidden({ id: 'eUserId', name: 'eUserId', fieldLabel: 'Osallistujan ID' }); var eUserName = new Ext.form.TextField({ id: 'eUserName', fieldLabel: 'Nimi', name: 'eUserName', allowBlank: false, width: 210 });var eUserStreetAddress = new Ext.form.TextField({ id: 'eUserStreetAddress', fieldLabel: 'Lähiosoite', name: 'eUserStreetAddress', allowBlank: true, width: 210 });var eUserPostalCode = new Ext.form.TextField({ id: 'eUserPostalCode', fieldLabel: 'Postinro', name: 'eUserPostalCode', allowBlank: true, width: 210 });var eUserCity = new Ext.form.TextField({ id: 'eUserCity', fieldLabel: 'Postitoimipaikka', name: 'eUserCity', allowBlank: true, width: 210 });var eUserPhone = new Ext.form.TextField({ id: 'eUserPhone', fieldLabel: 'Puhelin', name: 'eUserPhone', allowBlank: true, width: 210 });var eUserEmail = new Ext.form.TextField({ id: 'eUserEmail', fieldLabel: 'Sähköposti', name: 'eUserEmail', allowBlank: false, width: 210 ,vtype: 'email' });; var eventJoinerForm = new Ext.FormPanel({ url: '/event_booking_sql.php', id: 'eventJoinerForm', title:' ', labelAlign: 'left', labelWidth: 100, width: 680, height: 182, frame:false, border: false, layout: 'form', disabled: false, items: [ { layout: 'table', layoutConfig: { columns: 2 }, items: [{ layout: 'form', border: false, items: [ eUserId,eUserName,eUserStreetAddress,eUserPostalCode]},{ layout: 'form', border: false, items: [ eUserCity,eUserPhone,eUserEmail ] // end items layout form (second column) }] // end items layout table }, new Ext.form.Label({ id: 'registerNotification', text: ' ' }) ], // end items eventJoinerForm buttons: [ new Ext.Button({ text: ' ', id: 'eventJoinerSaveButton', pressed: false, disabled: true, handler : function(){ eventJoinerForm = Ext.getCmp('eventJoinerForm'); isBooked=false; if (eventJoinerForm.getForm().isValid()) { var eUserEmail=eventJoinerForm.getForm().findField('eUserEmail').getValue(); // check if user has already booked // var goOn=false; Ext.Ajax.request({ url: '/event_booking_sql.php', params: { task: "CHECK_IF_USER_HAS_BOOKED", eEventId: currentEventId, eUserEmail: eUserEmail }, success: function(response){ var isBooked=Ext.decode(response.responseText); if (isBooked=='1') { // already booked with the email Ext.MessageBox.confirm('Vahvistus','Sähkäpostiosoitteellasi on jo ilmoittauduttu tapahtumaan. Jatketaanko?', function(btn) { if(btn=='yes'){ submitForm(); } else { return; } }) } else { // not yet booked with the email, continue submitForm(); } }, failure: function(response){ Ext.Msg.alert(eval('bundle_' + currentLang).getMsg('error'), eval('bundle_' + currentLang).getMsg('notSavedError')); } }); // end request function submitForm() { eventJoinerForm.getForm().submit({ waitMsg: eval('bundle_' + currentLang).getMsg('sendWaitMsg'), params: { task: 'EVENT_JOINER_SAVE', eEventId: currentEventId, currentLang: currentLang }, success: function(form, action) { var userStatus=action.result.userStatus; switch(userStatus) { case 1: Ext.Msg.alert('OK', eval('bundle_' + currentLang).getMsg('joinerSavedMessage')); break; case 2: Ext.Msg.alert('OK', eval('bundle_' + currentLang).getMsg('joinerSavedMessage2')); break; } Ext.getCmp('eventJoinerForm').getForm().reset(); eventStore.removeAll(); Ext.getCmp('eventBookingWin').hide(); }, failure: function(form, action) { Ext.Msg.alert(eval('bundle_' + currentLang).getMsg('error'), eval('bundle_' + currentLang).getMsg('notSavedError')); } }); // end submit } // end function submitForm } else { Ext.Msg.alert(eval('bundle_' + currentLang).getMsg('error'), eval('bundle_' + currentLang).getMsg('checkRequiredFieldsText')); } // end if is valid } // end handler }), new Ext.Button({ text: ' ', id: 'eventJoinerFormResetButton', pressed: false, handler : function(){ Ext.getCmp('eventJoinerForm').getForm().reset(); } // end handler }) // end button ] // end buttons }); // end formPanel /* EVENT JOINER END */ /* EXTJS EXTENSION: FUNCTION FOR CHANGING FORM FIELD LABEL */ Ext.override(Ext.form.Field, { setFieldLabel: function(text) { if (this.rendered) { var labelSeparator = this.labelSeparator; if (typeof labelSeparator == 'undefined') { if (this.ownerCt && this.ownerCt.layout && typeof this.ownerCt.layout.labelSeparator != 'undefined') labelSeparator = this.ownerCt.layout.labelSeparator; else labelSeparator = ''; } var formItem = this.el.up('.x-form-item', 10); if (formItem) { var label = formItem.child('.x-form-item-label'); if (label) label.update(text + labelSeparator); } } else this.fieldLabel = text; } }); /* EXTJS EXTENSION END */ /* LANGUAGES (fi/en) */ function setLang(lang) { if (lang=='fi') { var fiPressed=true; var enPressed=false; } else { var fiPressed=false; var enPressed=true; } theBundle=eval('bundle_' + lang); Ext.getCmp('inFinnishButton').toggle(fiPressed); Ext.getCmp('inEnglishButton').toggle(enPressed); Ext.getCmp('eventBookingWin').setTitle('YritysHelsinki - ' + currentJoomlaArticleHeadline + ' - ' + theBundle.getMsg('eventsText')); Ext.getCmp('eventListPanel').setTitle(theBundle.getMsg('eventListPanel.title')); Ext.getCmp('eventPanel').setTitle(theBundle.getMsg('eventPanel.title')); Ext.getCmp('eventJoinerForm').setTitle(theBundle.getMsg('eventJoinerForm.label') + ' ' + currentEventName + ':'); Ext.getCmp('eventJoinerSaveButton').setText(theBundle.getMsg('registerText')); Ext.getCmp('eventJoinerFormResetButton').setText(theBundle.getMsg('resetFormText')); Ext.getCmp('registerNotification').setText(theBundle.getMsg('registerNotification.text')); Ext.getCmp('eventWinCloseButton').setText(theBundle.getMsg('closeWindowText')); //Ext.getCmp('eventJoinerForm').setTitle(theBundle.getMsg('eventJoinerForm.label') + ' ' + currentEventName); if (Ext.get('eventTable_eEventId')) { Ext.get('eventTable_eEventId').dom.innerHTML=theBundle.getMsg('eEventId.label'); } if (Ext.get('eventTable_eName')) { Ext.get('eventTable_eName').dom.innerHTML=theBundle.getMsg('eName.label'); } if (Ext.get('eventTable_eLanguage')) { Ext.get('eventTable_eLanguage').dom.innerHTML=theBundle.getMsg('eLanguage.label'); } if (Ext.get('eventTable_eMaxParticipants')) { Ext.get('eventTable_eMaxParticipants').dom.innerHTML=theBundle.getMsg('eMaxParticipants.label'); } if (Ext.get('eventTable_eJoinerCount')) { Ext.get('eventTable_eJoinerCount').dom.innerHTML=theBundle.getMsg('eJoinerCount.label'); } if (Ext.get('eventTable_eQueueCount')) { Ext.get('eventTable_eQueueCount').dom.innerHTML=theBundle.getMsg('eQueueCount.label'); } if (Ext.get('eventTable_eLocation')) { Ext.get('eventTable_eLocation').dom.innerHTML=theBundle.getMsg('eLocation.label'); } if (Ext.get('eventTable_eContactPerson')) { Ext.get('eventTable_eContactPerson').dom.innerHTML=theBundle.getMsg('eContactPerson.label'); } if (Ext.get('eventTable_eEmail')) { Ext.get('eventTable_eEmail').dom.innerHTML=theBundle.getMsg('eEmail.label'); } if (Ext.get('eventTable_ePhone')) { Ext.get('eventTable_ePhone').dom.innerHTML=theBundle.getMsg('ePhone.label'); } if (Ext.get('eventTable_eDateStartTime')) { Ext.get('eventTable_eDateStartTime').dom.innerHTML=theBundle.getMsg('eDateStartTime.label'); } if (Ext.get('eventTable_eDateEndTime')) { Ext.get('eventTable_eDateEndTime').dom.innerHTML=theBundle.getMsg('eDateEndTime.label'); } if (Ext.get('eventTable_eDateBookingStartTime')) { Ext.get('eventTable_eDateBookingStartTime').dom.innerHTML=theBundle.getMsg('eDateBookingStartTime.label'); } if (Ext.get('eventTable_eDateBookingEndTime')) { Ext.get('eventTable_eDateBookingEndTime').dom.innerHTML=theBundle.getMsg('eDateBookingEndTime.label'); } if (Ext.getCmp('eventJoinerForm').getForm().findField('eUserId')) { Ext.getCmp('eventJoinerForm').getForm().findField('eUserId').setFieldLabel(theBundle.getMsg('eUserId.label')); } if (Ext.getCmp('eventJoinerForm').getForm().findField('eUserName')) { Ext.getCmp('eventJoinerForm').getForm().findField('eUserName').setFieldLabel(theBundle.getMsg('eUserName.label')); } if (Ext.getCmp('eventJoinerForm').getForm().findField('eUserStreetAddress')) { Ext.getCmp('eventJoinerForm').getForm().findField('eUserStreetAddress').setFieldLabel(theBundle.getMsg('eUserStreetAddress.label')); } if (Ext.getCmp('eventJoinerForm').getForm().findField('eUserPostalCode')) { Ext.getCmp('eventJoinerForm').getForm().findField('eUserPostalCode').setFieldLabel(theBundle.getMsg('eUserPostalCode.label')); } if (Ext.getCmp('eventJoinerForm').getForm().findField('eUserCity')) { Ext.getCmp('eventJoinerForm').getForm().findField('eUserCity').setFieldLabel(theBundle.getMsg('eUserCity.label')); } if (Ext.getCmp('eventJoinerForm').getForm().findField('eUserPhone')) { Ext.getCmp('eventJoinerForm').getForm().findField('eUserPhone').setFieldLabel(theBundle.getMsg('eUserPhone.label')); } if (Ext.getCmp('eventJoinerForm').getForm().findField('eUserEmail')) { Ext.getCmp('eventJoinerForm').getForm().findField('eUserEmail').setFieldLabel(theBundle.getMsg('eUserEmail.label')); }}; /* LANGUAGES END */ Ext.getUrlParam = function(param) { var params = Ext.urlDecode(location.search.substring(1)); return param ? params[param] : params; }; Ext.onReady(function() { Ext.BLANK_IMAGE_URL = '/ext-3.0.0/resources/images/default/s.gif'; // 2.0 var eventBookingWin = new Ext.Window({ id: 'eventBookingWin', modal:true, title : ' ', closable : true, closeAction: 'hide', width : 700, height: 515, plain : true, layout : 'form', items: [{ layout: 'table', layoutConfig: {columns: 2}, items: [eventListPanel, eventPanel, {colspan: 2, items: eventJoinerForm}] }], tbar: new Ext.Toolbar({ items: [ new Ext.Button({ id: 'inFinnishButton', text: 'Suomeksi', pressed: true, handler: function () { currentLang='fi'; setLang(currentLang); } // end handler }), // end button '-', new Ext.Button({ id: 'inEnglishButton', text: 'In English', pressed: false, handler: function () { currentLang='en'; setLang(currentLang); } // end handler }), // end button {xtype: 'tbfill'}, '-', new Ext.Button({ text: ' ', id: 'eventWinCloseButton', pressed: false, handler : function(){ eventStore.removeAll(); Ext.getCmp('eventJoinerForm').getForm().reset(); Ext.getCmp('eventBookingWin').hide(); } // end handler }) // end button ] // end toolbar items }) // end tbar }); /* LANGUAGES */ bundle_fi = new Ext.i18n.Bundle({ bundle:'event', path:'http://www.enterprisehelsinki.fi/', lang: 'fi-FI' }); bundle_en = new Ext.i18n.Bundle({ bundle:'event', path:'http://www.enterprisehelsinki.fi/', lang: 'en-GB' }); Ext.QuickTips.init(); var eId=Ext.getUrlParam('eId'); var eLang=Ext.getUrlParam('eLang'); if (eLang) currentLang=eLang; theBundle=eval('bundle_' + currentLang); theBundle.onReady(function(){ setLang(currentLang); }); if (eId) { currentEventId=eId; eventListStore.setBaseParam('eJoomlaArticleId', currentJoomlaArticleId); eventStore.setBaseParam('eJoomlaArticleId', currentJoomlaArticleId); eventListStore.load(); Ext.getCmp('eventBookingWin').show(); selectEvent(); } }); // Ext.onReady