Changeset 2026316
- Timestamp:
- 02/07/2019 06:10:03 AM (7 years ago)
- Location:
- yeloni-free-exit-popup/trunk
- Files:
-
- 1 added
- 3 edited
-
admin-interface/dist/admin.min.js (modified) (53 diffs)
-
admin-interface/src/partials/home.html (added)
-
admin-interface/src/platform_index.html (modified) (2 diffs)
-
yetience-plugin.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
yeloni-free-exit-popup/trunk/admin-interface/dist/admin.min.js
r2013246 r2026316 479 479 //Initialize the app and route configuration here 480 480 481 angular.module('yetienceApp', ['ui.router', 'formly', 'formlyBootstrap', 'jsonFormatter', 'ui.bootstrap', 'angular-md5', 'ngCookies', 'LocalStorageModule','angularTrix','ngTagsInput']) 482 483 .config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) { 484 485 if (yetience.website_saved) { 486 $urlRouterProvider.otherwise('/list') 487 } else { 488 $urlRouterProvider.otherwise('/start') 489 } 490 491 492 $stateProvider 493 .state('start', { 494 url: '/start', 495 templateUrl: yetience.adminPath + '/src/partials/start.html', 496 controller: 'StartController' 497 }) 498 .state('list', { 499 url: '/list', 500 templateUrl: yetience.adminPath + '/src/partials/list.html', 501 controller: 'ListController' 502 }) 503 .state('premium', { 504 url: '/premium', 505 templateUrl: yetience.adminPath + '/src/partials/gopremium.html', 506 controller: 'GoPremiumController' 507 }) 508 .state('build', { 509 url: '/:mode/build', 510 templateUrl: yetience.adminPath + '/src/partials/build.html', 511 controller: 'buildController' 512 }) 513 .state('build.goals', { 514 url: '/goals', 515 templateUrl: yetience.adminPath + '/src/partials/build.business.goal.html', 516 controller: 'businessGoalsController' 517 }) 518 .state('build.placement', { 519 url: '/placement', 520 templateUrl: yetience.adminPath + '/src/partials/build.widget.type.html', 521 controller: 'widgetTypeController' 522 }) 523 524 .state('build.select', { 525 url: '/select', 526 templateUrl: yetience.adminPath + '/src/partials/build.select.html', 527 controller: 'buildSelectController' 528 }) 529 .state('build.design', { 530 url: '/design', 531 templateUrl: yetience.adminPath + '/src/partials/build.design.html', 532 controller: 'buildDesignController' 533 }) 534 .state('build.integrate',{ 535 url: '/integrate', 536 templateUrl: yetience.adminPath + '/src/partials/build.integrate.html', 537 controller: 'buildIntegrateController' 538 }) 539 .state('extensions', { 540 url: '/extensions', 541 templateUrl: yetience.adminPath + '/src/partials/extensions.html', 542 controller: 'extensionSaleController' 543 }) 544 .state('affiliate', { 545 url: '/affiliate', 546 templateUrl: yetience.adminPath + '/src/partials/affiliate.html', 547 controller: 'affiliateController' 548 }) 481 angular.module('yetienceApp', ['ui.router', 'formly', 'formlyBootstrap', 'jsonFormatter', 'ui.bootstrap', 'angular-md5', 'ngCookies', 'LocalStorageModule', 'angularTrix', 'ngTagsInput']) 482 483 .config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) { 484 485 if (yetience.website_saved) { 486 $urlRouterProvider.otherwise('/list') 487 } else { 488 $urlRouterProvider.otherwise('/start') 489 } 490 491 492 $stateProvider 493 .state('start', { 494 url: '/start', 495 templateUrl: yetience.adminPath + '/src/partials/start.html', 496 controller: 'StartController' 497 }) 498 .state('old_list', { 499 url: '/old_list', 500 templateUrl: yetience.adminPath + '/src/partials/list.html', 501 controller: 'ListController' 502 }) 503 .state('list', { 504 url: '/list', 505 templateUrl: yetience.adminPath + '/src/partials/home.html', 506 controller: 'ListController' 507 }) 508 .state('premium', { 509 url: '/premium', 510 templateUrl: yetience.adminPath + '/src/partials/gopremium.html', 511 controller: 'GoPremiumController' 512 }) 513 .state('build', { 514 url: '/:mode/build', 515 templateUrl: yetience.adminPath + '/src/partials/build.html', 516 controller: 'buildController' 517 }) 518 .state('build.goals', { 519 url: '/goals', 520 templateUrl: yetience.adminPath + '/src/partials/build.business.goal.html', 521 controller: 'businessGoalsController' 522 }) 523 .state('build.placement', { 524 url: '/placement', 525 templateUrl: yetience.adminPath + '/src/partials/build.widget.type.html', 526 controller: 'widgetTypeController' 527 }) 528 529 .state('build.select', { 530 url: '/select', 531 templateUrl: yetience.adminPath + '/src/partials/build.select.html', 532 controller: 'buildSelectController' 533 }) 534 .state('build.design', { 535 url: '/design', 536 templateUrl: yetience.adminPath + '/src/partials/build.design.html', 537 controller: 'buildDesignController' 538 }) 539 .state('build.integrate', { 540 url: '/integrate', 541 templateUrl: yetience.adminPath + '/src/partials/build.integrate.html', 542 controller: 'buildIntegrateController' 543 }) 544 .state('extensions', { 545 url: '/extensions', 546 templateUrl: yetience.adminPath + '/src/partials/extensions.html', 547 controller: 'extensionSaleController' 548 }) 549 .state('affiliate', { 550 url: '/affiliate', 551 templateUrl: yetience.adminPath + '/src/partials/affiliate.html', 552 controller: 'affiliateController' 553 }) 549 554 /* 550 555 .state('recommend', { … … 585 590 }) 586 591 */ 587 }]) 588 592 }]) 589 593 angular.module('yetienceApp') 590 594 .controller('GoPremiumController', ['$scope', '$rootScope', 'SettingsService', '$modal', 'subscriptionAuth', 'CommService', '$state', 'localStorageService', function($scope, $rootScope, SettingsService, $modal, subscriptionAuth, CommService, $state, localStorageService) { … … 665 669 $scope.WU = WidgetUpdate 666 670 671 667 672 //console.dir($scope.R) 668 673 //$scope.displayCounter = 1; … … 711 716 712 717 } 718 719 fetchSubscriberCount(SettingsService.setup()) 713 720 714 721 }) … … 793 800 794 801 $scope.isEmailTheme = function (index) { 802 //console.log('index ', index) 795 803 var widgets = SettingsService.setup().widgets 796 804 // if (widgets[index].components.emailSubscription) { … … 837 845 SettingsService.saveSetup('<center>This Popup will be Deleted</center>', 'Delete') 838 846 } 839 847 $scope.addonList = [1, 2, 3, 4, 5, 6, 7, 8] 840 848 841 849 … … 971 979 } 972 980 981 $scope.addonGroups = { 982 983 individual: { 984 title: 'Get a Feature you need', 985 monthly: 8, 986 annual: 5 987 }, 988 bundle: { 989 title: 'Get all the Premium Features', 990 monthly: 15, 991 annual: 10 992 }, 993 994 } 995 996 $scope.addonShow = function (section, feature) { 997 if (section == 'bundle' && feature == 'premiumSubscription') { 998 return true 999 } 1000 if (section == 'individual' && feature != 'premiumSubscription') { 1001 return true 1002 } 1003 1004 return false 1005 } 1006 1007 function fetchSubscriberCount(setup) { 1008 1009 CommService.getSubscriberCount(setup.id) 1010 .then(function (count) { 1011 setup.subscriberCount = count 1012 }) 1013 } 1014 1015 $scope.ext = {} 1016 $scope.activate = function (license, extension) { 1017 $scope.ext[extension].activationInProgress = true 1018 1019 CommService.activate(license, extension, SettingsService.setup().id) 1020 .then(function (activation_response) { 1021 console.log('activation response is ', activation_response) 1022 $scope.ext[extension].activationInProgress = false 1023 if (!activation_response.status.success) { 1024 $scope.ext[extension].activationFailed = true 1025 $scope.ext[extension].activationError = activation_response.status.error 1026 } else { 1027 $scope.ext[extension].activationFailed = false 1028 location.reload() 1029 } 1030 }) 1031 } 973 1032 }]) 974 1033 angular.module('yetienceApp') … … 3661 3720 3662 3721 angular.module('yetienceApp') 3663 .service('SettingsService', ['CommService', '$rootScope', 'configurationFields', '$cookies', '$q', 'UtilsService', '$stateParams', '$location', function (CommService, $rootScope, configurationFields, $cookies, $q, UtilsService, $stateParams, $location) {3722 .service('SettingsService', ['CommService', '$rootScope', 'configurationFields', '$cookies', '$q', 'UtilsService', '$stateParams', '$location', function (CommService, $rootScope, configurationFields, $cookies, $q, UtilsService, $stateParams, $location) { 3664 3723 3665 3724 this.hasAllFeatures = false; 3666 3725 var setup = null 3667 var encode = function (x) {3726 var encode = function (x) { 3668 3727 return window.btoa(encodeURIComponent(x)) 3669 3728 } 3670 3729 3671 var decode = function () {3730 var decode = function () { 3672 3731 3673 3732 return decodeURIComponent(window.atob) … … 3677 3736 this.decode = decode 3678 3737 3679 this.setup = function () {3738 this.setup = function () { 3680 3739 return setup 3681 } 3740 } 3682 3741 3683 3742 var action_button_message = "<h3>Almost done!</h3><br/>Your popup will appear when the user clicks on the round floating button. (If you need an exit intent popup, you can select another design)<div class='yel-instructions'><ul><li>Click the button below to Save your Popup</li><li>Open any page on your website</li><li>Wait till the page fully loads</li><li>The round floating button shows up on the bottom right of the page</li><li>The Popup should show up when the user clicks on the button</li><li>After saving, you can configure the Popup behaviour</li></ul></div><br>", … … 3689 3748 3690 3749 return CommService.getWebsite(website_id) 3691 .then(function (website) {3750 .then(function (website) { 3692 3751 // if (website.extensions) { 3693 3752 // if (website.extensions.premiumSubscription) { … … 3743 3802 function createWebsiteAndAttach() { 3744 3803 return CommService.createWebsiteId() 3745 .then(function (website) {3746 3804 .then(function (website) { 3805 3747 3806 $cookies.put("autience-website-id", website.id) 3748 3807 angular.extend(setup, website) … … 3768 3827 //3. Initially referrer_id is present, but later it is not present 3769 3828 CommService.isReferrerPresent() 3770 .then(function (referrer_present) {3829 .then(function (referrer_present) { 3771 3830 3772 3831 console.log('referrer_present is ' + referrer_present) … … 3775 3834 cb() 3776 3835 }) 3777 .catch(function () {3836 .catch(function () { 3778 3837 cb() 3779 3838 }) … … 3781 3840 } 3782 3841 3783 this.initialize = function (cb) {3842 this.initialize = function (cb) { 3784 3843 //when the page loads, read the setup and upload it to the server 3785 3844 var setup_on_platform = yetience.readFromPlatform() … … 3808 3867 //console.log('trying with website_id fro cookie- ' + $cookies.get("autience-website-id")) 3809 3868 getWebsiteAndAttach($cookies.get("autience-website-id"), false) 3810 .then(function () {3869 .then(function () { 3811 3870 //console.log("Attached website id from cookie") 3812 3871 cb() 3813 }, function () {3872 }, function () { 3814 3873 //console.log("Cannot attach website id of cookie. Creating a new one") 3815 3874 createWebsiteAndAttach() 3816 .then(function () {3875 .then(function () { 3817 3876 checkPoweredByAndAttach(saveSetupAndCallback(cb)) 3818 3877 }) … … 3821 3880 //console.log("there is no website id on cookie") 3822 3881 createWebsiteAndAttach() 3823 .then(function () {3882 .then(function () { 3824 3883 checkPoweredByAndAttach(saveSetupAndCallback(cb)) 3825 3884 }) … … 3830 3889 //console.log('WEBSITE ID found on setup') 3831 3890 3832 getWebsiteAndAttach(setup.id, true).then(function () {3891 getWebsiteAndAttach(setup.id, true).then(function () { 3833 3892 cb() 3834 }, function () {3893 }, function () { 3835 3894 //console.log('website is not yet marked as saved.. marking') 3836 CommService.markSaved(setup.id).then(function () {3895 CommService.markSaved(setup.id).then(function () { 3837 3896 //console.log("marked as saved") 3838 3897 CommService.createNewEvent("d_fresh_plugin_install", '') … … 3844 3903 3845 3904 function saveSetupAndCallback(cb) { 3846 return function () {3905 return function () { 3847 3906 saveSetup('', 'Got it. Thanks!', true) 3848 3907 cb() … … 3900 3959 } 3901 3960 3902 this.addNewWidget = function (theme_id, widget) {3961 this.addNewWidget = function (theme_id, widget) { 3903 3962 //pushing will be done at the end 3904 3963 //setup.widgets.push(widget) … … 3961 4020 3962 4021 CommService.getThemeTemplate(theme_id) 3963 .then(function (template) {4022 .then(function (template) { 3964 4023 //console.log(template) 3965 4024 widget.raw = encode(template) … … 3989 4048 } 3990 4049 3991 this.isPremium = function () {4050 this.isPremium = function () { 3992 4051 if (setup.package_id && setup.package_id != 'default') { 3993 4052 return true … … 3995 4054 } 3996 4055 3997 this.showAffiliateLink = function (show) {4056 this.showAffiliateLink = function (show) { 3998 4057 3999 4058 setup.showAffiliateLink = show; … … 4002 4061 4003 4062 4004 this.createWidget = function (theme) {4063 this.createWidget = function (theme) { 4005 4064 return { 4006 4065 code: UtilsService.getRandomCode(), … … 4010 4069 } 4011 4070 4012 this.getWidget = function (index) {4071 this.getWidget = function (index) { 4013 4072 return setup.widgets[index] 4014 4073 } … … 4027 4086 4028 4087 4029 this.SaveCurrentPopup = function () {4088 this.SaveCurrentPopup = function () { 4030 4089 console.log('Calling Save Popup') 4031 4090 … … 4043 4102 } 4044 4103 } 4045 4046 4104 } 4047 4105 … … 4095 4153 } 4096 4154 }]) 4097 4098 4155 angular.module('yetienceApp') 4099 4156 .service('CommService', ['$http', '$q', '$rootScope', 'md5', function ($http, $q, $rootScope, md5) { … … 4363 4420 } 4364 4421 4422 this.activate = function (license, extension, website_id) { 4423 return postAndResolve('/subscription/api/activations/activate', { 4424 license: license, 4425 website_id: website_id, 4426 extension: extension 4427 }) 4428 } 4429 4365 4430 this.uploadSetup = function (website_id, setup) { 4366 4431 … … 4371 4436 var url = el.getAttribute("href") 4372 4437 return getAndResolve(url, null, '') 4438 } 4439 4440 this.getSubscriberCount = function (website_id) { 4441 return getAndResolve('/api/EmailSubscriptions/count?where[website_id]=' + website_id) 4373 4442 } 4374 4443 … … 4606 4675 }]) 4607 4676 angular.module('yetienceApp') 4608 .service('WidgetUpdate', ['CommService', '$state', '$timeout', 'SettingsService', 'UtilsService', '$rootScope', '$modal', '$q', function (CommService, $state, $timeout, SettingsService, UtilsService, $rootScope, $modal, $q) {4677 .service('WidgetUpdate', ['CommService', '$state', '$timeout', 'SettingsService', 'UtilsService', '$rootScope', '$modal', '$q', function (CommService, $state, $timeout, SettingsService, UtilsService, $rootScope, $modal, $q) { 4609 4678 4610 4679 var service = this … … 4639 4708 design: { 4640 4709 show: true, 4641 title: function (widget) {4710 title: function (widget) { 4642 4711 /* 4643 4712 If email subscription theme, then button title is 'Integrate' … … 4654 4723 edit: true, 4655 4724 operation: 'saveTemplate', 4656 saveOnCompletion: function (widget) {4725 saveOnCompletion: function (widget) { 4657 4726 //Save this if it is not an email widget 4658 4727 //if it's an email widget, don't save … … 4670 4739 operation: 'saveEmailTemplate', 4671 4740 tabTitle: 'Autoresponse', 4672 create: function (widget) {4741 create: function (widget) { 4673 4742 //if email sub widget - retur 4674 4743 if (widget) { … … 4680 4749 } 4681 4750 }, 4682 edit: function (widget) {4751 edit: function (widget) { 4683 4752 //if email sub widget - retur 4684 4753 if (widget) { … … 4727 4796 } 4728 4797 4729 this.nextFunction = function (widget, customer) {4798 this.nextFunction = function (widget, customer) { 4730 4799 var operation = states[current.state].operation 4731 4800 if (operation) { 4732 4801 //set working as true 4733 4802 current.working = true 4734 operations[operation](widget, customer, function () {4735 $timeout(function () {4803 operations[operation](widget, customer, function () { 4804 $timeout(function () { 4736 4805 current.working = false 4737 4806 goToNextState() … … 4745 4814 4746 4815 var operations = { 4747 saveEmailTemplate: function (widget, customer, cb) {4816 saveEmailTemplate: function (widget, customer, cb) { 4748 4817 4749 4818 if (UtilsService.checkNested(widget, ['components', 'welcomeEmail', 'values', 'sendWelcomeEmail'])) { 4750 4819 if (widget.components.welcomeEmail.values.sendWelcomeEmail == true) { 4751 4820 CommService.addWelcomeEmail(widget) 4752 .then(function (status) {4821 .then(function (status) { 4753 4822 console.log('status is ' + status) 4754 4823 savePopup(widget) … … 4765 4834 }, 4766 4835 4767 saveTemplate: function (widget, customer, cb) {4836 saveTemplate: function (widget, customer, cb) { 4768 4837 widget.rendered = getWidget() 4769 4838 4770 4839 return getStyles() 4771 .then(function (content) {4840 .then(function (content) { 4772 4841 theme_styles = content 4773 4842 return getCommonStyles() 4774 4843 }) 4775 .then(function (content) {4844 .then(function (content) { 4776 4845 common_styles = content 4777 4846 widget.styles = attachStyles(theme_styles, common_styles) … … 4782 4851 4783 4852 }, 4784 updateWidget: function (widget, customer, cb) {4853 updateWidget: function (widget, customer, cb) { 4785 4854 if (widget.widget_id) { 4786 4855 //existing widget, update before proceeding 4787 4856 CommService.updateWidget(widget) 4788 .then(function (widget) {4857 .then(function (widget) { 4789 4858 SettingsService.saveSetup('Your Widget has been Updated', 'Click here to Save Changes') 4790 4859 … … 4798 4867 4799 4868 }, 4800 createWidget: function (widget, customer, cb) {4869 createWidget: function (widget, customer, cb) { 4801 4870 4802 4871 //Take the widget on scope and create a new widget on the server 4803 4872 CommService.createWidget(SettingsService.setup().id, widget, customer) 4804 .then(function (created_widget) {4873 .then(function (created_widget) { 4805 4874 4806 4875 //CommService.createNewEvent("design_saved",''); … … 4846 4915 if (save_now) { 4847 4916 checkAndAskWidgetName(widget) 4848 .then(function () {4917 .then(function () { 4849 4918 SettingsService.SaveCurrentPopup() 4850 4919 }) … … 4856 4925 4857 4926 function isEmailPopup(widget) { 4927 if (!$rootScope.themes) { 4928 return false //themes are not yet fetched 4929 } 4858 4930 if (widget) { 4859 4931 return ($rootScope.themes[widget.theme].categories.indexOf('subscribe') >= 0) … … 4885 4957 4886 4958 var modalInstance = $modal.open({ 4887 controller: ['$rootScope', 'WidgetUpdate', function(R,WU) {4959 controller: ['$rootScope', 'WidgetUpdate', function (R, WU) { 4888 4960 this.R = $rootScope 4889 4961 this.WU = WU 4890 4962 4891 this.poweredBy = function () {4892 return !R.SETUP.poweredBy ||R.SETUP.customPoweredBy4963 this.poweredBy = function () { 4964 return !R.SETUP.poweredBy || R.SETUP.customPoweredBy 4893 4965 } 4894 4966 4895 4967 this.currentWidget = widget 4896 4968 4897 this.ok = function () {4969 this.ok = function () { 4898 4970 modalInstance.close() 4899 4971 D.resolve() … … 4909 4981 } 4910 4982 4911 this.changePoweredBy = function (fromCreate) {4983 this.changePoweredBy = function (fromCreate) { 4912 4984 //Create a new variable customPoweredBy so that we can keep the 'powered by yeloni' option always available to downloaded plugin users 4913 4985 $rootScope.SETUP.customPoweredBy = true 4914 4986 //return if the widget is being created 4915 if (fromCreate == true){4987 if (fromCreate == true) { 4916 4988 return 4917 4989 } 4918 var message = "'Powered by Yeloni' message will now be displayed", button = 'Enable' 4990 var message = "'Powered by Yeloni' message will now be displayed", 4991 button = 'Enable' 4919 4992 // console.log($rootScope.SETUP.poweredBy) 4920 if ($rootScope.SETUP.poweredBy == false){4993 if ($rootScope.SETUP.poweredBy == false) { 4921 4994 message = "'Powered by Yeloni' message will no longer be displayed", button = 'Disable' 4922 4995 } 4923 4996 4924 SettingsService.saveSetup('<center> ' +message+' </center>', button)4997 SettingsService.saveSetup('<center> ' + message + ' </center>', button) 4925 4998 } 4926 4999 }]) 4927 4928 5000 angular.module('yetienceApp') 4929 5001 .service('UpgradeService', [ '$rootScope', 'SettingsService', 'subscriptionAuth', 'CommService', function( $rootScope, SettingsService, subscriptionAuth, CommService) { … … 4967 5039 4968 5040 angular.module('yetienceApp') 4969 .service('FeatureStatusService', ['$rootScope', function ($rootScope, SettingsService) {4970 4971 4972 this.mobileScreens = function (widget, feature) {5041 .service('FeatureStatusService', ['$rootScope', function ($rootScope, SettingsService) { 5042 5043 5044 this.mobileScreens = function (widget, feature) { 4973 5045 feature.priority = 1; 4974 5046 return { … … 4977 5049 ideal: "Show on mobiles & desktops", 4978 5050 icon: "glyphicon glyphicon-phone", 4979 upgrade: 'Mobiles and Tablets addon', 4980 description: 'In the free version popup is shown only on Desktops. Get this addon to show Popups on Mobiles and Tablets' 5051 upgrade: 'Show on Mobiles and Tablets addon', 5052 description: 'In the free version popup is shown only on Desktops. Get this addon to show Popups on Mobiles and Tablets', 5053 image: 'https://www.yeloni.com/wp-content/uploads/2019/01/Mobile_and_tablets_addon.jpg', 5054 url: 'https://www.yeloni.com/product/show-mobiles-tablets/', 5055 wcId: '1627', 5056 enabled: true 4981 5057 }; 4982 5058 } 4983 5059 4984 this.specificPages = function (widget, feature) {5060 this.specificPages = function (widget, feature) { 4985 5061 feature.priority = 2; 4986 5062 … … 4990 5066 ideal: "Show on selected pages", 4991 5067 icon: "glyphicon glyphicon-list-alt", 4992 upgrade: 'Page Selection addon', 4993 description: "In the free version popup is shown on all the pages of your website. Get this addon to specify which page(s) you want to see the popup on" 5068 upgrade: 'Show on Selected Pages addon', 5069 description: "In the free version popup is shown on all the pages of your website. Get this addon to specify which page(s) you want to see the popup on", 5070 image: 'https://www.yeloni.com/wp-content/uploads/2019/01/page_selection_addon.jpg', 5071 url: 'https://www.yeloni.com/product/show-selected-pages/', 5072 wcId: '1628', 5073 enabled: true 4994 5074 }; 4995 5075 } 4996 5076 4997 this.hideAfterCta = function (widget, feature) {5077 this.hideAfterCta = function (widget, feature) { 4998 5078 feature.priority = 6; 4999 5079 return { … … 5002 5082 ideal: "Disable after subscription", 5003 5083 icon: "glyphicon glyphicon-flash", 5004 upgrade: 'Stick Around addon', 5005 description: "This addon helps you to keep the widget active on multiple pages throughout the visitor's session until they perform the expected action" 5084 upgrade: 'Show until Expected Action addon', 5085 description: "This addon helps you to keep the widget active on multiple pages throughout the visitor's session until they perform the expected action", 5086 image: 'https://www.yeloni.com/wp-content/uploads/2019/01/stick_around_addon.jpg', 5087 url: 'https://www.yeloni.com/product/hide-popup-action/', 5088 wcId: '1633', 5089 enabled: false 5006 5090 }; 5007 5091 } 5008 5092 5009 this.emailSignature = function (widget, feature) {5093 this.emailSignature = function (widget, feature) { 5010 5094 feature.priority = 5; 5011 5095 return { … … 5014 5098 ideal: "ideal", 5015 5099 icon: "glyphicon glyphicon-tag", 5016 upgrade: "Unbranding addon", 5017 description: "Auto responder messages come with a small footnote. This extension enables you to disable the message" 5100 upgrade: "Disable all Yeloni Branding addon", 5101 description: "Auto responder messages come with a small footnote. This extension enables you to disable the message", 5102 image: 'https://www.yeloni.com/wp-content/uploads/2019/01/unbranding_addon.jpg', 5103 url: 'https://www.yeloni.com/product/remove-yeloni-email-signature-autoresponder-emails/', 5104 wcId: '1629', 5105 enabled: true 5018 5106 }; 5019 5107 } 5020 5108 5021 this.customHtml = function (widget, feature) {5109 this.customHtml = function (widget, feature) { 5022 5110 feature.priority = 4; 5023 5111 return { … … 5026 5114 ideal: "custom html >", 5027 5115 icon: "glyphicon glyphicon-list-alt", 5028 upgrade: 'Custom HTML addon', 5029 description: "If you have specific requirements or an in-house designer, this extension allows you to create popups with your own HTML and CSS" 5116 upgrade: 'Add your own Custom HTML addon', 5117 description: "If you have specific requirements or an in-house designer, this extension allows you to create popups with your own HTML and CSS", 5118 image: 'https://www.yeloni.com/wp-content/uploads/2019/01/custom_html_addon.jpg', 5119 url: 'https://www.yeloni.com/product/custom-html-popup/', 5120 wcId: '1630', 5121 enabled: true 5030 5122 }; 5031 5123 } 5032 5124 5033 this.premiumEmail = function (widget, feature) {5125 this.premiumEmail = function (widget, feature) { 5034 5126 feature.priority = 3; 5035 5127 return { … … 5038 5130 ideal: " >", 5039 5131 icon: "glyphicon glyphicon-envelope", 5040 upgrade: 'Email Marketing addon', 5041 description: 'This extension allows you to integrate Yeloni with Aweber, Active Campaign and Sendy' 5132 upgrade: 'Email Marketing Integrations', 5133 description: 'This extension allows you to integrate Yeloni with Aweber, Active Campaign and Sendy', 5134 image: 'https://www.yeloni.com/wp-content/uploads/2019/01/email_marketing_addon.jpg', 5135 url: 'https://www.yeloni.com/product/connect-email-provider/', 5136 wcId: '1631', 5137 enabled: true 5042 5138 }; 5043 5139 } 5044 5140 5045 this.showAdminFeature = function (widget, feature) {5141 this.showAdminFeature = function (widget, feature) { 5046 5142 feature.priority = 7; 5047 5143 return { … … 5051 5147 icon: "glyphicon glyphicon-user", 5052 5148 upgrade: 'Guest Only addon', 5053 description: "This allows you to disable widgets for users who are already logged in. Works only if you are using wordpress to manage your users" 5054 }; 5055 } 5056 5057 this.limitByReferrer = function(widget, feature) { 5149 description: "This allows you to disable widgets for users who are already logged in. Works only if you are using wordpress to manage your users", 5150 image: 'https://www.yeloni.com/wp-content/uploads/2019/01/guest_only_addon.jpg', 5151 url: 'https://www.yeloni.com/product/hide-popup-logged-visitors/', 5152 wcId: '1632', 5153 enabled: false 5154 } 5155 } 5156 5157 this.limitByReferrer = function (widget, feature) { 5058 5158 feature.priority = 8; 5059 5159 return { … … 5063 5163 icon: "glyphicon glyphicon-globe", 5064 5164 upgrade: 'Segment by Source addon', 5065 description: 'This allows you to segment your audience based on the referring site. For example, you could show one widget to search traffic (from google) and another widget for social traffic (from facebook)' 5165 description: 'This allows you to segment your audience based on the referring site. For example, you could show one widget to search traffic (from google) and another widget for social traffic (from facebook)', 5166 image: 'https://www.yeloni.com/wp-content/uploads/2019/01/segment_by_source_addon.jpg', 5167 url: 'https://www.yeloni.com/product/show-hide-popup-based-referrer/', 5168 wcId: '1634', 5169 enabled: false 5066 5170 }; 5067 5171 } 5068 5172 5069 this.premiumSubscription = function (widget, feature) {5173 this.premiumSubscription = function (widget, feature) { 5070 5174 feature.priority = 9; 5071 5175 return { … … 5074 5178 ideal: "All the above for 10$/month", 5075 5179 icon: "glyphicon glyphicon-usd", 5076 upgrade: 'Get all the above Addons for 8$ a month (Most Popular)', 5077 description: 'In this plan you get all the above 8 addons at the same price of 2 addons. Its not a surprise that most of our users prefer this plan :)' 5180 upgrade: 'All Features Listed Below', 5181 description: 'In this plan you get all the above 8 addons at the same price of 2 addons. Its not a surprise that most of our users prefer this plan :)', 5182 image: 'https://www.yeloni.com/wp-content/uploads/2019/01/all_features.jpg', 5183 url: 'https://www.yeloni.com/product/all-in-one-subscription/', 5184 wcId: '1626', 5185 enabled: true 5078 5186 }; 5079 5187 } 5080 5188 5081 5189 }]) 5082 5083 5190 angular.module('yetienceApp') 5084 5191 .constant('configurationFields', { -
yeloni-free-exit-popup/trunk/admin-interface/src/platform_index.html
r2007742 r2026316 9 9 <div id="yetience-content" style="display:none"> 10 10 11 < div class="yel-newuser-menubar" ng-hide="onStartPage()" id="yel-newuser-menubar">11 <!-- <div class="yel-newuser-menubar" ng-hide="onStartPage()" id="yel-newuser-menubar" style="display:none"> 12 12 <div class="menubar-title"><a href="#" id="yel-menubar-title">{{R.Y.title}} </a></div> 13 <!--<div class="menubar-title" ng-hide="premiumText"><a href="#">{{R.Y.title}}</a></div>14 <div class="menubar-title" ng-hide="premiumText"><a href="#">{{R.Y.title}} ({{R.packages[S.package_id].name}})</a></div>-->15 13 16 14 <div class="menubar-right-contents"> 17 <!-- <div style="margin-right:100px" id="yel-basic-support"> 18 Got a Question? 19 </div> --> 20 <!-- <div style="margin-right:100px" id="yel-basic-support"> 21 Got a Question?   22 <a href="https://wordpress.org/support/plugin/yeloni-free-exit-popup" target="_blank" class="btn btn-primary btn-sm"> 23 Write to our Support Team <i class="glyphicon glyphicon-headphones"></i> 24 </a> 25 </div> --> 15 26 16 <div style="margin-right:100px;display:none" id="yel-premium-support"> 27 17 Got a question? Write to us on [email protected] … … 35 25 </div> 36 26 <div style="clear:both"></div> 37 </div> 27 </div> --> 38 28 39 29 <!--time bound offer yellow bar--> -
yeloni-free-exit-popup/trunk/yetience-plugin.php
r2018133 r2026316 4 4 Plugin URI: # 5 5 Description: Exit Popups are the best way to engage visitors leaving your website. Show offers, social buttons, email signup forms or customize it as you like. 6 Version: 8.1.96 Version: 9.0.0 7 7 Author: Jayasri Nagrale 8 8 Author URI: http://www.yeloni.com
Note: See TracChangeset
for help on using the changeset viewer.