Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
1fa0b9a
Change application scope to variables
ptruessel Jul 30, 2025
943298a
Typo
ptruessel Jul 30, 2025
b7d2030
Enhancement of subscriptions.cfm and implemented the check for schedu…
ptruessel Jul 30, 2025
1cf5626
Merge pull request #679 from PAWECOGmbH/feature/pt-distribute-scheduler
ptruessel Jul 30, 2025
9cc1d88
Blog feature implemented
ptruessel Aug 7, 2025
0018a99
replaced trumbowyg with hugerte editor
phBucher0 Aug 19, 2025
cadbf16
bugfix not editable field in invoice edit / bugfix ghost subbar on hu…
phBucher0 Aug 19, 2025
f4a236c
Add the blog sql file
ptruessel Aug 19, 2025
dbbf8bf
removed trumbowyg folders
phBucher0 Aug 20, 2025
13f8ca7
changes for big editor in blog / branch merged with pt-implement-blog…
phBucher0 Aug 26, 2025
182dcb5
Add MySQL tuning for production environment
ptruessel Sep 11, 2025
f68c288
Merge pull request #684 from PAWECOGmbH/feature/pt-mysql-tuning
ptruessel Sep 11, 2025
a64e782
Merge branch 'development' into fix/blog-feature-bugs
ptruessel Sep 11, 2025
c145c0f
Add Fulltext Search for Blogposts
ptruessel Sep 11, 2025
2e3b5a7
Fix modal in modal problem
ptruessel Sep 11, 2025
9c283c5
Merge pull request #683 from PAWECOGmbH/fix/blog-feature-bugs
ptruessel Sep 11, 2025
d14d2d7
Merge branch 'development' into 681-replace-trumbowyg-editor-with-hug…
ptruessel Sep 11, 2025
ca8b3dc
Merge pull request #682 from PAWECOGmbH/681-replace-trumbowyg-editor-…
ptruessel Sep 11, 2025
81e4894
Remove encodeforhtml for link names
ptruessel Sep 13, 2025
0a297bc
Change filename
ptruessel Sep 13, 2025
8d1e471
fix filebrowser
phBucher0 Oct 3, 2025
e280dc9
Merge pull request #686 from PAWECOGmbH/feature/add-filebrowser
ptruessel Oct 3, 2025
4427b94
Cosmetics in gitignore
ptruessel Oct 5, 2025
8ee6b33
Copy-paste failure
ptruessel Oct 5, 2025
275f34f
Using schedulerID instead of scheduleTaskID
ptruessel Oct 5, 2025
76e2a7a
Merge pull request #687 from PAWECOGmbH/development
ptruessel Oct 5, 2025
971eed1
fix compose
phBucher0 Oct 10, 2025
daac81d
Merge pull request #690 from PAWECOGmbH/pb-fix-filebrowser-staging
ptruessel Oct 10, 2025
4be884c
Merge pull request #691 from PAWECOGmbH/development
ptruessel Oct 10, 2025
6391c5f
Remove 'always restart' the container for local environment
ptruessel Oct 22, 2025
4abab8b
Add application scope to function getDefaultLanguage()
ptruessel Oct 22, 2025
aa6bf22
Merge pull request #698 from PAWECOGmbH/development
ptruessel Oct 26, 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
8 changes: 4 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ www/userdata
### Config files ###
config.cfm
.env
config/nginx/conf.d/*.conf

### Log files ###
logs/*
www/logs
.history

### NGINX configs ###
config/nginx/conf.d/*.conf
filebrowser.db
.history
3 changes: 0 additions & 3 deletions compose-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ services:
image: ${LUCEE_IMAGE}:${LUCEE_IMAGE_VERSION}
ports:
- "${LUCEE_PORT}:80"
restart: always
container_name: ${LUCEE_CONTAINER_NAME}
environment:
- LUCEE_ADMIN_PASSWORD=${LUCEE_ADMIN_PASSWORD}
Expand All @@ -20,7 +19,6 @@ services:
depends_on:
- lucee
image: mysql:8.1
restart: always
container_name: ${MYSQL_CONTAINER_NAME}
ports:
- "${MYSQL_PORT}:3306"
Expand Down Expand Up @@ -60,7 +58,6 @@ services:
inbucket:
image: inbucket/inbucket
container_name: ${INBUCKET_CONTAINER_NAME}
restart: always
ports:
- "${INBUCKET_WEB_PORT}:9000"
- "${INBUCKET_SMTP_PORT}:2500"
Expand Down
19 changes: 19 additions & 0 deletions compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ services:
- ./www:/var/www
- ./config/nginx/conf.d:/etc/nginx/conf.d
- userdata_volume:/var/www/userdata
- ./logs/lucee:/opt/lucee/server/lucee-server/context/logs
- ./logs/nginx:/var/log/nginx
- ./logs/tomcat:/usr/local/tomcat/logs
networks:
- npm_network

Expand All @@ -31,6 +34,9 @@ services:
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
volumes:
- db_volume:/var/lib/mysql
- ./config/mysql/tuning.cnf:/etc/mysql/conf.d/tuning.cnf:ro
- ./logs/mysql:/var/log/mysql

networks:
- npm_network
healthcheck:
Expand All @@ -56,6 +62,19 @@ services:
condition: service_healthy
networks:
- npm_network

filebrowser:
image: filebrowser/filebrowser:latest
container_name: ${FILEBROWSER_CONTAINER_NAME}
restart: always
user: "0:0"
ports:
- "${FILEBROWSER_PORT}:80"
volumes:
- ./logs:/srv/logs
- ./filebrowser.db:/database/filebrowser.db
networks:
- npm_network

volumes:
userdata_volume:
Expand Down
88 changes: 88 additions & 0 deletions config/db/core/V14__blog-posts.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

INSERT IGNORE INTO system_mappings (strMapping, strPath, blnOnlyAdmin, blnOnlySuperAdmin, blnOnlySysAdmin)
VALUES
('sysadmin/blog-posts', 'backend/core/views/sysadmin/blog_posts.cfm', 0, 0, 1),
('sysadmin/blog-posts/edit', 'backend/core/views/sysadmin/blog_posts_edit.cfm', 0, 0, 1),
('sysadm/blog-posts', 'backend/core/handler/sysadmin/blog_posts.cfm', 0, 0, 1),
('sysadmin/blog-posts/categories', 'backend/core/views/sysadmin/blog_posts_categories.cfm', 0, 0, 1);

INSERT IGNORE INTO frontend_mappings (strMapping, strPath, strMetatitle, strMetadescription, strhtmlcodes, blnCreatedByApp)
VALUES ('blog/overview', 'templates/blog/overview.cfm', '', '', '', 0);

CREATE TABLE `blog_categories` (
`intBlogCategoryID` int NOT NULL AUTO_INCREMENT,
`strCategoryName` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`intPrio` tinyint NOT NULL DEFAULT 1,
PRIMARY KEY (`intBlogCategoryID`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

CREATE TABLE `blog_categories_trans` (
`intBlogCategoryTransID` int NOT NULL AUTO_INCREMENT,
`intBlogCategoryID` int NOT NULL,
`intLanguageID` int NOT NULL,
`strCategoryName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
PRIMARY KEY (`intBlogCategoryTransID`) USING BTREE,
INDEX `_intBlogCategoryID`(`intBlogCategoryID`) USING BTREE,
INDEX `_intLanguageID`(`intLanguageID`) USING BTREE,
CONSTRAINT `frn_bc_languages` FOREIGN KEY (`intLanguageID`) REFERENCES `languages` (`intLanguageID`) ON DELETE CASCADE ON UPDATE RESTRICT,
CONSTRAINT `frn_blog_categories` FOREIGN KEY (`intBlogCategoryID`) REFERENCES `blog_categories` (`intBlogCategoryID`) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

CREATE TABLE `blog_post_categories` (
`intBlogPostCategoryID` int NOT NULL AUTO_INCREMENT,
`intBlogPostID` int NOT NULL,
`intBlogCategoryID` int NOT NULL,
PRIMARY KEY (`intBlogPostCategoryID`) USING BTREE,
UNIQUE INDEX `idx_unique`(`intBlogPostID`, `intBlogCategoryID`) USING BTREE,
INDEX `idx_blogpost`(`intBlogPostID`) USING BTREE,
INDEX `idx_postcategory`(`intBlogCategoryID`) USING BTREE,
CONSTRAINT `fk_bpc_categories` FOREIGN KEY (`intBlogCategoryID`) REFERENCES `blog_categories` (`intBlogCategoryID`) ON DELETE CASCADE ON UPDATE RESTRICT,
CONSTRAINT `fk_bpc_posts` FOREIGN KEY (`intBlogPostID`) REFERENCES `blog_posts` (`intBlogPostID`) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

CREATE TABLE `blog_posts` (
`intBlogPostID` int NOT NULL AUTO_INCREMENT,
`dtmCreated` datetime NOT NULL,
`dtmUpdated` datetime NULL DEFAULT NULL,
`blnIsPublished` tinyint NOT NULL DEFAULT 0,
`dtePublishDate` date NULL DEFAULT NULL,
`dteUnpublishDate` date NULL DEFAULT NULL,
`blnShowPublishedDate` tinyint NOT NULL DEFAULT 1,
`blnShowTOC` tinyint NOT NULL DEFAULT 0,
`strAuthorName` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`blnShowAuthor` tinyint NOT NULL DEFAULT 0,
`strPreviewTitle` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`strPreviewText` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL,
`strPreviewImage` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`strButtonText` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`strBlogHeaderImage` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`strPostTitle` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`strPostIntro` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL,
`strPostContent` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL,
`intFrontendMappingsID` int NULL DEFAULT NULL,
PRIMARY KEY (`intBlogPostID`) USING BTREE,
INDEX `idx_dtmCreated`(`dtmCreated`) USING BTREE,
INDEX `idx_blnIsPublished`(`blnIsPublished`) USING BTREE,
FULLTEXT INDEX `FulltextSearch`(`strPreviewTitle`, `strPreviewText`, `strButtonText`, `strPostContent`)
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;

CREATE TABLE `blog_posts_trans` (
`intBlogPostTransID` int NOT NULL AUTO_INCREMENT,
`intBlogPostID` int NOT NULL,
`intLanguageID` int NOT NULL,
`strPreviewTitle` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`strPreviewText` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL,
`strButtonText` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`strPostTitle` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`strPostIntro` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL,
`strPostContent` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL,
PRIMARY KEY (`intBlogPostTransID`) USING BTREE,
UNIQUE INDEX `idx_unique_translation`(`intBlogPostID`, `intLanguageID`) USING BTREE,
INDEX `fk_blogpoststrans_language`(`intLanguageID`) USING BTREE,
CONSTRAINT `fk_blogpoststrans_blogposts` FOREIGN KEY (`intBlogPostID`) REFERENCES `blog_posts` (`intBlogPostID`) ON DELETE CASCADE ON UPDATE RESTRICT,
CONSTRAINT `fk_blogpoststrans_language` FOREIGN KEY (`intLanguageID`) REFERENCES `languages` (`intLanguageID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;
15 changes: 15 additions & 0 deletions config/db/core/V15__blog-updates.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

ALTER TABLE blog_posts
DROP INDEX FulltextSearch,
ADD FULLTEXT INDEX FulltextSearch (
strPreviewTitle,
strPreviewText,
strPostTitle,
strPostIntro,
strPostContent
);

SET FOREIGN_KEY_CHECKS = 1;
26 changes: 26 additions & 0 deletions config/mysql/tuning.cnf
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
[mysqld]
# MEMORY & CACHING
innodb_buffer_pool_size = 2G
innodb_buffer_pool_instances = 2
innodb_redo_log_capacity = 512M
tmp_table_size = 64M
max_heap_table_size = 64M
sort_buffer_size = 4M
read_rnd_buffer_size = 4M
join_buffer_size = 4M

# CONNECTION & TIMEOUTS
max_connections = 100
wait_timeout = 300
interactive_timeout = 300
connect_timeout = 10

# INNODB IO THREADS
innodb_flush_log_at_trx_commit = 2
innodb_io_capacity = 200
innodb_read_io_threads = 4
innodb_write_io_threads = 4

# FILEBROWSER MOUNT LOCATION
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
3 changes: 2 additions & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -173,11 +173,12 @@ For more information or if you're unsure about something, feel free to open an i

- [Tabler](https://github.com/tabler/tabler/blob/main/LICENSE)
- [Dropify](https://github.com/JeremyFagis/dropify/blob/master/LICENCE.md)
- [Trumbowyg](https://github.com/Alex-D/Trumbowyg/blob/develop/LICENSE)
- [Hugerte](https://github.com/hugerte/hugerte/blob/main/LICENSE.TXT)
- [Bootstrap](https://github.com/twbs/bootstrap/blob/main/LICENSE)
- [MockDataCFC](https://github.com/Ortus-Solutions/MockDataCFC/blob/development/LICENSE)
- [Fontawesome](https://fontawesome.com/v4/license/)
- [jquery](https://github.com/jquery/jquery)
- [taffy](https://github.com/atuttle/Taffy)



Loading