Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

release 0.4.0 #107

Merged
merged 60 commits into from
Jan 5, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
c9d5d29
add more tests
lastlink Aug 19, 2024
3cc3091
add more tests
lastlink Aug 19, 2024
7cb7cf3
another try
lastlink Aug 19, 2024
d3a91eb
take 3
lastlink Aug 19, 2024
f6a7430
Merge branch 'dev' of github.com:funktechno/kanboard-plugin-wiki into…
lastlink Aug 19, 2024
3f55331
Added locale de_DE_du
alfredbuehler Oct 8, 2024
794b356
Merge pull request #100 from funktechno/f/locale_de_DE_du
alfredbuehler Oct 8, 2024
f0d16df
* adding 'Project' to wiki list details
imfx77 Oct 29, 2024
cfee926
* fixed the new line symbol in images info tooltip
imfx77 Oct 29, 2024
3957f88
* removed redundant parameter `no_layout`
imfx77 Oct 29, 2024
02e3763
* adjusted elements in create/edit wiki page modals
imfx77 Oct 29, 2024
1f45355
* reusing the `wiki/sidebar` template to show wiki links and contents…
imfx77 Oct 29, 2024
6eb0fd9
* totally removing clearfix styles from css and from inline
imfx77 Oct 29, 2024
757cdc8
* fixed some sane routes for 'WikiController' and 'WikiFileViewContro…
imfx77 Oct 29, 2024
cde08dd
* making the content of wiki pages expandable on demand (instead of f…
imfx77 Oct 29, 2024
849fd5f
* redirecting the project wiki links in dropdown and header to the de…
imfx77 Oct 29, 2024
cf9eca5
* hiding the unnecessary filter fields from project header for the wi…
imfx77 Oct 29, 2024
ef88f6d
* added highlight for the selected page in the wiki content tree
imfx77 Oct 29, 2024
5cbdd11
* adjusting the highlight for the selected page in the wiki content t…
imfx77 Oct 29, 2024
804f754
* implemented collapse/expand buttons for the wikitree branches
imfx77 Oct 29, 2024
6f901f8
* added in wiki content header collapseAll/expandAll/gotoSelected but…
imfx77 Oct 30, 2024
8e9e105
* introducing a helper method to generate indented wiki treeview list
imfx77 Oct 30, 2024
990f1cf
Fix absent 'children' field in public pages
alfredbuehler Oct 30, 2024
22e95b5
Merge pull request #102 from funktechno/f/pubpage
alfredbuehler Oct 30, 2024
3198bf0
Merge remote-tracking branch 'imfx77-Wiki/dev' into dev
imfx77 Oct 30, 2024
15d3df9
* adjusting colors and positioning for the wiki pages action buttons …
imfx77 Oct 30, 2024
d5692c7
* fixed the `generateIndentedChildren` helper in regard with the `par…
imfx77 Oct 30, 2024
fc467a0
* added routes for all implemented actions for wiki pages and files
imfx77 Oct 30, 2024
d872473
* added tooltips for action buttons of `wikitree` and `wikilist`
imfx77 Oct 31, 2024
0048c23
* adjusting style for dragged wikipage in wikitree + added style for …
imfx77 Nov 1, 2024
815741d
* hover highlight for the branch rows in wikitree
imfx77 Nov 2, 2024
f66895f
* fixed obtaining `getWikiPagesByParentId` in WikiModel
imfx77 Nov 2, 2024
cb1c805
* a total rework of `reorderPagesByIndex` and `reorderPages` methods …
imfx77 Nov 2, 2024
80f85b0
* implemented purging of wiki editions
imfx77 Nov 2, 2024
7a47441
* I think all these changes deserve at least a new minor version v0.4…
imfx77 Nov 2, 2024
e885649
* On second thought, now I think all these changes deserve at least a…
imfx77 Nov 3, 2024
ab52a75
* whoopsy, fixed back the unit test expected result
imfx77 Nov 3, 2024
9b04cfe
* oookay, fixed again the other unit test expected result
imfx77 Nov 3, 2024
7ad5a98
* slight corrections in ChangeLog
imfx77 Nov 3, 2024
d3416a8
Update pull_request_template.md
lastlink Jan 5, 2025
2c88272
Merge pull request #104 from funktechno/lastlink-patch-1
lastlink Jan 5, 2025
f8fecb2
Merge pull request #103 from imfx77/dev
lastlink Jan 5, 2025
c9adb3d
fix image regex viewer
lastlink Jan 5, 2025
ec17a32
fix file viewer
lastlink Jan 5, 2025
5a0ef00
Merge pull request #105 from funktechno/f/image_view_fix
lastlink Jan 5, 2025
703cd32
Merge branch 'dev' of github.com:funktechno/kanboard-plugin-wiki into…
lastlink Jan 5, 2025
c8b044a
update tests and verify
lastlink Jan 5, 2025
1fc9614
some cleanup
lastlink Jan 5, 2025
200fb92
another attempt
lastlink Jan 5, 2025
f9b4d63
fix typo
lastlink Jan 5, 2025
4341a1b
update expect
lastlink Jan 5, 2025
feccbc9
bump fix
lastlink Jan 5, 2025
2c3aca8
fix again
lastlink Jan 5, 2025
a0d37a3
prep tests
lastlink Jan 5, 2025
09df4df
missed one
lastlink Jan 5, 2025
f3f37be
comment out unused tests
lastlink Jan 5, 2025
5f51eb5
Merge pull request #94 from funktechno/f/tests
lastlink Jan 5, 2025
54c5dd1
downgrade version
lastlink Jan 5, 2025
401563e
downgrade to 4.0
lastlink Jan 5, 2025
9c3e954
Merge pull request #106 from funktechno/f/4.0
lastlink Jan 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
### All Submissions:

* Notify authors: @lastlink
* [ ] Have you updated the ChangeLog with your proposed changes?
* [ ] Have you checked to ensure there aren't other open [Pull Requests](../../pulls) for the same update/change?
* pr update to master branch
Expand Down
175 changes: 146 additions & 29 deletions Asset/Javascript/wiki.js
Original file line number Diff line number Diff line change
@@ -1,51 +1,168 @@
jQuery(document).ready(function () {
/*
page reorder and nesting support using jquery sorting plugin
*/
if($("#columns").data("reorder-url")){
jQuery('#columns').sortable({
nested: true,
onDrop: function ($item, container, _super) {
// console.log("onDrop", $item, container, _super)
container.el.removeClass("active");
var srcProperties = {
...$item[0].dataset
//--------------------------------------
// device detection
//--------------------------------------
let isMobile = false;
if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)
|| /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(navigator.userAgent.substr(0,4))) {
isMobile = true;
}

//--------------------------------------
// hide the KB filters toolbar
//--------------------------------------
$('.input-addon-field').hide();
$('.input-addon-item').hide();

//--------------------------------------
// override titles for links from their container buttons
//--------------------------------------
$("#wikitree").find(".action a").each(function () {
$(this).attr('title', $(this).parent().attr('title'));
});
$("#wikilist").find(".action a").each(function () {
$(this).attr('title', $(this).parent().attr('title'));
});
$("#wikiedition").find(".action a").each(function () {
$(this).attr('title', $(this).parent().attr('title'));
});

//--------------------------------------
// handle collapse/expand of wikitree branches
//--------------------------------------
if($("#wikitree").length == 1) {
function expandAllWikipagesBranches() {
const buttons = $("#wikitree").find(".branch");
buttons.each(function () {
const button = $(this).find("a i")[0];
const branch = $(this).parent().find("ul")[0];
$(button).removeClass('fa-plus-square-o');
$(button).addClass('fa-minus-square-o');
$(branch).show();
});
}

function collapseAllWikipagesBranches() {
const buttons = $("#wikitree").find(".branch");
buttons.each(function () {
const button = $(this).find("a i")[0];
const branch = $(this).parent().find("ul")[0];
$(button).removeClass('fa-minus-square-o');
$(button).addClass('fa-plus-square-o');
$(branch).hide();
});
}

function gotoSelectedWikipageBranch() {
function expandParentWikipage(el) {
const parentUl = el.parent();
const parentId = parentUl.attr("id");
if (parentId === "wikiroot") return; // end recursion

const parentWikipage = parentUl.parent();
const button = parentWikipage.find(".branch a i")[0];
$(button).removeClass('fa-plus-square-o');
$(button).addClass('fa-minus-square-o');
parentUl.show();

expandParentWikipage(parentWikipage);
}
var containerProperties = {...container.el[0].dataset}

let request = {
"src_wiki_id": srcProperties["pageId"],
"index": $item.index(),
"parent_id": containerProperties["parentId"]
const selected = $("#wikiroot").find(".wikipage.active");
expandParentWikipage(selected);
$("#wikiroot").show();
}

$('.expandAll').click(function () {
expandAllWikipagesBranches();
});

$('.collapseAll').click(function () {
collapseAllWikipagesBranches();
});

$('.gotoSelected').click(function () {
gotoSelectedWikipageBranch();
});

$('#wikitree .branch').click(function () {
const button = $(this).find("a i")[0];
const branch = $(this).parent().find("ul")[0];
if ($(button).hasClass('fa-minus-square-o')) {
$(button).removeClass('fa-minus-square-o');
$(button).addClass('fa-plus-square-o');
$(branch).hide();
return;
}
if ($(button).hasClass('fa-plus-square-o')) {
$(button).removeClass('fa-plus-square-o');
$(button).addClass('fa-minus-square-o');
$(branch).show();
return;
}
});

// if not root selected, then collapse entire wiki content except for the selected branch
if ($("#wikitree").length == 1 && $("#wikitree").data("selected-wiki-id") != 0) {
collapseAllWikipagesBranches();
gotoSelectedWikipageBranch();
}
}

//--------------------------------------
// page reorder and nesting support using jquery sorting plugin
//--------------------------------------
if($("#wikiroot").length == 1 && $("#wikitree").length == 1 && $("#wikitree").data("reorder-url")) {
if (isMobile) {
$(".sortable-handle").show();
}

$('#wikiroot').sortable({
nested: true,
itemSelector: ".wikipage",
placeholder: '<li class="sortable-placeholder"></li>',
placeholderClass: "sortable-placeholder",
draggedClass: "sortable-dragged",
handle: isMobile ? ".sortable-handle" : ".wikibranch",
onDrop: function ($item, container, _super) {
// console.log("onDrop", $item, container, _super)

// console.log("request", request)
const itemProperties = { ...$item[0].dataset }
const containerProperties = { ...container.el[0].dataset }
// console.log(itemProperties)
// console.log(containerProperties)

const request = {
"src_wiki_id": itemProperties["pageId"],
"index": $item.index() + 1,
"parent_id": containerProperties["parentId"],
}
// console.log("request", request)

$.ajax({
$.ajax({
cache: false,
url: $("#columns").data("reorder-url"),
url: $("#wikitree").data("reorder-url"),
contentType: "application/json",
type: "POST",
processData: false,
data: JSON.stringify(request),
success: function(data) {
// self.refresh(data);
// self.savingInProgress = false;
success: function(/*data*/) {
// alert(data);
location.reload();
},
error: function() {
// self.app.hideLoadingIcon();
// self.savingInProgress = false;
error: function(xhr,textStatus,e) {
alert(xhr.responseText);
location.reload();
},
statusCode: {
403: function(data) {
window.alert(data.responseJSON.message);
document.location.reload(true);
alert(data.responseJSON.message);
location.reload();
}
}
});
_super($item, container);
_super($item, container);
},
})
});
}
});
143 changes: 92 additions & 51 deletions Asset/css/wiki.css
Original file line number Diff line number Diff line change
@@ -1,68 +1,109 @@
/* [draggable] {
-moz-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
user-select: none;
-khtml-user-drag: element;
-webkit-user-drag: element;
} */

body.dragging, body.dragging * {
cursor: move !important;
cursor: move !important;
}
.dragged {

.sortable-dragged {
position: absolute;
opacity: 0.5;
z-index: 2000;
opacity: 0.75;
background: rgba(255, 250, 144, 0.25);
z-index: 2000 !important;
}

#columns {
list-style-type: none;
.sortable-placeholder {
position: relative;
margin: 0;
padding: 0;
height: 16px;
background: rgba(255, 250, 144, 0.5);
}
.sortable-placeholder:before {
position: absolute;
content: "";
width: 0;
height: 0;
margin-top: -5px;
left: -5px;
top: -4px;
border: 5px solid transparent;
border-left-color: red;
border-right: none;
}

.wikipage {
width: 162px;
padding-bottom: 5px;
padding-top: 5px;
text-align: left;
/* cursor: move; */
}
.wikipage header {
height: 20px;
width: 150px;
color: black;
background-color: #ccc;
padding: 5px;
border-bottom: 1px solid #ddd;
border-radius: 10px;
border: 2px solid #666666;
.wikicontent {
clear: both;
}

.wikipage.dragElem {
opacity: 0.4;
.wikisidebar {
height: 100%;
resize: horizontal;
overflow: auto;
max-width: 75% !important;
min-width: 384px !important;
}
.wikipage.over {
border: 2px dashed #000;
border-top: 2px solid blue;

.wikipage {
padding-bottom: 5px;
padding-top: 5px;
text-align: left;
white-space: nowrap;
line-height: normal !important;
}

.clearfix::after {
content: "";
clear: both;
display: table;
.wikibranch {
width: calc(100% - 24px);
display: inline-block;
}
.column {
float: left;
min-width: 0;
.wikibranch:hover {
cursor: move;
background: rgba(255, 250, 144, 0.25);
}
.list {
width: 25%;

.wikilink {
padding-top: 3px;
padding-bottom: 3px;
padding-left: 10px;
padding-right: 10px;
white-space: nowrap;
z-index: 1;
}
.content {
width: 75%;
.wikilink.active {
box-shadow: 0 0 10px #777777 inset;
}

.sidebar>ul li:last-child {
margin-bottom: 0px;
}
#wikitree {
list-style-type: none;
}
#wikitree .indent, .separator {
appearance: none;
-webkit-appearance: none;
outline: none;
border: 0;
background: transparent;
padding-right: 3px;
padding-left: 3px;
cursor: default;
color: transparent;
}
#wikitree .branch, #wikitree .action, #wikitree .sortable-handle, #wikilist .action, #wikiedition .action, .expandAll, .collapseAll, .gotoSelected {
appearance: none;
-webkit-appearance: none;
outline: none;
border: 0;
background: transparent;
padding-right: 3px;
padding-left: 3px;
cursor: pointer;
position: relative;
z-index: 2;
}
#wikitree .sortable-handle, .actionBigger {
font-size: 1.2em !important;
padding-right: 5px !important;
padding-left: 5px !important;
}
#wikitree li:last-child, #wikilist li:last-child {
margin-bottom: 0px !important;
}
#wikitree button a .fa, #wikilist button a .fa, #wikiedition button a .fa {
color: var(--link-color-primary);
}
Loading
Loading