*/
-(function(angular, $, _) {
-
- var partialUrl = function(relPath) {
- return CRM.resourceUrls['civicrm'] + '/partials/abtesting/' + relPath;
- };
-
- var crmMailingAB = angular.module('crmMailingAB', ['ngRoute', 'ui.utils']);
-
-
-//-------------------------------------------------------------------------------------------------------
- crmMailingAB.config(['$routeProvider',
- function($routeProvider) {
- $routeProvider.when('/mailing', {
- template: '<h1>sdfs</h1>',
- controller: 'mailingListCtrl',
- resolve: {
- mailingList: function($route, crmApi) {
- return crmApi('Mailing', 'get', {});
- }
- }
- });
-
-
- $routeProvider.when('/mailing/abtesting', {
-
- templateUrl: partialUrl('helloworld.html'),
- controller: 'TabsDemoCtrl',
- resolve: {
- mailingList: function($route, crmApi) {
- return crmApi('Mailing', 'get', {});
- }
- }
-
-
- });
- }
- ]);
+(function (angular, $, _) {
+
+ var partialUrl = function (relPath) {
+ return CRM.resourceUrls['civicrm'] + '/partials/abtesting/' + relPath;
+ };
+
+ var crmMailingAB = angular.module('crmMailingAB', ['ngRoute', 'ui.utils']);
+
+ crmMailingAB.run(function ($rootScope, $templateCache) {
+ $rootScope.$on('$viewContentLoaded', function () {
+ $templateCache.removeAll();
+ });
+ });
+
+ crmMailingAB.config([
+ '$routeProvider',
+ function ($routeProvider) {
+// $routeProvider.when('/mailing', {
+// template: '<h1>sdfs</h1>',
+// controller: 'mailingListCtrl',
+// resolve: {
+// mailingList: function ($route, crmApi) {
+// return crmApi('Mailing', 'get', {});
+// }
+// }
+// });
+
+ $routeProvider.when('/mailing/abtesting', {
+ templateUrl: partialUrl('main.html'),
+ controller: 'TabsDemoCtrl',
+ resolve: {
+ mailingList: function ($route, crmApi) {
+ return crmApi('Mailing', 'get', {});
+ }
+ }
+ });
+ }
+ ]);
//-----------------------------------------
- // Add a new record by name.
- // Ex: <crmAddName crm-options="['Alpha','Beta','Gamma']" crm-var="newItem" crm-on-add="callMyCreateFunction(newItem)" />
-
- crmMailingAB.controller('TabsDemoCtrl', function($scope, crmApi, mailingList) {
-
- $scope.adi=0;
- $scope.campaign_clicked= function(){
- if($scope.adi >= 0 ){
- $scope.adi =0;
- }
- };
- $scope.compose_clicked=function(){
- if($scope.adi >=1){
- $scope.adi =1;
- }
- };
- $scope.rec_clicked=function(){
- if($scope.adi >=2){
- $scope.adi =2;
- }
- };
- $scope.preview_clicked=function(){
- if($scope.adi>=3){
- $scope.adi=3;
- }
- };
- $scope.templates =
- [ { name: 'subjectlines', url: partialUrl('subject_lines.html')},
- { name: 'fromname', url: partialUrl('from_name.html')},
- {name:'2emails',url: partialUrl('two_emails.html')} ];
- $scope.template = $scope.templates[0];
-
- $scope.slide_value = 0;
-
- $scope.$watch("automated", function() {
-
- console.log("Smsdd");
-
- });
-
- $scope.setifyes= function(val){
- if(val ==1) {
- $scope.ifyes = true;
- }
- else
- $scope.ifyes=false;
- };
-
- $scope.closebox="open";
-
- });
-
- crmMailingAB.directive('nexttab', function() {
- return {
- // Restrict it to be an attribute in this case
- restrict: 'A',
- // responsible for registering DOM listeners as well as updating the DOM
- link: function(scope, element, attrs) {
-
- $(element).parent().parent().parent().tabs(scope.$eval(attrs.nexttab));
- var myarr = new Array(1,2,3)
- $(element).parent().parent().parent().tabs({disabled:myarr});
- //$(element).parent().parent().parent().tabs({"enable":1});
-
- $(element).on("click",function() {
- scope.adi=scope.adi +1;
- var myArray1 = new Array( );
- for ( var i = scope.adi+1; i < 4; i++ ) {
- myArray1.push(i);
- console.log( "try " + i );
- }
- $(element).parent().parent().parent().tabs( "option", "disabled", myArray1 );
- $(element).parent().parent().parent().tabs({active:scope.adi});
- console.log("adiroxxx");
- });
- }
- };
- });
-
- crmMailingAB.directive('groupselect',function(){
- return {
-
- restrict : 'AE',
-
- link: function(scope,element, attrs){
-
- $(document).ready(function() { $(element).select2({width:"400px",placeholder: "Select the groups you wish to include"});
-
- });
-
- }
- };
-
- });
-
- crmMailingAB.directive('sliderbar',function(){
- return{
-
- restrict: 'AE',
-
- link: function(scope,element, attrs){
-
- $(element).slider();
- $(element).slider({
- slide: function( event, ui ) {
- scope.slide_value = ui.value;
- scope.$apply();
-
- }
- });
-
- }
-
- };
-
- });
-
-
-
- crmMailingAB.directive('tpmax',function(){
- return {
-
- restrict: 'E',
-
-
-
- link: function(scope,element,attr){
-
-
-
- scope.$watch('automated', function(val) {
- if(val=="yes") {
- console.log("yo");
-
- $(element).dialog({
- title: 'Automated A/B Testing',
- width: 800,
- height: 600,
- closed: false,
- cache: false,
- modal: true
-
- });
-
-
-
-
-
- }
-
- });
-
- $(element).find("#closebutton").on("click",function(){
- console.log("you can do it");
- $(element).dialog("close");
-
- });
-
-
-
-
-
- }
-
- };
-
-
-
- });
-
- crmMailingAB.directive('numbar',function(){
- return{
-
- restrict: 'AE',
-
- link: function(scope,element, attrs){
-
- $(element).spinner({max:attrs.numbar,min:0});
-
-
-
- }
-
- };
-
- });
-
-
-
-
-
-
-
-
-
-
-
+ // Add a new record by name.
+ // Ex: <crmAddName crm-options="['Alpha','Beta','Gamma']" crm-var="newItem" crm-on-add="callMyCreateFunction(newItem)" />
+
+ crmMailingAB.controller('TabsDemoCtrl', function ($scope, crmApi) {
+
+ $scope.groups = CRM.crmMailing.groupNames;
+ $scope.mailList = CRM.crmMailing.civiMails;
+
+ $scope.tab_val = 0;
+ $scope.max_tab = 0;
+ $scope.campaign_clicked = function () {
+ if ($scope.max_tab >= 0) {
+ $scope.tab_val = 0;
+ }
+ };
+ $scope.compose_clicked = function () {
+ if ($scope.max_tab >= 1) {
+ $scope.tab_val = 1;
+ }
+ };
+ $scope.rec_clicked = function () {
+ if ($scope.max_tab >= 2) {
+ $scope.tab_val = 2;
+ }
+ };
+ $scope.preview_clicked = function () {
+ if ($scope.max_tab >= 3) {
+ $scope.tab_val = 3;
+ }
+ };
+ $scope.templates =
+ [
+ { name: 'Subject Lines', url: partialUrl('subject_lines.html')},
+ { name: 'From Name', url: partialUrl('from_name.html')},
+ {name: 'Two different Emails', url: partialUrl('two_emails.html')}
+ ];
+ $scope.template = $scope.templates[0];
+
+ $scope.slide_value = 0;
+
+ $scope.setifyes = function (val) {
+ if (val == 1) {
+ $scope.ifyes = true;
+ }
+ else {
+ $scope.ifyes = false;
+ }
+ };
+
+ $scope.send_date = "01/01/2000";
+
+ $scope.dt = "";
+
+ $scope.mailA = {};
+
+ $scope.mailB = {};
+ $scope.save = function (dat) {
+
+ var result = crmApi('Mailing', 'create', dat, true);
+ console.log("Ac " + result);
+ };
+
+ $scope.init = function (par) {
+
+ $scope.whatnext = par.toString()
+ };
+
+ $scope.setdate = function (par) {
+ console.log("called")
+ console.log("av " + par)
+ $scope.send_date = par;
+ $scope.dt = par;
+ $scope.apply();
+ };
+
+ $scope.scheddate = {};
+ $scope.scheddate.date = "6";
+ $scope.scheddate.time = "";
+ $scope.incGroup = [];
+ $scope.excGroup = [];
+
+
+ });
+
+ crmMailingAB.directive('nexttab', function () {
+ return {
+ // Restrict it to be an attribute in this case
+ restrict: 'A',
+
+ priority: 500,
+ // responsible for registering DOM listeners as well as updating the DOM
+ link: function (scope, element, attrs) {
+
+ $(element).parent().parent().parent().parent().tabs(scope.$eval(attrs.nexttab));
+ var myarr = new Array(1, 2, 3)
+ $(element).parent().parent().parent().parent().tabs({disabled: myarr});
+
+ $(element).on("click", function () {
+ scope.tab_val = scope.tab_val + 1;
+
+ scope.max_tab = Math.max(scope.tab_val, scope.max_tab);
+ var myArray1 = new Array();
+ for (var i = scope.max_tab + 1; i < 4; i++) {
+ myArray1.push(i);
+ }
+ $(element).parent().parent().parent().parent().parent().tabs("option", "disabled", myArray1);
+ $(element).parent().parent().parent().parent().parent().tabs("option", "active", scope.tab_val);
+ scope.$apply();
+ console.log("Adir");
+ });
+ }
+ };
+ });
+
+ crmMailingAB.directive('prevtab', function () {
+ return {
+ // Restrict it to be an attribute in this case
+ restrict: 'A',
+ priority: 500,
+ // responsible for registering DOM listeners as well as updating the DOM
+ link: function (scope, element, attrs) {
+
+
+ $(element).on("click", function () {
+ var temp = scope.tab_val - 1;
+ scope.tab_val = scope.tab_val - 1;
+
+ console.log(temp);
+ if (temp == 3) {
+
+ }
+ else {
+ $(element).parent().parent().parent().parent().parent().tabs("option", "active", temp);
+ }
+
+ scope.$apply();
+
+ });
+ }
+ };
+ });
+
+ crmMailingAB.directive('groupselect', function () {
+ return {
+ restrict: 'AE',
+ link: function (scope, element, attrs) {
+ function format(item) {
+ if (!item.id) {
+ // return `text` for optgroup
+ return item.text;
+ }
+ // return item template
+ var a = item.id.split(" ");
+ if (a[1] == "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] == "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] == "mail" && 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] == "mail" && 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",
+ placeholder: "Select the groups you wish to include",
+ formatResult: format,
+ formatSelection: format,
+ escapeMarkup: function (m) {
+ return m;
+ }
+ });
+
+ $(element).on('select2-selecting', function (e) {
+ var a = e.val.split(" ");
+ var l = a.length;
+ if (a[2] == "include") {
+ var str = "";
+ for (i = 3; i < l; i++) {
+ str += a[i];
+ str += " ";
+ }
+ scope.incGroup.push(str);
+ scope.$apply();
+ }
+
+ else {
+ var str = "";
+ for (i = 3; i < l; i++) {
+ str += a[i];
+ str += " ";
+ }
+
+ scope.excGroup.push(str);
+ scope.$apply();
+ }
+
+ });
+ $(element).on("select2-removed", function (e) {
+ if (e.val.split(" ")[2] == "exclude") {
+ var index = scope.excGroup.indexOf(e.val.split(" ")[3]);
+ scope.excGroup.splice(index, 1);
+ scope.$apply();
+ }
+ else {
+ var index = scope.incGroup.indexOf(e.val.split(" ")[3]);
+ scope.incGroup.splice(index, 1);
+ scope.$apply();
+ }
+ });
+ }
+ };
+
+ });
+
+ crmMailingAB.directive('sliderbar', function () {
+ return{
+ restrict: 'AE',
+ link: function (scope, element, attrs) {
+ $(element).slider({min: 1});
+ $(element).slider({
+ slide: function (event, ui) {
+ scope.slide_value = ui.value;
+ scope.$apply();
+ }
+ });
+ }
+ };
+ });
+
+ crmMailingAB.directive('tpmax', function () {
+ return {
+ restrict: 'E',
+ link: function (scope, element, attr) {
+ scope.$watch('automated', function (val) {
+ if (val == "Yes") {
+ $(element).dialog({
+ title: 'Automated A/B Testing',
+ width: 800,
+ height: 600,
+ closed: false,
+ cache: false,
+ modal: true
+ });
+ }
+ });
+
+ $(element).find("#closebutton").on("click", function () {
+ $(element).dialog("close");
+ });
+ }
+ };
+ });
+
+ crmMailingAB.directive('numbar', function () {
+ return{
+ restrict: 'AE',
+ link: function (scope, element, attrs) {
+ $(element).spinner({max: attrs.numbar, min: 0});
+ }
+ };
+ });
+
+ crmMailingAB.directive('datepick', function () {
+ return {
+
+
+ restrict: 'AE',
+ link: function (scope, element, attrs) {
+ $(element).datepicker({
+ dateFormat: "yy-mm-dd",
+ onSelect: function (date) {
+ $(".ui-datepicker a").removeAttr("href");
+
+ scope.scheddate.date = date.toString();
+ scope.$apply();
+ console.log(scope.scheddate.date);
+
+ }
+
+
+ });
+ }
+ };
+ });
+
+ crmMailingAB.directive('submitform', function () {
+ return {
+ restrict: 'A',
+ priority: 1000,
+ link: function (scope, element, attrs) {
+ $(element).on("click", function () {
+
+ console.log("clicked");
+ scope.save({
+ "sequential": 1,
+ "name": "Aditya Nambiar",
+ "subject": scope.mailA.subj,
+ "created_id": "2",
+ "from_email": scope.mailA.fromEmail,
+ "body_text": scope.mailA.body
+
+ });
+ console.log("Truth " + scope.whatnext)
+
+ if (scope.whatnext == "3") {
+ console.log("sdf");
+ scope.mailB.subj = scope.mailA.subj;
+ scope.mailB.body = scope.mailA.body;
+
+ }
+ else {
+ if (scope.whatnext == "2") {
+ scope.mailB.fromEmail = scope.mailA.fromEmail;
+ scope.mailB.body = scope.mailA.body;
+
+ }
+ }
+
+
+ scope.save({
+ "sequential": 1,
+ "name": "Aditya Nambiar",
+ "subject": scope.mailB.subj,
+ "created_id": "2",
+ "from_email": scope.mailB.fromEmail,
+ "body_text": scope.mailB.body
+
+ });
+
+ });
+ }
+ };
+
+ });
+
+ crmMailingAB.directive('nextbutton', function () {
+ return {
+ restrict: 'AE',
+ replace: 'true',
+ template: '<div class="crm-submit-buttons" id="campaignbutton">' +
+ '<div class = "crm-button crm-button-type-upload crm-button_qf_Contact_upload_view" >' +
+ '<input type="submit" value="Next" id="campaignbutton _qf_Contact_upload_view-top" class="btn btn-primary" nexttab={{tab_val}}>' +
+ '</div></div>'
+
+ };
+ });
+
+ crmMailingAB.directive('cancelbutton', function () {
+ return {
+ restrict: 'AE',
+ replace: 'true',
+ template: '<div class="crm-submit-buttons" id="campaignbutton">' +
+ '<div class = "crm-button crm-button-type-upload crm-button_qf_Contact_upload_view" >' +
+ '<input type="submit" value="Cancel" id="campaignbutton _qf_Contact_upload_view-top" class="btn btn-primary" >' +
+ '</div></div>'
+
+ };
+ });
+
+ crmMailingAB.directive('prevbutton', function () {
+ return {
+ restrict: 'AE',
+ replace: 'true',
+ template: '<div class="crm-submit-buttons" >' +
+ '<div class = "crm-button crm-button-type-upload crm-button_qf_Contact_upload_view" >' +
+ '<input type="submit" value="Previous" id="campaignbutton _qf_Contact_upload_view-top" class="btn btn-primary" prevtab={{tab_val}}>' +
+ '</div></div>'
+
+ };
+ });
+
+
+})(angular, CRM.$, CRM._);
-})(angular, CRM.$, CRM._);
\ No newline at end of file