From 5b0fe7a7188c17007ad383d9eb39cfc5490f6a21 Mon Sep 17 00:00:00 2001 From: Trevor Forrester Date: Tue, 14 Jul 2026 19:58:51 +1000 Subject: [PATCH 1/6] Add initial project documentation Add BUILD.md, CHANGELOG.md and RELEASES.md for the DNN 10 maintenance branch. --- BUILD.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ CHANGELOG.md | 41 +++++++++++++++++++++++++++++++++++++++++ RELEASES.md | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 118 insertions(+) create mode 100644 BUILD.md create mode 100644 CHANGELOG.md create mode 100644 RELEASES.md diff --git a/BUILD.md b/BUILD.md new file mode 100644 index 0000000..f73dda5 --- /dev/null +++ b/BUILD.md @@ -0,0 +1,44 @@ +# Building DNN Blog + +This document describes how to build the DNN Blog module on Windows. + +## Tested environment +- DNN Platform 10.3.2 +- .NET Framework 4.8 +- Visual Studio 2022 or Visual Studio Build Tools +- MSBuild +- SQL Server +- GitHub Desktop + +## Required Visual Studio components +- .NET desktop build tools +- MSBuild +- Visual Basic compiler +- C# compiler +- NuGet targets and build tasks +- .NET Framework 4.8 SDK +- .NET Framework 4.8 Targeting Pack + +## DNN references +Use the matching assemblies from the target DNN site's `bin` folder. + +## Build steps +1. Clone the repository. +2. Open Developer PowerShell for Visual Studio. +3. Run: + +```powershell +msbuild ".\\Server\\Blog\\DotNetNuke.Modules.Blog.vbproj" ` + /t:Restore,Rebuild ` + /p:Configuration=Release ` + /p:Platform=AnyCPU +``` + +## Output +Primary assemblies: +- `DotNetNuke.Modules.Blog.dll` +- `DotNetNuke.Modules.Blog.Core.dll` +- `CookComputing.XmlRpcV2.dll` + +## Testing +Back up the database, `/bin`, `/DesktopModules/Blog` and `web.config` before deployment. diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..ce6db2e --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,41 @@ +# Changelog + +All notable changes to the DNN Blog DNN10 Maintenance Branch are documented in this file. + +The format is based on Keep a Changelog. + +--- + +## [06.07.01-DNN10] - 2026-07-14 + +### Fixed + +- Fixed ASP.NET ViewState exception when editing Blog settings after changing Blog permissions. +- Prevented `BlogPermissionsGrid` from restoring dynamically generated child-control ViewState. +- Continued to persist: + - Blog ID + - Current User ID + - Blog permission collection. + +### Validation + +Successfully tested on: + +- DNN Platform 10.3.2 +- .NET Framework 4.8 +- SQL Server + +Verified by: + +- Editing existing Blogs +- Creating a second Blog +- Editing Blog permissions repeatedly +- Changing Blog settings +- Creating posts +- Editing posts +- Uploading images +- Production deployment using the stock Blog 6.7.1 release + +### Contributors + +- Trevor Forrest (Forro-54) \ No newline at end of file diff --git a/RELEASES.md b/RELEASES.md new file mode 100644 index 0000000..010e39c --- /dev/null +++ b/RELEASES.md @@ -0,0 +1,33 @@ +# Releases + +## 06.07.01-DNN10 + +Maintained compatibility build of DNN Blog 6.7.1 for DNN Platform 10. + +### Target environment +- DNN Platform 10.3.2 +- .NET Framework 4.8 +- SQL Server + +### Changes +- Fixed the ViewState exception after Blog permission changes. +- Updated `BlogPermissionsGrid` to avoid restoring dynamically generated child-control ViewState. +- Preserved Blog ID, current user ID and Blog permission collection. + +### Validation +- Existing Blogs +- New Blogs +- Permission changes +- Settings updates +- Post creation and editing +- Image uploads +- Production validation on the stock Blog 6.7.1 release + +### Deployment note +The fix is contained in: + +```text +DotNetNuke.Modules.Blog.Core.dll +``` + +Always back up the database and Blog assemblies before deployment. From 3cc2461a0e162bf72100f08bc09b95d478b522ab Mon Sep 17 00:00:00 2001 From: Trevor Forrester Date: Wed, 15 Jul 2026 11:50:56 +1000 Subject: [PATCH 2/6] Add project status document Record completed work, current status, and next tasks for the DNN 10 maintenance effort. --- PROJECT_STATUS.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 PROJECT_STATUS.md diff --git a/PROJECT_STATUS.md b/PROJECT_STATUS.md new file mode 100644 index 0000000..08d3fb9 --- /dev/null +++ b/PROJECT_STATUS.md @@ -0,0 +1,32 @@ +# Project Status + +## Current Branch + +`docs-dnn10-maintenance` + +## Completed + +- Identified the DNN Blog ViewState bug in `BlogPermissionsGrid`. +- Implemented and tested the fix. +- Verified the fix on DNN Platform 10.3.2 and .NET Framework 4.8. +- Verified the fix on both test and production sites. +- Submitted a pull request to `DNNCommunity/DNN.Blog`. +- Created `BUILD.md`. +- Created `CHANGELOG.md`. +- Created `RELEASES.md`. + +## Waiting + +- Review of the submitted pull request by the DNN Blog maintainers. + +## Next Tasks + +- Review and improve the project documentation. +- Decide when to merge the documentation branch into `development`. +- Create a long-term `dnn10-maintenance` branch. +- Document and review existing CSS fixes. +- Review other DNN 10 compatibility issues. + +## Notes + +This file is a working project journal. Update it whenever a significant task is completed or a new task is started. \ No newline at end of file From 991c69840c98dca96103251cb9d032f8cc5c5c19 Mon Sep 17 00:00:00 2001 From: Trevor Forrester Date: Wed, 15 Jul 2026 14:02:19 +1000 Subject: [PATCH 3/6] Fix default template layout on small screens Prevent the Blog list image from forcing a narrow text column on small screens by stacking the image above the summary content. Tested successfully in Google Chrome and Mozilla Firefox. --- .../Templates/_default/template - Copy.css | 21 ++++++++++++++++++ Server/Blog/Templates/_default/template.css | 22 ++++++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 Server/Blog/Templates/_default/template - Copy.css diff --git a/Server/Blog/Templates/_default/template - Copy.css b/Server/Blog/Templates/_default/template - Copy.css new file mode 100644 index 0000000..3c2bbdb --- /dev/null +++ b/Server/Blog/Templates/_default/template - Copy.css @@ -0,0 +1,21 @@ +.ModBlogC .bbs-comments .comment .author .profile,.ModBlogC .bbs-comments .totals{font-size:.9em;color:#aaa}.ModBlogC .bbs-article .content .metadata>div:not(:last-child),.ModBlogC .bbs-listarticle{border-bottom:1px solid #eee}.ModBlogC .bbs-comments{margin-top:30px;padding-top:10px;border-top:1px solid #eee}.ModBlogC .bbs-comments .comment{padding:10px 0}.ModBlogC .bbs-comments .comment .author{padding:6px 0}.ModBlogC .bbs-comments .comment .author>div{display:inline}.ModBlogC .bbs-comments .comment .author .pic img{width:32px;height:32px;border-radius:6px}.ModBlogC .bbs-comments .comment .author .pic{padding-right:10px}.ModBlogC .bbs-comments .comment .content{font-size:1.1em}.ModBlogC .bbs-comments .comment .actions{padding:10px 0;color:#aaa;font-size:.9em}.ModBlogC .bbs-comments .comment .subcomments{padding-left:30px}.ModBlogC .bbs-article .content{height:auto;overflow:hidden}@media only screen and (min-width:600px){.ModBlogC .bbs-article .content .metadata{float:left;width:240px}.ModBlogC .bbs-article .content .body{width:auto;overflow:hidden}}@media only screen and (max-width:599px){.ModBlogC .bbs-article .content .metadata{display:block}}.ModBlogC .bbs-article .content .metadata{line-height:21px}.ModBlogC .bbs-article .content .metadata>div{padding-bottom:20px;margin:0 20px 20px 0}.ModBlogC .bbs-article .content .metadata>div h5{color:#aaa;text-transform:uppercase;font-weight:700}.ModBlogC .bbs-article .content .metadata .sharrre{padding-top:6px}.ModBlogC .bbs-article .content .metadata .sharrre a{padding-right:14px}.ModBlogC .bbs-article .content .metadata .sharrre a i{font-size:1.2em}.ModBlogC .bbs-article .content .metadata .tags a{display:block}.ModBlogC .bbs-article .content .body{padding-top:20px}.ModBlogC .bbs-listarticle{overflow:hidden;padding:20px 0}.ModBlogC .bbs-listarticle h2 a,.ModBlogC .bbs-listarticle h2 a:hover,.ModBlogC .bbs-listarticle h2 a:visited{text-decoration:none}.ModBlogC .bbs-listarticle figure{float:left;margin:8px 40px 0 0;width:264px}.ModBlogC .bbs-listarticle .content{overflow:hidden}.ModBlogC .bbs-listarticle .content .summary,.ModBlogC .bbs-listarticle .content .summary p{font-size:1.1em;line-height:1.5;margin-bottom:12px}.ModBlogC .bbs-listarticle .content .metadata{line-height:18px;margin-left:-8px}.ModBlogC .bbs-listarticle .content .metadata div{display:inline;padding:0 8px;font-size:.9em;color:#aaa}.ModBlogC .bbs-listarticle .content .metadata div:not(:last-child){border-right:1px solid #aaa}.ModBlogC .bbs-listarticle .content .metadata div:empty{display:none}.ModBlogC .bbs-pager{text-align:center}.ModBlogC .bbs-pager .bbs-pagination{width:90%;max-width:768px;margin:2em auto 4em;text-align:center}.ModBlogC .bbs-pager .bbs-pagination li{display:none;margin:0 .2em}.ModBlogC .bbs-pager .bbs-pagination li.button{display:inline-block}.ModBlogC .bbs-pager .bbs-pagination a,.ModBlogC .bbs-pager .bbs-pagination span{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:.6em .8em;font-size:1.6rem}.ModBlogC .bbs-pager .bbs-pagination a{border:1px solid #e6e6e6;border-radius:.25em}.ModBlogC .bbs-pager .bbs-pagination .no-touch a:hover{background-color:#f2f2f2}.ModBlogC .bbs-pager .bbs-pagination a:active{-webkit-transform:scale(.9);-moz-transform:scale(.9);-ms-transform:scale(.9);-o-transform:scale(.9);transform:scale(.9)}.ModBlogC .bbs-pager .bbs-pagination a.disabled{color:rgba(46,64,87,.4);pointer-events:none}.ModBlogC .bbs-pager .bbs-pagination a.disabled::after,.ModBlogC .bbs-pager .bbs-pagination a.disabled::before{opacity:.4}.ModBlogC .bbs-pager .bbs-pagination .button:first-of-type a::before{content:'\00ab '}.ModBlogC .bbs-pager .bbs-pagination .button:last-of-type a::after{content:' \00bb'}.ModBlogC .bbs-pager .bbs-pagination .current{background-color:#777;border-color:#777;color:#fff;pointer-events:none}@media only screen and (min-width:768px){.ModBlogC .bbs-pager .bbs-pagination li{display:inline-block}}@media only screen and (min-width:1170px){.ModBlogC .bbs-pager .bbs-pagination{margin:4em auto 8em}}.ModBlogC .supertitle{text-transform:uppercase}.ModBlogC .supertitle span{font-weight:700}.ModBlogC .supertitle:empty{display:none}.ModBlogC .comma:not(:first-child):before{content:", "}.ModBlogC .commands{padding-top:20px} +/* Blog list: stack image above text on small screens */ +@media (max-width: 600px) { + .ModBlogC .bbs-listarticle figure { + float: none; + width: auto; + max-width: 100%; + margin: 8px 0 12px; + } + + .ModBlogC .bbs-listarticle figure img { + display: block; + max-width: 100%; + height: auto; + } + + .ModBlogC .bbs-listarticle, + .ModBlogC .bbs-listarticle .content { + overflow: visible; + } +} \ No newline at end of file diff --git a/Server/Blog/Templates/_default/template.css b/Server/Blog/Templates/_default/template.css index bfd901e..30ea5e6 100644 --- a/Server/Blog/Templates/_default/template.css +++ b/Server/Blog/Templates/_default/template.css @@ -1 +1,21 @@ -.ModBlogC .bbs-comments .comment .author .profile,.ModBlogC .bbs-comments .totals{font-size:.9em;color:#aaa}.ModBlogC .bbs-article .content .metadata>div:not(:last-child),.ModBlogC .bbs-listarticle{border-bottom:1px solid #eee}.ModBlogC .bbs-comments{margin-top:30px;padding-top:10px;border-top:1px solid #eee}.ModBlogC .bbs-comments .comment{padding:10px 0}.ModBlogC .bbs-comments .comment .author{padding:6px 0}.ModBlogC .bbs-comments .comment .author>div{display:inline}.ModBlogC .bbs-comments .comment .author .pic img{width:32px;height:32px;border-radius:6px}.ModBlogC .bbs-comments .comment .author .pic{padding-right:10px}.ModBlogC .bbs-comments .comment .content{font-size:1.1em}.ModBlogC .bbs-comments .comment .actions{padding:10px 0;color:#aaa;font-size:.9em}.ModBlogC .bbs-comments .comment .subcomments{padding-left:30px}.ModBlogC .bbs-article .content{height:auto;overflow:hidden}@media only screen and (min-width:600px){.ModBlogC .bbs-article .content .metadata{float:left;width:240px}.ModBlogC .bbs-article .content .body{width:auto;overflow:hidden}}@media only screen and (max-width:599px){.ModBlogC .bbs-article .content .metadata{display:block}}.ModBlogC .bbs-article .content .metadata{line-height:21px}.ModBlogC .bbs-article .content .metadata>div{padding-bottom:20px;margin:0 20px 20px 0}.ModBlogC .bbs-article .content .metadata>div h5{color:#aaa;text-transform:uppercase;font-weight:700}.ModBlogC .bbs-article .content .metadata .sharrre{padding-top:6px}.ModBlogC .bbs-article .content .metadata .sharrre a{padding-right:14px}.ModBlogC .bbs-article .content .metadata .sharrre a i{font-size:1.2em}.ModBlogC .bbs-article .content .metadata .tags a{display:block}.ModBlogC .bbs-article .content .body{padding-top:20px}.ModBlogC .bbs-listarticle{overflow:hidden;padding:20px 0}.ModBlogC .bbs-listarticle h2 a,.ModBlogC .bbs-listarticle h2 a:hover,.ModBlogC .bbs-listarticle h2 a:visited{text-decoration:none}.ModBlogC .bbs-listarticle figure{float:left;margin:8px 40px 0 0;width:264px}.ModBlogC .bbs-listarticle .content{overflow:hidden}.ModBlogC .bbs-listarticle .content .summary,.ModBlogC .bbs-listarticle .content .summary p{font-size:1.1em;line-height:1.5;margin-bottom:12px}.ModBlogC .bbs-listarticle .content .metadata{line-height:18px;margin-left:-8px}.ModBlogC .bbs-listarticle .content .metadata div{display:inline;padding:0 8px;font-size:.9em;color:#aaa}.ModBlogC .bbs-listarticle .content .metadata div:not(:last-child){border-right:1px solid #aaa}.ModBlogC .bbs-listarticle .content .metadata div:empty{display:none}.ModBlogC .bbs-pager{text-align:center}.ModBlogC .bbs-pager .bbs-pagination{width:90%;max-width:768px;margin:2em auto 4em;text-align:center}.ModBlogC .bbs-pager .bbs-pagination li{display:none;margin:0 .2em}.ModBlogC .bbs-pager .bbs-pagination li.button{display:inline-block}.ModBlogC .bbs-pager .bbs-pagination a,.ModBlogC .bbs-pager .bbs-pagination span{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:.6em .8em;font-size:1.6rem}.ModBlogC .bbs-pager .bbs-pagination a{border:1px solid #e6e6e6;border-radius:.25em}.ModBlogC .bbs-pager .bbs-pagination .no-touch a:hover{background-color:#f2f2f2}.ModBlogC .bbs-pager .bbs-pagination a:active{-webkit-transform:scale(.9);-moz-transform:scale(.9);-ms-transform:scale(.9);-o-transform:scale(.9);transform:scale(.9)}.ModBlogC .bbs-pager .bbs-pagination a.disabled{color:rgba(46,64,87,.4);pointer-events:none}.ModBlogC .bbs-pager .bbs-pagination a.disabled::after,.ModBlogC .bbs-pager .bbs-pagination a.disabled::before{opacity:.4}.ModBlogC .bbs-pager .bbs-pagination .button:first-of-type a::before{content:'\00ab '}.ModBlogC .bbs-pager .bbs-pagination .button:last-of-type a::after{content:' \00bb'}.ModBlogC .bbs-pager .bbs-pagination .current{background-color:#777;border-color:#777;color:#fff;pointer-events:none}@media only screen and (min-width:768px){.ModBlogC .bbs-pager .bbs-pagination li{display:inline-block}}@media only screen and (min-width:1170px){.ModBlogC .bbs-pager .bbs-pagination{margin:4em auto 8em}}.ModBlogC .supertitle{text-transform:uppercase}.ModBlogC .supertitle span{font-weight:700}.ModBlogC .supertitle:empty{display:none}.ModBlogC .comma:not(:first-child):before{content:", "}.ModBlogC .commands{padding-top:20px} \ No newline at end of file +.ModBlogC .bbs-comments .comment .author .profile,.ModBlogC .bbs-comments .totals{font-size:.9em;color:#aaa}.ModBlogC .bbs-article .content .metadata>div:not(:last-child),.ModBlogC .bbs-listarticle{border-bottom:1px solid #eee}.ModBlogC .bbs-comments{margin-top:30px;padding-top:10px;border-top:1px solid #eee}.ModBlogC .bbs-comments .comment{padding:10px 0}.ModBlogC .bbs-comments .comment .author{padding:6px 0}.ModBlogC .bbs-comments .comment .author>div{display:inline}.ModBlogC .bbs-comments .comment .author .pic img{width:32px;height:32px;border-radius:6px}.ModBlogC .bbs-comments .comment .author .pic{padding-right:10px}.ModBlogC .bbs-comments .comment .content{font-size:1.1em}.ModBlogC .bbs-comments .comment .actions{padding:10px 0;color:#aaa;font-size:.9em}.ModBlogC .bbs-comments .comment .subcomments{padding-left:30px}.ModBlogC .bbs-article .content{height:auto;overflow:hidden}@media only screen and (min-width:600px){.ModBlogC .bbs-article .content .metadata{float:left;width:240px}.ModBlogC .bbs-article .content .body{width:auto;overflow:hidden}}@media only screen and (max-width:599px){.ModBlogC .bbs-article .content .metadata{display:block}}.ModBlogC .bbs-article .content .metadata{line-height:21px}.ModBlogC .bbs-article .content .metadata>div{padding-bottom:20px;margin:0 20px 20px 0}.ModBlogC .bbs-article .content .metadata>div h5{color:#aaa;text-transform:uppercase;font-weight:700}.ModBlogC .bbs-article .content .metadata .sharrre{padding-top:6px}.ModBlogC .bbs-article .content .metadata .sharrre a{padding-right:14px}.ModBlogC .bbs-article .content .metadata .sharrre a i{font-size:1.2em}.ModBlogC .bbs-article .content .metadata .tags a{display:block}.ModBlogC .bbs-article .content .body{padding-top:20px}.ModBlogC .bbs-listarticle{overflow:hidden;padding:20px 0}.ModBlogC .bbs-listarticle h2 a,.ModBlogC .bbs-listarticle h2 a:hover,.ModBlogC .bbs-listarticle h2 a:visited{text-decoration:none}.ModBlogC .bbs-listarticle figure{float:left;margin:8px 40px 0 0;width:264px}.ModBlogC .bbs-listarticle .content{overflow:hidden}.ModBlogC .bbs-listarticle .content .summary,.ModBlogC .bbs-listarticle .content .summary p{font-size:1.1em;line-height:1.5;margin-bottom:12px}.ModBlogC .bbs-listarticle .content .metadata{line-height:18px;margin-left:-8px}.ModBlogC .bbs-listarticle .content .metadata div{display:inline;padding:0 8px;font-size:.9em;color:#aaa}.ModBlogC .bbs-listarticle .content .metadata div:not(:last-child){border-right:1px solid #aaa}.ModBlogC .bbs-listarticle .content .metadata div:empty{display:none}.ModBlogC .bbs-pager{text-align:center}.ModBlogC .bbs-pager .bbs-pagination{width:90%;max-width:768px;margin:2em auto 4em;text-align:center}.ModBlogC .bbs-pager .bbs-pagination li{display:none;margin:0 .2em}.ModBlogC .bbs-pager .bbs-pagination li.button{display:inline-block}.ModBlogC .bbs-pager .bbs-pagination a,.ModBlogC .bbs-pager .bbs-pagination span{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:.6em .8em;font-size:1.6rem}.ModBlogC .bbs-pager .bbs-pagination a{border:1px solid #e6e6e6;border-radius:.25em}.ModBlogC .bbs-pager .bbs-pagination .no-touch a:hover{background-color:#f2f2f2}.ModBlogC .bbs-pager .bbs-pagination a:active{-webkit-transform:scale(.9);-moz-transform:scale(.9);-ms-transform:scale(.9);-o-transform:scale(.9);transform:scale(.9)}.ModBlogC .bbs-pager .bbs-pagination a.disabled{color:rgba(46,64,87,.4);pointer-events:none}.ModBlogC .bbs-pager .bbs-pagination a.disabled::after,.ModBlogC .bbs-pager .bbs-pagination a.disabled::before{opacity:.4}.ModBlogC .bbs-pager .bbs-pagination .button:first-of-type a::before{content:'\00ab '}.ModBlogC .bbs-pager .bbs-pagination .button:last-of-type a::after{content:' \00bb'}.ModBlogC .bbs-pager .bbs-pagination .current{background-color:#777;border-color:#777;color:#fff;pointer-events:none}@media only screen and (min-width:768px){.ModBlogC .bbs-pager .bbs-pagination li{display:inline-block}}@media only screen and (min-width:1170px){.ModBlogC .bbs-pager .bbs-pagination{margin:4em auto 8em}}.ModBlogC .supertitle{text-transform:uppercase}.ModBlogC .supertitle span{font-weight:700}.ModBlogC .supertitle:empty{display:none}.ModBlogC .comma:not(:first-child):before{content:", "}.ModBlogC .commands{padding-top:20px} +/* Blog list: stack image above text on small screens */ +@media (max-width: 599px) { + .ModBlogC .bbs-listarticle figure { + float: none; + width: auto; + max-width: 100%; + margin: 8px 0 12px; + } + + .ModBlogC .bbs-listarticle figure img { + display: block; + max-width: 100%; + height: auto; + } + + .ModBlogC .bbs-listarticle, + .ModBlogC .bbs-listarticle .content { + overflow: visible; + } +} \ No newline at end of file From 493b52156595dda2d4d624b57755d6eefd131bc9 Mon Sep 17 00:00:00 2001 From: Trevor Forrester Date: Wed, 15 Jul 2026 17:49:30 +1000 Subject: [PATCH 4/6] Improve mobile responsiveness of default Blog template Improve the default Blog template for mobile devices. - Fix Blog List image layout on narrow screens. - Preserve desktop and tablet layout. - Prevent Blog Article banner image touching the viewport edge. - Restore mobile page-number navigation. - Tested in Chrome, Firefox and Microsoft Edge. --- Server/Blog/Templates/_default/template.css | 83 +++++++++++++++++++-- 1 file changed, 75 insertions(+), 8 deletions(-) diff --git a/Server/Blog/Templates/_default/template.css b/Server/Blog/Templates/_default/template.css index 30ea5e6..4e9c836 100644 --- a/Server/Blog/Templates/_default/template.css +++ b/Server/Blog/Templates/_default/template.css @@ -1,11 +1,21 @@ .ModBlogC .bbs-comments .comment .author .profile,.ModBlogC .bbs-comments .totals{font-size:.9em;color:#aaa}.ModBlogC .bbs-article .content .metadata>div:not(:last-child),.ModBlogC .bbs-listarticle{border-bottom:1px solid #eee}.ModBlogC .bbs-comments{margin-top:30px;padding-top:10px;border-top:1px solid #eee}.ModBlogC .bbs-comments .comment{padding:10px 0}.ModBlogC .bbs-comments .comment .author{padding:6px 0}.ModBlogC .bbs-comments .comment .author>div{display:inline}.ModBlogC .bbs-comments .comment .author .pic img{width:32px;height:32px;border-radius:6px}.ModBlogC .bbs-comments .comment .author .pic{padding-right:10px}.ModBlogC .bbs-comments .comment .content{font-size:1.1em}.ModBlogC .bbs-comments .comment .actions{padding:10px 0;color:#aaa;font-size:.9em}.ModBlogC .bbs-comments .comment .subcomments{padding-left:30px}.ModBlogC .bbs-article .content{height:auto;overflow:hidden}@media only screen and (min-width:600px){.ModBlogC .bbs-article .content .metadata{float:left;width:240px}.ModBlogC .bbs-article .content .body{width:auto;overflow:hidden}}@media only screen and (max-width:599px){.ModBlogC .bbs-article .content .metadata{display:block}}.ModBlogC .bbs-article .content .metadata{line-height:21px}.ModBlogC .bbs-article .content .metadata>div{padding-bottom:20px;margin:0 20px 20px 0}.ModBlogC .bbs-article .content .metadata>div h5{color:#aaa;text-transform:uppercase;font-weight:700}.ModBlogC .bbs-article .content .metadata .sharrre{padding-top:6px}.ModBlogC .bbs-article .content .metadata .sharrre a{padding-right:14px}.ModBlogC .bbs-article .content .metadata .sharrre a i{font-size:1.2em}.ModBlogC .bbs-article .content .metadata .tags a{display:block}.ModBlogC .bbs-article .content .body{padding-top:20px}.ModBlogC .bbs-listarticle{overflow:hidden;padding:20px 0}.ModBlogC .bbs-listarticle h2 a,.ModBlogC .bbs-listarticle h2 a:hover,.ModBlogC .bbs-listarticle h2 a:visited{text-decoration:none}.ModBlogC .bbs-listarticle figure{float:left;margin:8px 40px 0 0;width:264px}.ModBlogC .bbs-listarticle .content{overflow:hidden}.ModBlogC .bbs-listarticle .content .summary,.ModBlogC .bbs-listarticle .content .summary p{font-size:1.1em;line-height:1.5;margin-bottom:12px}.ModBlogC .bbs-listarticle .content .metadata{line-height:18px;margin-left:-8px}.ModBlogC .bbs-listarticle .content .metadata div{display:inline;padding:0 8px;font-size:.9em;color:#aaa}.ModBlogC .bbs-listarticle .content .metadata div:not(:last-child){border-right:1px solid #aaa}.ModBlogC .bbs-listarticle .content .metadata div:empty{display:none}.ModBlogC .bbs-pager{text-align:center}.ModBlogC .bbs-pager .bbs-pagination{width:90%;max-width:768px;margin:2em auto 4em;text-align:center}.ModBlogC .bbs-pager .bbs-pagination li{display:none;margin:0 .2em}.ModBlogC .bbs-pager .bbs-pagination li.button{display:inline-block}.ModBlogC .bbs-pager .bbs-pagination a,.ModBlogC .bbs-pager .bbs-pagination span{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:.6em .8em;font-size:1.6rem}.ModBlogC .bbs-pager .bbs-pagination a{border:1px solid #e6e6e6;border-radius:.25em}.ModBlogC .bbs-pager .bbs-pagination .no-touch a:hover{background-color:#f2f2f2}.ModBlogC .bbs-pager .bbs-pagination a:active{-webkit-transform:scale(.9);-moz-transform:scale(.9);-ms-transform:scale(.9);-o-transform:scale(.9);transform:scale(.9)}.ModBlogC .bbs-pager .bbs-pagination a.disabled{color:rgba(46,64,87,.4);pointer-events:none}.ModBlogC .bbs-pager .bbs-pagination a.disabled::after,.ModBlogC .bbs-pager .bbs-pagination a.disabled::before{opacity:.4}.ModBlogC .bbs-pager .bbs-pagination .button:first-of-type a::before{content:'\00ab '}.ModBlogC .bbs-pager .bbs-pagination .button:last-of-type a::after{content:' \00bb'}.ModBlogC .bbs-pager .bbs-pagination .current{background-color:#777;border-color:#777;color:#fff;pointer-events:none}@media only screen and (min-width:768px){.ModBlogC .bbs-pager .bbs-pagination li{display:inline-block}}@media only screen and (min-width:1170px){.ModBlogC .bbs-pager .bbs-pagination{margin:4em auto 8em}}.ModBlogC .supertitle{text-transform:uppercase}.ModBlogC .supertitle span{font-weight:700}.ModBlogC .supertitle:empty{display:none}.ModBlogC .comma:not(:first-child):before{content:", "}.ModBlogC .commands{padding-top:20px} -/* Blog list: stack image above text on small screens */ -@media (max-width: 599px) { + +/* ========================================================== + DNN 10 Maintenance Improvements + + 2026 + - Blog List mobile layout + - Blog Article banner spacing + - Mobile pager + ========================================================== */ + +/* Blog List: prevent the Chrome narrow-text-column layout */ +@media (max-width: 600px) { .ModBlogC .bbs-listarticle figure { - float: none; - width: auto; - max-width: 100%; - margin: 8px 0 12px; + float: none !important; + width: auto !important; + max-width: 100% !important; + margin: 8px 12px 12px 0 !important; } .ModBlogC .bbs-listarticle figure img { @@ -16,6 +26,63 @@ .ModBlogC .bbs-listarticle, .ModBlogC .bbs-listarticle .content { - overflow: visible; + overflow: visible !important; + } +} + +/* Blog List: preserve the original desktop/tablet layout */ +@media (min-width: 601px) { + .ModBlogC .bbs-listarticle { + display: block !important; + } + + .ModBlogC .bbs-listarticle figure { + float: left !important; + margin: 8px 40px 0 0 !important; + width: 264px !important; + } + + .ModBlogC .bbs-listarticle .content { + overflow: hidden !important; + min-width: 0; + } +} + +/* Blog List: clear the floated image safely */ +.ModBlogC .bbs-listarticle::after { + content: ""; + display: table; + clear: both; +} + +/* Blog Article: keep the optional banner inside the mobile viewport */ +@media (max-width: 599px) { + .ModBlogC .bbs-article > figure { + width: auto; + max-width: calc(100% - 12px); + margin-right: 12px; + } + + .ModBlogC .bbs-article > figure img { + display: block; + width: 100%; + max-width: 100%; + height: auto; + } +} + +/* Blog List: show and wrap page numbers on mobile */ +@media (max-width: 767.98px) { + .ModBlogC .bbs-pager .bbs-pagination li { + display: inline-block !important; + } + + .ModBlogC .bbs-pager .bbs-pagination { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 0.4em; + width: 100%; + margin: 2em auto 5em; } -} \ No newline at end of file +} From e69ea45efc144904ef912ce35b706470c9275134 Mon Sep 17 00:00:00 2001 From: Trevor Forrester Date: Sat, 18 Jul 2026 12:23:23 +1000 Subject: [PATCH 5/6] Improve default Blog template mobile layout Improve the default Blog template on mobile devices. - Fix Blog List image layout on narrow screens. - Preserve the original desktop and tablet layout. - Keep Blog Article banner images inside the viewport. - Restore mobile page-number navigation. - Prevent Blog and Author banners from overlapping administration controls when logged in. - Tested in Chrome, Firefox and Microsoft Edge. --- .../Blog/Templates/_default/BlogBanner.html | 4 +- Server/Blog/Templates/_default/template.css | 44 +++++++++++++++++++ 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/Server/Blog/Templates/_default/BlogBanner.html b/Server/Blog/Templates/_default/BlogBanner.html index e645e20..30b9bad 100644 --- a/Server/Blog/Templates/_default/BlogBanner.html +++ b/Server/Blog/Templates/_default/BlogBanner.html @@ -1,4 +1,4 @@ -
- [resx:Allposts] +
+ [resx:Allposts] Blog: [blog:localizedtitle]
\ No newline at end of file diff --git a/Server/Blog/Templates/_default/template.css b/Server/Blog/Templates/_default/template.css index 4e9c836..3068db0 100644 --- a/Server/Blog/Templates/_default/template.css +++ b/Server/Blog/Templates/_default/template.css @@ -86,3 +86,47 @@ margin: 2em auto 5em; } } +/* Logged-in mobile view: keep Blog and author banners below module controls */ +@media (max-width: 767.98px) { + .ModBlogC .selectbanner, + .ModBlogC .blog-main-content { + clear: both; + width: 100%; + } + + .ModBlogC .selectbanner { + display: block; + box-sizing: border-box; + margin: 16px 0 14px; + padding-top: 50px; + overflow-wrap: anywhere; + } + + .ModBlogC .commands { + clear: both; + float: none; + width: 100%; + margin-bottom: 18px; + } +} +/* Mobile: reduce the gap between the selected Blog and Author banners */ +@media (max-width: 767.98px) { + .ModBlogC .blog-selectbanner + .selectbanner { + margin-top: 2px !important; + padding-top: 0 !important; + } +} + +/* Mobile: give the selected Blog title extra clearance below admin controls */ +@media (max-width: 767.98px) { + .ModBlogC .blog-selectbanner { + clear: both !important; + display: block !important; + width: 100%; + box-sizing: border-box; + margin-top: 28px; + margin-bottom: 0px; + padding-top: 18px; + position: relative; + } +} \ No newline at end of file From d1cb7837fa02a2205b1434977d443b2becf641b1 Mon Sep 17 00:00:00 2001 From: Trevor Forrester Date: Tue, 21 Jul 2026 13:42:57 +1000 Subject: [PATCH 6/6] Delete Server/Blog/Templates/_default/template - Copy.css Unwanted and my mistake during my commit and push to development branch --- .../Templates/_default/template - Copy.css | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 Server/Blog/Templates/_default/template - Copy.css diff --git a/Server/Blog/Templates/_default/template - Copy.css b/Server/Blog/Templates/_default/template - Copy.css deleted file mode 100644 index 3c2bbdb..0000000 --- a/Server/Blog/Templates/_default/template - Copy.css +++ /dev/null @@ -1,21 +0,0 @@ -.ModBlogC .bbs-comments .comment .author .profile,.ModBlogC .bbs-comments .totals{font-size:.9em;color:#aaa}.ModBlogC .bbs-article .content .metadata>div:not(:last-child),.ModBlogC .bbs-listarticle{border-bottom:1px solid #eee}.ModBlogC .bbs-comments{margin-top:30px;padding-top:10px;border-top:1px solid #eee}.ModBlogC .bbs-comments .comment{padding:10px 0}.ModBlogC .bbs-comments .comment .author{padding:6px 0}.ModBlogC .bbs-comments .comment .author>div{display:inline}.ModBlogC .bbs-comments .comment .author .pic img{width:32px;height:32px;border-radius:6px}.ModBlogC .bbs-comments .comment .author .pic{padding-right:10px}.ModBlogC .bbs-comments .comment .content{font-size:1.1em}.ModBlogC .bbs-comments .comment .actions{padding:10px 0;color:#aaa;font-size:.9em}.ModBlogC .bbs-comments .comment .subcomments{padding-left:30px}.ModBlogC .bbs-article .content{height:auto;overflow:hidden}@media only screen and (min-width:600px){.ModBlogC .bbs-article .content .metadata{float:left;width:240px}.ModBlogC .bbs-article .content .body{width:auto;overflow:hidden}}@media only screen and (max-width:599px){.ModBlogC .bbs-article .content .metadata{display:block}}.ModBlogC .bbs-article .content .metadata{line-height:21px}.ModBlogC .bbs-article .content .metadata>div{padding-bottom:20px;margin:0 20px 20px 0}.ModBlogC .bbs-article .content .metadata>div h5{color:#aaa;text-transform:uppercase;font-weight:700}.ModBlogC .bbs-article .content .metadata .sharrre{padding-top:6px}.ModBlogC .bbs-article .content .metadata .sharrre a{padding-right:14px}.ModBlogC .bbs-article .content .metadata .sharrre a i{font-size:1.2em}.ModBlogC .bbs-article .content .metadata .tags a{display:block}.ModBlogC .bbs-article .content .body{padding-top:20px}.ModBlogC .bbs-listarticle{overflow:hidden;padding:20px 0}.ModBlogC .bbs-listarticle h2 a,.ModBlogC .bbs-listarticle h2 a:hover,.ModBlogC .bbs-listarticle h2 a:visited{text-decoration:none}.ModBlogC .bbs-listarticle figure{float:left;margin:8px 40px 0 0;width:264px}.ModBlogC .bbs-listarticle .content{overflow:hidden}.ModBlogC .bbs-listarticle .content .summary,.ModBlogC .bbs-listarticle .content .summary p{font-size:1.1em;line-height:1.5;margin-bottom:12px}.ModBlogC .bbs-listarticle .content .metadata{line-height:18px;margin-left:-8px}.ModBlogC .bbs-listarticle .content .metadata div{display:inline;padding:0 8px;font-size:.9em;color:#aaa}.ModBlogC .bbs-listarticle .content .metadata div:not(:last-child){border-right:1px solid #aaa}.ModBlogC .bbs-listarticle .content .metadata div:empty{display:none}.ModBlogC .bbs-pager{text-align:center}.ModBlogC .bbs-pager .bbs-pagination{width:90%;max-width:768px;margin:2em auto 4em;text-align:center}.ModBlogC .bbs-pager .bbs-pagination li{display:none;margin:0 .2em}.ModBlogC .bbs-pager .bbs-pagination li.button{display:inline-block}.ModBlogC .bbs-pager .bbs-pagination a,.ModBlogC .bbs-pager .bbs-pagination span{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:.6em .8em;font-size:1.6rem}.ModBlogC .bbs-pager .bbs-pagination a{border:1px solid #e6e6e6;border-radius:.25em}.ModBlogC .bbs-pager .bbs-pagination .no-touch a:hover{background-color:#f2f2f2}.ModBlogC .bbs-pager .bbs-pagination a:active{-webkit-transform:scale(.9);-moz-transform:scale(.9);-ms-transform:scale(.9);-o-transform:scale(.9);transform:scale(.9)}.ModBlogC .bbs-pager .bbs-pagination a.disabled{color:rgba(46,64,87,.4);pointer-events:none}.ModBlogC .bbs-pager .bbs-pagination a.disabled::after,.ModBlogC .bbs-pager .bbs-pagination a.disabled::before{opacity:.4}.ModBlogC .bbs-pager .bbs-pagination .button:first-of-type a::before{content:'\00ab '}.ModBlogC .bbs-pager .bbs-pagination .button:last-of-type a::after{content:' \00bb'}.ModBlogC .bbs-pager .bbs-pagination .current{background-color:#777;border-color:#777;color:#fff;pointer-events:none}@media only screen and (min-width:768px){.ModBlogC .bbs-pager .bbs-pagination li{display:inline-block}}@media only screen and (min-width:1170px){.ModBlogC .bbs-pager .bbs-pagination{margin:4em auto 8em}}.ModBlogC .supertitle{text-transform:uppercase}.ModBlogC .supertitle span{font-weight:700}.ModBlogC .supertitle:empty{display:none}.ModBlogC .comma:not(:first-child):before{content:", "}.ModBlogC .commands{padding-top:20px} -/* Blog list: stack image above text on small screens */ -@media (max-width: 600px) { - .ModBlogC .bbs-listarticle figure { - float: none; - width: auto; - max-width: 100%; - margin: 8px 0 12px; - } - - .ModBlogC .bbs-listarticle figure img { - display: block; - max-width: 100%; - height: auto; - } - - .ModBlogC .bbs-listarticle, - .ModBlogC .bbs-listarticle .content { - overflow: visible; - } -} \ No newline at end of file