riainvoice/assets/core/js/scripts.js
gandhimathi Bharathirajan c940cb1a2c all files
2017-09-11 14:38:03 +05:30

254 lines
8.1 KiB
JavaScript

"use strict";
// Insert text into textarea at Caret Position
function insert_at_caret(areaId, text) {
var txtarea = document.getElementById(areaId),
scrollPos = txtarea.scrollTop,
strPos = 0,
br = ((txtarea.selectionStart || txtarea.selectionStart === '0') ?
"ff" : (document.selection ? "ie" : false)),
range;
if (br === "ie") {
txtarea.focus();
range = document.selection.createRange();
range.moveStart('character', -txtarea.value.length);
strPos = range.text.length;
} else if (br === "ff") {
strPos = txtarea.selectionStart;
}
var front = (txtarea.value).substring(0, strPos),
back = (txtarea.value).substring(strPos, txtarea.value.length);
txtarea.value = front + text + back;
strPos = strPos + text.length;
if (br === "ie") {
txtarea.focus();
range = document.selection.createRange();
range.moveStart('character', -txtarea.value.length);
range.moveStart('character', strPos);
range.moveEnd('character', 0);
range.select();
} else if (br === "ff") {
txtarea.selectionStart = strPos;
txtarea.selectionEnd = strPos;
txtarea.focus();
}
txtarea.scrollTop = scrollPos;
}
// takes mdl_email_template row as JSON, array with names to use in form fields.
function inject_email_template(template_fields, email_template) {
$.each(email_template, function (key, val) {
// remove prefix from key
key = key.replace("email_template_", "");
// if key is in template_fields, apply value to form field
if (val && template_fields.indexOf(key) > -1) {
if (key === 'body') {
$("#" + key).html(val);
} else {
$("#" + key).val(val);
}
}
});
}
function update_email_template_preview() {
$('#email-template-preview').contents().find("body").html($('.email-template-body').val());
}
// Insert HTML tags into textarea
function insert_html_tag(tag_type, destination_id) {
var text, sel, text_area, selectedText, startPos, endPos, replace, replaceText, len;
switch (tag_type) {
case 'text-bold':
text = ['<b>', '</b>'];
break;
case 'text-italic':
text = ['<em>', '</em>'];
break;
case 'text-paragraph':
text = ['<p>', '</p>'];
break;
case 'text-h1':
text = ['<h1>', '</h1>'];
break;
case 'text-h2':
text = ['<h2>', '</h2>'];
break;
case 'text-h3':
text = ['<h3>', '</h3>'];
break;
case 'text-h4':
text = ['<h4>', '</h4>'];
break;
case 'text-code':
text = ['<code>', '</code>'];
break;
case 'text-hr':
text = ['<hr/>', ''];
break;
case 'text-css':
text = ['<style></style>', ''];
break;
}
// Get the selected text
text_area = document.getElementById(destination_id);
if (document.selection !== undefined) {
text_area.focus();
sel = document.selection.createRange();
selectedText = sel.text;
}
else if (text_area.selectionStart !== '') {
startPos = text_area.selectionStart;
endPos = text_area.selectionEnd;
selectedText = text_area.value.substring(startPos, endPos);
}
// Check if <style> should be added
if (tag_type === 'text-css') {
replace = text[0] + '\n\r' + text_area.value;
$(text_area).val(replace);
update_email_template_preview();
return true;
}
// Check if there is only one HTML tag
if (text[1].length === 0) {
insert_at_caret(destination_id, text[0]);
update_email_template_preview();
return true;
}
// Check if text is selected, replace it or just insert the tag at cursor position
if (!selectedText || !selectedText.length) {
text = text[0] + text[1];
insert_at_caret(destination_id, text);
update_email_template_preview();
} else {
replaceText = text[0] + selectedText + text[1];
len = text_area.value.length;
replace = text_area.value.substring(0, startPos) + replaceText + text_area.value.substring(endPos, len);
$(text_area).val(replace);
update_email_template_preview();
}
}
$(document).ready(function () {
// Automatical CSRF protection for all POST requests
$.ajaxPrefilter(function (options) {
if (options.type === 'post' || options.type === 'POST' || options.type === 'Post') {
if (options.data === '') {
options.data += '?_ip_csrf=' + Cookies.get('ip_csrf_cookie');
} else {
options.data += '&_ip_csrf=' + Cookies.get('ip_csrf_cookie');
}
}
});
$(document).ajaxComplete(function () {
$('[name="_ip_csrf"]').val(Cookies.get('ip_csrf_cookie'));
});
// Correct the height of the content area
var $content = $('#content'),
$html = $('html');
var documentHeight = $html.outerHeight(),
navbarHeight = $('.navbar').outerHeight(),
headerbarHeight = $('#headerbar').outerHeight(),
submenuHeight = $('#submenu').outerHeight(),
contentHeight = documentHeight - navbarHeight - headerbarHeight - submenuHeight;
if ($content.outerHeight() < contentHeight) {
$content.outerHeight(contentHeight);
}
// Dropdown Datepicker fix
$html.click(function () {
$('.dropdown-menu:visible').not('.datepicker').removeAttr('style');
});
// Tooltips
$('[data-toggle="tooltip"]').tooltip();
// Select2 for all select inputs
$('.simple-select').select2();
// Enable clipboard toggles
var clipboards = new Clipboard('.to-clipboard');
// Keep track of the last "taggable" input/textarea
$('.taggable').on('focus', function () {
window.lastTaggableClicked = this;
});
// Template Tag handling
$('.tag-select').select2().on('change', function (event) {
var select = $(event.currentTarget);
// Add the tag to the field
if (typeof window.lastTaggableClicked !== 'undefined') {
insert_at_caret(window.lastTaggableClicked.id, select.val());
}
// Reset the select and exit
select.val([]);
return false;
});
// HTML tags to email templates textarea
$('.html-tag').click(function () {
var tag_type = $(this).data('tagType');
var body_id = $('.email-template-body').attr('id');
insert_html_tag(tag_type, body_id);
});
// Email Template Preview handling
var email_template_body_id = $('.email-template-body').attr('id');
if ($('#email_template_preview').empty()) {
update_email_template_preview();
}
$(email_template_body_id).bind('input propertychange', function () {
update_email_template_preview();
});
$('#email-template-preview-reload').click(function () {
update_email_template_preview();
});
// Fullpage loader
$(document).on('click', '.ajax-loader', function () {
$('#fullpage-loader').fadeIn(200);
window.fullpageloaderTimeout = window.setTimeout(function () {
$('#loader-error').fadeIn(200);
$('#loader-icon').removeClass('fa-spin').addClass('text-danger');
}, 10000);
});
$(document).on('click', '.fullpage-loader-close', function () {
$('#fullpage-loader').fadeOut(200);
$('#loader-error').hide();
$('#loader-icon').addClass('fa-spin').removeClass('text-danger');
clearTimeout(window.fullpageloaderTimeout);
});
var password_input = $('.passwordmeter-input');
if (password_input) {
password_input.on('input', function(){
var strength = zxcvbn(password_input.val());
$('.passmeter-2, .passmeter-3').hide();
if (strength.score === 4) {
$('.passmeter-2, .passmeter-3').show();
} else if (strength.score === 3) {
$('.passmeter-2').show();
}
});
}
});