Change layout (experimental)

This commit is contained in:
Frédéric Guillot
2014-11-02 15:06:41 -05:00
parent 8fe5df39d9
commit 37332ae222
75 changed files with 2616 additions and 744 deletions

42
assets/css/activity.css Normal file
View File

@@ -0,0 +1,42 @@
/* activity */
.activity-event {
margin-bottom: 20px;
}
.activity-datetime {
color: #999;
font-size: 0.85em;
}
.activity-content {
margin-top: 10px;
margin-left: 20px;
padding-left: 20px;
border-left: 2px solid #666;
}
.activity-title {
font-weight: bold;
color: #000;
}
.activity-description {
font-size: 0.9em;
color: #aaa;
padding-top: 5px;
}
.activity-description ul {
margin-top: 10px;
}
.activity-description li {
margin-left: 40px;
list-style-type: circle;
color: #555;
}
.activity-description .markdown {
margin-top: 10px;
color: #555;
}

79
assets/css/alert.css Normal file
View File

@@ -0,0 +1,79 @@
/* alerts */
.alert {
padding: 8px 35px 8px 14px;
margin-bottom: 20px;
color: #c09853;
background-color: #fcf8e3;
border: 1px solid #fbeed5;
border-radius: 4px;
}
.alert-success {
color: #468847;
background-color: #dff0d8;
border-color: #d6e9c6;
}
.alert-error {
color: #b94a48;
background-color: #f2dede;
border-color: #eed3d7;
}
.alert-info {
color: #3a87ad;
background-color: #d9edf7;
border-color: #bce8f1;
}
.alert-normal {
color: #333;
background-color: #f0f0f0;
border-color: #ddd;
}
.alert ul {
margin-top: 10px;
margin-bottom: 10px;
}
.alert li {
margin-left: 25px;
}
/* fade out animation */
.alert-fade-out {
animation: fadeOut 1s forwards;
-webkit-animation: fadeOut 1s forwards;
animation-delay: 7s;
-webkit-animation-delay: 7s;
cursor: pointer;
}
@-webkit-keyframes fadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
margin: 0;
padding: 0;
height: 0;
}
}
@keyframes fadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
margin: 0;
padding: 0;
height: 0;
}
}
.page .alert {
margin-top: 10px;
}

File diff suppressed because one or more lines are too long

34
assets/css/base.css Normal file
View File

@@ -0,0 +1,34 @@
/* reset */
li,
ul,
ol,
table,
tr,
td,
th,
p,
blockquote,
body {
margin: 0;
padding: 0;
font-size: 100%;
}
body {
margin-left: 10px;
margin-right: 10px;
color: #333;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
ul.no-bullet li {
list-style-type: none;
margin-left: 0;
}
.pull-right {
text-align: right;
}

62
assets/css/board.css Normal file
View File

@@ -0,0 +1,62 @@
/* board filters */
a.filter-on {
font-weight: bold;
color: #333;
}
/* public board */
.public-board {
margin-top: 5px;
}
.public-task {
max-width: 700px;
margin: 0 auto;
margin-top: 5px;
}
/* board table */
#board {
table-layout: fixed;
}
#board th a {
text-decoration: none;
color: #3366CC;
font-size: 150%;
}
#board td {
vertical-align: top;
}
#board td.task-limit-warning {
background-color: #DF5353;
}
.board-add-icon {
float: left;
padding: 0 5px;
}
.board-add-icon a {
line-height: 70%;
}
.task-count {
color: #999;
font-weight: normal;
}
/* drag and drop */
.draggable-item {
cursor: pointer;
user-select: none;
}
.draggable-placeholder {
border: 2px dashed #000;
background: #fafafa;
height: 70px;
margin-bottom: 10px;
}

54
assets/css/button.css Normal file
View File

@@ -0,0 +1,54 @@
/* buttons */
.btn {
-webkit-appearance: none;
appearance: none;
display: inline-block;
color: #333;
border: 1px solid #ccc;
background: #efefef;
padding: 5px;
padding-left: 15px;
padding-right: 15px;
font-size: 0.9em;
cursor: pointer;
border-radius: 2px;
}
a.btn {
text-decoration: none;
font-weight: bold;
}
.btn-small {
padding: 2px;
padding-left: 5px;
padding-right: 5px;
}
.btn-red {
border-color: #b0281a;;
background: #d14836;
color: #fff;
}
a.btn-red:hover,
.btn-red:hover,
.btn-red:focus {
color: #fff;
background: #c53727;
}
a.btn-blue,
.btn-blue {
border-color: #3079ed;
background: #4d90fe;
color: #fff;
}
a.btn-blue:hover,
.btn-blue:hover,
a.btn-blue:focus,
.btn-blue:focus {
border-color: #2f5bb7;
background: #357ae8;
}

