2021-03-31 15:37:32 +01:00
/ * *
*
* SugarCRM Community Edition is a customer relationship management program developed by
* SugarCRM , Inc . Copyright ( C ) 2004 - 2013 SugarCRM Inc .
*
* SuiteCRM is an extension to SugarCRM Community Edition developed by SalesAgility Ltd .
* Copyright ( C ) 2011 - 2018 SalesAgility Ltd .
*
* This program is free software ; you can redistribute it and / or modify it under
* the terms of the GNU Affero General Public License version 3 as published by the
* Free Software Foundation with the addition of the following permission added
* to Section 15 as permitted in Section 7 ( a ) : FOR ANY PART OF THE COVERED WORK
* IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM , SUGARCRM DISCLAIMS THE WARRANTY
* OF NON INFRINGEMENT OF THIRD PARTY RIGHTS .
*
* This program is distributed in the hope that it will be useful , but WITHOUT
* ANY WARRANTY ; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE . See the GNU Affero General Public License for more
* details .
*
* You should have received a copy of the GNU Affero General Public License along with
* this program ; if not , see http : //www.gnu.org/licenses or write to the Free
* Software Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston , MA
* 02110 - 1301 USA .
*
* You can contact SugarCRM , Inc . headquarters at 10050 North Wolfe Road ,
* SW2 - 130 , Cupertino , CA 95014 , USA . or at email address contact @ sugarcrm . com .
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices , as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7 ( b ) of the GNU Affero General Public License version 3 ,
* these Appropriate Legal Notices must retain the display of the " Powered by
* SugarCRM " logo and " Supercharged by SuiteCRM " logo . If the display of the logos is not
* reasonably feasible for technical reasons , the Appropriate Legal Notices must
* display the words "Powered by SugarCRM" and "Supercharged by SuiteCRM" .
* / ( f u n c t i o n ( $ ) { $ . f n . E m a i l s C o m p o s e V i e w M o d a l = f u n c t i o n ( o p t i o n s ) { " u s e s t r i c t " ; v a r s e l f = t h i s ; v a r o p t s = $ . e x t e n d ( { } , $ . f n . E m a i l s C o m p o s e V i e w M o d a l . d e f a u l t s , o p t i o n s ) ; s e l f . h a n d l e C l i c k = f u n c t i o n ( e ) { " u s e s t r i c t " ; v a r s e l f = t h i s ; s e l f . e m a i l C o m p o s e V i e w = n u l l ; v a r o p t s = $ . e x t e n d ( { } , $ . f n . E m a i l s C o m p o s e V i e w M o d a l . d e f a u l t s ) ; v a r c o m p o s e B o x = $ ( ' < d i v > < / d i v > ' ) . a p p e n d T o ( o p t s . c o n t e n t S e l e c t o r ) ; c o m p o s e B o x . m e s s a g e B o x ( { " s h o w H e a d e r " : f a l s e , " s h o w F o o t e r " : f a l s e , " s i z e " : ' l g ' } ) ; c o m p o s e B o x . s e t B o d y ( ' < d i v c l a s s = " e m a i l - i n - p r o g r e s s " > < i m g s r c = " t h e m e s / ' + S U G A R . t h e m e s . t h e m e _ n a m e + ' / i m a g e s / l o a d i n g . g i f " > < / d i v > ' ) ; c o m p o s e B o x . s h o w ( ) ; $ . a j a x ( { t y p e : " G E T " , c a c h e : f a l s e , u r l : ' i n d e x . p h p ? m o d u l e = E m a i l s & a c t i o n = C o m p o s e V i e w & i n _ p o p u p = 1 ' } ) . d o n e ( f u n c t i o n ( d a t a ) { i f ( d a t a . l e n g t h = = = 0 ) { c o n s o l e . e r r o r ( " U n a b l e t o d i s p l a y C o m p o s e V i e w " ) ; c o m p o s e B o x . s e t B o d y ( S U G A R . l a n g u a g e . t r a n s l a t e ( ' ' , ' E R R _ A J A X _ L O A D ' ) ) ; r e t u r n ; }
2023-05-08 12:35:02 +01:00
composeBox . setBody ( data ) ; self . emailComposeView = composeBox . controls . modal . body . find ( '.compose-view' ) . EmailsComposeView ( ) ; $ ( self . emailComposeView ) . on ( 'sentEmail' , function ( event , composeView ) { composeBox . hide ( ) ; composeBox . remove ( ) ; } ) ; $ ( self . emailComposeView ) . on ( 'disregardDraft' , function ( event , composeView ) { if ( typeof messageBox !== "undefined" ) { var mb = messageBox ( { size : 'lg' } ) ; mb . setTitle ( SUGAR . language . translate ( '' , 'LBL_CONFIRM_DISREGARD_DRAFT_TITLE' ) ) ; mb . setBody ( SUGAR . language . translate ( '' , 'LBL_CONFIRM_DISREGARD_DRAFT_BODY' ) ) ; mb . on ( 'ok' , function ( ) { mb . remove ( ) ; composeBox . hide ( ) ; composeBox . remove ( ) ; } ) ; mb . on ( 'cancel' , function ( ) { mb . remove ( ) ; } ) ; mb . show ( ) ; } else { if ( confirm ( self . translatedErrorMessage ) ) { composeBox . hide ( ) ; composeBox . remove ( ) ; } } } ) ; composeBox . on ( 'cancel' , function ( ) { composeBox . remove ( ) ; } ) ; composeBox . on ( 'hide.bs.modal' , function ( ) { composeBox . remove ( ) ; } ) ; $ ( "#emails_email_templates_name" ) . change ( function ( ) { $ . fn . EmailsComposeView . onTemplateChange ( ) } ) ; } ) . fail ( function ( data ) { composeBox . controls . modal . content . html ( SUGAR . language . translate ( '' , 'LBL_EMAIL_ERROR_GENERAL_TITLE' ) ) ; } ) ; return $ ( self ) ; } ; self . construct = function ( ) { "use strict" ; $ ( opts . buttonSelector ) . click ( self . handleClick ) } ; self . destruct = function ( ) { } ; self . construct ( ) ; return $ ( self ) ; } ; $ . fn . openComposeViewModal = function ( source ) { "use strict" ; window . event . preventDefault ( ) ; window . event . stopImmediatePropagation ( ) ; var self = this ; self . emailComposeView = null ; var opts = $ . extend ( { } , $ . fn . EmailsComposeViewModal . defaults ) ; var composeBox = $ ( '<div></div>' ) . appendTo ( opts . contentSelector ) ; composeBox . messageBox ( { "showHeader" : false , "showFooter" : false , "size" : 'lg' } ) ; composeBox . setBody ( '<div class="email-in-progress"><img src="themes/' + SUGAR . themes . theme _name + '/images/loading.gif"></div>' ) ; composeBox . show ( ) ; var relatedId = $ ( '[name="record"]' ) . val ( ) ; var ids = '&ids=' ; if ( $ ( source ) . attr ( 'data-record-id' ) !== '' ) { ids = ids + $ ( source ) . attr ( 'data-record-id' ) ; relatedId = $ ( source ) . attr ( 'data-record-id' ) ; }
2021-03-31 15:37:32 +01:00
else { var inputs = document . MassUpdate . elements ; for ( var i = 0 ; i < inputs . length ; i ++ ) { if ( inputs [ i ] . name === 'mass[]' && inputs [ i ] . checked ) { ids = ids + inputs [ i ] . value + ',' ; } } }
var targetModule = currentModule ; if ( $ ( source ) . attr ( 'data-module' ) !== '' ) { targetModule = $ ( source ) . attr ( 'data-module' ) ; }
var url = 'index.php?module=Emails&action=ComposeView&in_popup=1&targetModule=' + targetModule + ids + '&relatedModule=' + currentModule + '&relatedId=' + relatedId ; $ . ajax ( { type : "GET" , cache : false , url : url } ) . done ( function ( data ) { if ( data . length === 0 ) { console . error ( "Unable to display ComposeView" ) ; composeBox . setBody ( SUGAR . language . translate ( '' , 'ERR_AJAX_LOAD' ) ) ; return ; }
composeBox . setBody ( data ) ; self . emailComposeView = composeBox . controls . modal . body . find ( '.compose-view' ) . EmailsComposeView ( ) ; var targetCount = 0 ; var targetList = '' ; var populateModuleName = '' ; var populateEmailAddress = '' ; var populateModule = '' ; var populateModuleRecord = '' ; var dataEmailName = $ ( source ) . attr ( 'data-module-name' ) ; var dataEmailAddress = $ ( source ) . attr ( 'data-email-address' ) ; $ ( '.email-compose-view-to-list' ) . each ( function ( ) { if ( $ ( '.email-relate-target' . length ) ) { populateModule = $ ( '.email-relate-target' ) . attr ( 'data-relate-module' ) ; populateModuleRecord = $ ( '.email-relate-target' ) . attr ( 'data-relate-id' ) ; populateModuleName = $ ( '.email-relate-target' ) . attr ( 'data-relate-name' ) ; }
else { populateModuleName = $ ( this ) . attr ( 'data-record-name' ) ; if ( dataEmailName !== '' ) { populateModuleName = dataEmailName ; }
populateModule = $ ( this ) . attr ( 'data-record-module' ) ; populateModuleRecord = $ ( this ) . attr ( 'data-record-id' ) ; if ( populateModuleName === '' ) { populateModuleName = populateEmailAddress ; } }
populateEmailAddress = $ ( this ) . attr ( 'data-record-email' ) ; if ( dataEmailAddress !== '' ) { populateEmailAddress = dataEmailAddress ; }
if ( populateEmailAddress !== '' ) { if ( targetCount > 0 ) { targetList = targetList + ',' ; }
2021-05-20 11:54:15 +01:00
targetList = targetList + dataEmailName + ' <' + populateEmailAddress + '>' ; targetCount ++ ; } } ) ; if ( targetCount > 0 ) { $ ( self . emailComposeView ) . find ( '#to_addrs_names' ) . val ( targetList ) ; }
if ( targetCount < 2 ) { $ ( self . emailComposeView ) . find ( '#parent_type' ) . val ( populateModule ) ; $ ( self . emailComposeView ) . find ( '#parent_name' ) . val ( populateModuleName ) ; $ ( self . emailComposeView ) . find ( '#parent_id' ) . val ( populateModuleRecord ) ; }
2023-05-08 12:35:02 +01:00
$ ( self . emailComposeView ) . on ( 'sentEmail' , function ( event , composeView ) { composeBox . hide ( ) ; composeBox . remove ( ) ; } ) ; $ ( self . emailComposeView ) . on ( 'disregardDraft' , function ( event , composeView ) { if ( typeof messageBox !== "undefined" ) { var mb = messageBox ( { size : 'lg' } ) ; mb . setTitle ( SUGAR . language . translate ( '' , 'LBL_CONFIRM_DISREGARD_DRAFT_TITLE' ) ) ; mb . setBody ( SUGAR . language . translate ( '' , 'LBL_CONFIRM_DISREGARD_DRAFT_BODY' ) ) ; mb . on ( 'ok' , function ( ) { mb . remove ( ) ; composeBox . hide ( ) ; composeBox . remove ( ) ; } ) ; mb . on ( 'cancel' , function ( ) { mb . remove ( ) ; } ) ; mb . show ( ) ; } else { if ( confirm ( self . translatedErrorMessage ) ) { composeBox . hide ( ) ; composeBox . remove ( ) ; } } } ) ; composeBox . on ( 'cancel' , function ( ) { composeBox . remove ( ) ; } ) ; composeBox . on ( 'hide.bs.modal' , function ( e ) { e . preventDefault ( ) ; var mb = messageBox ( { size : 'lg' } ) ; mb . setTitle ( SUGAR . language . translate ( '' , 'LBL_CONFIRM_DISREGARD_EMAIL_TITLE' ) ) ; mb . setBody ( SUGAR . language . translate ( '' , 'LBL_CONFIRM_DISREGARD_EMAIL_BODY' ) ) ; mb . on ( 'ok' , function ( ) { mb . remove ( ) ; composeBox . hide ( ) ; composeBox . remove ( ) ; } ) ; mb . on ( 'cancel' , function ( ) { mb . remove ( ) ; } ) ; mb . show ( ) ; } ) ; $ ( "#emails_email_templates_name" ) . change ( function ( ) { $ . fn . EmailsComposeView . onTemplateChange ( ) } ) ; } ) . fail ( function ( data ) { composeBox . controls . modal . content . html ( SUGAR . language . translate ( '' , 'LBL_EMAIL_ERROR_GENERAL_TITLE' ) ) ; } ) ; return $ ( self ) ; } ; $ . fn . EmailsComposeViewModal . defaults = { 'selected' : 'INBOX' , 'buttonSelector' : '[data-action=emails-show-compose-modal]' , 'contentSelector' : '#content' } ; } ( jQuery ) ) ;