Pman.Dialog.CoreEmail.bjs
[Pman.Core] / Pman.Dialog.CoreEmail.js
index d30a6df..1e27604 100644 (file)
@@ -13,30 +13,35 @@ Pman.Dialog.CoreEmail = {
   'b357b524e740bc85b9790a0712d84a30' :"Email address",
   '962b90039a542a29cedd51d87a9f28a1' :"Html Editor",
   '72d6d7a1885885bb55a565fd1070581a' :"Import",
-  '31fde7b05ac8952dacf4af8a704074ec' :"Preview",
   'ea30b40c3caf28acb29198d20d243e54' :"Images / Attachments >>",
+  '31fde7b05ac8952dacf4af8a704074ec' :"Preview",
   '884df8e413319ff51a3f5f528606238a' :"Use template",
   'e6b391a8d2c4d45902a23a8b6585703d' :"URL",
   '2393ad754ba179442d85e415d1d5167c' :"Displayorder",
   '6f16a5f8ff5d75ab84c018adacdfcbb7' :"Field",
   'ec211f7c20af43e742bf2570c3cb84f9' :"Add",
   'e9968623956c15023d54335ea3699855' :"Convert Html to Text",
-  '5b8ef4e762c00a15a41cfc26dc3ef99c' :"Send me a test copy",
   '1243daf593fa297e07ab03bf06d925af' :"Searching...",
+  '5b8ef4e762c00a15a41cfc26dc3ef99c' :"Send me a test copy",
   'c7892ebbb139886662c6f2fc8c450710' :"Subject",
   'dc0de523c25be298ba751c63c694109e' :"Responsive Email (1)",
   '396ecabf0cd1f9503e591418851ef406' :"Edit / Create Message",
   'b9c49611cfda3259a2b837b39489e650' :"Add Image",
+  '44e7830e754c2e275ef6f658eafba13e' :"Test Class",
   'ea4788705e6873b424c65e91c2846b19' :"Cancel",
+  '68b00d723d37122f64da8d9939f836f0' :"BCC Group",
+  'c4ca4238a0b923820dcc509a6f75849b' :"1",
+  'bd88a20b53a47f7b5704a83a15ff5506' :"Saved Version",
   'b20a8b77b05d53b4e695738731400c85' :"Mailout Name",
   '1bd18d39370b7f26c1c5e18067b74c6f' :"Html File",
+  '2c466a2c159463f1d9ef5a7b57b52827' :"Select BCC Group",
   '5da618e8e4b89c66fe86e32cdafde142' :"From",
   '31bb2f6e9b8fb11cbb7fb63c6025223f' :"Select Template",
   'b78a3223503896721cca1303f776159b' :"Title",
   '278c491bdd8a53618c149c4ac790da34' :"Template",
-  'c9cc8cce247e49bae79f15173ce97354' :"Save",
   '1351017ac6423911223bc19a8cb7c653' :"Filename",
   '308f2757bfc9ce92fb00ff93fdffd279' :"Images / Attachments",
+  'c9cc8cce247e49bae79f15173ce97354' :"Save",
   '5feb9bf3c03b32635135006cbacb9542' :"Insert Field",
   '4c2a8fe7eaf24721cc7a9f0175115bd4' :"Message",
   'fff0d600f8a0b5e19e88bfb821dd1157' :"Images"
@@ -301,7 +306,7 @@ Pman.Dialog.CoreEmail = {
                       method: 'POST',
                       mask : "Loading",
                       params : {
-                            importUrl : l.protocol +'//' + l.host +   rootURL + '/Pman/Crm/mail_templates/responsive1.html',
+                            importUrl : l.protocol +'//' + l.host +   rootURL + '/Pman/Crm/mail_templates/responsive1.html'
                      },
                       success : function (res) {
               
@@ -471,6 +476,13 @@ Pman.Dialog.CoreEmail = {
            preValidate : function(done_callback) {
                
                Roo.MessageBox.progress("Uploading Images", "Uploading");
+               
+               if(!_this.form.findField('bodytext').editorcore.sourceEditMode){
+                   _this.form.findField('bodytext').syncValue();
+               }else{
+                   _this.form.findField('bodytext').pushValue();
+               }
+               
                var html = _this.form.findField('bodytext').getValue();
                
                var s = Roo.get(_this.form.findField('bodytext').editorcore.doc.documentElement);
@@ -500,7 +512,7 @@ Pman.Dialog.CoreEmail = {
                        return;
                    }
                    
-                   n = i.getAttribute('src').match(/^http(.*)/)
+                   n = i.getAttribute('src').match(/^http(.*)/);
                   
                    if(!n ){
                        mkimg();
@@ -538,6 +550,8 @@ Pman.Dialog.CoreEmail = {
                 
                  if (action.type == 'setdata') {
                  
+                     setInterval(_this.form.findField('bodytext').autosave, 5000);
+                     
                      _this.data.module = _this.data.module || 'crm_mailing_list_message';
                      
                      _this.form.url = baseURL + '/Roo/' + _this.data.module;
@@ -561,6 +575,9 @@ Pman.Dialog.CoreEmail = {
                  }
                  if (action.type == 'load') {
                      _this.dialog.el.unmask();
+                     
+                     _this.form.findField('bodytext').originalValue = _this.form.findField('bodytext').getValue();
+                     
                      return;
                  }
                  if (action.type =='submit') {
@@ -594,6 +611,36 @@ Pman.Dialog.CoreEmail = {
                xns : Roo.form,
                '|xns' : 'Roo.form',
                xtype : 'TextField'
+              },
+              {
+               hideLabels : true,
+               xns : Roo.form,
+               '|xns' : 'Roo.form',
+               xtype : 'Column',
+               items  : [
+                {
+                 boxLabel : 'Enabled - will be sent out',
+                 checked : true,
+                 name : 'active',
+                 value : 1,
+                 valueOff : 0,
+                 xns : Roo.form,
+                 '|xns' : 'Roo.form',
+                 xtype : 'Checkbox',
+                 listeners : {
+                  check : function (_self, checked)
+                   {
+                       var boxLabel = 'Enabled - will be sent out';
+                       
+                       if(!checked){
+                           boxLabel = 'Disabled - will NOT be sent out';
+                       }
+                       
+                       this.setBoxLabel(boxLabel);
+                   }
+                 }
+                }
+               ]
               }
              ]
             },
@@ -619,6 +666,77 @@ Pman.Dialog.CoreEmail = {
                xns : Roo.form,
                '|xns' : 'Roo.form',
                xtype : 'TextField'
+              },
+              {
+               allowBlank : true,
+               alwaysQuery : true,
+               displayField : 'name',
+               editable : false,
+               emptyText : _this._strings['2c466a2c159463f1d9ef5a7b57b52827'] /* Select BCC Group */,
+               fieldLabel : _this._strings['68b00d723d37122f64da8d9939f836f0'] /* BCC Group */,
+               forceSelection : true,
+               hiddenName : 'bcc_group',
+               loadingText : _this._strings['1243daf593fa297e07ab03bf06d925af'] /* Searching... */,
+               minChars : 2,
+               name : 'bcc_group_name',
+               pageSize : 25,
+               qtip : _this._strings['2c466a2c159463f1d9ef5a7b57b52827'] /* Select BCC Group */,
+               selectOnFocus : true,
+               tpl : '<div class=\"x-grid-cell-text x-btn button\"><b>{name}</b> </div>',
+               triggerAction : 'all',
+               typeAhead : true,
+               valueField : 'id',
+               width : 300,
+               xns : Roo.form,
+               '|xns' : 'Roo.form',
+               xtype : 'ComboBox',
+               store : {
+                remoteSort : true,
+                sortInfo : { direction : 'ASC', field: 'name' },
+                xns : Roo.data,
+                '|xns' : 'Roo.data',
+                xtype : 'Store',
+                listeners : {
+                 beforeload : function (_self, o){
+                      o.params = o.params || {};
+                      
+                      o.params._direct_return = 1;
+                  }
+                },
+                proxy : {
+                 method : 'GET',
+                 url : baseURL + '/Roo/Groups',
+                 xns : Roo.data,
+                 '|xns' : 'Roo.data',
+                 xtype : 'HttpProxy'
+                },
+                reader : {
+                 fields : [{"name":"name","type":"string"},{"name":"id","type":"int"}],
+                 id : 'name',
+                 root : 'data',
+                 totalProperty : 'total',
+                 xns : Roo.data,
+                 '|xns' : 'Roo.data',
+                 xtype : 'JsonReader'
+                }
+               }
+              }
+             ]
+            },
+            {
+             xns : Roo.form,
+             '|xns' : 'Roo.form',
+             xtype : 'Row',
+             items  : [
+              {
+               allowBlank : true,
+               fieldLabel : _this._strings['44e7830e754c2e275ef6f658eafba13e'] /* Test Class */,
+               name : 'test_class',
+               readOnly : true,
+               width : 300,
+               xns : Roo.form,
+               '|xns' : 'Roo.form',
+               xtype : 'TextField'
               }
              ]
             },
@@ -646,6 +764,20 @@ Pman.Dialog.CoreEmail = {
                xtype : 'FieldSet',
                items  : [
                 {
+                 autosave : function() {
+                     
+                     var body = _this.form.findField('bodytext');
+                     
+                     if(!body.wrap.isVisible(true) || body.getValue() == '' || !body.isDirty()){
+                         Roo.log('body not dirty');
+                         return;
+                     }
+                     
+                     Roo.log('body dirty, auto save!');
+                     
+                     body.fireEvent('autosave', body);
+                    
+                 },
                  clearUp : false,
                  cwhite : [ 
                      'margin',
@@ -683,7 +815,7 @@ Pman.Dialog.CoreEmail = {
                      'vertical-align',
                      'cursor',
                      'z-index',
-                     'right',
+                     'right'
                   ],
                  height : 250,
                  name : 'bodytext',
@@ -691,6 +823,66 @@ Pman.Dialog.CoreEmail = {
                  xns : Roo.form,
                  '|xns' : 'Roo.form',
                  xtype : 'HtmlEditor',
+                 listeners : {
+                  autosave : function (_self)
+                   {
+                       Roo.log('autosave');
+                       
+                       var id = _this.form.findField('id').getValue() * 1;
+                       
+                       /*
+                       if(!_self.editorcore.sourceEditMode){
+                           _self.syncValue();
+                       }else{
+                           _self.pushValue();
+                       }
+                       */
+                       
+                       new Pman.Request({
+                           url : baseURL + '/Roo/Events.php',
+                           method :'POST',
+                           params : {
+                               id : 0,
+                               action : 'AUTOSAVE',
+                               on_id : (id > 0) ? id : 0,
+                               on_table : 'crm_mailing_list_message',
+                               remarks : 'BODY',
+                               source: _self.getValue()
+                           },
+                           success : function() {
+                               _self.originalValue = _self.getValue();
+                               
+                           },
+                           failure : function() 
+                           {
+                               Roo.log('body autosave failed?!');
+                           }
+                       });
+                       
+                   },
+                  savedpreview : function (_self)
+                   {
+                       var id = _this.form.findField('id').getValue() * 1;
+                       
+                       var successFn = function(res){
+                           return res.data.POST.source;
+                       };
+                       
+                       var params = {
+                           action : 'AUTOSAVE',
+                           remarks : 'BODY',
+                           on_id : (id < 1) ? 0 : id,
+                           on_table : 'crm_mailing_list_message',
+                           successFn : successFn
+                       };
+                       
+                       
+                       Pman.Dialog.CoreAutoSavePreview.show(params, function(res){
+                           _self.setValue(res);
+                           _self.originalValue = res;
+                       });
+                   }
+                 },
                  toolbars : [
                   {
                    xns : Roo.form.HtmlEditor,
@@ -744,11 +936,13 @@ Pman.Dialog.CoreEmail = {
                            }).defer(100);
                            var editor = _this.form.findField('bodytext').editorcore;
                            
-                           var curnode = bt.editorcore.getSelectedNode()
+                           var curnode = editor.getSelectedNode();
                            if (curnode && curnode.tagName == 'IMG') {
                                curnode.src= String.format('{0}/Images/{1}/{2}#image-{1}',
                                        baseURL,  record.data.id, record.data.filename
                                    );
+                                   // note -forces an update... hopefully...
+                               editor.owner.fireEvent('editorevent', editor, false);
                            } else {
                            
                                editor.insertAtCursor(
@@ -776,7 +970,7 @@ Pman.Dialog.CoreEmail = {
                                 Roo.MessageBox.alert("Error", "Save email template first");
                                 return false;
                             }
-                            o.params.onid = id
+                            o.params.onid = id;
                             o.params.ontable = (_this.data.module) ? _this.data.module : 'crm_mailing_list_message';
                             
                            // o.params.imgtype = 'PressRelease';
@@ -865,6 +1059,25 @@ Pman.Dialog.CoreEmail = {
                       '|xns' : 'Roo.data',
                       xtype : 'SimpleStore'
                      }
+                    },
+                    {
+                     xns : Roo.Toolbar,
+                     '|xns' : 'Roo.Toolbar',
+                     xtype : 'Separator'
+                    },
+                    {
+                     cls : 'x-init-enable',
+                     text : _this._strings['bd88a20b53a47f7b5704a83a15ff5506'] /* Saved Version */,
+                     xns : Roo.Toolbar,
+                     '|xns' : 'Roo.Toolbar',
+                     xtype : 'Button',
+                     listeners : {
+                      click : function (_self, e)
+                       {
+                           this.scope.owner.fireEvent('savedpreview', this.scope.owner);
+                           
+                       }
+                     }
                     }
                    ]
                   }