67
assets/css/comment.css Normal file
View File

@@ -0,0 +1,67 @@
/* comments */
.comment {
margin-bottom: 20px;
}
.comment:hover {
background: #F7F8E0;
}
.comment-inner {
border-left: 4px solid #333;
padding-bottom: 10px;
padding-left: 20px;
margin-left: 20px;
margin-right: 10px;
}
.comment-preview {
border: 2px solid #000;
border-radius: 3px;
padding: 10px;
}
.comment-preview .comment-inner {
border: none;
padding: 0;
margin: 0;
}
.comment-title {
margin-bottom: 8px;
padding-bottom: 3px;
border-bottom: 1px dotted #aaa;
}
.comment-actions {
font-size: 0.8em;
padding: 0;
text-align: right;
}
.comment-actions li {
display: inline;
padding-left: 5px;
padding-right: 5px;
border-right: 1px dotted #000;
}
.comment-actions li:last-child {
padding-right: 0;
border: 0;
}
.comment-username {
font-weight: bold;
}
.comment-textarea {
height: 200px;
width: 80%;
max-width: 800px;
}
#comments .comment-textarea {
height: 80px;
width: 500px;
}

5
assets/css/confirm.css Normal file
View File

@@ -0,0 +1,5 @@
/* confirmation box */
.confirm {
max-width: 700px;
font-size: 1.1em;
}

15
assets/css/dashboard.css Normal file
View File

@@ -0,0 +1,15 @@
/* dashboard */
#dashboard table {
font-size: 0.95em;
}
.dashboard-left-column {
width: 55%;
float: left;
}
.dashboard-right-column {
margin-left: 5%;
width: 40%;
float: left;
}

166
assets/css/form.css Normal file
View File

@@ -0,0 +1,166 @@
/* forms */
form {
padding: 10px;
margin-bottom: 20px;
background: #fefefe;
border: 1px solid #ddd;
border-radius: 5px;
}
label {
cursor: pointer;
display: block;
margin-top: 10px;
}
input[type="number"],
input[type="date"],
input[type="email"],
input[type="tel"],
input[type="password"],
input[type="text"] {
color: #888;
border: 1px solid #ccc;
width: 400px;
max-width: 95%;
font-size: 1.0em;
height: 25px;
padding-bottom: 0;
font-family: sans-serif;
margin-top: 5px;
-webkit-appearance: none;
appearance: none;
}
input[type="number"]:focus,
input[type="date"]:focus,
input[type="email"]:focus,
input[type="tel"]:focus,
input[type="password"]:focus,
input[type="text"]:focus,
textarea:focus {
color: #000;
border-color: rgba(82, 168, 236, 0.8);
outline: 0;
box-shadow: 0 0 8px rgba(82, 168, 236, 0.6);
}
input.form-numeric,
input[type="number"] {
width: 70px;
}
textarea {
border: 1px solid #ccc;
width: 400px;
max-width: 95%;
height: 200px;
font-size: 1.0em;
font-family: sans-serif;
}
select {
max-width: 95%;
}
::-webkit-input-placeholder {
color: #ddd;
padding-top: 2px;
}
::-ms-input-placeholder {
color: #ddd;
padding-top: 2px;
}
::-moz-placeholder {
color: #ddd;
padding-top: 2px;
}
.form-actions {
clear: both;
margin-top: 20px;
}
input.form-error,
textarea.form-error {
border: 2px solid #b94a48;
}
.form-required {
color: red;
padding-left: 5px;
font-weight: bold;
}
.form-errors {
color: #b94a48;
list-style-type: none;
}
ul.form-errors li {
margin-left: 0;
}
.form-help {
font-size: 0.8em;
color: brown;
margin-bottom: 15px;
}
.form-inline {
padding: 0;
margin: 0;
border: none;
}
.form-inline label {
display: inline;
}
.form-inline input,
.form-inline select {
margin: 0;
margin-right: 15px;
}
input.form-date {
width: 150px;
}
.form-row {
margin-top: 10px;
margin-bottom: 20px;
}
.form-column {
float: left;
margin-bottom: 60px;
padding-right: 30px;
padding-left: 30px;
}
.form-column:first-child {
padding-left: 0;
}
.form-column ul {
margin-top: 15px;
}
.form-login {
width: 470px;
padding: 10px;
margin: 3% auto 20% auto;
}
.form-column li,
.form-login li {
margin-left: 25px;
line-height: 25px;
}
.form-checkbox-group label {
display: inline;
}

