diff --git a/app/src/main/webapp/themes/basicmobile/weblog.vm b/app/src/main/webapp/themes/basicmobile/weblog.vm index 88504abad5..4ee14ea74d 100644 --- a/app/src/main/webapp/themes/basicmobile/weblog.vm +++ b/app/src/main/webapp/themes/basicmobile/weblog.vm @@ -7,22 +7,15 @@ $model.weblog.name #showAutodiscoveryLinks($model.weblog) #showAnalyticsTrackingCode($model.weblog) - #showMetaDescription() @@ -51,7 +44,7 @@
#includeTemplate($model.weblog "sidebar")
From 7092e9150f3ce48950c46cccd2074897a3f806a1 Mon Sep 17 00:00:00 2001 From: Matt Raible Date: Fri, 25 Sep 2026 12:22:53 -0600 Subject: [PATCH 4/7] Fix the Basic Mobile stylesheet, entry teasers, and weblog script errors The mobile templates now request their stylesheet with ?deviceType=mobile. The server picks a stylesheet rendition from the device cookie or user agent, so a mobile page reached through a ?deviceType=mobile link got the standard stylesheet; jQuery Mobile's own CSS used to hide that. The mobile day template chose between an entry's text and its summary by testing whether the text was empty, so entries without a summary printed a literal $entry.transformedSummary or an empty teaser. It now tests the summary and uses quiet references. roller.js is included with every weblog's comment form, but most themes don't load jQuery, so its form validation block threw "$ is not defined" on those pages. The block now runs only when jQuery Validation is present, which the admin and editor pages still load. --- app/src/main/webapp/theme/scripts/roller.js | 4 +++- app/src/main/webapp/themes/basicmobile/_day-mobile.vm | 6 +++--- app/src/main/webapp/themes/basicmobile/permalink-mobile.vm | 2 +- .../main/webapp/themes/basicmobile/searchresults-mobile.vm | 2 +- app/src/main/webapp/themes/basicmobile/weblog-mobile.vm | 2 +- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/src/main/webapp/theme/scripts/roller.js b/app/src/main/webapp/theme/scripts/roller.js index 066061c3d4..cecaaaddea 100644 --- a/app/src/main/webapp/theme/scripts/roller.js +++ b/app/src/main/webapp/theme/scripts/roller.js @@ -212,7 +212,9 @@ function validateEmail(email) { var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return re.test(email); } -$(document).ready(function () { +// weblog pages include this script with their comment form, and most themes +// do not load jQuery, so validation only runs where jQuery Validation is loaded +window.jQuery && jQuery.validator && jQuery(function () { jQuery("form.validate-form").validate(); // Added method to check valid email address and add a custom error message jQuery.validator.addMethod( diff --git a/app/src/main/webapp/themes/basicmobile/_day-mobile.vm b/app/src/main/webapp/themes/basicmobile/_day-mobile.vm index 95b1701340..6c5362fbb9 100644 --- a/app/src/main/webapp/themes/basicmobile/_day-mobile.vm +++ b/app/src/main/webapp/themes/basicmobile/_day-mobile.vm @@ -22,10 +22,10 @@ #end

- #if($utils.isEmpty($entry.text)) - $entry.transformedText + #if($utils.isEmpty($entry.summary)) + $!entry.transformedText #else - $entry.transformedSummary + $!entry.transformedSummary #end

#if($model.permalink) diff --git a/app/src/main/webapp/themes/basicmobile/permalink-mobile.vm b/app/src/main/webapp/themes/basicmobile/permalink-mobile.vm index 44825261aa..dd0b1f6e8e 100644 --- a/app/src/main/webapp/themes/basicmobile/permalink-mobile.vm +++ b/app/src/main/webapp/themes/basicmobile/permalink-mobile.vm @@ -6,7 +6,7 @@ $model.weblogEntry.title : $model.weblog.name - + #showMetaDescription() #showAnalyticsTrackingCode($model.weblog) diff --git a/app/src/main/webapp/themes/basicmobile/searchresults-mobile.vm b/app/src/main/webapp/themes/basicmobile/searchresults-mobile.vm index 64c5ce235e..2599aad45c 100644 --- a/app/src/main/webapp/themes/basicmobile/searchresults-mobile.vm +++ b/app/src/main/webapp/themes/basicmobile/searchresults-mobile.vm @@ -6,7 +6,7 @@ Search Results for '$model.term' : $model.weblog.name - + diff --git a/app/src/main/webapp/themes/basicmobile/weblog-mobile.vm b/app/src/main/webapp/themes/basicmobile/weblog-mobile.vm index b7fc01113b..2cb9bc3a36 100644 --- a/app/src/main/webapp/themes/basicmobile/weblog-mobile.vm +++ b/app/src/main/webapp/themes/basicmobile/weblog-mobile.vm @@ -8,7 +8,7 @@ #showMetaDescription() #showAnalyticsTrackingCode($model.weblog) - + diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/Entries.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/Entries.jsp index d7897f18e2..3e2fc8d26b 100644 --- a/app/src/main/webapp/WEB-INF/jsps/editor/Entries.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/editor/Entries.jsp @@ -242,7 +242,7 @@ $('#postIdLabel').text(postId); $('#postTitleLabel').text(postTitle); $('#removeId').val(postId); - $('#delete-entry-modal').modal({show: true}); + $('#delete-entry-modal').modal('show'); } // Values come from data-* attributes and are bound via delegated listeners. diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/EntryEdit.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/EntryEdit.jsp index e6bbf24016..e44d63415c 100644 --- a/app/src/main/webapp/WEB-INF/jsps/editor/EntryEdit.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/editor/EntryEdit.jsp @@ -422,7 +422,7 @@ $('#postIdLabel').text(postId); $('#postTitleLabel').text(postTitle); $('#removeId').val(postId); - $('#delete-entry-modal').modal({show: true}); + $('#delete-entry-modal').modal('show'); } // Values come from data-* attributes and are bound via delegated listeners. diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/EntryEditor.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/EntryEditor.jsp index c3c6e38ebf..02e97dc912 100644 --- a/app/src/main/webapp/WEB-INF/jsps/editor/EntryEditor.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/editor/EntryEditor.jsp @@ -191,7 +191,7 @@ $("#mediaFileEditor").attr('src', ''); - $('#mediafile_edit_lightbox').modal({show: true}); + $('#mediafile_edit_lightbox').modal('show'); } function onClose() { diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp index a8641159c0..b9880ad882 100644 --- a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp @@ -350,7 +350,7 @@ $('#edit-subtitle').text(mediaFileName); $('#mediaFileEditor').attr('src', '' + '&mediaFileId=' + mediaFileId); - $('#mediafile_edit_lightbox').modal({show: true}); + $('#mediafile_edit_lightbox').modal('show'); } // Values come from data-* attributes and are bound via delegated listeners. From 0b6e9d1fa838e1f9d462549909ac395a856d9073 Mon Sep 17 00:00:00 2001 From: Matt Raible Date: Sat, 10 Oct 2026 18:26:18 -0600 Subject: [PATCH 6/7] Render label-less entry and blogroll fields with the simple theme The Bootstrap 5 conversion switched the publishing time selects, the date field, the entry body and summary textareas, and the blogroll move-to select from Struts' simple theme to the bootstrap theme. That theme wraps each field in a labelled form row, so these fields rendered as broken rows with empty label columns. They use the simple theme again, as on master, and the publishing time is laid out on one line with fixed-width selects. The move-to select sizes to its longest folder name. --- .../webapp/WEB-INF/jsps/editor/Bookmarks.jsp | 4 ++-- .../webapp/WEB-INF/jsps/editor/EntryEdit.jsp | 18 ++++++++++-------- .../webapp/WEB-INF/jsps/editor/EntryEditor.jsp | 4 ++-- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp index 0af16b84bc..a4707817a4 100644 --- a/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp @@ -183,8 +183,8 @@ We used to call them Bookmarks and Folders, now we call them Blogroll links and cssClass="btn btn-warning" cssStyle="float:left; margin-right: 0.5em" action="bookmarks!move" onclick="onMoveToFolder();return false;"/> <%-- Move-to combo-box --%> - diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/EntryEdit.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/EntryEdit.jsp index e44d63415c..59b6cd8582 100644 --- a/app/src/main/webapp/WEB-INF/jsps/editor/EntryEdit.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/editor/EntryEdit.jsp @@ -201,16 +201,18 @@
- : - : -
- - spacer +
+ : + : + +
-
+ From eacec2f812f663c137ee31b0148c652ae1e35412 Mon Sep 17 00:00:00 2001 From: Matt Raible Date: Sat, 10 Oct 2026 19:02:31 -0600 Subject: [PATCH 7/7] Style the User Edit save and cancel buttons for Bootstrap 5 --- app/src/main/webapp/WEB-INF/jsps/admin/UserEdit.jsp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/webapp/WEB-INF/jsps/admin/UserEdit.jsp b/app/src/main/webapp/WEB-INF/jsps/admin/UserEdit.jsp index 59a86fe625..6c461abd92 100644 --- a/app/src/main/webapp/WEB-INF/jsps/admin/UserEdit.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/admin/UserEdit.jsp @@ -154,15 +154,15 @@
- - - -