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