85
assets/css/header.css Normal file
View File

@@ -0,0 +1,85 @@
/* header */
header {
margin-top: 10px;
padding-bottom: 15px;
clear: both;
border-bottom: 1px solid #dedede;
}
header h1 {
margin: 0;
padding: 0;
float: left;
}
header ul {
text-align: right;
font-size: 0.9em;
}
header li {
display: inline;
padding-left: 30px;
}
header a {
color: #777;
text-decoration: none;
}
nav .active a {
color: #333;
font-weight: bold;
}
/* username */
.username a {
color: #000;
}
.username a:hover {
color: #DF5353;
text-decoration: underline;
}
/* home icon */
.home-link {
color: #eee;
}
.home-link:focus,
.home-link:hover {
color: #ccc;
}
/* page header */
.page-header {
margin-bottom: 25px;
}
.page-header h2 {
margin: 0;
padding: 0;
font-size: 140%;
border-bottom: 1px dotted #DF5353;
}
.page-header h2 a {
color: #ddd;
}
.page-header h2 a:focus,
.page-header h2 a:hover {
color: #333;
}
.page-header ul {
text-align: left;
margin-top: 5px;
}
.page-header li {
display: inline;
padding-right: 10px;
font-size: 0.9em;
}

17
assets/css/links.css Normal file
View File

@@ -0,0 +1,17 @@
/* links */
a {
color: #3366CC;
border: none;
}
a:focus {
outline: 0;
color: #DF5353;
text-decoration: none;
border: 1px dotted #aaa;
}
a:hover {
color: #333;
text-decoration: none;
}

20
assets/css/listing.css Normal file
View File

@@ -0,0 +1,20 @@
/* listing block */
.listing {
border-radius: 4px;
padding: 8px 35px 8px 14px;
margin-bottom: 20px;
border: 1px solid #ddd;
color: #333;
background-color: #fbfbfb;
}
.listing li {
list-style-type: square;
margin-left: 20px;
margin-bottom: 3px;
}
.listing ul {
margin-top: 15px;
margin-bottom: 15px;
}

47
assets/css/markdown.css Normal file
View File

@@ -0,0 +1,47 @@
/* markdown content */
.markdown {
line-height: 1.4em;
}
.markdown h1 {
margin-top: 5px;
margin-bottom: 10px;
font-size: 2em;
padding-bottom: 3px;
border-bottom: 1px dotted #000;
}
.markdown h2 {
text-decoration: underline;
}
.markdown h3 {
font-weight: bold;
text-decoration: underline;
}
.markdown ol,
.markdown ul {
margin-left: 25px;
margin-top: 10px;
margin-bottom: 10px;
}
.markdown pre {
background: #fafafa;
padding: 10px;
border-radius: 5px;
border: 1px solid #ccc;
overflow: auto;
color: brown;
}
.markdown blockquote {
font-style: italic;
border-left: 5px solid #ddd;
padding-left: 8px;
}
.markdown p {
margin-bottom: 10px;
}

17
assets/css/pagination.css Normal file
View File

@@ -0,0 +1,17 @@
/* datepicker */
#ui-datepicker-div {
font-size: 0.8em;
}
/* pagination */
#pagination {
text-align: center;
}
#pagination-next {
margin-left: 5px;
}
#pagination-previous {
margin-right: 5px;
}

19
assets/css/popover.css Normal file
View File

@@ -0,0 +1,19 @@
/* popover */
#popover-container {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.8);
}
#popover-content {
position: fixed;
width: 70%;
margin: 0 0 0 -35%;
left: 50%;
top: 5%;
padding: 15px;
background: #fff;
}

29
assets/css/project.css Normal file
View File

