-(function(angular, $, _) {
+(function (angular, $, _) {
//partials for the html pages
- var partialUrl = function(relPath) {
+ var partialUrl = function (relPath) {
return CRM.resourceUrls['civicrm'] + '/partials/crmMailing/' + relPath;
};
- var crmMailing = angular.module('crmMailing', ['ngRoute', 'ui.utils','ngSanitize']);
+ var crmMailing = angular.module('crmMailing', ['ngRoute', 'ui.utils', 'ngSanitize']);
var chck = []; //to fill the group variable $scope.incGroup
- var chck2= []; // to get id and text in the required format
+ var chck2 = []; // to get id and text in the required format
var mltokens = []; //we store list of the tokens in this
var global = 0; //use this to reload mailingList page once
//-------------------------------------------------------------------------------------------------------
crmMailing.config(['$routeProvider',
- function($routeProvider) {
+ function ($routeProvider) {
$routeProvider.when('/mailing', {
templateUrl: partialUrl('mailingList.html'),
controller: 'mailingListCtrl',
resolve: {
- mailingList: function($route, crmApi) {
+ mailingList: function ($route, crmApi) {
return crmApi('Mailing', 'get', {});
}
templateUrl: partialUrl('main.html'),
controller: 'mailingCtrl',
resolve: {
- selectedMail: function($route, crmApi) {
- if ( $route.current.params.id !== 'new') {
+ selectedMail: function ($route, crmApi) {
+ if ($route.current.params.id !== 'new') {
return crmApi('Mailing', 'getsingle', {id: $route.current.params.id});
}
else {
//selected mail in case of a new mailing. some default values are set
- return {visibility: "Public Pages", url_tracking:"1",dedupe_email:"1", forward_replies:"0", auto_responder:"0", open_tracking:"1"
+ return {visibility: "Public Pages", url_tracking: "1", dedupe_email: "1", forward_replies: "0", auto_responder: "0", open_tracking: "1"
};
}
}
//This controller is used in creating new mail and editing current mails
- crmMailing.controller('mailingCtrl', function($scope, crmApi, selectedMail, $location,$route, $sce, $window) {
+ crmMailing.controller('mailingCtrl', function ($scope, crmApi, selectedMail, $location, $route, $sce, $window) {
//setting variables to the values we have got to the api
$scope.partialUrl = partialUrl;
- $scope.campaignList = CRM.crmMailing.campNames;
+ $scope.campaignList = CRM.crmMailing.campNames;
$scope.mailList = CRM.crmMailing.civiMails;
$scope.mailNameList = _.pluck(CRM.crmCaseType.civiMails, 'name');
$scope.groupNamesList = CRM.crmMailing.groupNames;
$scope.from.name = "";
$scope.from.email = "";
$scope.from.total = "";
- $scope.reply ={};
+ $scope.reply = {};
$scope.reply.email = "";
//replyaddress is the array used to save the set of fromemailAddress of the person
$scope.replyaddress = [];
- for(var a in $scope.fromAddress){
+ for (var a in $scope.fromAddress) {
var b = {};
var splt = $scope.fromAddress[a].label.split(" ");
- splt = splt[1].substring(1,(splt[1].length-1));
+ splt = splt[1].substring(1, (splt[1].length - 1));
b.email = splt;
$scope.replyaddress.push(b);
}
if ($scope.currentMailing.from_name != null) {
$scope.from.name = $scope.currentMailing.from_name;
$scope.from.email = $scope.currentMailing.from_email;
- $scope.from.total = '"'+ $scope.from.name +'"' + " <" + $scope.from.email + ">";
+ $scope.from.total = '"' + $scope.from.name + '"' + " <" + $scope.from.email + ">";
$scope.reply.email = $scope.currentMailing.replyto_email;
}
$scope.mailid = [];
//putting all the ids of mails corresponding to the current mailing in mailid.
for (var a in $scope.mailingGrp) {
- if ($scope.mailingGrp[a].mailing_id==$scope.currentMailing.id) {
- var b = $scope.mailingGrp[a].entity_id + " " + $scope.mailingGrp[a].entity_table +" " + $scope.mailingGrp[a].group_type;
+ if ($scope.mailingGrp[a].mailing_id == $scope.currentMailing.id) {
+ var b = $scope.mailingGrp[a].entity_id + " " + $scope.mailingGrp[a].entity_table + " " + $scope.mailingGrp[a].group_type;
var c = $scope.mailingGrp[a].id;
chck.push(b);
$scope.mailid.push(c);
//used to put the Template id in tst so it can be used
- if ($scope.currentMailing.msg_template_id!=null) {
- $scope.tst=$scope.currentMailing.msg_template_id;
+ if ($scope.currentMailing.msg_template_id != null) {
+ $scope.tst = $scope.currentMailing.msg_template_id;
}
//Making the object for data in the mailing group related directive
for (var a in chck) {
- var b ={};
+ var b = {};
b.id = chck[a];
var splt = chck[a].split(" ");
- if(splt[1] == "civicrm_group"){
- for(var c in $scope.groupNamesList){
- if($scope.groupNamesList[c].id==splt[0]){
+ if (splt[1] == "civicrm_group") {
+ for (var c in $scope.groupNamesList) {
+ if ($scope.groupNamesList[c].id == splt[0]) {
b.text = $scope.groupNamesList[c].title;
}
}
}
- if(splt[1] == "civicrm_mailing"){
- for(var c in $scope.mailList){
- if($scope.mailList[c].id==splt[0]){
+ if (splt[1] == "civicrm_mailing") {
+ for (var c in $scope.mailList) {
+ if ($scope.mailList[c].id == splt[0]) {
b.text = $scope.mailList[c].name;
}
}
$scope.tabact = 0;
//all tabs with tab index greater than maxtab will be disabled. if not a new mail, no tab will be disabled
//otherwise all except first tab disabled
- if($scope.currentMailing.id != null)
+ if ($scope.currentMailing.id != null)
$scope.maxtab = 3;
$scope.maxtab = 0;
//increments active tab value and maxtab when next is clicked
- $scope.tabupdate = function(){
+ $scope.tabupdate = function () {
$scope.tabact = $scope.tabact + 1;
- $scope.maxtab = Math.max($scope.maxtab,$scope.tabact);
+ $scope.maxtab = Math.max($scope.maxtab, $scope.tabact);
}
//decrements active tab value
- $scope.prevtabupdate = function(){
+ $scope.prevtabupdate = function () {
$scope.tabact = $scope.tabact - 1;
}
//set active tab to 0 when recipient is clicked
- $scope.recclicked = function(){
+ $scope.recclicked = function () {
$scope.tabact = 0;
};
//set active tab to 1 when content is clicked
//also call appropriate save function if clicked from recipient tab
- $scope.conclicked = function(){
- if($scope.tabact == 0)
+ $scope.conclicked = function () {
+ if ($scope.tabact == 0)
$scope.save_next_page1();
$scope.tabact = 1;
};
//set active tab to 2 when schedule and send is clicked
//also call appropriate save functions if clicked from recipient or content tab
- $scope.schedclicked = function(){
- if($scope.tabact == 0)
+ $scope.schedclicked = function () {
+ if ($scope.tabact == 0)
$scope.save_next_page1();
- else if($scope.tabact == 1)
+ else if ($scope.tabact == 1)
$scope.save_next_page2();
$scope.tabact = 2;
};
//goes to the mailing list page
- $scope.back = function (){
- $window.location.href = "#/mailing" ;
+ $scope.back = function () {
+ $window.location.href = "#/mailing";
$route.reload();
};
//on changing the selected template, updates subject and body_html of currentMailing
- $scope.tmp = function (tst){
- $scope.currentMailing.msg_template_id=tst;
- if($scope.currentMailing.msg_template_id == null){
- $scope.currentMailing.body_html="";
- $scope.currentMailing.subject="";
+ $scope.tmp = function (tst) {
+ $scope.currentMailing.msg_template_id = tst;
+ if ($scope.currentMailing.msg_template_id == null) {
+ $scope.currentMailing.body_html = "";
+ $scope.currentMailing.subject = "";
}
- else{
- for(var a in $scope.tmpList){
+ else {
+ for (var a in $scope.tmpList) {
- if($scope.tmpList[a].id==$scope.currentMailing.msg_template_id){
- $scope.currentMailing.body_html=$scope.tmpList[a].msg_html;
- $scope.currentMailing.subject=$scope.tmpList[a].msg_subject;
+ if ($scope.tmpList[a].id == $scope.currentMailing.msg_template_id) {
+ $scope.currentMailing.body_html = $scope.tmpList[a].msg_html;
+ $scope.currentMailing.subject = $scope.tmpList[a].msg_subject;
}
}
}
};
//initializing variables we will use for checkboxes, or for purpose of ng-show
- $scope.composeS="1";
- if($scope.currentMailing.forward_replies==0 && $scope.currentMailing.auto_responder==0){
- $scope.trackreplies="0";
+ $scope.composeS = "1";
+ if ($scope.currentMailing.forward_replies == 0 && $scope.currentMailing.auto_responder == 0) {
+ $scope.trackreplies = "0";
}
else {
- $scope.trackreplies="1";
+ $scope.trackreplies = "1";
}
- if($scope.currentMailing.scheduled_date == null || $scope.currentMailing.scheduled_date == "")
- $scope.now="1";
+ if ($scope.currentMailing.scheduled_date == null || $scope.currentMailing.scheduled_date == "")
+ $scope.now = "1";
else
- $scope.now="0";
+ $scope.now = "0";
- $scope.reply = function(){
- if($scope.trackreplies==0){
- $scope.trackreplies=1;
+ $scope.reply = function () {
+ if ($scope.trackreplies == 0) {
+ $scope.trackreplies = 1;
}
- else{
- $scope.trackreplies=0;
- $scope.currentMailing.forward_replies=0;
- $scope.currentMailing.auto_responder=0;
+ else {
+ $scope.trackreplies = 0;
+ $scope.currentMailing.forward_replies = 0;
+ $scope.currentMailing.auto_responder = 0;
}
}
//joining scheddate.date and scheddate.time gives us scheduled date of current mailing
- $scope.scheddate={};
+ $scope.scheddate = {};
$scope.scheddate.date = "";
$scope.scheddate.time = "";
//checkNow decides whether we see the date picker or not. Depends on send immediately being on or off
- $scope.checkNow = function(){
- if($scope.now == 1 ){
+ $scope.checkNow = function () {
+ if ($scope.now == 1) {
$scope.now = 0;
}
- else{
+ else {
$scope.now = 1;
$scope.currentMailing.scheduled_date = null;
$scope.currentMailing.scheduled_id = null;
}
};
//changing the screen from compose on screen to upload content
- $scope.upldChange= function(composeS){
- if(composeS=="1"){
+ $scope.upldChange = function (composeS) {
+ if (composeS == "1") {
return true;
}
else
return false;
};
//filter so we only get headers from mailing component
- $scope.isHeader= function(hf){
+ $scope.isHeader = function (hf) {
return hf.component_type == "Header";
};
//filter so we only get footers from mailing component
- $scope.isFooter= function(f){
+ $scope.isFooter = function (f) {
return f.component_type == "Footer";
};
//filter so we only get auto-Responders from mailing component
- $scope.isAuto= function(au){
+ $scope.isAuto = function (au) {
return au.component_type == "Reply";
};
//filter so we only get userDriven message templates
- $scope.isUserDriven= function(mstemp){
- return (parseInt(mstemp.id)>58);
+ $scope.isUserDriven = function (mstemp) {
+ return (parseInt(mstemp.id) > 58);
};
//used for ng-show when trackreplies is selected. Only then we show forward replies and auto-responders options
- $scope.trackr= function(trackreplies){
- if(trackreplies=="1"){
+ $scope.trackr = function (trackreplies) {
+ if (trackreplies == "1") {
return true;
}
else
return false;
}
//we should only see groups with appropriate mailing visibility
- $scope.isGrp= function(grp){
+ $scope.isGrp = function (grp) {
return grp.visibility == "Public Pages";
};
//only completed mails are shown in the groupings
- $scope.isCompMail= function(ml){
+ $scope.isCompMail = function (ml) {
return ml.is_completed == 1;
};
//This is used to open the update the values in preview mailing
- $scope.preview_update = function(){
- var resulta =crmApi('Mailing','preview',{id:$scope.currentMailing.id});
- resulta.success(function(data) {
+ $scope.preview_update = function () {
+ var resulta = crmApi('Mailing', 'preview', {id: $scope.currentMailing.id});
+ resulta.success(function (data) {
if (data.is_error == 0) {
- $scope.previewbody_html=data.values.html;
- $scope.previewbody_text=data.values.text;
- $scope.preview_subject=data.values.subject;
+ $scope.previewbody_html = data.values.html;
+ $scope.previewbody_text = data.values.text;
+ $scope.preview_subject = data.values.subject;
$scope.pre = true;
$scope.$digest();
$scope.$apply();
});
};
//checks if body_text is empty or not
- $scope.isBody_text = function(){
- if($scope.currentMailing.body_text == null || $scope.currentMailing.body_text == "" )
+ $scope.isBody_text = function () {
+ if ($scope.currentMailing.body_text == null || $scope.currentMailing.body_text == "")
return false;
else
return true;
};
//parses html
- $scope.deliberatelyTrustDangerousSnippet = function() {
+ $scope.deliberatelyTrustDangerousSnippet = function () {
return $sce.trustAsHtml($scope.previewbody_html);
};
- $scope.deliberatelyTrustDangerousSnippet2 = function() {
+ $scope.deliberatelyTrustDangerousSnippet2 = function () {
return $sce.trustAsHtml($scope.previewbody_text);
};
- $scope.deliberatelyTrustDangerousSnippet3 = function() {
+ $scope.deliberatelyTrustDangerousSnippet3 = function () {
return $sce.trustAsHtml($scope.preview_subject);
};
//gets number of mailing recipients
- $scope.mailing_recipients= function() {
- var resulta =crmApi('MailingRecipients', 'get', {mailing_id: $scope.currentMailing.id, options: {limit:1000}});
- resulta.success(function(data) {
+ $scope.mailing_recipients = function () {
+ var resulta = crmApi('MailingRecipients', 'get', {mailing_id: $scope.currentMailing.id, options: {limit: 1000}});
+ resulta.success(function (data) {
if (data.is_error == 0) {
- $scope.noOfRecipients=data.count;
+ $scope.noOfRecipients = data.count;
$scope.$digest();
$scope.$apply();
}
});
}
//gets mailing groups associated with current mailing id. formats it in the required way
- $scope.mailingGroup = function() {
- var resulta =crmApi('MailingGroup', 'get', {mailing_id: $scope.currentMailing.id, options: {limit:1000}})
- resulta.success(function(data) {
+ $scope.mailingGroup = function () {
+ var resulta = crmApi('MailingGroup', 'get', {mailing_id: $scope.currentMailing.id, options: {limit: 1000}})
+ resulta.success(function (data) {
$scope.mailid = [];
chck = [];
- angular.forEach(data.values, function(value,key){
- var b = value.entity_id + " " + value.entity_table +" " + value.group_type;
+ angular.forEach(data.values, function (value, key) {
+ var b = value.entity_id + " " + value.entity_table + " " + value.group_type;
var c = value.id;
chck.push(b);
$scope.mailid.push(c);
});
- for(var a in chck)
+ for (var a in chck)
{
- var b ={}
+ var b = {}
b.id = chck[a];
var splt = chck[a].split(" ");
- if(splt[1] == "civicrm_group"){
- for(var c in $scope.groupNamesList){
- if($scope.groupNamesList[c].id==splt[0]){
+ if (splt[1] == "civicrm_group") {
+ for (var c in $scope.groupNamesList) {
+ if ($scope.groupNamesList[c].id == splt[0]) {
b.text = $scope.groupNamesList[c].title;
}
}
}
- if(splt[1] == "civicrm_mailing"){
- for(var c in $scope.mailList){
- if($scope.mailList[c].id==splt[0]){
+ if (splt[1] == "civicrm_mailing") {
+ for (var c in $scope.mailList) {
+ if ($scope.mailList[c].id == splt[0]) {
b.text = $scope.mailList[c].name;
}
}
});
}
//save repeat is a function that is repeated in all versions of save
- $scope.save_repeat = function(){
+ $scope.save_repeat = function () {
if ($scope.from.total != "") {
var splt = $scope.from.total.split(" ");
- var splta = splt[1].substring(1,(splt[1].length-1));
- var spltb = splt[0].substring(1,(splt[0].length-1));
+ var splta = splt[1].substring(1, (splt[1].length - 1));
+ var spltb = splt[0].substring(1, (splt[0].length - 1));
$scope.currentMailing.from_email = splta;
$scope.currentMailing.from_name = spltb;
}
}
//save_next is used in recipient page. stores mailing groups
- $scope.save_next = function() {
+ $scope.save_next = function () {
$scope.save_repeat();
//splits the groups based on include exclude mailing and groups
- $scope.incGrp=[];
- $scope.excGrp=[];
- $scope.incMail=[];
- $scope.excMail=[];
- $scope.answer="";
- for(req_id in chck){
+ $scope.incGrp = [];
+ $scope.excGrp = [];
+ $scope.incMail = [];
+ $scope.excMail = [];
+ $scope.answer = "";
+ for (req_id in chck) {
$scope.answer = chck[req_id].split(" ");
- if($scope.answer[1] == "civicrm_mailing" && $scope.answer[2]=="include"){
+ if ($scope.answer[1] == "civicrm_mailing" && $scope.answer[2] == "include") {
$scope.incMail.push($scope.answer[0]);
}
- else if($scope.answer[1] == "civicrm_mailing" && $scope.answer[2]=="exclude"){
+ else if ($scope.answer[1] == "civicrm_mailing" && $scope.answer[2] == "exclude") {
$scope.excMail.push($scope.answer[0]);
}
- if($scope.answer[1] == "civicrm_group" && $scope.answer[2]=="include"){
+ if ($scope.answer[1] == "civicrm_group" && $scope.answer[2] == "include") {
$scope.incGrp.push($scope.answer[0]);
}
- else if($scope.answer[1] == "civicrm_group" && $scope.answer[2]=="exclude"){
+ else if ($scope.answer[1] == "civicrm_group" && $scope.answer[2] == "exclude") {
$scope.excGrp.push($scope.answer[0]);
}
}
//deletes existing mailing groups of that id
if ($scope.mailid != null) {
for (var a in $scope.mailid) {
- var result_2= crmApi('MailingGroup', 'delete', {
+ var result_2 = crmApi('MailingGroup', 'delete', {
id: $scope.mailid[a]
});
}
}
var result = crmApi('Mailing', 'create', {
- id: $scope.currentMailing.id,
- name: $scope.currentMailing.name,
- visibility: $scope.currentMailing.visibility,
- created_id: $scope.currentMailing.created_id,
- subject: $scope.currentMailing.subject,
- msg_template_id: $scope.currentMailing.msg_template_id==null ? "" : $scope.currentMailing.msg_template_id,
- open_tracking: $scope.currentMailing.open_tracking,
- url_tracking: $scope.currentMailing.url_tracking,
- forward_replies: $scope.currentMailing.forward_replies,
- auto_responder: $scope.currentMailing.auto_responder,
- from_name: $scope.currentMailing.from_name,
- from_email: $scope.currentMailing.from_email,
- replyto_email: $scope.currentMailing.replyto_email,
- unsubscribe_id: $scope.currentMailing.unsubscribe_id,
- resubscribe_id: $scope.currentMailing.resubscribe_id,
- body_html: $scope.currentMailing.body_html,
- body_text: $scope.currentMailing.body_text,
- campaign_id: $scope.currentMailing.campaign_id==null ? "" : $scope.currentMailing.campaign_id,
- header_id: $scope.currentMailing.header_id,
- footer_id: $scope.currentMailing.footer_id,
- groups: {include: $scope.incGrp,
- exclude: $scope.excGrp
- },
- mailings: {include: $scope.incMail,
- exclude: $scope.excMail
- },
- is_completed: $scope.currentMailing.is_completed,
- dedupe_email: $scope.currentMailing.dedupe_email
+ id: $scope.currentMailing.id,
+ name: $scope.currentMailing.name,
+ visibility: $scope.currentMailing.visibility,
+ created_id: $scope.currentMailing.created_id,
+ subject: $scope.currentMailing.subject,
+ msg_template_id: $scope.currentMailing.msg_template_id == null ? "" : $scope.currentMailing.msg_template_id,
+ open_tracking: $scope.currentMailing.open_tracking,
+ url_tracking: $scope.currentMailing.url_tracking,
+ forward_replies: $scope.currentMailing.forward_replies,
+ auto_responder: $scope.currentMailing.auto_responder,
+ from_name: $scope.currentMailing.from_name,
+ from_email: $scope.currentMailing.from_email,
+ replyto_email: $scope.currentMailing.replyto_email,
+ unsubscribe_id: $scope.currentMailing.unsubscribe_id,
+ resubscribe_id: $scope.currentMailing.resubscribe_id,
+ body_html: $scope.currentMailing.body_html,
+ body_text: $scope.currentMailing.body_text,
+ campaign_id: $scope.currentMailing.campaign_id == null ? "" : $scope.currentMailing.campaign_id,
+ header_id: $scope.currentMailing.header_id,
+ footer_id: $scope.currentMailing.footer_id,
+ groups: {include: $scope.incGrp,
+ exclude: $scope.excGrp
},
- true);
+ mailings: {include: $scope.incMail,
+ exclude: $scope.excMail
+ },
+ is_completed: $scope.currentMailing.is_completed,
+ dedupe_email: $scope.currentMailing.dedupe_email
+ },
+ true);
//var result = crmApi('Mailing', 'create', $scope.currentMailing, true);
- result.success(function(data) {
+ result.success(function (data) {
if (data.is_error == 0) {
$scope.currentMailing.id = data.id;
$scope.mailingGroup();
});
};
//in second page save neither groups or schedule date information.
- $scope.save_next_page2 = function() {
+ $scope.save_next_page2 = function () {
$scope.save_repeat();
var result = crmApi('Mailing', 'create', {
- id: $scope.currentMailing.id,
- name: $scope.currentMailing.name,
- visibility: $scope.currentMailing.visibility,
- created_id: $scope.currentMailing.created_id,
- subject: $scope.currentMailing.subject,
- msg_template_id: $scope.currentMailing.msg_template_id==null ? "" : $scope.currentMailing.msg_template_id,
- open_tracking: $scope.currentMailing.open_tracking,
- url_tracking: $scope.currentMailing.url_tracking,
- forward_replies: $scope.currentMailing.forward_replies,
- auto_responder: $scope.currentMailing.auto_responder,
- from_name: $scope.currentMailing.from_name,
- from_email: $scope.currentMailing.from_email,
- replyto_email: $scope.currentMailing.replyto_email,
- unsubscribe_id: $scope.currentMailing.unsubscribe_id,
- resubscribe_id: $scope.currentMailing.resubscribe_id,
- body_html: $scope.currentMailing.body_html,
- body_text: $scope.currentMailing.body_text,
- campaign_id: $scope.currentMailing.campaign_id==null ? "" : $scope.currentMailing.campaign_id,
- header_id: $scope.currentMailing.header_id,
- footer_id: $scope.currentMailing.footer_id,
- is_completed: $scope.currentMailing.is_completed,
- dedupe_email: $scope.currentMailing.dedupe_email
- },
- true);
+ id: $scope.currentMailing.id,
+ name: $scope.currentMailing.name,
+ visibility: $scope.currentMailing.visibility,
+ created_id: $scope.currentMailing.created_id,
+ subject: $scope.currentMailing.subject,
+ msg_template_id: $scope.currentMailing.msg_template_id == null ? "" : $scope.currentMailing.msg_template_id,
+ open_tracking: $scope.currentMailing.open_tracking,
+ url_tracking: $scope.currentMailing.url_tracking,
+ forward_replies: $scope.currentMailing.forward_replies,
+ auto_responder: $scope.currentMailing.auto_responder,
+ from_name: $scope.currentMailing.from_name,
+ from_email: $scope.currentMailing.from_email,
+ replyto_email: $scope.currentMailing.replyto_email,
+ unsubscribe_id: $scope.currentMailing.unsubscribe_id,
+ resubscribe_id: $scope.currentMailing.resubscribe_id,
+ body_html: $scope.currentMailing.body_html,
+ body_text: $scope.currentMailing.body_text,
+ campaign_id: $scope.currentMailing.campaign_id == null ? "" : $scope.currentMailing.campaign_id,
+ header_id: $scope.currentMailing.header_id,
+ footer_id: $scope.currentMailing.footer_id,
+ is_completed: $scope.currentMailing.is_completed,
+ dedupe_email: $scope.currentMailing.dedupe_email
+ },
+ true);
//var result = crmApi('Mailing', 'create', $scope.currentMailing, true);
- result.success(function(data) {
+ result.success(function (data) {
if (data.is_error == 0) {
$scope.currentMailing.id = data.id;
}
});
};
//save scheduling information and not groups
- $scope.save_next_page3 = function() {
+ $scope.save_next_page3 = function () {
$scope.save_repeat();
if ($scope.currentMailing.scheduled_date == $scope.currentMailing.approval_date
- && $scope.currentMailing.scheduled_date != null) {;
+ && $scope.currentMailing.scheduled_date != null) {
+ ;
}
else {
- $scope.currentMailing.scheduled_date= $scope.scheddate.date + " " + $scope.scheddate.time ;
- if ($scope.currentMailing.scheduled_date!=" ") {
- $scope.currentMailing.scheduled_id= $scope.user_id;
+ $scope.currentMailing.scheduled_date = $scope.scheddate.date + " " + $scope.scheddate.time;
+ if ($scope.currentMailing.scheduled_date != " ") {
+ $scope.currentMailing.scheduled_id = $scope.user_id;
}
else {
- $scope.currentMailing.scheduled_date= null;
+ $scope.currentMailing.scheduled_date = null;
}
}
var result = crmApi('Mailing', 'create', {
- id: $scope.currentMailing.id,
- name: $scope.currentMailing.name,
- visibility: $scope.currentMailing.visibility,
- created_id: $scope.currentMailing.created_id,
- subject: $scope.currentMailing.subject,
- msg_template_id: $scope.currentMailing.msg_template_id==null ? "" : $scope.currentMailing.msg_template_id,
- open_tracking: $scope.currentMailing.open_tracking,
- url_tracking: $scope.currentMailing.url_tracking,
- forward_replies: $scope.currentMailing.forward_replies,
- auto_responder: $scope.currentMailing.auto_responder,
- from_name: $scope.currentMailing.from_name,
- from_email: $scope.currentMailing.from_email,
- replyto_email: $scope.currentMailing.replyto_email,
- unsubscribe_id: $scope.currentMailing.unsubscribe_id,
- resubscribe_id: $scope.currentMailing.resubscribe_id,
- body_html: $scope.currentMailing.body_html,
- body_text: $scope.currentMailing.body_text,
- scheduled_date: $scope.currentMailing.scheduled_date==null ? "" : $scope.currentMailing.scheduled_date,
- scheduled_id: $scope.currentMailing.scheduled_id==null ? "" : $scope.currentMailing.scheduled_id,
- campaign_id: $scope.currentMailing.campaign_id==null ? "" : $scope.currentMailing.campaign_id,
- header_id: $scope.currentMailing.header_id,
- footer_id: $scope.currentMailing.footer_id,
- is_completed: $scope.currentMailing.is_completed,
- approver_id: $scope.currentMailing.approver_id,
- approval_status_id: $scope.currentMailing.approval_status_id,
- approval_date: $scope.currentMailing.approval_date,
- dedupe_email: $scope.currentMailing.dedupe_email
- },
- true);
+ id: $scope.currentMailing.id,
+ name: $scope.currentMailing.name,
+ visibility: $scope.currentMailing.visibility,
+ created_id: $scope.currentMailing.created_id,
+ subject: $scope.currentMailing.subject,
+ msg_template_id: $scope.currentMailing.msg_template_id == null ? "" : $scope.currentMailing.msg_template_id,
+ open_tracking: $scope.currentMailing.open_tracking,
+ url_tracking: $scope.currentMailing.url_tracking,
+ forward_replies: $scope.currentMailing.forward_replies,
+ auto_responder: $scope.currentMailing.auto_responder,
+ from_name: $scope.currentMailing.from_name,
+ from_email: $scope.currentMailing.from_email,
+ replyto_email: $scope.currentMailing.replyto_email,
+ unsubscribe_id: $scope.currentMailing.unsubscribe_id,
+ resubscribe_id: $scope.currentMailing.resubscribe_id,
+ body_html: $scope.currentMailing.body_html,
+ body_text: $scope.currentMailing.body_text,
+ scheduled_date: $scope.currentMailing.scheduled_date == null ? "" : $scope.currentMailing.scheduled_date,
+ scheduled_id: $scope.currentMailing.scheduled_id == null ? "" : $scope.currentMailing.scheduled_id,
+ campaign_id: $scope.currentMailing.campaign_id == null ? "" : $scope.currentMailing.campaign_id,
+ header_id: $scope.currentMailing.header_id,
+ footer_id: $scope.currentMailing.footer_id,
+ is_completed: $scope.currentMailing.is_completed,
+ approver_id: $scope.currentMailing.approver_id,
+ approval_status_id: $scope.currentMailing.approval_status_id,
+ approval_date: $scope.currentMailing.approval_date,
+ dedupe_email: $scope.currentMailing.dedupe_email
+ },
+ true);
//var result = crmApi('Mailing', 'create', $scope.currentMailing, true);
- result.success(function(data) {
+ result.success(function (data) {
if (data.is_error == 0) {
$scope.currentMailing.id = data.id;
}
};
//call save of page2 and go to listing page
- $scope.save = function() {
+ $scope.save = function () {
$scope.save_next_page2();
$scope.back();
};
//call save of page1 and go to listing page
- $scope.save_page1 = function() {
+ $scope.save_page1 = function () {
$scope.save_next_page1();
$scope.back();
};
//if we save on page one, subject isnt defined. so we equate it to mailing name for now so we can save
- $scope.save_next_page1 = function() {
- if($scope.currentMailing.id == null){
+ $scope.save_next_page1 = function () {
+ if ($scope.currentMailing.id == null) {
$scope.currentMailing.subject = $scope.currentMailing.name;
$scope.save_next();
}
};
//set approval date to current time, also schedule date based on send immediately or not. then call 3rd page save
//go back to listing page
- $scope.submitButton= function(){
+ $scope.submitButton = function () {
$scope.currentMailing.approval_status_id = "1";
$scope.currentMailing.approver_id = $scope.user_id;
var currentdate = new Date();
var yyyy = currentdate.getFullYear();
var mm = currentdate.getMonth() + 1;
- mm = mm<10 ? '0' + mm : mm;
+ mm = mm < 10 ? '0' + mm : mm;
var dd = currentdate.getDate();
- dd = dd<10 ? '0' + dd : dd;
+ dd = dd < 10 ? '0' + dd : dd;
var hh = currentdate.getHours();
- hh = hh<10 ? '0' + hh : hh;
+ hh = hh < 10 ? '0' + hh : hh;
var min = currentdate.getMinutes();
- min = min<10 ? '0' + min : min;
+ min = min < 10 ? '0' + min : min;
var sec = currentdate.getSeconds();
- sec = sec<10 ? '0' + sec : sec;
- $scope.currentMailing.approval_date = yyyy + "/"+ mm
- + "/" + dd + " "
- + hh + ":"
- + min + ":" + sec;
- if($scope.now == 1){
+ sec = sec < 10 ? '0' + sec : sec;
+ $scope.currentMailing.approval_date = yyyy + "/" + mm
+ + "/" + dd + " "
+ + hh + ":"
+ + min + ":" + sec;
+ if ($scope.now == 1) {
$scope.currentMailing.scheduled_date = $scope.currentMailing.approval_date;
}
$scope.save_next_page3();
$scope.back();
};
//we use this to open the preview modal based on value of pre
- $scope.$watch('pre',function(){
- if($scope.pre==true){
+ $scope.$watch('pre', function () {
+ if ($scope.pre == true) {
$('#prevmail').dialog({
title: 'Preview Mailing',
width: 1080,
closed: false,
cache: false,
modal: true,
- close :function(){
- $scope.pre = false; $scope.$apply();
+ close: function () {
+ $scope.pre = false;
+ $scope.$apply();
}
});
}
- },true);
+ }, true);
//send test api called to send the test
- $scope.sendTest = function(){
- var resulta =crmApi('Mailing','send_test',{test_email:$scope.testMailing.name, test_group:$scope.testMailing.group,
- mailing_id:$scope.currentMailing.id});
+ $scope.sendTest = function () {
+ var resulta = crmApi('Mailing', 'send_test', {test_email: $scope.testMailing.name, test_group: $scope.testMailing.group,
+ mailing_id: $scope.currentMailing.id});
};
});
// Directive to go to the next tab
- crmMailing.directive('nexttab', function() {
+ crmMailing.directive('nexttab', function () {
return {
restrict: 'A',
- link: function(scope, element, attrs) {
+ link: function (scope, element, attrs) {
var tabselector = $(".crmMailingTabs");
- var myarr = new Array(1,2);
- if(scope.currentMailing.id==null){
- tabselector.tabs({disabled:myarr});
+ var myarr = new Array(1, 2);
+ if (scope.currentMailing.id == null) {
+ tabselector.tabs({disabled: myarr});
}
- $(element).on("click",function() {
+ $(element).on("click", function () {
scope.tabupdate();
var myArray1 = new Array( );
scope.$apply();
- for ( var i = scope.maxtab + 1; i < 3; i++ ) {
- myArray1.push(i);
+ for (var i = scope.maxtab + 1; i < 3; i++) {
+ myArray1.push(i);
}
- tabselector.tabs( "option", "disabled", myArray1 );
- tabselector.tabs({active:scope.tabact});
+ tabselector.tabs("option", "disabled", myArray1);
+ tabselector.tabs({active: scope.tabact});
scope.$apply();
});
}
});
// Directive to go to the previous tab
- crmMailing.directive('prevtab', function() {
+ crmMailing.directive('prevtab', function () {
return {
restrict: 'A',
- link: function(scope, element, attrs) {
+ link: function (scope, element, attrs) {
var tabselector = $(".crmMailingTabs");
tabselector.tabs();
- $(element).on("click",function() {
+ $(element).on("click", function () {
scope.prevtabupdate();
scope.$apply();
var myArray1 = new Array( );
- tabselector.tabs({active:scope.tabact});
+ tabselector.tabs({active: scope.tabact});
});
}
};
// Select 2 Widget for selecting the included group
- crmMailing.directive('chsgroup',function(){
+ crmMailing.directive('chsgroup', function () {
return {
- restrict : 'AE',
- link: function(scope,element, attrs){
+ restrict: 'AE',
+ link: function (scope, element, attrs) {
function format(item) {
- if(!item.id) {
+ if (!item.id) {
// return `text` for optgroup
return item.text;
}
// return item template
var a = item.id.split(" ");
- if(a[1]=="civicrm_group" && a[2]=="include")
+ if (a[1] == "civicrm_group" && a[2] == "include")
return "<img src='../../sites/all/modules/civicrm/i/include.jpeg' height=12 width=12/>" + " " + "<img src='../../sites/all/modules/civicrm/i/group.png' height=12 width=12/>" + item.text;
- if(a[1]=="civicrm_group" && a[2]=="exclude")
+ if (a[1] == "civicrm_group" && a[2] == "exclude")
return "<img src='../../sites/all/modules/civicrm/i/Error.gif' height=12 width=12/>" + " " + "<img src='../../sites/all/modules/civicrm/i/group.png' height=12 width=12/>" + item.text;
- if(a[1]=="civicrm_mailing" && a[2]=="include")
- return "<img src='../../sites/all/modules/civicrm/i/include.jpeg' height=12 width=12/>" + " " + "<img src='../../sites/all/modules/civicrm/i/EnvelopeIn.gif' height=12 width=12/>" + item.text;
- if(a[1]=="civicrm_mailing" && a[2]=="exclude")
+ if (a[1] == "civicrm_mailing" && a[2] == "include")
+ return "<img src='../../sites/all/modules/civicrm/i/include.jpeg' height=12 width=12/>" + " " + "<img src='../../sites/all/modules/civicrm/i/EnvelopeIn.gif' height=12 width=12/>" + item.text;
+ if (a[1] == "civicrm_mailing" && a[2] == "exclude")
return "<img src='../../sites/all/modules/civicrm/i/Error.gif' height=12 width=12/>" + " " + "<img src='../../sites/all/modules/civicrm/i/EnvelopeIn.gif' height=12 width=12/>" + item.text;
}
$(element).select2({
- width:"400px",
+ width: "400px",
placeholder: "Choose Recipients",
formatResult: format,
formatSelection: format,
- escapeMarkup: function(m) { return m; },
+ escapeMarkup: function (m) {
+ return m;
+ },
}).select2("data", scope.incGroup);
- $(element).on("select2-opening", function(){
- scope.incGroup=chck;
+ $(element).on("select2-opening", function () {
+ scope.incGroup = chck;
scope.$apply();
});
- $(element).on('select2-selecting', function(e) {
+ $(element).on('select2-selecting', function (e) {
chck.push(e.val);
- scope.incGroup=chck;
+ scope.incGroup = chck;
scope.$apply();
});
- $(element).on("select2-removed", function(e) {
+ $(element).on("select2-removed", function (e) {
var index = chck.indexOf(e.val);
chck.splice(index, 1);
- scope.incGroup=chck;
+ scope.incGroup = chck;
scope.$apply();
});
};
});
//used for tokens select2 widget
- crmMailing.directive('groupselect',function(){
+ crmMailing.directive('groupselect', function () {
return {
- restrict : 'AE',
- link: function(scope,element, attrs){
- $(element).select2({width:"200px", data: mltokens, placeholder:"Insert Token"});
- $(element).on('select2-selecting', function(e) {
+ restrict: 'AE',
+ link: function (scope, element, attrs) {
+ $(element).select2({width: "200px", data: mltokens, placeholder: "Insert Token"});
+ $(element).on('select2-selecting', function (e) {
scope.$evalAsync('_resetSelection()');
var a = $(element).attr('id');
- if(a=="htgroup"){
- if(scope.currentMailing.body_html =="" || scope.currentMailing.body_html == null)
+ if (a == "htgroup") {
+ if (scope.currentMailing.body_html == "" || scope.currentMailing.body_html == null)
scope.currentMailing.body_html = e.val;
else
scope.currentMailing.body_html += e.val;
}
- else if(a=="subgroup"){
+ else if (a == "subgroup") {
var msg = document.getElementById("sub").value;
var cursorlen = document.getElementById("sub").selectionStart;
- var textlen = msg.length;
+ var textlen = msg.length;
document.getElementById("sub").value = msg.substring(0, cursorlen) + e.val + msg.substring(cursorlen, textlen);
scope.currentMailing.subject = msg.substring(0, cursorlen) + e.val + msg.substring(cursorlen, textlen);
var cursorPos = (cursorlen + e.val.length);
document.getElementById("sub").selectionStart = cursorPos;
- document.getElementById("sub").selectionEnd = cursorPos;
+ document.getElementById("sub").selectionEnd = cursorPos;
document.getElementById("sub").focus();
}
- else if(a=="textgroup"){
- var msg = document.getElementById("body_text").value;
- var cursorlen = document.getElementById("body_text").selectionStart;
- var textlen = msg.length;
- document.getElementById("body_text").value = msg.substring(0, cursorlen) + e.val + msg.substring(cursorlen, textlen);
- scope.currentMailing.body_text = msg.substring(0, cursorlen) + e.val + msg.substring(cursorlen, textlen);
- var cursorPos = (cursorlen + e.val.length);
- document.getElementById("body_text").selectionStart = cursorPos;
- document.getElementById("body_text").selectionEnd = cursorPos;
- document.getElementById("body_text").focus();
- }
+ else if (a == "textgroup") {
+ var msg = document.getElementById("body_text").value;
+ var cursorlen = document.getElementById("body_text").selectionStart;
+ var textlen = msg.length;
+ document.getElementById("body_text").value = msg.substring(0, cursorlen) + e.val + msg.substring(cursorlen, textlen);
+ scope.currentMailing.body_text = msg.substring(0, cursorlen) + e.val + msg.substring(cursorlen, textlen);
+ var cursorPos = (cursorlen + e.val.length);
+ document.getElementById("body_text").selectionStart = cursorPos;
+ document.getElementById("body_text").selectionEnd = cursorPos;
+ document.getElementById("body_text").focus();
+ }
scope.$apply();
e.preventDefault();
})
});
//ckeditor directive
- crmMailing.directive('ckedit', function() {
+ crmMailing.directive('ckedit', function () {
return {
require: '?ngModel',
- link: function(scope, elm, attr, ngModel) {
+ link: function (scope, elm, attr, ngModel) {
var ck = CKEDITOR.replace(elm[0]);
- if (!ngModel) return;
+ if (!ngModel)
+ return;
- ck.on('pasteState', function() {
- scope.$apply(function() {
+ ck.on('pasteState', function () {
+ scope.$apply(function () {
ngModel.$setViewValue(ck.getData());
});
});
- ngModel.$render = function(value) {
+ ngModel.$render = function (value) {
ck.setData(ngModel.$viewValue);
};
}
});
// Used for the select date option. This is used for giving scheduled_date its date value
- crmMailing.directive('chsdate',function(){
+ crmMailing.directive('chsdate', function () {
return {
restrict: 'AE',
- link: function(scope,element,attrs){
+ link: function (scope, element, attrs) {
$(element).datepicker({
dateFormat: "yy-mm-dd",
- onSelect: function(date) {
+ onSelect: function (date) {
$(".ui-datepicker a").removeAttr("href");
- scope.scheddate.date=date.toString();
+ scope.scheddate.date = date.toString();
scope.$apply();
}
});
};
});
//used for file upload
- crmMailing.directive('file', function(){
+ crmMailing.directive('file', function () {
return {
scope: {
file: '='
},
- link: function(scope, el, attrs){
- el.bind('change', function(event){
+ link: function (scope, el, attrs) {
+ el.bind('change', function (event) {
var files = event.target.files;
var file = files[0];
scope.file = file ? file : undefined;
};
});
//used to insert the time entry
- crmMailing.directive('checktimeentry',function(){
+ crmMailing.directive('checktimeentry', function () {
return {
- restrict :'AE',
+ restrict: 'AE',
link: function (scope, element, attrs) {
- $(element).timeEntry({show24Hours:true});
+ $(element).timeEntry({show24Hours: true});
}
}
});
- //This controller is used for creating the mailing list. Simply gets all the mailing data from civiAPI
- crmMailing.controller('mailingListCtrl', function($scope, crmApi, mailingList, $route) {
+ //This controller is used for creating the mailing list. Simply gets all the mailing data from civiAPI
+ crmMailing.controller('mailingListCtrl', function ($scope, crmApi, mailingList, $route) {
if (global == 0) {
global = global + 1;
$route.reload();
}
$scope.mailingList = mailingList.values;
- $scope.checkEmpty = function(){
- if($scope.mailingList == "")
- return true;
- else
- return false;
+ $scope.checkEmpty = function () {
+ if ($scope.mailingList == "")
+ return true;
+ else
+ return false;
}
$scope.deleteMail = function (mail) {
crmApi('Mailing', 'delete', {id: mail.id}, {
CRM.alert(data.error_message, ts('Error'));
}
})
- .then(function (data) {
- if (!data.is_error) {
- delete mailingList.values[mail.id];
- $scope.$digest();
- $route.reload();
- }
- });
+ .then(function (data) {
+ if (!data.is_error) {
+ delete mailingList.values[mail.id];
+ $scope.$digest();
+ $route.reload();
+ }
+ });
};
- $scope.edit = function (){
+ $scope.edit = function () {
global = global - 1;
};