diff --git a/workflow/engine/templates/admin/email.tpl b/workflow/engine/templates/admin/email.tpl
new file mode 100644
index 000000000..b3cf8eb2a
--- /dev/null
+++ b/workflow/engine/templates/admin/email.tpl
@@ -0,0 +1,24 @@
+
+
+
+
+
+ |
+
+
+ |
+ {msg} [{date}] - {engine}
+ |
+
+
+
+
+
+ This Business Process is powered by ProcessMaker ver. {ver}.
+
+ www.processmaker.com
+
+ |
+
+
+
\ No newline at end of file
diff --git a/workflow/engine/templates/admin/emails.js b/workflow/engine/templates/admin/emails.js
new file mode 100644
index 000000000..cdb5b46c1
--- /dev/null
+++ b/workflow/engine/templates/admin/emails.js
@@ -0,0 +1,594 @@
+Ext.onReady(function(){
+ var box = new Ext.form.Checkbox({
+ boxLabel: _('ID_ENABLE_EMAIL_NOTIFICATION'),//'Enable Email Notifications',
+ name: 'EnableEmailNotifications',
+ id: 'EnableEmailNotifications',
+ checked:false,
+ listeners: {
+ check: function(EnableEmailNotifications, checked) {
+ if(checked) {
+ loadfields();
+ combo.setVisible(true);
+ combo.getEl().up('.x-form-item').setDisplayed(true); // show label
+ Ext.getCmp('Server').setVisible(true);
+ Ext.getCmp('Server').getEl().up('.x-form-item').setDisplayed(true); // show label
+ Ext.getCmp('Port').setVisible(true);
+ Ext.getCmp('Port').getEl().up('.x-form-item').setDisplayed(true);
+ Ext.getCmp('RequireAuthentication').setVisible(true);
+ Ext.getCmp('RequireAuthentication').getEl().up('.x-form-item').setDisplayed(true);
+ Ext.getCmp('AccountFrom').setVisible(true);
+ Ext.getCmp('AccountFrom').getEl().up('.x-form-item').setDisplayed(true);
+ Ext.getCmp('Password').setVisible(false);
+ Ext.getCmp('Password').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('SendaTestMail').setVisible(true);
+ Ext.getCmp('SendaTestMail').getEl().up('.x-form-item').setDisplayed(true);
+
+ if(Ext.getCmp('SendaTestMail').checked) {
+ Ext.getCmp('eMailto').setVisible(true);
+ Ext.getCmp('eMailto').getEl().up('.x-form-item').setDisplayed(true);
+ }
+ else {
+ Ext.getCmp('eMailto').setVisible(false);
+ Ext.getCmp('eMailto').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('eMailto').setValue(' ');
+ }
+
+ if(!Ext.getCmp('UseSecureConnection').getValue()) {
+ Ext.getCmp('UseSecureConnection').setValue('No');
+ }
+
+ Ext.getCmp('UseSecureConnection').setVisible(true);
+ Ext.getCmp('UseSecureConnection').getEl().up('.x-form-item').setDisplayed(true);
+ Ext.getCmp('Test').setDisabled(false);
+ }
+ else {
+ combo.setVisible(false);
+ combo.getEl().up('.x-form-item').setDisplayed(false); // hide label
+ Ext.getCmp('Server').setVisible(false);
+ Ext.getCmp('Server').getEl().up('.x-form-item').setDisplayed(false); // hide label
+ Ext.getCmp('Port').setVisible(false);
+ Ext.getCmp('Port').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('RequireAuthentication').setVisible(false);
+ Ext.getCmp('RequireAuthentication').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('AccountFrom').setVisible(false);
+ Ext.getCmp('AccountFrom').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('Password').setVisible(false);
+ Ext.getCmp('Password').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('SendaTestMail').setVisible(false);
+ Ext.getCmp('SendaTestMail').getEl().up('.x-form-item').setDisplayed(false);
+
+ if(Ext.getCmp('SendaTestMail').getValue().checked) {
+ Ext.getCmp('eMailto').setVisible(true);
+ Ext.getCmp('eMailto').setVisible(true);
+ Ext.getCmp('eMailto').setValue('');
+ }
+ else {
+ Ext.getCmp('eMailto').setVisible(false);
+ Ext.getCmp('eMailto').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('eMailto').setValue(' ');
+ }
+
+ Ext.getCmp('UseSecureConnection').setVisible(false);
+ Ext.getCmp('UseSecureConnection').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('Test').setDisabled(true)
+ }
+ }
+ }
+ });
+
+ var EmailEngine = new Ext.data.SimpleStore({
+ fields: ['id', 'EmailEngine'],
+ data : [
+ ['PHPMAILER','SMTP (PHPMailer)'],
+ ['MAIL','Mail (PHP)']
+ ]
+ });
+
+ var combo = new Ext.form.ComboBox({
+ id:'EmailEngine',
+ name:'EmailEngine',
+ xtype: 'combo',
+ fieldLabel: _('EMAIL_ENGINE'),//'Email Engine',
+ blankText: '',
+ lazyRender: true,
+ allowBlank: false,
+ selectOnFocus: true,
+ forceSelection: true,
+ store:EmailEngine,
+ displayField:'EmailEngine',
+ mode: 'local',
+ triggerAction: 'all',
+ listeners: {
+ select: function(combo, value) {
+ if (Ext.getCmp('EmailEngine').getValue()== 'Mail (PHP)') {
+ Ext.getCmp('Server').setVisible(false);
+ Ext.getCmp('Server').getEl().up('.x-form-item').setDisplayed(false); // hide label
+ Ext.getCmp('Port').setVisible(false);
+ Ext.getCmp('Port').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('RequireAuthentication').setVisible(false);
+ Ext.getCmp('RequireAuthentication').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('AccountFrom').setVisible(false);
+ Ext.getCmp('AccountFrom').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('Password').setVisible(false);
+ Ext.getCmp('Password').getEl().up('.x-form-item').setDisplayed(false);
+ }
+ else {
+ Ext.getCmp('Server').setVisible(true);
+ Ext.getCmp('Server').getEl().up('.x-form-item').setDisplayed(true); // hide label
+ Ext.getCmp('Port').setVisible(true);
+ Ext.getCmp('Port').getEl().up('.x-form-item').setDisplayed(true);
+ Ext.getCmp('RequireAuthentication').setVisible(true);
+ Ext.getCmp('RequireAuthentication').getEl().up('.x-form-item').setDisplayed(true);
+ Ext.getCmp('AccountFrom').setVisible(true);
+ Ext.getCmp('AccountFrom').getEl().up('.x-form-item').setDisplayed(true);
+ Ext.getCmp('Password').setVisible(false);
+ Ext.getCmp('Password').getEl().up('.x-form-item').setDisplayed(false);
+ }
+ }
+ }
+ });
+
+ var EMailFields = new Ext.form.FieldSet({
+ title: _('ID_CONFIGURATION'),
+ items : [
+ box,
+ combo,
+ {
+ xtype: 'textfield',
+ hideLabel : false,
+ fieldLabel: _('ID_SERVER'),//'Server',
+ id:'Server',
+ //blankText: 'Server',
+ width: 200,
+ allowBlank: false,
+ listeners : {
+ 'change': {
+ fn:function() {
+ Ext.getCmp('PasswordHide').setValue('');
+ Ext.getCmp('Password').setValue('');
+ }
+ }
+ }
+ },
+ {
+ xtype: 'numberfield',
+ fieldLabel: _('PORT_DEFAULT'),//'Port (default 25)',
+ id:'Port',
+ name:'Port',
+ emptyText : null,
+ width: 40,
+ maxLength: 3,
+ allowBlank: false
+ },
+ {
+ xtype: 'checkbox',
+ boxLabel: _('REQUIRE_AUTHENTICATION'),//'Require authentication',
+ id:'RequireAuthentication',
+ name:'RequireAuthentication',
+ validateMessage: 'You really should do it.',
+ validateField: true,
+ handler: function() {
+ if (this.checked) {
+ Ext.getCmp('Password').setVisible(true);
+ Ext.getCmp('Password').getEl().up('.x-form-item').setDisplayed(true);
+ }
+ else {
+ Ext.getCmp('Password').setVisible(false);
+ Ext.getCmp('Password').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('Password').setValue('');
+ }
+ }
+ },
+ {
+ xtype: 'textfield',
+ fieldLabel: _('ACCOUNT_FROM'),//'Account From',
+ id:'AccountFrom',
+ name:'AccountFrom',
+ vtype:'email',
+ width: 200,
+ allowBlank: false
+ },
+ {
+ xtype: 'textfield',
+ fieldLabel: _('ID_PASSWORD'),//'PasswordHidden',
+ id:'PasswordHide',
+ name:'PasswordHide',
+ inputType: 'PasswordHide',
+ width: 200,
+ hidden: true,
+ hideLabel: true,
+ allowBlank: true
+ },
+ {
+ xtype: 'textfield',
+ fieldLabel: _('ID_PASSWORD'),//'Password',
+ id:'Password',
+ name:'Password',
+ inputType: 'password',
+ width: 200,
+ allowBlank: true,
+ listeners : {
+ 'change' : function() {
+ if (Ext.getCmp('Password').getValue() != '') {
+ Ext.getCmp('PasswordHide').setValue('');
+ }
+ }
+ }
+ },
+ {
+ xtype: 'checkbox',
+ boxLabel: _('SEND_TEST_MAIL'),//'Send a test mail' ,
+ id:'SendaTestMail',
+ name:'SendaTestMail',
+ listeners: {
+ check: function(EnableEmailNotifications, checked) {
+ if(checked) {
+ Ext.getCmp('eMailto').setVisible(true);
+ Ext.getCmp('eMailto').getEl().up('.x-form-item').setDisplayed(true);
+ Ext.getCmp('eMailto').setValue('');
+ }
+ else{
+ Ext.getCmp('eMailto').setVisible(false);
+ Ext.getCmp('eMailto').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('eMailto').setValue(' ');
+ }
+ }
+ }
+ },
+ {
+ xtype: 'textfield',
+ fieldLabel: _('MAIL_TO'),//'Mail to',
+ id:'eMailto',
+ name:'eMailto',
+ width: 200,
+ allowBlank: false
+ },
+ {
+ id:'UseSecureConnection',
+ name:'UseSecureConnection',
+ xtype: 'radiogroup',
+ fieldLabel: _('USE_SECURE_CONNECTION'),//'Use Secure Connection',
+ columns: 3,
+ width: 200,
+ vertical: true,
+ items: [
+ {boxLabel: 'No',inputValue: 'No',name: 'UseSecureConnection',checked:true},
+ {boxLabel: 'TLS', inputValue: 'tls',name: 'UseSecureConnection'},
+ {boxLabel: 'SSL', inputValue: 'ssl',name: 'UseSecureConnection'}
+ ]
+ }
+ ]
+ });
+
+
+ loadfields = function(){
+ Ext.Ajax.request({
+ url: '../adminProxy/loadFields',
+ params: { CFG_UID: 'Emails' },
+ success: function(r,o) {
+ var res = Ext.decode(r.responseText);
+
+ if (res.success) {
+ Ext.getCmp('EnableEmailNotifications').setValue(res.data.MESS_ENABLED);
+ Ext.getCmp('EmailEngine').setValue(res.data.MESS_ENGINE);
+ Ext.getCmp('Server').setValue(res.data.MESS_SERVER);
+ Ext.getCmp('Port').setValue(res.data.MESS_PORT);
+ Ext.getCmp('RequireAuthentication').setValue(res.data.MESS_RAUTH);
+ Ext.getCmp('AccountFrom').setValue(res.data.MESS_ACCOUNT);
+ Ext.getCmp('Password').setValue(res.data.MESS_PASSWORD);
+ Ext.getCmp('PasswordHide').setValue(Ext.getCmp('Password').getValue());
+ Ext.getCmp('Password').setValue('');
+ Ext.getCmp('SendaTestMail').setValue(res.data.MESS_TRY_SEND_INMEDIATLY);
+
+ if(!res.data.MAIL_TO) {
+ Ext.getCmp('eMailto').setValue(' ');
+ }
+ else {
+ Ext.getCmp('eMailto').setValue(res.data.MAIL_TO);
+ }
+
+ if (res.data.SMTPSecure == 'none') {
+ Ext.getCmp('UseSecureConnection').setValue('No');
+ }
+ else {
+ Ext.getCmp('UseSecureConnection').setValue(res.data.SMTPSecure);
+ }
+ }
+ }
+ });
+ }
+
+ loadfields();
+
+ var frm = new Ext.FormPanel({
+ title: ' ',
+ id:'EMailFields',
+ labelWidth: 150,
+ width:600,
+ labelAlign:'right',
+ autoScroll: true,
+ bodyStyle:'padding:2px',
+ waitMsgTarget : true,
+ frame: true,
+ defaults: {
+ allowBlank: false,
+ msgTarget: 'side',
+ align:'center'
+ },
+ items: [ EMailFields ],
+ buttons : [{
+ text : _('ID_TEST'),
+ id:'Test',
+ handler: testMethod
+ },
+ {
+ text : _('ID_SAVE_CHANGES'),
+ id:'SaveChanges',
+ disabled : true,
+ handler: saveMethod
+ }]
+ });
+ //render to process-panel
+ frm.render(document.body);
+ combo.setVisible(false);
+ combo.getEl().up('.x-form-item').setDisplayed(false); // hide label
+ Ext.getCmp('Server').setVisible(false);
+ Ext.getCmp('Server').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('Port').setVisible(false);
+ Ext.getCmp('Port').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('RequireAuthentication').setVisible(false);
+ Ext.getCmp('RequireAuthentication').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('AccountFrom').setVisible(false);
+ Ext.getCmp('AccountFrom').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('Password').setVisible(false);
+ Ext.getCmp('Password').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('SendaTestMail').setVisible(false);
+ Ext.getCmp('SendaTestMail').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('eMailto').setVisible(false);
+ Ext.getCmp('eMailto').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('UseSecureConnection').setVisible(false);
+ Ext.getCmp('UseSecureConnection').getEl().up('.x-form-item').setDisplayed(false);
+ Ext.getCmp('Test').setDisabled(true);
+});
+
+var testConnForm = new Ext.FormPanel({
+ collapsible: false,
+ maximizable: true,
+ width:445,
+ autoHeight:true,
+ frame:true,
+ autoDestroy : true,
+ monitorValid : true,
+ plain: true,
+ waitMsgTarget: true,
+ items:[{
+ xtype : 'fieldset',
+ layout : 'form',
+ id:'testConnField',
+ title: _('TESTING_EMAIL_CONF'),//'Testing email configuration',
+ labelWidth:20,
+ items : [
+ {
+ xtype: 'label', fieldLabel: ' ',
+ id:'step1', width: 300,
+ labelSeparator:''
+ },
+ {
+ xtype: 'label', fieldLabel: ' ',
+ id:'result1',
+ width: 300,
+ labelSeparator:'',
+ style : 'font-size: 11px;'
+ },
+ {
+ xtype: 'label',
+ fieldLabel: ' ',
+ id:'step2',
+ width: 300,
+ labelSeparator:''
+ },
+ {
+ xtype: 'label', fieldLabel: ' ',
+ id:'result2',
+ width: 300,
+ labelSeparator:'',
+ style : 'font-size: 11px;'
+ },
+ {
+ xtype: 'label',
+ fieldLabel: ' ',
+ id:'step3',
+ width: 300,
+ labelSeparator:''
+ },
+ {
+ xtype: 'label', fieldLabel: ' ',
+ id:'result3',
+ width: 300,
+ labelSeparator:'',
+ style : 'font-size: 11px;'
+ },
+ {
+ xtype: 'label',
+ fieldLabel: ' ',
+ id:'step4',
+ width: 300,
+ labelSeparator:''
+ },
+ {
+ xtype: 'label',
+ fieldLabel: ' ',
+ id:'result4',
+ width: 300,
+ labelSeparator:'',
+ style : 'font-size: 11px;'
+ },
+ {
+ xtype: 'label',
+ fieldLabel: ' ',
+ id:'step5',
+ width: 300,
+ labelSeparator:''
+ },
+ {
+ xtype: 'label',
+ fieldLabel: ' ',
+ id:'result5',
+ width: 300,
+ labelSeparator:'',
+ style : 'font-size: 11px;'
+ }
+ ]
+ }],
+ buttons: [
+ {
+ text:_('ID_DONE'),
+ id: 'done',
+ handler: function(){
+ testEmailWindow.hide();
+ }
+ }
+ ]
+});
+
+var testEmailWindow = new Ext.Window({
+ width: 470,
+ closable:false,
+ autoHeight: true,
+ layout: 'fit',
+ plain: true,
+ y: 82,
+ items: testConnForm
+});
+
+var params;
+var count = 0;
+var testMethod = function()
+{
+ if((Ext.getCmp('Port').getValue()==null)||(Ext.getCmp('Port').getValue()=='')) {
+ Ext.getCmp('Port').setValue('25');
+ }
+
+ if (Ext.getCmp('RequireAuthentication').checked){
+ if (Ext.getCmp('Password').getValue()=='') {
+ if (Ext.getCmp('PasswordHide').getValue()=='') {
+ PMExt.warning(_('ID_WARNING'),_('ID_PASSWD_REQUIRED'));
+ return false;
+ }
+ }
+ }
+ var x = Ext.getCmp('UseSecureConnection').getValue();
+ var UseSecureConnection = x.getGroupValue();
+ var count=0;
+ var create=true;
+
+ params = {
+ server : Ext.getCmp('Server').getValue(),
+ user : Ext.getCmp('AccountFrom').getValue(),
+ passwd : Ext.getCmp('Password').getValue(),
+ passwdHide : Ext.getCmp('PasswordHide').getValue(),
+ port : Ext.getCmp('Port').getValue(),
+ req_auth : Ext.getCmp('RequireAuthentication').getValue(),
+ UseSecureCon : UseSecureConnection,
+ SendaTestMail : Ext.getCmp('SendaTestMail').getValue() ,
+ eMailto : Ext.getCmp('eMailto').getValue(),
+ login : Ext.getCmp('AccountFrom').getValue()
+ };
+
+ Ext.getCmp('step1').setText(' '+_('RESOLVING_NAME')+' '+params.server+'', false);
+ Ext.getCmp('step2').setText(' '+_('ID_CHECK_PORT')+' '+params.port+'',false);
+ Ext.getCmp('step3').setText(' '+_('ESTABLISHING_CON_HOST')+' '+params.server+':'+params.port+'',false);
+ Ext.getCmp('step4').setText(' '+_('LOGIN_AS')+' ['+params.login+'] '+_('ID_ON')+' '+params.server+' '+_('SMTP_SERVER')+' ',false);
+ Ext.getCmp('step5').setText(' '+_('SENDING_TEST_EMAIL')+' ['+params.eMailto +']...', false);
+
+ Ext.getCmp('step1').setVisible(false);
+ Ext.getCmp('step2').setVisible(false);
+ Ext.getCmp('step3').setVisible(false);
+ Ext.getCmp('step4').setVisible(false);
+ Ext.getCmp('step5').setVisible(false);
+ Ext.getCmp('result1').setVisible(false);
+ Ext.getCmp('result2').setVisible(false);
+ Ext.getCmp('result3').setVisible(false);
+ Ext.getCmp('result4').setVisible(false);
+ Ext.getCmp('result5').setVisible(false);
+
+ Ext.getCmp('done').enable();
+ Ext.getCmp('SaveChanges').disable();
+
+ testEmailWindow.show();
+
+ execTest(1);
+
+ return true;
+}
+
+function execTest(step) {
+
+ if (step == 6) return false;
+
+ if ((step == 5) && (params.SendaTestMail == false))
+ return false;
+
+ document.getElementById('rstep'+step).innerHTML = '
';
+ Ext.getCmp('step'+step).setVisible(true);
+
+ params.step = step;
+
+ Ext.Ajax.request({
+ url: '../adminProxy/testConnection',
+ method:'POST',
+ params: params,
+ waitMsg: _('ID_UPLOADING_PROCESS_FILE'),
+ success: function(r,o){
+ var resp = Ext.util.JSON.decode(r.responseText);
+
+ if (resp.success) {
+ img = '/images/dialog-ok-apply.png';
+ Ext.getCmp('SaveChanges').enable();
+ }
+ else {
+ img = '/images/delete.png';
+ Ext.getCmp('SaveChanges').disable();
+ }
+
+ document.getElementById('rstep'+step).innerHTML = '
';
+
+ if(resp.msg) {
+ document.getElementById('result'+step).innerHTML = ' '+resp.msg+'';
+ Ext.getCmp('result'+step).setVisible(true);
+ }
+
+ execTest(step+1);
+ }
+ });
+}
+
+saveMethod=function() {
+ var x = Ext.getCmp('UseSecureConnection').getValue();
+ var UseSecureConnection = x.getGroupValue();
+ Ext.Ajax.request({
+ url: '../adminProxy/saveConfiguration',
+ method:'POST',
+ params:{
+ type:'type',
+ server:Ext.getCmp('Server').getValue(),
+ db_name:'db_name',
+ from:Ext.getCmp('AccountFrom').getValue(),
+ passwd:Ext.getCmp('Password').getValue(),
+ passwdHide:Ext.getCmp('PasswordHide').getValue(),
+ port:Ext.getCmp('Port').getValue(),
+ req_auth:Ext.getCmp('RequireAuthentication').getValue(),
+ UseSecureCon:UseSecureConnection,
+ SendaTestMail : Ext.getCmp('SendaTestMail').getValue() ,
+ eMailto : Ext.getCmp('eMailto').getValue(),
+ EnableEmailNotifications : Ext.getCmp('EnableEmailNotifications').getValue(),
+ EmailEngine : Ext.getCmp('EmailEngine').getValue(),
+ background: 'true'
+ },
+ success: function(r){
+ var i = Ext.decode(r.responseText);
+ PMExt.notify(_('ID_CHANGES_SAVED'),i.msg);
+ Ext.getCmp('Password').setValue('');
+ }
+ });
+}
\ No newline at end of file