@@ -0,0 +1,29 @@
/* project view */
.project-listing {
max-width: 500px;
margin-left: 30px;
}
.project-listing li {
font-weight: bold;
padding: 10px;
margin-top: 8px;
display: block;
border: 1px solid #ddd;
border-radius: 5px;
}
.project-listing li:hover {
border-color: #ccc;
background: #fcfcfc;
box-shadow: 0 0 8px rgba(200, 200, 200, 0.6);
}
.project-listing a {
text-decoration: none;
}
.project-listing a:hover,
.project-listing a:focus {
color: #000;
}

68
assets/css/responsive.css Normal file
View File

@@ -0,0 +1,68 @@
/* responsive design */
@media only screen and (min-width : 768px) and (max-width : 1024px) {
.hide-tablet {
display: none;
}
body {
font-size: 0.9em;
}
.project-menu {
font-size: 0.8em;
}
.task-board-title {
font-size: 1.5em;
}
}
@media only screen and (max-width : 768px) {
.hide-tablet {
display: none;
}
body {
font-size: 0.85em;
}
.logo,
.project-menu {
display: none;
}
nav li:first-child {
padding-left: 0;
}
.username {
display: block;
text-align: right;
}
.user-show-sidebar,
.project-show-sidebar,
.task-show-sidebar {
width: 200px;
}
.user-show-main,
.project-show-main,
.task-show-main {
margin-left: 230px;
}
table input[type="text"] {
width: 150px;
}
.task-score {
display: none;
}
.task-board-title {
font-size: 1.5em;
}
}

27
assets/css/sidebar.css Normal file
View File

@@ -0,0 +1,27 @@
/* sidebar */
.sidebar-container {
margin-top: 30px;
position: relative;
}
.sidebar-content {
margin-left: 330px;
}
.sidebar {
position: absolute;
left: 0px;
top: 0;
width: 250px;
padding: 10px;
padding-top: 0;
border: 1px solid #ccc;
background: #fbfbfb;
border-radius: 5px;
}
.sidebar li {
list-style-type: square;
margin-left: 30px;
line-height: 1.8em;
}

8
assets/css/subtask.css Normal file
View File

@@ -0,0 +1,8 @@
/* subtasks */
.subtasks-table {
font-size: 0.85em;
}
.subtasks-table td {
vertical-align: middle;
}

44
assets/css/table.css Normal file
View File

@@ -0,0 +1,44 @@
/* tables */
table {
width: 100%;
border-collapse: collapse;
border-spacing: 0;
margin-bottom: 20px;
font-size: 0.95em;
}
th,
td {
border: 1px solid #eee;
padding-top: 0.5em;
padding-bottom: 0.5em;
padding-left: 3px;
padding-right: 3px;
}
td {
vertical-align: top;
}
th {
background: #fbfbfb;
text-align: left;
}
td li {
margin-left: 20px;
}
.table-small {
font-size: 0.8em;
}
th a {
text-decoration: none;
color: #333;
}
th a:focus,
th a:hover {
text-decoration: underline;
}

236
assets/css/task.css Normal file
View File

