shell bypass 403
/*=========================================================================================
File Name: app-todo.js
Description: app-todo
----------------------------------------------------------------------------------------
Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template
Author: PIXINVENT
Author URL: http://www.themeforest.net/user/pixinvent
==========================================================================================*/
'use strict';
$(function () {
var taskTitle,
flatPickr = $('.task-due-date'),
newTaskModal = $('.sidebar-todo-modal'),
newTaskForm = $('#form-modal-todo'),
favoriteStar = $('.todo-item-favorite'),
modalTitle = $('.modal-title'),
addBtn = $('.add-todo-item'),
addTaskBtn = $('.add-task button'),
updateTodoItem = $('.update-todo-item'),
updateBtns = $('.update-btn'),
taskDesc = $('#task-desc'),
taskAssignSelect = $('#task-assigned'),
taskTag = $('#task-tag'),
overlay = $('.body-content-overlay'),
menuToggle = $('.menu-toggle'),
sidebarToggle = $('.sidebar-toggle'),
sidebarLeft = $('.sidebar-left'),
sidebarMenuList = $('.sidebar-menu-list'),
todoFilter = $('#todo-search'),
sortAsc = $('.sort-asc'),
sortDesc = $('.sort-desc'),
todoTaskList = $('.todo-task-list'),
todoTaskListWrapper = $('.todo-task-list-wrapper'),
listItemFilter = $('.list-group-filters'),
noResults = $('.no-results'),
checkboxId = 100,
isRtl = $('html').attr('data-textdirection') === 'rtl';
var assetPath = '../../../app-assets/';
if ($('body').attr('data-framework') === 'laravel') {
assetPath = $('body').attr('data-asset-path');
}
// if it is not touch device
if (!$.app.menu.is_touch_device()) {
if (sidebarMenuList.length > 0) {
var sidebarListScrollbar = new PerfectScrollbar(sidebarMenuList[0], {
theme: 'dark'
});
}
if (todoTaskListWrapper.length > 0) {
var taskListScrollbar = new PerfectScrollbar(todoTaskListWrapper[0], {
theme: 'dark'
});
}
}
// if it is a touch device
else {
sidebarMenuList.css('overflow', 'scroll');
todoTaskListWrapper.css('overflow', 'scroll');
}
// Add class active on click of sidebar filters list
if (listItemFilter.length) {
listItemFilter.find('a').on('click', function () {
if (listItemFilter.find('a').hasClass('active')) {
listItemFilter.find('a').removeClass('active');
}
$(this).addClass('active');
});
}
// Init D'n'D
var dndContainer = document.getElementById('todo-task-list');
if (typeof dndContainer !== undefined && dndContainer !== null) {
dragula([dndContainer], {
moves: function (el, container, handle) {
return handle.classList.contains('drag-icon');
}
});
}
// Main menu toggle should hide app menu
if (menuToggle.length) {
menuToggle.on('click', function (e) {
sidebarLeft.removeClass('show');
overlay.removeClass('show');
});
}
// Todo sidebar toggle
if (sidebarToggle.length) {
sidebarToggle.on('click', function (e) {
e.stopPropagation();
sidebarLeft.toggleClass('show');
overlay.addClass('show');
});
}
// On Overlay Click
if (overlay.length) {
overlay.on('click', function (e) {
sidebarLeft.removeClass('show');
overlay.removeClass('show');
$(newTaskModal).modal('hide');
});
}
// Assign task
function assignTask(option) {
if (!option.id) {
return option.text;
}
var $person =
'<div class="d-flex align-items-center">' +
'<img class="d-block rounded-circle me-50" src="' +
$(option.element).data('img') +
'" height="26" width="26" alt="' +
option.text +
'">' +
'<p class="mb-0">' +
option.text +
'</p></div>';
return $person;
}
// Task Assign Select2
if (taskAssignSelect.length) {
taskAssignSelect.wrap('<div class="position-relative"></div>');
taskAssignSelect.select2({
placeholder: 'Unassigned',
dropdownParent: taskAssignSelect.parent(),
templateResult: assignTask,
templateSelection: assignTask,
escapeMarkup: function (es) {
return es;
}
});
}
// Task Tags
if (taskTag.length) {
taskTag.wrap('<div class="position-relative"></div>');
taskTag.select2({
placeholder: 'Select tag'
});
}
// Favorite star click
if (favoriteStar.length) {
$(favoriteStar).on('click', function () {
$(this).toggleClass('text-warning');
});
}
// Flat Picker
if (flatPickr.length) {
flatPickr.flatpickr({
dateFormat: 'Y-m-d',
defaultDate: 'today',
onReady: function (selectedDates, dateStr, instance) {
if (instance.isMobile) {
$(instance.mobileInput).attr('step', null);
}
}
});
}
// Todo Description Editor
if (taskDesc.length) {
var todoDescEditor = new Quill('#task-desc', {
bounds: '#task-desc',
modules: {
formula: true,
syntax: true,
toolbar: '.desc-toolbar'
},
placeholder: 'Write Your Description',
theme: 'snow'
});
}
// On add new item button click, clear sidebar-right field fields
if (addTaskBtn.length) {
addTaskBtn.on('click', function (e) {
addBtn.removeClass('d-none');
updateBtns.addClass('d-none');
modalTitle.text('Add Task');
// newTaskModal.modal('show');
sidebarLeft.removeClass('show');
overlay.removeClass('show');
newTaskModal.find('.new-todo-item-title').val('');
var quill_editor = taskDesc.find('.ql-editor');
quill_editor[0].innerHTML = '';
});
}
// Add New ToDo List Item
// To add new todo form
if (newTaskForm.length) {
newTaskForm.validate({
ignore: '.ql-container *', // ? ignoring quill editor icon click, that was creating console error
rules: {
todoTitleAdd: {
required: true
},
'task-assigned': {
required: true
},
'task-due-date': {
required: true
}
}
});
newTaskForm.on('submit', function (e) {
e.preventDefault();
var isValid = newTaskForm.valid();
if (isValid) {
checkboxId++;
var assignedTo = $('#task-assigned').val(),
todoBadge = '',
membersImg = {
'Phill Buffer': assetPath + 'images/portrait/small/avatar-s-3.jpg',
'Chandler Bing': assetPath + 'images/portrait/small/avatar-s-1.jpg',
'Ross Geller': assetPath + 'images/portrait/small/avatar-s-4.jpg',
'Monica Geller': assetPath + 'images/portrait/small/avatar-s-6.jpg',
'Joey Tribbiani': assetPath + 'images/portrait/small/avatar-s-2.jpg',
'Rachel Green': assetPath + 'images/portrait/small/avatar-s-11.jpg'
};
var todoTitle = $('.sidebar-todo-modal .new-todo-item-title').val();
var date = $('.sidebar-todo-modal .task-due-date').val(),
selectedDate = new Date(date),
month = new Intl.DateTimeFormat('en', { month: 'short' }).format(selectedDate),
day = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(selectedDate),
todoDate = month + ' ' + day;
// Badge calculation loop
var selected = $('.task-tag').val();
var badgeColor = {
Team: 'primary',
Low: 'success',
Medium: 'warning',
High: 'danger',
Update: 'info'
};
$.each(selected, function (index, value) {
todoBadge +=
'<span class="badge rounded-pill badge-light-' + badgeColor[value] + ' me-50">' + value + '</span>';
});
// HTML Output
if (todoTitle != '') {
$(todoTaskList).prepend(
'<li class="todo-item">' +
'<div class="todo-title-wrapper">' +
'<div class="todo-title-area">' +
feather.icons['more-vertical'].toSvg({ class: 'drag-icon' }) +
'<div class="title-wrapper">' +
'<div class="form-check">' +
'<input type="checkbox" class="form-check-input" id="customCheck' +
checkboxId +
'" />' +
'<label class="form-check-label" for="customCheck' +
checkboxId +
'"></label>' +
'</div>' +
'<span class="todo-title">' +
todoTitle +
'</span>' +
'</div>' +
'</div>' +
'<div class="todo-item-action">' +
'<span class="badge-wrapper me-1">' +
todoBadge +
'</span>' +
'<small class="text-nowrap text-muted me-1">' +
todoDate +
'</small>' +
'<div class="avatar">' +
'<img src="' +
membersImg[assignedTo] +
'" alt="' +
assignedTo +
'" height="28" width="28">' +
'</div>' +
'</div>' +
'</div>' +
'</li>'
);
}
toastr['success']('Data Saved', '💾 Task Action!', {
closeButton: true,
tapToDismiss: false,
rtl: isRtl
});
$(newTaskModal).modal('hide');
overlay.removeClass('show');
}
});
}
// Task checkbox change
todoTaskListWrapper.on('change', '.form-check', function (event) {
var $this = $(this).find('input');
if ($this.prop('checked')) {
$this.closest('.todo-item').addClass('completed');
toastr['success']('Task Completed', 'Congratulations!! 🎉', {
closeButton: true,
tapToDismiss: false,
rtl: isRtl
});
} else {
$this.closest('.todo-item').removeClass('completed');
}
});
todoTaskListWrapper.on('click', '.form-check', function (event) {
event.stopPropagation();
});
// To open todo list item modal on click of item
$(document).on('click', '.todo-task-list-wrapper .todo-item', function (e) {
newTaskModal.modal('show');
addBtn.addClass('d-none');
updateBtns.removeClass('d-none');
if ($(this).hasClass('completed')) {
modalTitle.html(
'<button type="button" class="btn btn-sm btn-outline-success complete-todo-item waves-effect waves-float waves-light" data-bs-dismiss="modal">Completed</button>'
);
} else {
modalTitle.html(
'<button type="button" class="btn btn-sm btn-outline-secondary complete-todo-item waves-effect waves-float waves-light" data-bs-dismiss="modal">Mark Complete</button>'
);
}
taskTag.val('').trigger('change');
var quill_editor = $('#task-desc .ql-editor'); // ? Dummy data as not connected with API or anything else
quill_editor[0].innerHTML =
'Chocolate cake topping bonbon jujubes donut sweet wafer. Marzipan gingerbread powder brownie bear claw. Chocolate bonbon sesame snaps jelly caramels oat cake.';
taskTitle = $(this).find('.todo-title');
var $title = $(this).find('.todo-title').html();
// apply all variable values to fields
newTaskForm.find('.new-todo-item-title').val($title);
});
// Updating Data Values to Fields
if (updateTodoItem.length) {
updateTodoItem.on('click', function (e) {
var isValid = newTaskForm.valid();
e.preventDefault();
if (isValid) {
var $edit_title = newTaskForm.find('.new-todo-item-title').val();
$(taskTitle).text($edit_title);
toastr['success']('Data Saved', '💾 Task Action!', {
closeButton: true,
tapToDismiss: false,
rtl: isRtl
});
$(newTaskModal).modal('hide');
}
});
}
// Sort Ascending
if (sortAsc.length) {
sortAsc.on('click', function () {
todoTaskListWrapper
.find('li')
.sort(function (a, b) {
return $(b).find('.todo-title').text().toUpperCase() < $(a).find('.todo-title').text().toUpperCase() ? 1 : -1;
})
.appendTo(todoTaskList);
});
}
// Sort Descending
if (sortDesc.length) {
sortDesc.on('click', function () {
todoTaskListWrapper
.find('li')
.sort(function (a, b) {
return $(b).find('.todo-title').text().toUpperCase() > $(a).find('.todo-title').text().toUpperCase() ? 1 : -1;
})
.appendTo(todoTaskList);
});
}
// Filter task
if (todoFilter.length) {
todoFilter.on('keyup', function () {
var value = $(this).val().toLowerCase();
if (value !== '') {
$('.todo-item').filter(function () {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);
});
var tbl_row = $('.todo-item:visible').length; //here tbl_test is table name
//Check if table has row or not
if (tbl_row == 0) {
if (!$(noResults).hasClass('show')) {
$(noResults).addClass('show');
}
} else {
$(noResults).removeClass('show');
}
} else {
// If filter box is empty
$('.todo-item').show();
if ($(noResults).hasClass('show')) {
$(noResults).removeClass('show');
}
}
});
}
// For chat sidebar on small screen
if ($(window).width() > 992) {
if (overlay.hasClass('show')) {
overlay.removeClass('show');
}
}
});
$(window).on('resize', function () {
// remove show classes from sidebar and overlay if size is > 992
if ($(window).width() > 992) {
if ($('.body-content-overlay').hasClass('show')) {
$('.sidebar-left').removeClass('show');
$('.body-content-overlay').removeClass('show');
$('.sidebar-todo-modal').modal('hide');
}
}
});