joinpeertube/themes/hugo-bootstrap-premium/static/js/popover/popover_old.js
2018-02-28 16:33:36 +01:00

239 lines
6.9 KiB
JavaScript

angular.module("myapp", ['angular-storage','ismobile','angularModalService'])
.config(
['$httpProvider', '$locationProvider',
function ($httpProvider, $locationProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
// use the HTML5 History API
//$locationProvider.html5Mode(true);
/*$locationProvider.html5Mode({
enabled: true,
requireBase: false
});*/
}])
.service('toggleServices', function () {
// this is to avoid the popover from showing again when it's already triggered.
this.Data = {
showSettings: true
};
this.getAll = function () {
return this.Data;
};
this.setSettings = function (val) {
this.Data.showSettings = val;
};
})
.controller("MyController", function($scope, $timeout, toggleServices, store, isMobile, ModalService, $location) {
var modalSize = MODAL_SIZE;
var cookieName = COOKIE_NAME;
var absLangURL = $location.absLangURL();
if (isMobile.phone) {
modalSize = "lg"; // large modal for phones!
}
var getCookie = store.get(cookieName);
function parseURL(url) {
var parser = document.createElement('a'),
searchObject = {},
queries, split, i;
// Let the browser do the work
parser.href = url;
// Convert query string to object
queries = parser.search.replace(/^\?/, '').split('&');
for( i = 0; i < queries.length; i++ ) {
split = queries[i].split('=');
searchObject[split[0]] = split[1];
}
return {
protocol: parser.protocol,
host: parser.host,
hostname: parser.hostname,
port: parser.port,
pathname: parser.pathname,
search: parser.search,
searchObject: searchObject,
hash: parser.hash
};
};
var pathobj = parseURL(absLangURL);
var thepath = pathobj.pathname.split('/');
// Get initial value
$scope.Data = toggleServices.getAll();
// Open settings menu
$scope.isOpen = function () {
toggleServices.setSettings(false);
};
// Close settings menu
$scope.isClosed = function () {
toggleServices.setSettings(true);
};
var timeoutTrigger = SHOW_MODAL_TIMEOUT;
var mouseLeave = MOUSE_LEAVE;
var templateurl = "/modal/popover.html";
function isFromBiggerThanTo(dtmfrom, dtmto){
return dtmfrom >= dtmto;
};
var rightnow = new Date();
var isitpreview = thepath[1];
if(isitpreview.indexOf('preview') > -1) {
templateurl = '/' + thepath[1] + '/' + thepath[2] + '/modal/' + 'popover.html';
};
$scope.open = function(size) {
// Just provide a template url, a controller and call 'showModal'.
ModalService.showModal({
templateUrl: templateurl,
controller: "ModalInstanceCtrl",
inputs: {
modalSize: modalSize
}
}).then(function(modal) {
modal.element.modal();
});
};
if(getCookie){
if (isFromBiggerThanTo(rightnow.getTime(), getCookie.date) && getCookie.subscribed == false){
if(ENABLE_POPOVER){
if ($scope.Data.showSettings){
$timeout(function () {
$scope.open(modalSize);
$scope.isOpen();
}, timeoutTrigger);
};
$scope.MouseLeave = function ($event) {
$scope.isOpen();
if (mouseLeave){
if ($scope.Data.showSettings == true){
$scope.open(modalSize);
};
};
};
};
}
} else {
if(ENABLE_POPOVER){
if ($scope.Data.showSettings){
$timeout(function () {
$scope.isOpen();
$timeout(function () {
$scope.open(modalSize);
}, 1000);
}, timeoutTrigger);
};
$scope.MouseLeave = function ($event) {
$scope.isOpen();
if (mouseLeave){
if ($scope.Data.showSettings == true){
$timeout(function () {
$scope.open(modalSize);
}, 1000);
};
};
};
};
};
})
.controller('ModalInstanceCtrl', function ($scope, $http, $timeout, toggleServices, store, isMobile, $element, modalSize, close) {
$scope.Data = toggleServices.getAll();
$scope.expireCookie = EXPIRE_COOKIE;
$scope.signupheader = SIGNUP_HEADER;
$scope.signuptext = SIGNUP_TEXT;
$scope.inputplaceholder = INPUT_PLACEHOLDER;
$scope.submitbutton = SUBMIT_BUTTON;
$scope.headerimage = HEADER_IMAGE;
$scope.imgdescription = IMG_DESCRIPTION;
$scope.result = "";
$scope.isPhone = false;
$scope.modalSize = modalSize;
$scope.optin = OPTIN;
var cookieName = COOKIE_NAME;
if (isMobile.phone) {
$scope.isPhone = true;
}
// Open settings menu
$scope.isOpen = function () {
toggleServices.setSettings(true);
};
// Close settings menu
$scope.isClosed = function () {
toggleServices.setSettings(false);
};
$scope.isOpen();
$scope.myForm = {};
$scope.myForm.Email = "";
Date.prototype.addDays = function(days) {
this.setDate(this.getDate() + parseInt(days));
return this;
};
var currentDate = new Date();
// add days to current date
currentDate.addDays($scope.expireCookie);
var cookieObj = {};
$scope.myForm.getFormFieldCssClass = function(ngModelController) {
if(ngModelController.$pristine) return "";
return ngModelController.$valid ? "fieldValid" : "fieldInvalid";
}
$scope.ok = function () {
// post
if($scope.formNg.$valid){
var config = {
method: 'POST',
url: POST_URL,
headers: {
'Content-Type': undefined
},
data: {
Email: $scope.myForm.Email,
Optin: $scope.optin
},
};
var responsePromise = $http(config);
responsePromise.success(function(data, status, headers, config) {
$scope.SuccessMessage = SUCCESS_MESSAGE;
$timeout(function () {
$scope.SuccessMessage = "";
$scope.isOpen = false;
$scope.close();
}, 2000);
});
responsePromise.error(function(data, status, headers, config) {
$timeout(function () {
$scope.ErrorMessage = ERROR_MESSAGE;
$scope.isOpen = false;
$scope.close();
}, 3000);
});
}
// end post
};
$scope.close = function() {
$element.modal('hide');
cookieObj = {
date: currentDate.getTime(),
subscribed: true
};
store.set(cookieName, cookieObj);
close(null, 500);
};
$scope.cancel = function() {
cookieObj = {
date: currentDate.getTime(),
subscribed: false
};
store.set(cookieName, cookieObj);
$scope.isOpen = false;
$element.modal('hide');
close(null, 500);
};
});