@@ -0,0 +1,236 @@
/* task inside the board */
.task-board {
position: relative;
margin-right: 5px;
margin-bottom: 10px;
border: 1px solid #000;
padding: 5px;
font-size: 95%;
word-wrap: break-word;
}
.task-board-recent {
box-shadow: 0px 0px 10px rgba(130, 130, 130, 1);
}
.task-table a,
.task-board a {
color: #000;
text-decoration: none;
font-weight: bold;
}
.task-table a:focus,
.task-table a:hover,
.task-board a:focus,
.task-board a:hover {
text-decoration: underline;
}
.task-board-title {
margin-top: 10px;
font-size: 110%;
}
.task-board-title a {
font-weight: normal;
}
.task-board-user {
font-size: 80%;
}
a.task-board-nobody {
font-weight: normal;
font-style: italic;
color: #444;
}
.task-board-category-container {
text-align: right;
padding-bottom: 2px;
margin-top: 10px;
}
.task-board-category {
font-weight: bold;
font-size: 0.8em;
color: #000;
border: 1px solid #555;
border-radius: 4px;
padding: 2px;
padding-right: 5px;
padding-left: 5px;
}
.task-board-footer {
height: 18px;
}
.task-board-date {
position: absolute;
bottom: 0;
left: 5px;
font-weight: bold;
color: #000;
}
.task-board-date-overdue {
color: #D90000;
}
.task-board-icons {
position: absolute;
bottom: 0;
right: 5px;
}
.task-board-icons a {
opacity: 0.5;
}
.task-board-icons span {
opacity: 0.5;
margin-left: 5px;
}
.task-board-icons a:hover,
.task-board-icons span:hover {
opacity: 1.0;
}
/* task score */
.task-score {
font-weight: bold;
position: absolute;
}
.task-board .task-score {
font-size: 1.5em;
right: 5px;
top: 0;
}
/* task view */
.task-show-details {
position: relative;
border-radius: 5px;
padding-bottom: 10px;
}
.task-show-details h2 {
font-size: 1.8em;
margin: 0;
margin-bottom: 25px;
padding: 0;
padding-left: 10px;
padding-right: 10px;
}
.task-show-details li {
margin-left: 25px;
list-style-type: circle;
}
.task-show-details .task-score {
font-size: 1.9em;
right: 10px;
bottom: 5px;
}
.task-show-section {
margin-top: 30px;
margin-bottom: 20px;
}
.task-show-files a {
font-weight: bold;
text-decoration: none;
}
.task-show-files li {
margin-left: 25px;
list-style-type: square;
line-height: 25px;
}
.task-show-file-actions {
font-size: 0.75em;
}
.task-show-file-actions:before {
content: " [";
}
.task-show-file-actions:after {
content: "]";
}
.task-show-file-actions a {
color: #333;
}
.description-textarea {
width: 80%;
max-width: 800px;
height: 300px;
}
.task-file-viewer {
position: relative;
}
.task-file-viewer img {
max-width: 95%;
max-height: 85%;
margin-top: 10px;
}
.task-time-form {
margin-top: 10px;
margin-bottom: 25px;
padding: 3px;
}
/* task colors */
tr td.task-blue,
.task-blue {
background-color: rgb(219, 235, 255);
border-color: rgb(168, 207, 255);
}
tr td.task-purple,
.task-purple {
background-color: rgb(223, 176, 255);
border-color: rgb(205, 133, 254);
}
tr td.task-grey,
.task-grey {
background-color: rgb(238, 238, 238);
border-color: rgb(204, 204, 204);
}
tr td.task-red,
.task-red {
background-color: rgb(255, 187, 187);
border-color: rgb(255, 151, 151);
}
tr td.task-green,
.task-green {
background-color: rgb(189, 244, 203);
border-color: rgb(74, 227, 113);
}
tr td.task-yellow,
.task-yellow {
background-color: rgb(245, 247, 196);
border-color: rgb(223, 227, 45);
}
tr td.task-orange,
.task-orange {
background-color: rgb(255, 215, 179);
border-color: rgb(255, 172, 98);
}

15
assets/css/title.css Normal file
View File

@@ -0,0 +1,15 @@
/* titles */
h1, h2, h3 {
font-weight: normal;
color: #333;
}
h2 {
font-size: 1.3em;
margin-bottom: 10px;
}
h3 {
margin-top: 10px;
font-size: 1.2em;
}

File diff suppressed because one or more lines are too long

81
assets/js/base.js Normal file
View File

@@ -0,0 +1,81 @@
// Common functions
var Kanboard = (function() {
return {
// Display a popup
Popover: function(e, callback) {
e.preventDefault();
e.stopPropagation();
var link = e.target.getAttribute("href");
if (! link) {
link = e.target.getAttribute("data-href");
}
if (link) {
$.get(link, function(content) {
$("body").append('<div id="popover-container"><div id="popover-content">' + content + '</div></div>');
$("#popover-container").click(function() {
$(this).remove();
});
$("#popover-content").click(function(e) {
e.stopPropagation();
});
if (callback) {
callback();
}
});
}
},
// Return true if the page is visible
IsVisible: function() {
var property = "";
if (typeof document.hidden !== "undefined") {
property = "visibilityState";
} else if (typeof document.mozHidden !== "undefined") {
property = "mozVisibilityState";
} else if (typeof document.msHidden !== "undefined") {
property = "msVisibilityState";
} else if (typeof document.webkitHidden !== "undefined") {
property = "webkitVisibilityState";
}
if (property != "") {
return document[property] == "visible";
}
return true;
},
// Common init
Init: function() {
// Datepicker
$(".form-date").datepicker({
showOtherMonths: true,
selectOtherMonths: true,
dateFormat: 'yy-mm-dd',
constrainInput: false
});
// Project select box
$("#board-selector").chosen({
width: 180
});
$("#board-selector").change(function() {
window.location = "?controller=board&action=show&project_id=" + $(this).val();
});
}
};
})();

