446 lines
14 KiB
JavaScript
446 lines
14 KiB
JavaScript
$(function () {
|
|
$('[data-toggle="tooltip"]').tooltip({
|
|
container: 'body'
|
|
});
|
|
function youtube_parser(url) {
|
|
var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
|
|
var match = url.match(regExp);
|
|
return (match && match[7].length == 11) ? match[7] : false;
|
|
}
|
|
$('iframe').each(function (i, o) {
|
|
var $o = $(o);
|
|
if ($o.prop('src').search('youtube') != -1) {
|
|
if (!$o.parent().hasClass('embed-responsive')) {
|
|
$o.addClass('embed-responsive-item');
|
|
$o.wrapAll('<div class="embed-responsive embed-responsive-16by9" />');
|
|
var vid = youtube_parser($o.prop("src"));
|
|
if (vid) {
|
|
$o.addClass('hidden-print');
|
|
$o.parent().addClass('youtube-preview youtube-preview-print').append('<img class="embed-responsive-item visible-print" src="https://img.youtube.com/vi/' + vid + '/0.jpg" onerror="this.src=\"https:\/\/img.youtube.com\/vi\/' + vid + '\/maxresdefault.jpg\""/>');
|
|
$o.parent().append('<a class="youtube-play-icon" href="' + $o.prop("src") + '"><img class="visible-print" src="/assets/images/icon_youtube_play.png"/></a>');
|
|
}
|
|
}
|
|
}
|
|
});
|
|
$.fn.modal.Constructor.prototype.enforceFocus = function () {};
|
|
// var api = common.getAPI();
|
|
// var socket = io.connect(api);
|
|
// socket.on('getNotification', function (data) {
|
|
// if (data.user_id == parseInt($("input[name='current_user_id']").val())) {
|
|
// var number = parseInt($("#number_notif_1").html()) + 1;
|
|
// $("#number_notif_1").html(number).removeClass("hidden");
|
|
// $("#number_notif_2").html(number);
|
|
// var html = `<li {if style="background: #edf2fa;">
|
|
// <a href="` + data.url + `">
|
|
// <i class="fa fa-book text-aqua"></i> ` + data.content + `
|
|
// </a>
|
|
// </li>`;
|
|
// $("#notif_lists").prepend(html);
|
|
// notification.df(`<a href="` + data.url + `" style="text-decoration: none;">` + data.content + `</a>`, 30000, data.type);
|
|
// }
|
|
// });
|
|
});
|
|
$(document).on('focusin', function (e) {
|
|
if ($(e.target).closest(".mce-window").length) {
|
|
e.stopImmediatePropagation();
|
|
}
|
|
});
|
|
|
|
/**
|
|
* Các hàm sử dụng chung
|
|
*/
|
|
var common = {};
|
|
common.csrf = $('meta[name="csrf-token"]').attr("content");
|
|
common.csrfParam = $('meta[name="csrf-param"]').attr("content");
|
|
common.getAPI = function () {
|
|
var protocol = location.protocol;
|
|
var slashes = protocol.concat("//");
|
|
var host = slashes.concat(window.location.hostname);
|
|
return host + ":8002/";
|
|
};
|
|
common.sendNotification = function (data) {
|
|
var api = common.getAPI();
|
|
$.ajax({
|
|
url: api + "notification",
|
|
type: 'POST',
|
|
data: JSON.stringify(data),
|
|
contentType: 'application/json',
|
|
success: function (data) {
|
|
}
|
|
});
|
|
};
|
|
common.mark = function (e) {
|
|
$.ajax({
|
|
url: $(e).attr("data-href"),
|
|
type: 'POST',
|
|
success: function (data) {
|
|
$("#number_notif_2").html("0");
|
|
$("#number_notif_1").html("0").addClass("hidden");
|
|
}
|
|
});
|
|
};
|
|
common.modalOpen = function (data, lg, title) {
|
|
$("#myModalContent").html(data);
|
|
$("#myModalContent").attr("style", "");
|
|
if (lg) {
|
|
$(".modal-dialog").addClass("modal-lg");
|
|
} else {
|
|
$(".modal-dialog").removeClass("modal-lg");
|
|
}
|
|
if (!title) {
|
|
$("#modalHeader").addClass("hidden");
|
|
} else {
|
|
$("#modalHeader").removeClass("hidden");
|
|
$("#myModalLabel").html(title);
|
|
}
|
|
$("#myModalFooter").addClass("hidden");
|
|
$("#myModal").modal();
|
|
};
|
|
common.modalOpenFullScreen = function (data, title) {
|
|
$("input[name='ReLoadFullScreen']").val("false");
|
|
$("#myModalFullScreenContent").html(data);
|
|
if (title == false) {
|
|
$("#modalFullScreenHeader").addClass("hidden");
|
|
} else {
|
|
$("#modalFullScreenHeader").removeClass("hidden");
|
|
$("#myModalFullScreenLabel").html(title);
|
|
}
|
|
$("#myModalFullScreen").modal();
|
|
};
|
|
common.modalBlock = function (stt) {
|
|
if (stt) {
|
|
$("#blocking").modal({
|
|
keyboard: false,
|
|
backdrop: false
|
|
});
|
|
} else {
|
|
$("#blocking").modal("hide");
|
|
}
|
|
};
|
|
common.uploadBlock = function (stt) {
|
|
if (stt) {
|
|
$("#uploadBlock").modal({
|
|
keyboard: false,
|
|
backdrop: false
|
|
});
|
|
} else {
|
|
$("#uploadBlock").modal("hide");
|
|
}
|
|
};
|
|
common.modalAlert = function (text, cls, link) {
|
|
$("#alertModalContent").html(text);
|
|
$("#alertModalDialog").removeClass("modal-lg");
|
|
$("#alertModal").modal({
|
|
backdrop: 'static',
|
|
keyboard: false
|
|
});
|
|
switch (cls) {
|
|
case "success":
|
|
$("#alertModalHeader").attr("style", "background-color:#5cb85c;color:white;");
|
|
break;
|
|
case "danger":
|
|
$("#alertModalHeader").attr("style", "background-color:#d9534f;color:white;");
|
|
break;
|
|
case "info":
|
|
$("#alertModalHeader").attr("style", "background-color:#5bc0de;color:white;");
|
|
break;
|
|
case "warning":
|
|
$("#alertModalHeader").attr("style", "background-color:#f0ad4e;color:white;");
|
|
break;
|
|
}
|
|
if (link !== "") {
|
|
$('#alertModal').on('hide.bs.modal', function () {
|
|
window.location = link;
|
|
});
|
|
}
|
|
};
|
|
common.ajaxError = function () {
|
|
common.modalAlert("Có lỗi xảy ra, có thể do đường truyền mạng, xin vui lòng thử lại!", "danger", "");
|
|
};
|
|
common.btnUpload = function (mUrl, className, extension, fileSize) {
|
|
var fData = {
|
|
UploadFile: true,
|
|
Name: className
|
|
};
|
|
fData[common.csrfParam] = common.csrf;
|
|
new afuButton({
|
|
uploadURI: mUrl,
|
|
formData: fData,
|
|
wrap: {
|
|
tagName: 'div',
|
|
classes: ''
|
|
},
|
|
fileExtension: extension,
|
|
fileSizeLimit: fileSize,
|
|
classes: 'btn btn-default file-paperclip-' + className,
|
|
fakeInputContent: '<span class=\'fa fa-paperclip\'></span>',
|
|
onUploaded: function (data) {
|
|
common.uploadBlock(false);
|
|
if (data !== 'false') {
|
|
var r = JSON.parse(data);
|
|
if (r['link'] == 2) {
|
|
alert('Định dạng tệp tin không được hỗ trợ!\n Các loại tệp tin được hỗ trợ: ' + extension);
|
|
} else {
|
|
//alert("Tệp tin đã được tải lên thành công");
|
|
$("#fileUpload" + className).attr("href", r['link']);
|
|
$("#fileUpload" + className).html(r['name'] + " ");
|
|
$("input[name='fileUploadLink" + className + "']").val(r['link']);
|
|
}
|
|
} else {
|
|
alert('Có lỗi xảy ra, tải tệp tin không thành công!');
|
|
}
|
|
}
|
|
}).addInstance('file' + className);
|
|
$(".file-paperclip-" + className).closest("div").attr("style", "display:inline-block;");
|
|
};
|
|
common.btnUploadImage = function (mUrl, className, extension, fileSize) {
|
|
var fData = {
|
|
UploadImage: true,
|
|
Name: className
|
|
};
|
|
fData[common.csrfParam] = common.csrf;
|
|
new afuButton({
|
|
uploadURI: mUrl,
|
|
formData: fData,
|
|
wrap: {
|
|
tagName: 'div',
|
|
classes: ''
|
|
},
|
|
fileExtension: extension,
|
|
fileSizeLimit: fileSize,
|
|
classes: 'btn btn-primary btn-xs',
|
|
fakeInputContent: '<span class=\'fa fa-file-image-o\'></span> Chọn hình ảnh',
|
|
onUploaded: function (data) {
|
|
common.uploadBlock(false);
|
|
alert("Hình ảnh đã được tải lên thành công");
|
|
$("#HinhMinhHoa" + className).attr("src", "data/uploads" + data);
|
|
$("input[name='HinhMinhHoaLink" + className + "']").val(data);
|
|
$("input[name='updateStatus']").val("1");
|
|
}
|
|
}).addInstance('image' + className);
|
|
};
|
|
common.dateTimePicker = function (id) {
|
|
$('#' + id).datetimepicker({
|
|
locale: 'vi',
|
|
ignoreReadonly: true,
|
|
format: 'HH:mm DD/MM/YYYY',
|
|
sideBySide: true
|
|
});
|
|
};
|
|
common.dateTimePickerDay = function (id) {
|
|
$('#' + id).datetimepicker({
|
|
locale: 'vi',
|
|
ignoreReadonly: true,
|
|
format: 'DD/MM/YYYY'
|
|
});
|
|
};
|
|
common.dateTimePickerHour = function (id) {
|
|
$('#' + id).datetimepicker({
|
|
locale: 'vi',
|
|
ignoreReadonly: true,
|
|
format: 'HH:mm'
|
|
});
|
|
};
|
|
common.checkAll = function (id, cls) {
|
|
$('#' + id).on('ifChecked', function (event) {
|
|
$('.' + cls).iCheck('check');
|
|
});
|
|
$('#' + id).on('ifUnchecked', function (event) {
|
|
$('.' + cls).iCheck('uncheck');
|
|
});
|
|
$('#' + id).on('ifChanged', function (event) {
|
|
if (!this.changed) {
|
|
this.changed = true;
|
|
$('#' + id).iCheck('check');
|
|
} else {
|
|
this.changed = false;
|
|
$('#' + id).iCheck('uncheck');
|
|
}
|
|
$('#' + id).iCheck('update');
|
|
});
|
|
};
|
|
common.getUrlParameter = function (sParam) {
|
|
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
|
|
sURLVariables = sPageURL.split('&'),
|
|
sParameterName,
|
|
i;
|
|
for (i = 0; i < sURLVariables.length; i++) {
|
|
sParameterName = sURLVariables[i].split('=');
|
|
if (sParameterName[0] === sParam) {
|
|
return sParameterName[1] === undefined ? true : sParameterName[1];
|
|
}
|
|
}
|
|
};
|
|
common.error = function (id, text) {
|
|
$("#" + id).addClass("has-error").removeClass("has-success");
|
|
$("#" + id).find(".help-block").html(text).removeClass("hidden");
|
|
};
|
|
common.success = function (id) {
|
|
$("#" + id).addClass("has-success").removeClass("has-error");
|
|
$("#" + id).find(".help-block").addClass("hidden");
|
|
};
|
|
/**
|
|
* =========================
|
|
*/
|
|
|
|
/**
|
|
* Notification
|
|
*/
|
|
var notification = {
|
|
success: function (text, time) {
|
|
$.notify({
|
|
icon: "fa fa-check",
|
|
message: "<strong>" + text + "</strong>"
|
|
}, {
|
|
type: "success",
|
|
allow_dismiss: false,
|
|
showProgressbar: false,
|
|
z_index: 99999999,
|
|
placement: {
|
|
from: "bottom",
|
|
align: "left"
|
|
},
|
|
offset: 70,
|
|
delay: time,
|
|
animate: {
|
|
enter: 'animated fadeInDown',
|
|
exit: 'animated fadeOutUp'
|
|
},
|
|
});
|
|
},
|
|
danger: function (text, time) {
|
|
$.notify({
|
|
icon: "fa fa-remove",
|
|
message: "<strong>" + text + "</strong>"
|
|
}, {
|
|
type: "danger",
|
|
allow_dismiss: false,
|
|
showProgressbar: false,
|
|
z_index: 99999999,
|
|
placement: {
|
|
from: "bottom",
|
|
align: "left"
|
|
},
|
|
offset: 70,
|
|
delay: time,
|
|
animate: {
|
|
enter: 'animated fadeInDown',
|
|
exit: 'animated fadeOutUp'
|
|
},
|
|
});
|
|
},
|
|
warning: function (text, time) {
|
|
$.notify({
|
|
icon: "fa fa-question-circle",
|
|
message: "<strong>" + text + "</strong>"
|
|
}, {
|
|
type: "warning",
|
|
allow_dismiss: false,
|
|
showProgressbar: false,
|
|
z_index: 99999999,
|
|
placement: {
|
|
from: "bottom",
|
|
align: "left"
|
|
},
|
|
offset: 70,
|
|
delay: time,
|
|
animate: {
|
|
enter: 'animated fadeInDown',
|
|
exit: 'animated fadeOutUp'
|
|
},
|
|
});
|
|
},
|
|
info: function (text, time) {
|
|
$.notify({
|
|
icon: "fa fa-info-circle",
|
|
message: "<strong>" + text + "</strong>"
|
|
}, {
|
|
type: "info",
|
|
allow_dismiss: false,
|
|
showProgressbar: false,
|
|
z_index: 99999999,
|
|
placement: {
|
|
from: "bottom",
|
|
align: "right"
|
|
},
|
|
offset: 70,
|
|
delay: time,
|
|
animate: {
|
|
enter: 'animated fadeInDown',
|
|
exit: 'animated fadeOutUp'
|
|
},
|
|
});
|
|
},
|
|
df: function (text, time, type) {
|
|
$.notify({
|
|
icon: "fa fa-info-circle",
|
|
message: text
|
|
}, {
|
|
type: type,
|
|
allow_dismiss: false,
|
|
showProgressbar: false,
|
|
z_index: 99999999,
|
|
placement: {
|
|
from: "bottom",
|
|
align: "right"
|
|
},
|
|
offset: 70,
|
|
delay: time,
|
|
animate: {
|
|
enter: 'animated fadeInDown',
|
|
exit: 'animated fadeOutUp'
|
|
},
|
|
});
|
|
},
|
|
primary: function (text, time) {
|
|
$.notify({
|
|
icon: "fa fa-info-circle",
|
|
message: "<strong>" + text + "</strong>"
|
|
}, {
|
|
type: "primary",
|
|
allow_dismiss: false,
|
|
showProgressbar: false,
|
|
z_index: 99999999,
|
|
placement: {
|
|
from: "bottom",
|
|
align: "left"
|
|
},
|
|
offset: 70,
|
|
delay: time,
|
|
animate: {
|
|
enter: 'animated fadeInDown',
|
|
exit: 'animated fadeOutUp'
|
|
},
|
|
});
|
|
},
|
|
};
|
|
|
|
+function ($, document) {
|
|
//Fix scroll with modal multiple show
|
|
var stackModal = 0;
|
|
var orginBodyPad = '';
|
|
$(document).on('show.bs.modal', '.modal', function (event) {
|
|
// var zIndex = 1040 + (10 * $('.modal:visible').length);
|
|
// $(this).css('z-index', zIndex);
|
|
if (stackModal <= 0) {
|
|
orginBodyPad = document.body.style.paddingRight || '';
|
|
}
|
|
stackModal++;
|
|
setTimeout(function () {
|
|
$('.modal-backdrop').not('.modal-stack')
|
|
// .css('z-index', zIndex - 1)
|
|
.addClass('modal-stack');
|
|
}, 0);
|
|
$(this).appendTo(document.body);
|
|
});
|
|
$(document).on('hidden.bs.modal', '.modal', function (event) {
|
|
stackModal--;
|
|
if (stackModal > 0) {
|
|
$('body').addClass("modal-open");
|
|
} else {
|
|
$('body').removeClass("modal-open");
|
|
document.body.style.paddingRight = orginBodyPad;
|
|
orginBodyPad = '';
|
|
}
|
|
});
|
|
}(jQuery, document); |