162
assets/js/board.js Normal file
View File

@@ -0,0 +1,162 @@
// Board related functions
Kanboard.Board = (function() {
var checkInterval = null;
// Setup the board
function board_load_events()
{
// Drag and drop
$(".column").sortable({
delay: 300,
distance: 5,
connectWith: ".column",
placeholder: "draggable-placeholder",
stop: function(event, ui) {
board_save(
ui.item.attr('data-task-id'),
ui.item.parent().attr("data-column-id"),
ui.item.index() + 1
);
}
});
// Assignee change
$(".assignee-popover").click(Kanboard.Popover);
// Category change
$(".category-popover").click(Kanboard.Popover);
// Task edit popover
$(".task-edit-popover").click(function(e) {
Kanboard.Popover(e, Kanboard.Init);
});
// Description popover
$(".task-description-popover").click(Kanboard.Popover);
// Redirect to the task details page
$("[data-task-id]").each(function() {
$(this).click(function() {
window.location = "?controller=task&action=show&task_id=" + $(this).attr("data-task-id");
});
});
// Automatic refresh
var interval = parseInt($("#board").attr("data-check-interval"));
if (interval > 0) {
checkInterval = window.setInterval(board_check, interval * 1000);
}
}
// Stop events
function board_unload_events()
{
$("[data-task-id]").off();
clearInterval(checkInterval);
}
// Save and refresh the board
function board_save(taskId, columnId, position)
{
var boardSelector = $("#board");
var projectId = boardSelector.attr("data-project-id");
board_unload_events();
$.ajax({
cache: false,
url: "?controller=board&action=save&project_id=" + projectId,
data: {
"task_id": taskId,
"column_id": columnId,
"position": position,
"csrf_token": boardSelector.attr("data-csrf-token"),
},
type: "POST",
success: function(data) {
$("#board").remove();
$("#main").append(data);
board_load_events();
filter_apply();
}
});
}
// Check if a board have been changed by someone else
function board_check()
{
var boardSelector = $("#board");
var projectId = boardSelector.attr("data-project-id");
var timestamp = boardSelector.attr("data-time");
if (Kanboard.IsVisible() && projectId != undefined && timestamp != undefined) {
$.ajax({
cache: false,
url: "?controller=board&action=check&project_id=" + projectId + "&timestamp=" + timestamp,
statusCode: {
200: function(data) {
boardSelector.remove();
$("#main").append(data);
board_unload_events();
board_load_events();
filter_apply();
}
}
});
}
}
// Apply user or date filter (change tasks opacity)
function filter_apply()
{
var selectedUserId = $("#form-user_id").val();
var selectedCategoryId = $("#form-category_id").val();
var filterDueDate = $("#filter-due-date").hasClass("filter-on");
$("[data-task-id]").each(function(index, item) {
var ownerId = item.getAttribute("data-owner-id");
var dueDate = item.getAttribute("data-due-date");
var categoryId = item.getAttribute("data-category-id");
if (ownerId != selectedUserId && selectedUserId != -1) {
item.style.opacity = "0.2";
}
else {
item.style.opacity = "1.0";
}
if (filterDueDate && (dueDate == "" || dueDate == "0")) {
item.style.opacity = "0.2";
}
if (categoryId != selectedCategoryId && selectedCategoryId != -1) {
item.style.opacity = "0.2";
}
});
}
// Load filter events
function filter_load_events()
{
$("#form-user_id").change(filter_apply);
$("#form-category_id").change(filter_apply);
$("#filter-due-date").click(function(e) {
$(this).toggleClass("filter-on");
filter_apply();
e.preventDefault();
});
}
return {
Init: function() {
board_load_events();
filter_load_events();
}
};
})();

12
assets/js/init.js Normal file
View File

@@ -0,0 +1,12 @@
// Initialization
$(function() {
Kanboard.Init();
if ($("#board").length) {
Kanboard.Board.Init();
}
else if ($("#task-section").length) {
Kanboard.Task.Init();
}
});

11
assets/js/task.js Normal file
View File

@@ -0,0 +1,11 @@
// Task related functions
Kanboard.Task = (function() {
return {
Init: function() {
// Image preview for attachments
$(".file-popover").click(Kanboard.Popover);
}
};
})();