You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2016/05/27 22:50:42 UTC
[20/47] roller git commit: Beginnings of a Bootstrap rewrite of the
Roller editor/admin UI,
using Struts-Bootstrap plugin. The main menu and edit weblog page are
essentially complete.
Beginnings of a Bootstrap rewrite of the Roller editor/admin UI, using Struts-Bootstrap plugin.
The main menu and edit weblog page are essentially complete.
Project: http://git-wip-us.apache.org/repos/asf/roller/repo
Commit: http://git-wip-us.apache.org/repos/asf/roller/commit/2da6c3c2
Tree: http://git-wip-us.apache.org/repos/asf/roller/tree/2da6c3c2
Diff: http://git-wip-us.apache.org/repos/asf/roller/diff/2da6c3c2
Branch: refs/heads/bootstrap-ui
Commit: 2da6c3c2e28419f68244e0c362c15be96013d5f9
Parents: 624ad3b
Author: Dave Johnson <sn...@apache.org>
Authored: Mon Dec 21 10:40:29 2015 -0500
Committer: Dave Johnson <sn...@apache.org>
Committed: Mon Dec 21 10:40:29 2015 -0500
----------------------------------------------------------------------
app/pom.xml | 6 +
.../resources/ApplicationResources.properties | 21 +-
app/src/main/webapp/WEB-INF/jsps/core/Login.jsp | 230 +-
.../main/webapp/WEB-INF/jsps/core/MainMenu.jsp | 235 +-
.../WEB-INF/jsps/core/MainMenuSidebar.jsp | 36 +-
.../webapp/WEB-INF/jsps/editor/EntryEdit.jsp | 591 +-
.../webapp/WEB-INF/jsps/editor/EntryEditor.jsp | 76 +-
.../webapp/WEB-INF/jsps/editor/MediaFileAdd.jsp | 1 -
.../webapp/WEB-INF/jsps/taglibs-struts2.jsp | 12 +-
.../webapp/WEB-INF/jsps/tiles/bannerStatus.jsp | 118 +-
.../webapp/WEB-INF/jsps/tiles/head-ajax.jsp | 21 +-
app/src/main/webapp/WEB-INF/jsps/tiles/head.jsp | 21 +-
app/src/main/webapp/WEB-INF/jsps/tiles/menu.jsp | 76 +-
.../WEB-INF/jsps/tiles/tiles-mainmenupage.jsp | 80 +-
.../WEB-INF/jsps/tiles/tiles-simplepage.jsp | 61 +-
.../WEB-INF/jsps/tiles/tiles-tabbedpage.jsp | 82 +-
.../webapp/WEB-INF/jsps/tiles/userStatus.jsp | 38 +
app/src/main/webapp/WEB-INF/tiles.xml | 54 +-
.../css/bootstrap-theme.css | 587 ++
.../css/bootstrap-theme.min.css | 6 +
.../bootstrap-3.3.6-dist/css/bootstrap.css | 6760 ++++++++++++++++++
.../bootstrap-3.3.6-dist/css/bootstrap.min.css | 6 +
.../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes
.../fonts/glyphicons-halflings-regular.svg | 288 +
.../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes
.../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes
.../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes
.../bootstrap-3.3.6-dist/js/bootstrap.js | 2363 ++++++
.../bootstrap-3.3.6-dist/js/bootstrap.min.js | 7 +
.../roller-ui/bootstrap-3.3.6-dist/js/npm.js | 13 +
app/src/main/webapp/roller-ui/styles/roller.css | 821 +--
31 files changed, 11081 insertions(+), 1529 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/roller/blob/2da6c3c2/app/pom.xml
----------------------------------------------------------------------
diff --git a/app/pom.xml b/app/pom.xml
index 7266ad9..9adfed9 100644
--- a/app/pom.xml
+++ b/app/pom.xml
@@ -262,6 +262,12 @@
</dependency>
<dependency>
+ <groupId>com.jgeppert.struts2.bootstrap</groupId>
+ <artifactId>struts2-bootstrap-plugin</artifactId>
+ <version>2.0.3</version>
+ </dependency>
+
+ <dependency>
<groupId>xml-security</groupId>
<artifactId>xmlsec</artifactId>
<version>1.3.0</version>
http://git-wip-us.apache.org/repos/asf/roller/blob/2da6c3c2/app/src/main/resources/ApplicationResources.properties
----------------------------------------------------------------------
diff --git a/app/src/main/resources/ApplicationResources.properties b/app/src/main/resources/ApplicationResources.properties
index 0a2f8c5..2b753ce 100644
--- a/app/src/main/resources/ApplicationResources.properties
+++ b/app/src/main/resources/ApplicationResources.properties
@@ -640,9 +640,9 @@ issued during the upgrade process:
# ----------------------------------------------------------------------- Login
loginPage.title=Welcome to Roller
-loginPage.prompt=Please enter your username and password to login.
-loginPage.openIdPrompt=Please login via OpenID
-loginPage.openIdHybridPrompt=Or, login with your username and password
+loginPage.prompt=Please login
+loginPage.openIdPrompt=Login with OpenID
+loginPage.openIdHybridPrompt=Or with username
loginPage.userName=Username
loginPage.password=Password
loginPage.openID=OpenID username
@@ -707,8 +707,8 @@ macro.weblog.noEntriesForCategory=No entries found for specified category
mainPage.category=Category
mainPage.searchWeblogs=Search for blogs
mainPage.actions=Actions
-mainPage.loggedInAs=logged in as
-mainPage.currentWebsite=editing weblog
+mainPage.loggedInAs=Logged in as
+mainPage.currentWebsite=Editing weblog
mainPage.mainMenu=Main Menu
# ------------------------------------------------------------------ Maintenance
@@ -1493,7 +1493,7 @@ weblogEdit.publishedEntries=Recent Entries
weblogEdit.post=Post to Weblog
weblogEdit.permaLink=Permalink
weblogEdit.published=Published
-weblogEdit.pubTime=Pub Time
+weblogEdit.pubTime=Publishing Time
weblogEdit.save=Save as Draft
weblogEdit.scheduled=Scheduled
weblogEdit.scheduledEntries=Scheduled Entries
@@ -1749,19 +1749,20 @@ activate your user account by clicking the link that is sent to you via e-mail.
# ---------------------------------------------------------------- Your Weblogs
-yourWebsites.title=Main Menu
- yourWebsites.actions=Actions
+yourWebsites.title=Your Weblogs
+yourWebsites.actions=Actions
-yourWebsites.prompt.noBlog=You''ve got a user account, but no weblog. \
+yourWebsites.prompt.noBlog=You have a user account, but no weblog. \
Would you like to
yourWebsites.createOne=create one?
-yourWebsites.prompt.hasBlog=Select a weblog to edit, manage, or configure.
+yourWebsites.prompt.hasBlog=Access your weblogs here or create a new one.
yourWebsites.accept=accept
yourWebsites.decline=decline
yourWebsites.resign=Resign
+yourWebsites.youHave=You have
yourWebsites.permission=Permission
yourWebsites.confirmResignation=Are you sure you wish to resign from weblog [{0}]?
yourWebsites.weblog=Link
http://git-wip-us.apache.org/repos/asf/roller/blob/2da6c3c2/app/src/main/webapp/WEB-INF/jsps/core/Login.jsp
----------------------------------------------------------------------
diff --git a/app/src/main/webapp/WEB-INF/jsps/core/Login.jsp b/app/src/main/webapp/WEB-INF/jsps/core/Login.jsp
index bf9914d..fbb87df 100644
--- a/app/src/main/webapp/WEB-INF/jsps/core/Login.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/core/Login.jsp
@@ -18,150 +18,130 @@
<%-- Body of the login page, invoked from login.jsp --%>
<%@ page import="org.apache.roller.weblogger.config.WebloggerConfig" %>
-<%@ page import="org.apache.roller.weblogger.config.AuthMethod" %>
<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
<%!
-String securityCheckUrl = null;
-boolean cmaEnabled = "CMA".equals(WebloggerConfig.getAuthMethod());
+ String securityCheckUrl = null;
+ boolean cmaEnabled = "CMA".equals( WebloggerConfig.getAuthMethod() );
%>
<%
-if (cmaEnabled) {
- securityCheckUrl = "/j_security_check";
-} else {
- securityCheckUrl = "/roller_j_security_check";
-}
+ if (cmaEnabled) {
+ securityCheckUrl = "/j_security_check";
+ } else {
+ securityCheckUrl = "/roller_j_security_check";
+ }
%>
-<s:if test="authMethod == 'OPENID' || authMethod == 'DB_OPENID'">
-
- <p><s:text name="loginPage.openIdPrompt" /></p>
-
- <form method="post" id="loginOpenIDForm"
- action="/roller/roller_j_openid_security_check"
- onsubmit="saveOpenidIdentifier(this)">
- <!-- action="<c:url value='roller_j_openid_security_check'/>" -->
- <table width="80%">
- <tr>
- <td width="20%" align="right"><s:text name="loginPage.openID" /></td>
- <td width="80%">
- <input type="text" name="openid_identifier" id="openid_identifier" class="f_openid_identifier" size="40" maxlength="255" style="width: 35%"/>
- </td>
- </tr>
- <tr>
- <td width="20%"></td>
- <td width="80%">
- <input type="submit" name="submit" id="submit" value="<s:text name='loginPage.loginOpenID'/>" />
- </td>
- </tr>
- </table>
- </form>
-</s:if>
-
-<s:if test="authMethod != 'OPENID'">
-
- <s:if test="authMethod == 'DB_OPENID'">
- <p><s:text name="loginPage.openIdHybridPrompt" /></p>
+<div class="container">
+
+ <s:if test="authMethod == 'OPENID' || authMethod == 'DB_OPENID'">
+
+ <form method="post" id="loginOpenIDForm" class="form-signin"
+ action="/roller/roller_j_openid_security_check" onsubmit="saveOpenidIdentifier(this)">
+
+ <h2 class="form-signin-heading"><s:text name="loginPage.openIdPrompt"/></h2>
+
+ <label for="openid_identifier" class="sr-only"><s:text name="loginPage.openID"/></label>
+ <input class="form-control" type="text" name="openid_identifier" id="openid_identifier"/>
+
+ <button type="submit" name="submit" id="submit" class="btn btn-lg btn-primary btn-block"
+ value="<s:text name='loginPage.loginOpenID'/>"></button>
+
+ </form>
+
</s:if>
-
- <s:else>
- <p><s:text name="loginPage.prompt" /></p>
- </s:else>
-
- <form method="post" id="loginForm"
- action="<c:url value="<%= securityCheckUrl %>"/>"
- onsubmit="saveUsername(this)">
-
- <table width="80%">
-
- <tr>
- <td width="20%" align="right"><s:text name="loginPage.userName" /></td>
- <td width="80%">
- <input type="text" name="j_username" id="j_username" size="25" />
- </td>
- </tr>
-
- <tr>
- <td width="20%" align="right"><s:text name="loginPage.password" /></td>
- <td width="80%">
- <input type="password" name="j_password" id="j_password" size="20" />
- </td>
- </tr>
+
+ <s:if test="authMethod != 'OPENID'">
+
+
+ <form method="post" id="loginForm" class="form-signin"
+ action="<c:url value="<%= securityCheckUrl %>"/>"
+ onsubmit="saveUsername(this)">
+
+ <s:if test="authMethod == 'DB_OPENID'">
+ <h2 class="form-signin-heading"><s:text name="loginPage.openIdHybridPrompt"/></h2>
+ </s:if>
+
+ <s:else>
+ <h2 class="form-signin-heading"><s:text name="loginPage.prompt"/></h2>
+ </s:else>
+
+ <label for="j_username" class="sr-only"> <s:text name="loginPage.userName"/> </label>
+ <input type="text" class="form-control" name="j_username" id="j_username" placeholder="Username"/>
+
+ <label for="j_password" class="sr-only"> <s:text name="loginPage.password"/> </label>
+ <input type="password" class="form-control" name="j_password" id="j_password" placeholder="Password"/>
<c:if test="${rememberMeEnabled}">
- <tr>
- <td width="20%"></td>
- <td width="80%">
- <input type="checkbox" name="_spring_security_remember_me" id="_spring_security_remember_me" />
- <label for="rememberMe">
- <s:text name="loginPage.rememberMe" />
- </label>
- </td>
- </tr>
+ <label>
+ <input type="checkbox" name="_spring_security_remember_me" id="_spring_security_remember_me"/>
+ <s:text name="loginPage.rememberMe"/>
+ </label>
</c:if>
- <tr>
- <td width="20%"></td>
- <td width="80%">
- <input type="submit" name="login" id="login" value="<s:text name='loginPage.login' />" />
- <input type="reset" name="reset" id="reset" value="<s:text name='loginPage.reset' />"
- onclick="document.getElementById('j_username').focus()" />
- </td>
- </tr>
+ <button class="btn btn-lg btn-primary btn-block" type="submit" name="login" id="login">
+ <s:text name='loginPage.login'/>
+ </button>
- </table>
- </form>
-</s:if>
+ <button class="btn btn-lg btn-primary btn-block" type="reset" name="reset" id="reset"
+ onclick="document.getElementById('j_username').focus()">
+ <s:text name='loginPage.reset'/>
+ </button>
+
+ </form>
+ </s:if>
+
+</div>
<script>
-<s:if test="authMethod == 'OPENID' || authMethod == 'DB_OPENID'">
-function focusToOpenidForm() {
- return (document.getElementById && document.getElementById("j_username") === null) ||
- getCookie("favorite_authentication_method") !== "username";
-}
-
-if (document.getElementById) {
- if (document.getElementById && getCookie("openid_identifier") !== null) {
- document.getElementById("openid_identifier").value = getCookie("openid_identifier");
+ <s:if test="authMethod == 'OPENID' || authMethod == 'DB_OPENID'">
+ function focusToOpenidForm() {
+ return (document.getElementById && document.getElementById("j_username") === null) ||
+ getCookie("favorite_authentication_method") !== "username";
+ }
+
+ if (document.getElementById) {
+ if (document.getElementById && getCookie("openid_identifier") !== null) {
+ document.getElementById("openid_identifier").value = getCookie("openid_identifier");
+ }
+ if (focusToOpenidForm()) {
+ document.getElementById("openid_identifier").focus();
+ }
}
- if (focusToOpenidForm()) {
- document.getElementById("openid_identifier").focus();
+
+ function saveOpenidIdentifier(theForm) {
+ var expires = new Date();
+ expires.setTime(expires.getTime() + 24 * 30 * 60 * 60 * 1000); // sets it for approx 30 days.
+ setCookie("openid_identifier", theForm.openid_identifier.value, expires);
+ setCookie("favorite_authentication_method", "openid");
}
-}
-
-function saveOpenidIdentifier(theForm) {
- var expires = new Date();
- expires.setTime(expires.getTime() + 24 * 30 * 60 * 60 * 1000); // sets it for approx 30 days.
- setCookie("openid_identifier",theForm.openid_identifier.value,expires);
- setCookie("favorite_authentication_method", "openid");
-}
-</s:if>
-
-<s:if test="authMethod != 'OPENID'">
-function focusToUsernamePasswordForm() {
- return (document.getElementById && document.getElementById("openid_identifier") === null) ||
- getCookie("favorite_authentication_method") === "username";
-}
-
-if (document.getElementById) {
- if (getCookie("username") != null) {
- if (document.getElementById) {
- document.getElementById("j_username").value = getCookie("username");
- if (focusToUsernamePasswordForm()) {
- document.getElementById("j_password").focus();
+ </s:if>
+
+ <s:if test="authMethod != 'OPENID'">
+ function focusToUsernamePasswordForm() {
+ return (document.getElementById && document.getElementById("openid_identifier") === null) ||
+ getCookie("favorite_authentication_method") === "username";
+ }
+
+ if (document.getElementById) {
+ if (getCookie("username") != null) {
+ if (document.getElementById) {
+ document.getElementById("j_username").value = getCookie("username");
+ if (focusToUsernamePasswordForm()) {
+ document.getElementById("j_password").focus();
+ }
}
+ } else if (focusToUsernamePasswordForm()) {
+ document.getElementById("j_username").focus();
}
- } else if (focusToUsernamePasswordForm()) {
- document.getElementById("j_username").focus();
}
-}
-
-function saveUsername(theForm) {
- var expires = new Date();
- expires.setTime(expires.getTime() + 24 * 30 * 60 * 60 * 1000); // sets it for approx 30 days.
- setCookie("username",theForm.j_username.value,expires);
- setCookie("favorite_authentication_method", "username");
-}
-</s:if>
+
+ function saveUsername(theForm) {
+ var expires = new Date();
+ expires.setTime(expires.getTime() + 24 * 30 * 60 * 60 * 1000); // sets it for approx 30 days.
+ setCookie("username", theForm.j_username.value, expires);
+ setCookie("favorite_authentication_method", "username");
+ }
+ </s:if>
</script>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/roller/blob/2da6c3c2/app/src/main/webapp/WEB-INF/jsps/core/MainMenu.jsp
----------------------------------------------------------------------
diff --git a/app/src/main/webapp/WEB-INF/jsps/core/MainMenu.jsp b/app/src/main/webapp/WEB-INF/jsps/core/MainMenu.jsp
index 6b10819..6a5b547 100644
--- a/app/src/main/webapp/WEB-INF/jsps/core/MainMenu.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/core/MainMenu.jsp
@@ -59,123 +59,126 @@
<s:iterator id="perms" value="existingPermissions">
- <div class="yourWeblogBox">
-
- <span class="mm_weblog_name"><img src='<c:url value="/images/folder.png"/>' /> <s:property value="#perms.weblog.name" /></span>
-
- <table class="mm_table" width="100%" cellpadding="0" cellspacing="0">
- <tr>
- <td valign="top">
-
- <table cellpadding="0" cellspacing="0">
-
- <tr>
- <td class="mm_subtable_label"><s:text name='yourWebsites.weblog'/></td>
- <td><a href='<s:property value="#perms.weblog.absoluteURL" />'>
- <s:property value="#perms.weblog.absoluteURL" />
- </a></td>
- </tr>
-
- <tr>
- <td class="mm_subtable_label"><s:text name='yourWebsites.permission'/></td>
- <td><s:if test='#perms.hasAction("admin")' >ADMIN</s:if>
- <s:if test='#perms.hasAction("post")' >AUTHOR</s:if>
- <s:if test='#perms.hasAction("edit_draft")' >LIMITED</s:if></td>
- </tr>
-
- <tr>
- <td class="mm_subtable_label"><s:text name='generic.description' /></td>
- <td><s:property value="#perms.weblog.about" escape="false" /></td>
- </tr>
-
- <tr>
- <td class="mm_subtable_label"><s:text name='yourWebsites.userCount' /></td>
- <td><s:property value="#perms.weblog.userCount" /></td>
- </tr>
-
- <tr>
- <td class="mm_subtable_label"><s:text name='yourWebsites.todaysHits' /></td>
- <td><s:property value="#perms.weblog.todaysHits" /></td>
- </tr>
-
- </table>
-
- </td>
-
- <td class="mm_table_actions" width="20%" align="left" >
-
- <s:url action="entryAdd" namespace="/roller-ui/authoring" id="newEntry">
- <s:param name="weblog" value="#perms.weblog.handle" />
- </s:url>
- <img src='<s:url value="/images/table_edit.png"/>' />
- <s:a href="%{newEntry}"><s:text name="yourWebsites.newEntry" /></s:a>
- <br />
-
- <%-- Show Entries link with count for users above LIMITED permission --%>
- <s:if test='!(#perms.hasAction("edit_draft"))'>
- <s:url action="entries" namespace="/roller-ui/authoring" id="editEntries">
- <s:param name="weblog" value="#perms.weblog.handle" />
- </s:url>
- <img src='<s:url value="/images/table_multiple.png"/>' />
- <s:a href="%{editEntries}"><s:text name="yourWebsites.editEntries" /> (<s:property value="#perms.weblog.entryCount" />)</s:a>
- <br />
- </s:if>
-
- <%-- Show Comments link with count for users above LIMITED permission --%>
- <s:if test='!(#perms.hasAction("edit_draft"))'>
- <s:url action="comments" namespace="/roller-ui/authoring" id="manageComments">
- <s:param name="weblog" value="#perms.weblog.handle" />
- </s:url>
- <img src='<s:url value="/images/page_white_edit.png"/>' />
- <s:a href="%{manageComments}"><s:text name="yourWebsites.manageComments" /> (<s:property value="#perms.weblog.commentCount" />)</s:a>
- <br />
- </s:if>
-
- <%-- Only admins get access to theme and config settings --%>
- <s:if test='#perms.hasAction("admin")'>
-
- <%-- And only show theme option if custom themes are enabled --%>
- <s:if test="getProp('themes.customtheme.allowed')">
- <s:if test="#perms.weblog.editorTheme == 'custom'">
- <s:url action="templates" namespace="/roller-ui/authoring" id="weblogTheme">
- <s:param name="weblog" value="#perms.weblog.handle" />
- </s:url>
- </s:if>
- <s:else>
- <s:url action="themeEdit" namespace="/roller-ui/authoring" id="weblogTheme">
- <s:param name="weblog" value="#perms.weblog.handle" />
- </s:url>
- </s:else>
- <img src='<s:url value="/roller-ui/images/layout.png"/>' />
- <a href='<s:property value="weblogTheme" />'>
- <s:text name="yourWebsites.theme" /></a>
- <br />
- </s:if>
-
- <s:url action="weblogConfig" namespace="/roller-ui/authoring" id="manageWeblog">
- <s:param name="weblog" value="#perms.weblog.handle" />
- </s:url>
- <img src='<s:url value="/images/cog.png"/>' />
- <a href='<s:property value="manageWeblog" />'>
- <s:text name="yourWebsites.manage" /></a>
- <br />
- </s:if>
-
- <%-- don't allow last admin to resign from blog --%>
- <s:if test='!(#perms.hasAction("admin") && #perms.weblog.adminUserCount == 1)'>
- <img src='<c:url value="/images/delete.png"/>' />
- <s:url action="memberResign" namespace="/roller-ui/authoring" id="resignWeblog">
- <s:param name="weblog" value="#perms.weblog.handle" />
- </s:url>
- <a href='<s:property value="resignWeblog" />'>
- <s:text name='yourWebsites.resign' />
- </a>
- </s:if>
-
- </td>
- </tr>
- </table>
+ <div class="well yourWeblogBox">
+
+ <h3 class="mm_weblog_name">
+ <span class="glyphicon glyphicon-folder-open" aria-hidden="true"></span>
+ <s:property value="#perms.weblog.name" />
+ </h3>
+
+ <p> <a href='<s:property value="#perms.weblog.absoluteURL" />'>
+ <s:property value="#perms.weblog.absoluteURL" /></a></p>
+
+ <p><s:property value="#perms.weblog.about" escape="false" /></p>
+ <p>You have
+ <s:if test='#perms.hasAction("admin")'>ADMIN</s:if>
+ <s:if test='#perms.hasAction("post")'>AUTHOR</s:if>
+ <s:if test='#perms.hasAction("edit_draft")'>LIMITED</s:if>
+ <s:text name='yourWebsites.permission'/></p>
+
+ <div class="btn-group" role="group" aria-label="...">
+
+ <%-- New entry button --%>
+ <button type="button" class="btn btn-default">
+ <s:url action="entryAdd" namespace="/roller-ui/authoring" id="newEntry">
+ <s:param name="weblog" value="#perms.weblog.handle"/>
+ </s:url>
+ <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
+ <s:a href="%{newEntry}"><s:text name="yourWebsites.newEntry"/></s:a>
+ </button>
+
+ <s:if test='!(#perms.hasAction("edit_draft"))'>
+
+ <%-- Show Entries button with count for users above LIMITED permission --%>
+ <button type="button" class="btn btn-default">
+ <s:url action="entries" namespace="/roller-ui/authoring" id="editEntries">
+ <s:param name="weblog" value="#perms.weblog.handle"/>
+ </s:url>
+ <span class="glyphicon glyphicon-list" aria-hidden="true"></span>
+ <s:a href="%{editEntries}"><s:text name="yourWebsites.editEntries"/></s:a>
+ <span class="badge"><s:property value="#perms.weblog.entryCount"/></span>
+ </button>
+
+ </s:if>
+
+ <s:if test='!(#perms.hasAction("edit_draft"))'>
+
+ <%-- Show Comments button with count for users above LIMITED permission --%>
+ <button type="button" class="btn btn-default">
+ <s:url action="comments" namespace="/roller-ui/authoring" id="manageComments">
+ <s:param name="weblog" value="#perms.weblog.handle"/>
+ </s:url>
+ <span class="glyphicon glyphicon-comment" aria-hidden="true"></span>
+ <s:a href="%{manageComments}"><s:text name="yourWebsites.manageComments"/></s:a>
+ <span class="badge"><s:property value="#perms.weblog.commentCount"/></span>
+ </button>
+
+ </s:if>
+
+
+ <%-- Only admins get access to theme and config settings --%>
+ <s:if test='#perms.hasAction("admin")'>
+
+ <%-- And only show theme option if custom themes are enabled --%>
+ <s:if test="getProp('themes.customtheme.allowed')">
+
+ <s:if test="#perms.weblog.editorTheme == 'custom'">
+
+ <%-- Templates button --%>
+ <button type="button" class="btn btn-default">
+ <s:url action="templates" namespace="/roller-ui/authoring" id="weblogTheme">
+ <s:param name="weblog" value="#perms.weblog.handle"/>
+ </s:url>
+ </button>
+
+ </s:if>
+ <s:else>
+
+ <%-- Theme edit button --%>
+ <button type="button" class="btn btn-default">
+ <s:url action="themeEdit" namespace="/roller-ui/authoring" id="weblogTheme">
+ <s:param name="weblog" value="#perms.weblog.handle"/>
+ </s:url>
+ <span class="glyphicon glyphicon-eye-close" aria-hidden="true"></span>
+ <a href='<s:property value="weblogTheme" />'>
+ <s:text name="yourWebsites.theme"/></a>
+ </button>
+
+ </s:else>
+
+ </s:if>
+
+
+ <%-- Resign button --%>
+ <button type="button" class="btn btn-default">
+ <s:url action="weblogConfig" namespace="/roller-ui/authoring" id="manageWeblog">
+ <s:param name="weblog" value="#perms.weblog.handle"/>
+ </s:url>
+ <span class="glyphicon glyphicon-cog" aria-hidden="true"></span>
+ <a href='<s:property value="manageWeblog" />'>
+ <s:text name="yourWebsites.manage"/></a>
+ </button>
+
+ </s:if>
+
+ <%-- don't allow last admin to resign from blog --%>
+ <s:if test='!(#perms.hasAction("admin") && #perms.weblog.adminUserCount == 1)'>
+
+ <button type="button" class="btn btn-default">
+ <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
+ <s:url action="memberResign" namespace="/roller-ui/authoring" id="resignWeblog">
+ <s:param name="weblog" value="#perms.weblog.handle"/>
+ </s:url>
+ <a href='<s:property value="resignWeblog" />'>
+ <s:text name='yourWebsites.resign'/>
+ </a>
+ </button>
+
+ </s:if>
+
+ </div>
+
</div>
</s:iterator>
http://git-wip-us.apache.org/repos/asf/roller/blob/2da6c3c2/app/src/main/webapp/WEB-INF/jsps/core/MainMenuSidebar.jsp
----------------------------------------------------------------------
diff --git a/app/src/main/webapp/WEB-INF/jsps/core/MainMenuSidebar.jsp b/app/src/main/webapp/WEB-INF/jsps/core/MainMenuSidebar.jsp
index 4aa6ef9..ba13272 100644
--- a/app/src/main/webapp/WEB-INF/jsps/core/MainMenuSidebar.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/core/MainMenuSidebar.jsp
@@ -22,29 +22,47 @@
<div class="menu-tl">
<div class="sidebarInner">
- <h3><s:text name="yourWebsites.actions" /></h3>
+ <%--
+ <h4><s:text name="yourWebsites.actions" /></h4>
<hr size="1" noshade="noshade" />
-
- <h3><a href="<s:url action="profile"/>"><s:text name="yourWebsites.editProfile" /></a></h3>
+ --%>
+
+ <%-- Edit profile --%>
+
+ <h4><span class="glyphicon glyphicon-user" aria-hidden="true"></span>
+ <a href="<s:url action="profile"/>"><s:text name="yourWebsites.editProfile" /></a></h4>
<p><s:text name="yourWebsites.editProfile.desc" /></p>
+ <%-- Edit profile --%>
+
<s:if test="getBooleanProp('webservices.enableAtomPub') && getProp('webservices.atomPubAuth') == 'oauth'">
- <h3><a href="<s:url action="oauthKeys" />"><s:text name="yourWebsites.oauthKeys" /></a></h3>
+ <h4><span class="glyphicon glyphicon-lock" aria-hidden="true"></span>
+ <a href="<s:url action="oauthKeys" />"><s:text name="yourWebsites.oauthKeys" /></a></h4>
<p><s:text name="yourWebsites.oauthKeys.desc" /></p>
</s:if>
+ <%-- Create weblog --%>
+
<s:if test="getBooleanProp('site.allowUserWeblogCreation') && (getBooleanProp('groupblogging.enabled') || (existingPermissions.isEmpty && pendingPermissions.isEmpty))">
- <h3><a href="<s:url action="createWeblog" />"><s:text name="yourWebsites.createWeblog" /></a></h3>
+ <h4><span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
+ <a href="<s:url action="createWeblog" />"><s:text name="yourWebsites.createWeblog" /></a></h4>
<p><s:text name="yourWebsites.createWeblog.desc" /></p>
</s:if>
- <s:if test="userIsAdmin">
- <h3><a href="<s:url action="globalConfig" namespace="/roller-ui/admin" />"><s:text name="yourWebsites.globalAdmin" /></a></h3>
+ <s:if test="userIsAdmin">
+
+ <%-- Roller settings --%>
+
+ <h4><span class="glyphicon glyphicon-wrench" aria-hidden="true"></span>
+ <a href="<s:url action="globalConfig" namespace="/roller-ui/admin" />"><s:text name="yourWebsites.globalAdmin" /></a></h4>
<p><s:text name="yourWebsites.globalAdmin.desc" /></p>
+
+ <%-- Planet settings --%>
- <s:if test="getBooleanProp('planet.aggregator.enabled')">
- <h3><a href="<s:url action="planetConfig" namespace="/roller-ui/admin" />"><s:text name="yourWebsites.planetAdmin" /></a></h3>
+ <s:if test="getBooleanProp('planet.aggregator.enabled')">
+ <h4><span class="glyphicon glyphicon-globe" aria-hidden="true"></span>
+ <a href="<s:url action="planetConfig" namespace="/roller-ui/admin" />"><s:text name="yourWebsites.planetAdmin" /></a></h4>
<p><s:text name="yourWebsites.planetAdmin.desc" /></p>
</s:if>
</s:if>
http://git-wip-us.apache.org/repos/asf/roller/blob/2da6c3c2/app/src/main/webapp/WEB-INF/jsps/editor/EntryEdit.jsp
----------------------------------------------------------------------
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 45c5224..1a54a2f 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/EntryEdit.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/EntryEdit.jsp
@@ -17,16 +17,16 @@
--%>
<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
-<link rel="stylesheet" media="all" href='<s:url value="/roller-ui/jquery-ui-1.11.0/jquery-ui.min.css"/>' />
+<link rel="stylesheet" media="all" href='<s:url value="/roller-ui/jquery-ui-1.11.0/jquery-ui.min.css"/>'/>
<script src="<s:url value="/roller-ui/scripts/jquery-2.1.1.min.js" />"></script>
<script src='<s:url value="/roller-ui/jquery-ui-1.11.0/jquery-ui.min.js"/>'></script>
<style>
-#tagAutoCompleteWrapper {
- width:40em; /* set width here or else widget will expand to fit its container */
- padding-bottom:2em;
-}
+ #tagAutoCompleteWrapper {
+ width: 40em; /* set width here or else widget will expand to fit its container */
+ padding-bottom: 2em;
+ }
</style>
<%-- Titling, processing actions different between entry add and edit --%>
@@ -40,325 +40,358 @@
</s:else>
<p class="subtitle">
- <s:text name="%{#subtitleKey}" >
- <s:param value="actionWeblog.handle" />
+ <s:text name="%{#subtitleKey}">
+ <s:param value="actionWeblog.handle"/>
</s:text>
</p>
-<s:form id="entry">
- <s:hidden name="salt" />
- <s:hidden name="weblog" />
- <s:hidden name="bean.status" />
+<s:form id="entry" theme="bootstrap" cssClass="form-horizontal">
+ <s:hidden name="salt"/>
+ <s:hidden name="weblog"/>
+ <s:hidden name="bean.status"/>
<s:if test="actionName == 'entryEdit'">
- <s:hidden name="bean.id" />
+ <s:hidden name="bean.id"/>
</s:if>
<%-- ================================================================== --%>
<%-- Title, category, dates and other metadata --%>
- <table class="entryEditTable" cellpadding="0" cellspacing="0" style="width:100%">
-
- <tr>
- <td class="entryEditFormLabel">
- <label for="title"><s:text name="weblogEdit.title" /></label>
- </td>
- <td>
- <s:textfield name="bean.title" size="70" maxlength="255" tabindex="1" style="width:60%"/>
- </td>
- </tr>
-
- <tr>
- <td class="entryEditFormLabel">
- <label for="status"><s:text name="weblogEdit.status" /></label>
- </td>
- <td>
- <s:if test="bean.published">
- <span style="color:green; font-weight:bold">
- <s:text name="weblogEdit.published" />
- (<s:text name="weblogEdit.updateTime" />
- <s:date name="entry.updateTime" />)
- </span>
- </s:if>
- <s:elseif test="bean.draft">
- <span style="color:orange; font-weight:bold">
- <s:text name="weblogEdit.draft" />
- (<s:text name="weblogEdit.updateTime" />
- <s:date name="entry.updateTime" />)
- </span>
- </s:elseif>
- <s:elseif test="bean.pending">
- <span style="color:orange; font-weight:bold">
- <s:text name="weblogEdit.pending" />
- (<s:text name="weblogEdit.updateTime" />
- <s:date name="entry.updateTime" />)
- </span>
- </s:elseif>
- <s:elseif test="bean.scheduled">
- <span style="color:orange; font-weight:bold">
- <s:text name="weblogEdit.scheduled" />
- (<s:text name="weblogEdit.updateTime" />
- <s:date name="entry.updateTime" />)
- </span>
- </s:elseif>
- <s:else>
- <span style="color:red; font-weight:bold"><s:text name="weblogEdit.unsaved" /></span>
- </s:else>
- </td>
- </tr>
+ <%-- title --%>
+ <s:textfield label="%{getText('weblogEdit.title')}" name="bean.title" maxlength="255" tabindex="1"/>
+ <%-- status --%>
+ <div class="form-group">
+ <label class="col-sm-3 control-label" for="weblogEdit.status"><s:text name="weblogEdit.status"/></label>
- <s:if test="actionName == 'entryEdit'">
- <tr>
- <td class="entryEditFormLabel">
- <label for="permalink"><s:text name="weblogEdit.permaLink" /></label>
- </td>
- <td>
- <s:if test="bean.published">
- <a id="entry_bean_permalink" href='<s:property value="entry.permalink" />'><s:property value="entry.permalink" /></a>
- <img src='<s:url value="/images/launch-link.png"/>' />
- </s:if>
- <s:else>
- <s:property value="entry.permalink" />
- </s:else>
- </td>
- </tr>
- </s:if>
+ <div class="col-sm-9 controls">
+ <s:if test="bean.published">
+ <span class="label label-success">
+ <s:text name="weblogEdit.published"/>
+ (<s:text name="weblogEdit.updateTime"/>
+ <s:date name="entry.updateTime"/>)
+ </span>
+ </s:if>
+ <s:elseif test="bean.draft">
+ <span class="label label-info">
+ <s:text name="weblogEdit.draft"/>
+ (<s:text name="weblogEdit.updateTime"/>
+ <s:date name="entry.updateTime"/>)
+ </span>
+ </s:elseif>
+ <s:elseif test="bean.pending">
+ <span class="label label-warning">
+ <s:text name="weblogEdit.pending"/>
+ (<s:text name="weblogEdit.updateTime"/>
+ <s:date name="entry.updateTime"/>)
+ </span>
+ </s:elseif>
+ <s:elseif test="bean.scheduled">
+ <span class="label label-info">
+ <s:text name="weblogEdit.scheduled"/>
+ (<s:text name="weblogEdit.updateTime"/>
+ <s:date name="entry.updateTime"/>)
+ </span>
+ </s:elseif>
+ <s:else>
+ <span class="label label-danger"><s:text name="weblogEdit.unsaved"/></span>
+ </s:else>
+ </div>
- <tr>
- <td class="entryEditFormLabel">
- <label for="categoryId"><s:text name="weblogEdit.category" /></label>
- </td>
- <td>
- <s:select name="bean.categoryId" list="categories" listKey="id" listValue="name" size="1" />
- </td>
- </tr>
-
- <tr>
- <td class="entryEditFormLabel">
- <label for="title"><s:text name="weblogEdit.tags" /></label>
- </td>
- <td>
- <s:textfield id="tagAutoComplete" cssClass="entryEditTags" name="bean.tagsAsString" size="70" maxlength="255" tabindex="3" style="width:30%"/>
- </td>
- </tr>
-
- <s:if test="actionWeblog.enableMultiLang">
- <tr>
- <td class="entryEditFormLabel">
- <label for="locale"><s:text name="weblogEdit.locale" /></label>
- </td>
- <td>
- <s:select name="bean.locale" size="1" list="localesList" listValue="displayName" />
- </td>
- </tr>
- </table>
- </s:if>
- <s:else>
- </table>
- <s:hidden name="bean.locale"/>
- </s:else>
+ </div>
+
+ <%-- permalink --%>
+ <s:if test="actionName == 'entryEdit'">
+ <div class="form-group">
+ <label for="entry_bean_permalink"><s:text name="weblogEdit.permaLink"/></label>
+ <s:if test="bean.published">
+ <a id="entry_bean_permalink" href='<s:property value="entry.permalink" />'>
+ <s:property value="entry.permalink"/>
+ </a>
+ <img src='<s:url value="/images/launch-link.png"/>'/>
+ </s:if>
+ <s:else>
+ <s:property value="entry.permalink"/>
+ </s:else>
+ </div>
+ </s:if>
+ <%-- tags --%>
+ <s:textfield label="%{getText('weblogEdit.tags')}" id="tagAutoComplete" name="bean.tagsAsString"
+ maxlength="255" tabindex="3"/>
- <%-- ================================================================== --%>
- <%-- Weblog editor --%>
+ <%-- category --%>
+ <s:select label="%{getText('weblogEdit.category')}" name="bean.categoryId"
+ list="categories" listKey="id" listValue="name"/>
- <s:include value="%{editor.jspPage}" />
+ <s:if test="actionWeblog.enableMultiLang">
+ <s:select label="%{getText('weblogEdit.locale')}" name="bean.locale" size="1"
+ list="localesList" listValue="displayName"/>
+ </s:if>
- <br />
+ <s:else>
+ <s:hidden name="bean.locale"/>
+ </s:else>
- <%-- ================================================================== --%>
- <%-- plugin chooser --%>
- <s:if test="!entryPlugins.isEmpty">
- <div id="pluginControlToggle" class="controlToggle">
- <span id="ipluginControl">+</span>
- <a class="controlToggle" onclick="javascript:toggleControl('pluginControlToggle','pluginControl')">
- <s:text name="weblogEdit.pluginsToApply" /></a>
- </div>
- <div id="pluginControl" class="miscControl" style="display:none">
- <s:checkboxlist theme="roller" name="bean.plugins" list="entryPlugins" listKey="name" listValue="name" />
- </div>
- </s:if>
+ <div class="panel-group" id="accordion">
+ <%-- Weblog editor --%>
- <%-- ================================================================== --%>
- <%-- advanced settings --%>
+ <s:include value="%{editor.jspPage}"/>
+
+ <%-- Plugins --%>
+
+ <s:if test="!entryPlugins.isEmpty">
+
+ <div class="panel panel-default" id="panel-plugins">
+ <div class="panel-heading">
+
+ <h4 class="panel-title">
+ <a aria-expanded="false"
+ data-toggle="collapse" data-target="#collapsePlugins" href="#collapsePlugins">
+ <s:text name="weblogEdit.pluginsToApply"/> </a>
+ </h4>
+
+ </div>
+ <div id="collapsePlugins" class="panel-collapse collapse in">
+ <div class="panel-body">
+
+ <s:checkboxlist name="bean.plugins" list="entryPlugins" listKey="name" listValue="name"/>
+
+ </div>
+ </div>
+ </div>
- <div id="miscControlToggle" class="controlToggle">
- <span id="imiscControl">+</span>
- <a class="controlToggle" onclick="javascript:toggleControl('miscControlToggle','miscControl')">
- <s:text name="weblogEdit.miscSettings" /></a>
- </div>
- <div id="miscControl" class="miscControl" style="display:none">
-
- <label for="link"><s:text name="weblogEdit.pubTime" /></label>
- <div>
- <s:select name="bean.hours" list="hoursList" />
- :
- <s:select name="bean.minutes" list="minutesList" />
- :
- <s:select name="bean.seconds" list="secondsList" />
-
- <script>
- $(function() {
- $( "#entry_bean_dateString" ).datepicker({
- showOn: "button",
- buttonImage: "../../images/calendar.png",
- buttonImageOnly: true,
- changeMonth: true,
- changeYear: true
- });
- });
- </script>
- <s:textfield name="bean.dateString" size="12" readonly="true"/>
- <s:property value="actionWeblog.timeZone" />
- </div>
- <br />
-
- <s:checkbox name="bean.allowComments" />
- <s:text name="weblogEdit.allowComments" />
- <s:text name="weblogEdit.commentDays" />
- <s:select name="bean.commentDays" list="commentDaysList" size="1" listKey="key" listValue="value" />
- <br />
-
- <s:checkbox name="bean.rightToLeft" />
- <s:text name="weblogEdit.rightToLeft" />
- <br />
-
- <s:if test="authenticatedUser.hasGlobalPermission('admin')">
- <s:checkbox name="bean.pinnedToMain" />
- <s:text name="weblogEdit.pinnedToMain" /><tags:help key="weblogEdit.pinnedToMain.tooltip"/>
- <br />
</s:if>
- <br />
-
- <table>
- <tr>
- <td><s:text name="weblogEdit.searchDescription" />:<tags:help key="weblogEdit.searchDescription.tooltip"/></td>
- <td><s:textfield name="bean.searchDescription" size="60" maxlength="255" style="width:100%"/> </td>
- </tr>
- <tr>
- <td><s:text name="weblogEdit.enclosureURL" />:<tags:help key="weblogEdit.enclosureURL.tooltip"/></td>
- <td><s:textfield name="bean.enclosureURL" size="40" maxlength="255" style="width:100%"/></td>
- </tr>
- <s:if test="actionName == 'entryEdit'">
- <tr>
- <td></td>
- <td><s:if test="bean.enclosureURL != null">
- <s:text name="weblogEdit.enclosureType" />: <s:property value='entry.findEntryAttribute("att_mediacast_type")' />
- <s:text name="weblogEdit.enclosureLength" />: <s:property value='entry.findEntryAttribute("att_mediacast_length")' />
- </s:if></td>
- </tr>
- </s:if>
- </table>
- </div>
+ <%-- Advanced settings --%>
+
+ <div class="panel panel-default" id="panel-settings">
+ <div class="panel-heading">
+
+ <h4 class="panel-title">
+ <a class="accordion-toggle" aria-expanded="false"
+ data-toggle="collapse" data-parent="#collapseAdvanced" href="#collapseAdvanced">
+ <s:text name="weblogEdit.miscSettings"/> </a>
+ </h4>
+
+ </div>
+ <div id="collapseAdvanced" class="panel-collapse collapse in">
+ <div class="panel-body">
+
+ <div class="form-group">
+
+ <label class="col-sm-3 control-label"><s:text name="weblogEdit.pubTime"/></label>
+
+ <div class="col-sm-9 controls">
+
+ <s:select theme="simple" name="bean.hours" list="hoursList"/> :
+ <s:select theme="simple" name="bean.minutes" list="minutesList"/> :
+ <s:select theme="simple" name="bean.seconds" list="secondsList"/>
+
+ <script>
+ $(function () {
+ $("#entry_bean_dateString").datepicker({
+ showOn: "button",
+ buttonImage: "../../images/calendar.png",
+ buttonImageOnly: true,
+ changeMonth: true,
+ changeYear: true
+ });
+ });
+ </script>
+
+ <s:textfield theme="simple" name="bean.dateString" readonly="true"/>
+
+ <s:property value="actionWeblog.timeZone"/>
+
+ </div>
+
+ </div>
+
+
+ <%--
+ <s:checkbox label="%{getText('weblogEdit.allowComments')}" name="bean.allowComments"/>
+ <s:select label="%{getText('weblogEdit.commentDays')}" name="bean.commentDays"
+ list="commentDaysList" listKey="key" listValue="value"/>
+ --%>
+
+ <%-- use raw HTML tags here, Struts-Bootstrap does not provide this --%>
+ <div class="form-group">
+
+ <label class="col-sm-3 control-label" for="entry_bean_allowComments">
+ <s:text name="weblogEdit.allowComments" />
+ </label>
+
+ <div class="col-sm-9 controls">
+
+ <div class="input-group">
+
+ <span class="input-group-addon">
+ <input type="checkbox" name="bean.allowComments"
+ value="true" checked="checked" id="entry_bean_allowComments"/>
+ <input type="hidden" id="__checkbox_entry_bean_allowComments"
+ name="__checkbox_bean.allowComments" value="true"/>
+ </span>
+
+ <select name="bean.commentDays" id="entry_bean_commentDays" class="form-control">
+ <option value="0" selected="selected">unlimited days</option>
+ <option value="3">3 days</option>
+ <option value="7">7 days</option>
+ <option value="14">14 days</option>
+ <option value="30">30 days</option>
+ <option value="60">60 days</option>
+ <option value="90">90 days</option>
+ </select>
+
+ </div> <!-- /input-group -->
+
+ </div>
+
+ </div> <!-- /form-group -->
+
+ <s:checkbox label="%{getText('weblogEdit.rightToLeft')}" name="bean.rightToLeft"/>
+
+ <%-- global admin can pin items to front page weblog --%>
+ <s:if test="authenticatedUser.hasGlobalPermission('admin')">
+ <s:checkbox label="%{getText('weblogEdit.pinnedToMain')}" name="bean.pinnedToMain"
+ tooltop="%{getText('weblogEdit.pinnedToMain.tooltip')}" />
+ </s:if>
+
+ <s:textfield label="%{getText('weblogEdit.searchDescription')}" name="bean.searchDescription"
+ maxlength="255" tooltip="%{getText('weblogEdit.searchDescription.tooltip')}" />
+
+ <s:textfield label="%{getText('weblogEdit.enclosureURL')}" name="bean.enclosureURL"
+ maxlength="255" tooltip="%{getText('weblogEdit.enclosureURL.tooltip')}" />
+
+ <s:if test="actionName == 'entryEdit'">
+ <s:if test="bean.enclosureURL != null">
+ <s:text name="weblogEdit.enclosureType"/>:
+ <s:property value='entry.findEntryAttribute("att_mediacast_type")'/>
+ <s:text name="weblogEdit.enclosureLength"/>:
+ <s:property value='entry.findEntryAttribute("att_mediacast_length")'/>
+ </s:if>
+ </s:if>
+
+ </div>
+
+ </div>
+
+ </div>
+
+ </div>
+
<%-- ================================================================== --%>
- <%-- the button box --%>
-
- <br>
- <div class="control">
- <span style="padding-left:7px">
- <s:submit value="%{getText('weblogEdit.save')}" action="%{#mainAction}!saveDraft" />
- <s:if test="actionName == 'entryEdit'">
- <input type="button" name="fullPreview"
- value="<s:text name='weblogEdit.fullPreviewMode' />"
- onclick="fullPreviewMode()" />
- </s:if>
- <s:if test="userAnAuthor">
- <s:submit value="%{getText('weblogEdit.post')}" action="%{#mainAction}!publish"/>
- </s:if>
- <s:else>
- <s:submit value="%{getText('weblogEdit.submitForReview')}" action="%{#mainAction}!publish"/>
- </s:else>
- </span>
+ <%-- The button box --%>
+ <%-- save draft --%>
+ <s:submit cssClass="btn btn-default"
+ value="%{getText('weblogEdit.save')}"
+ action="%{#mainAction}!saveDraft"/>
+
+ <s:if test="actionName == 'entryEdit'">
+
+ <%-- preview mode --%>
+ <input class="btn btn-default" type="button" name="fullPreview"
+ value="<s:text name='weblogEdit.fullPreviewMode' />"
+ onclick="fullPreviewMode()"/>
+ </s:if>
+ <s:if test="userAnAuthor">
+
+ <%-- publish --%>
+ <s:submit cssClass="btn btn-default"
+ value="%{getText('weblogEdit.post')}"
+ action="%{#mainAction}!publish"/>
+ </s:if>
+ <s:else>
+
+ <%-- submit for review --%>
+ <s:submit cssClass="btn btn-default"
+ value="%{getText('weblogEdit.submitForReview')}"
+ action="%{#mainAction}!publish" />
+ </s:else>
+
+ <%-- delete --%>
<s:if test="actionName == 'entryEdit'">
<span style="float:right">
<s:url var="removeUrl" action="entryRemove">
- <s:param name="weblog" value="actionWeblog.handle" />
- <s:param name="removeId" value="%{entry.id}" />
+ <s:param name="weblog" value="actionWeblog.handle"/>
+ <s:param name="removeId" value="%{entry.id}"/>
</s:url>
- <input type="button" value="<s:text name='weblogEdit.deleteEntry'/>" onclick="window.location='<s:property value="removeUrl" escape="false" />'" />
+ <input class="btn btn-default" type="button"
+ value="<s:text name='weblogEdit.deleteEntry'/>"
+ onclick="window.location='<s:property value="removeUrl" escape="false"/>'"/>
</span>
</s:if>
- </div>
-
+
<%-- ================================================================== --%>
<%-- Trackback control --%>
+
<s:if test="actionName == 'entryEdit' && userAnAuthor">
- <br />
- <h2><s:text name="weblogEdit.trackback" /></h2>
- <s:text name="weblogEdit.trackbackUrl" />
- <br />
+ <br/>
+ <h2><s:text name="weblogEdit.trackback"/></h2>
+ <s:text name="weblogEdit.trackbackUrl"/>
+ <br/>
<s:textfield name="trackbackUrl" size="80" maxlength="255" style="width:35%"/>
- <s:submit value="%{getText('weblogEdit.sendTrackback')}" action="entryEdit!trackback" />
+ <s:submit value="%{getText('weblogEdit.sendTrackback')}" action="entryEdit!trackback"/>
</s:if>
</s:form>
<script>
-function fullPreviewMode() {
- window.open('<s:property value="previewURL" />');
-}
-
-//Get cookie to determine state of control
-if (getCookie('control_miscControl') != null) {
- if(getCookie('control_miscControl') == 'true'){
- toggle('miscControl');
- togglePlusMinus('imiscControl');
- }
-}
-if (getCookie('control_pluginControl') != null) {
- if(getCookie('control_pluginControl') == 'true'){
- toggle('pluginControl');
- togglePlusMinus('ipluginControl');
+ function fullPreviewMode() {
+ window.open('<s:property value="previewURL" />');
}
-}
-$(function() {
-function split( val ) {
- return val.split( / \s*/ );
-}
-function extractLast( term ) {
- return split( term ).pop();
-}
-$( "#tagAutoComplete" )
- // don't navigate away from the field on tab when selecting an item
- .bind( "keydown", function( event ) {
- if ( event.keyCode === $.ui.keyCode.TAB && $( this ).autocomplete( "instance" ).menu.active ) {
- event.preventDefault();
+
+ $(function () {
+ function split(val) {
+ return val.split(/ \s*/);
}
- })
- .autocomplete({
- delay: 500,
- source: function(request, response) {
- $.getJSON("<s:property value='jsonAutocompleteUrl' />", { format: 'json', prefix: extractLast( request.term ) },
- function(data) {
- response($.map(data.tagcounts, function (dataValue) {
- return {
- value: dataValue.tag
- };
- }))
- })
- },
- focus: function() {
- // prevent value inserted on focus
- return false;
- },
- select: function( event, ui ) {
- var terms = split( this.value );
- // remove the current input
- terms.pop();
- // add the selected item
- terms.push( ui.item.value );
- // add placeholder to get the space at the end
- terms.push( "" );
- this.value = terms.join( " " );
- return false;
+
+ function extractLast(term) {
+ return split(term).pop();
}
+
+ $("#tagAutoComplete")
+ // don't navigate away from the field on tab when selecting an item
+ .bind("keydown", function (event) {
+ if (event.keyCode === $.ui.keyCode.TAB && $(this).autocomplete("instance").menu.active) {
+ event.preventDefault();
+ }
+ })
+ .autocomplete({
+ delay: 500,
+ source: function (request, response) {
+ $.getJSON("<s:property value='jsonAutocompleteUrl' />", {
+ format: 'json',
+ prefix: extractLast(request.term)
+ },
+ function (data) {
+ response($.map(data.tagcounts, function (dataValue) {
+ return {
+ value: dataValue.tag
+ };
+ }))
+ })
+ },
+ focus: function () {
+ // prevent value inserted on focus
+ return false;
+ },
+ select: function (event, ui) {
+ var terms = split(this.value);
+ // remove the current input
+ terms.pop();
+ // add the selected item
+ terms.push(ui.item.value);
+ // add placeholder to get the space at the end
+ terms.push("");
+ this.value = terms.join(" ");
+ return false;
+ }
+ });
});
-});
</script>
http://git-wip-us.apache.org/repos/asf/roller/blob/2da6c3c2/app/src/main/webapp/WEB-INF/jsps/editor/EntryEditor.jsp
----------------------------------------------------------------------
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 5050b29..d881f87 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/EntryEditor.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/EntryEditor.jsp
@@ -18,26 +18,52 @@
<%-- This page is designed to be included in EntryEdit.jsp --%>
<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
+
<%-- ********************************************************************* --%>
-<%-- Text editors --%>
+<%-- HTML text areas for editing content and summary --%>
+
+<div class="panel panel-default" id="panel-content">
+ <div class="panel-heading">
-<p class="toplabel">
+ <h4 class="panel-title">
+ <a data-toggle="collapse" data-target="#collapseContentEditor" href="#collapseContentEditor">
+ <s:text name="weblogEdit.content"/> </a>
+ </h4>
+
+ </div>
+ <div id="collapseContentEditor" class="panel-collapse collapse in">
+ <div class="panel-body">
-</p>
+ <span style="font-weight:normal;float:right;">
+ <a href="#" onClick="onClickAddImage();"><s:text name="weblogEdit.insertMediaFile"/></a>
+ </span>
+
+ <s:textarea id="edit_content" name="bean.text" cols="75" rows="25" tabindex="5"/>
-<div id="accordion">
- <h3>
- <s:text name="weblogEdit.content" />
- <span style="font-weight:normal;float:right;">
- <a href="#" onClick="onClickAddImage();"><s:text name="weblogEdit.insertMediaFile" /></a>
- </span>
- </h3>
- <div>
- <s:textarea id="edit_content" name="bean.text" cols="75" rows="25" cssStyle="width: 100%" tabindex="5"/>
+ </div>
</div>
- <h3><s:text name="weblogEdit.summary"/><tags:help key="weblogEdit.summary.tooltip"/></h3>
- <div>
- <s:textarea id="edit_summary" name="bean.summary" cols="75" rows="10" cssStyle="width: 100%" tabindex="6"/>
+</div>
+
+<%-- summary --%>
+
+<div class="panel panel-default" id="panel-summary">
+ <div class="panel-heading">
+
+ <h4 class="panel-title">
+ <a href="#collapseSummaryEditor"
+ aria-controls="collapseSummaryEditor" aria-expanded="false"
+ data-toggle="collapse" data-target="#collapseSummaryEditor" >
+ <s:text name="weblogEdit.summary"/>
+ </a>
+ </h4>
+
+ </div>
+ <div id="collapseSummaryEditor" class="panel-collapse collapse in">
+ <div class="panel-body">
+
+ <s:textarea id="edit_summary" name="bean.summary" cols="75" rows="10" tabindex="6"/>
+
+ </div>
</div>
</div>
@@ -55,6 +81,7 @@
</iframe>
</div>
+
<%-- ********************************************************************* --%>
<%-- Editor event handling, on close, on add image, etc. --%>
@@ -79,9 +106,9 @@
function onSelectMediaFile(name, url, isImage) {
$("#mediafile_edit_lightbox").dialog("close");
- $("#mediaFileEditor").attr('src','about:blank');
+ $("#mediaFileEditor").attr('src', 'about:blank');
if (isImage == "true") {
- insertMediaFile('<a href="' + url + '"><img src="' + url + '?t=true" alt="' + name+ '"></img></a>');
+ insertMediaFile('<a href="' + url + '"><img src="' + url + '?t=true" alt="' + name + '"></img></a>');
} else {
insertMediaFile('<a href="' + url + '">' + name + '</a>');
}
@@ -89,13 +116,10 @@
</script>
<s:if test="editor.id == 'editor-text.jsp'">
- <%-- Plain text editor (raw HTML entry) --%>
+
+ <%-- Media insertion for plain textarea editor --%>
<script>
- $(function() {
- $( "#accordion" ).accordion({
- });
- });
function insertMediaFile(anchorTag) {
insertAtCursor(document.getElementById('edit_content'), anchorTag);
}
@@ -126,9 +150,11 @@
}
}
</script>
+
</s:if>
<s:else>
- <%-- Rich text editor (Xinha, see: http://trac.xinha.org/wiki/NewbieGuide) --%>
+
+ <%-- Include the Rich text editor (Xinha, see: http://trac.xinha.org/wiki/NewbieGuide) --%>
<s:url var="xinhaHome" value="/roller-ui/authoring/editors/xinha-0.96.1"></s:url>
<script>
@@ -137,6 +163,7 @@
_editor_lang = "en"; // And the language we need to use in the editor.
_editor_skin = "blue-look"; // If you want use a skin, add the name (of the folder) here
</script>
+
<script src="<s:property value="xinhaHome" />/XinhaCore.js"></script>
<script>
@@ -153,6 +180,8 @@
});
});
+ <%-- Media insertion for Xinha editor --%>
+
function insertMediaFile(anchorTag) {
xinha_editors.edit_content.insertHTML(anchorTag);
}
@@ -199,4 +228,5 @@
Xinha._addEvent(window,'load', xinha_init);
</script>
+
</s:else>
http://git-wip-us.apache.org/repos/asf/roller/blob/2da6c3c2/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAdd.jsp
----------------------------------------------------------------------
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAdd.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAdd.jsp
index 08d7e4a..e2e96a9 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAdd.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAdd.jsp
@@ -16,7 +16,6 @@
directory of this distribution.
--%>
<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
-<script src="<s:url value="/roller-ui/scripts/jquery-2.1.1.min.js" />"></script>
<script>
http://git-wip-us.apache.org/repos/asf/roller/blob/2da6c3c2/app/src/main/webapp/WEB-INF/jsps/taglibs-struts2.jsp
----------------------------------------------------------------------
diff --git a/app/src/main/webapp/WEB-INF/jsps/taglibs-struts2.jsp b/app/src/main/webapp/WEB-INF/jsps/taglibs-struts2.jsp
index fbef230..9156adc 100644
--- a/app/src/main/webapp/WEB-INF/jsps/taglibs-struts2.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/taglibs-struts2.jsp
@@ -16,11 +16,17 @@
directory of this distribution.
--%>
<% response.setContentType("text/html; charset=UTF-8"); %>
+
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
+
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
-<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
-<%@ taglib uri="/struts-tags" prefix="s" %>
+
+<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://jakarta.apache.org/taglibs/string-1.1" prefix="str" %>
-<%@ taglib tagdir="/WEB-INF/tags" prefix="tags"%>
+
+<%@ taglib uri="/struts-tags" prefix="s" %>
+<%@ taglib uri="/struts-bootstrap-tags" prefix="sboo" %>
+
+<%@ taglib tagdir="/WEB-INF/tags" prefix="tags" %>
http://git-wip-us.apache.org/repos/asf/roller/blob/2da6c3c2/app/src/main/webapp/WEB-INF/jsps/tiles/bannerStatus.jsp
----------------------------------------------------------------------
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/bannerStatus.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/bannerStatus.jsp
index 03ea6f9..4258949 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/bannerStatus.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/bannerStatus.jsp
@@ -17,50 +17,104 @@
--%>
<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
-<div class="bannerStatusBox">
-
- <table class="bannerStatusBox" cellpadding="0" cellspacing="0">
- <tr>
- <td class="bannerLeft">
-
- <s:if test="authenticatedUser != null">
- <s:text name="mainPage.loggedInAs" />
- <a href="<s:url action="menu" namespace="/roller-ui" />"><s:property value="authenticatedUser.userName"/></a>
- </s:if>
-
+<nav class="navbar navbar-default navbar-static-top navbar-inverse">
+ <div class="container">
+ <div id="navbar" class="navbar-collapse collapse">
+
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle collapsed"
+ data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="#">Apache Roller</a>
+ </div>
+
+ <ul class="nav navbar-nav">
+i
+ <%-- <s:if test="authenticatedUser != null">
+ <li>
+ <a href="<s:url action="menu" namespace="/roller-ui" />">
+ <s:text name="mainPage.loggedInAs" />: <s:property value="authenticatedUser.userName"/>
+ </a>
+ </li>
+ </s:if> --%>
<s:if test="actionWeblog != null">
- - <s:text name="mainPage.currentWebsite" />
- <b><a href='<s:property value="actionWeblog.absoluteURL" />'>
- <s:property value="actionWeblog.handle" />
- </a></b>
+
+ <%-- <li>
+ <a href='<s:property value="actionWeblog.absoluteURL" />'>
+ <s:text name="mainPage.currentWebsite" />: <s:property value="actionWeblog.handle" />
+ </a>
+ </li> --%>
+
+ <s:set name="tabMenu" value="menu"/>
+ <s:if test="#tabMenu != null">
+ <s:iterator id="tab" value="#tabMenu.tabs">
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
+ aria-haspopup="true" aria-expanded="false">
+ <s:text name="%{#tab.key}"/> <span class="caret"></span>
+ </a>
+ <ul class="dropdown-menu">
+ <s:iterator id="tabItem" value="#tab.items" status="stat">
+ <li>
+ <a href="<s:url action="%{#tabItem.action}">
+ <s:param name="weblog" value="actionWeblog.handle"/></s:url>">
+ <s:text name="%{#tabItem.key}"/>
+ </a>
+ </li>
+ </s:iterator>
+ </ul>
+ </li>
+ </s:iterator>
+ </s:if>
</s:if>
-
- </td>
+
+ </ul>
- <td class="bannerRight">
-
- <a href="<s:url value='/'/>"><s:property value="getProp('site.shortName')"/></a>
-
- | <a href="<s:url action='menu' namespace='/roller-ui' />"><s:text name="mainPage.mainMenu" /></a>
+ <ul class="nav navbar-nav navbar-right">
+ <li><a href="<s:url value='/'/>"><s:property value="getProp('site.shortName')"/></a></li>
+
+ <li>
+ <a href="<s:url action='menu' namespace='/roller-ui' />">
+ <s:text name="mainPage.mainMenu" /></a>
+ </li>
+
<s:if test="authenticatedUser != null">
- | <a href="<s:url action='logout' namespace='/roller-ui' />"><s:text name="navigationBar.logout"/></a>
+ <li>
+ <a href="<s:url action='logout' namespace='/roller-ui' />">
+ <s:text name="navigationBar.logout"/></a>
+ </li>
</s:if>
<s:else>
- | <a href="<s:url action='login-redirect' namespace='/roller-ui' />"><s:text name="navigationBar.login"/></a>
-
+ <li>
+ <a href="<s:url action='login-redirect' namespace='/roller-ui' />">
+ <s:text name="navigationBar.login"/></a>
+ </li>
+
<s:if test="getBooleanProp('users.registration.enabled') && getProp('authentication.method') != 'ldap'">
- | <a href="<s:url action='register' namespace='/roller-ui' />"><s:text name="navigationBar.register"/></a>
+ <li>
+ <a href="<s:url action='register' namespace='/roller-ui' />">
+ <s:text name="navigationBar.register"/></a>
+ </li>
</s:if>
+
<s:elseif test="getProp('users.registration.url') != null && getProp('users.registration.url') > 0">
- | <a href="<s:property value="getProp('users.registration.url')"/>"><s:text name="navigationBar.register"/></a>
+ <li>
+ <a href="<s:property value="getProp('users.registration.url')"/>">
+ <s:text name="navigationBar.register"/></a>
+ </li>
</s:elseif>
</s:else>
- </td>
- </tr>
- </table>
-
-</div>
+ </ul>
+ </div><!--/.nav-collapse -->
+ </div>
+</nav>
+
+
http://git-wip-us.apache.org/repos/asf/roller/blob/2da6c3c2/app/src/main/webapp/WEB-INF/jsps/tiles/head-ajax.jsp
----------------------------------------------------------------------
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/head-ajax.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/head-ajax.jsp
index f890ec9..2acbab6 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/head-ajax.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/head-ajax.jsp
@@ -2,18 +2,35 @@
This default stuff goes in the HTML head element of each page
You can override it with your own file via WEB-INF/tiles-def.xml
--%>
+
<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
+<%--
<link rel="stylesheet" media="all" href="<s:url value='/roller-ui/yui3/cssreset/cssreset-min.css'/>" />
<link rel="stylesheet" media="all" href="<s:url value='/roller-ui/yui3/cssfonts/cssfonts-min.css'/>" />
<link rel="stylesheet" media="all" href="<s:url value='/roller-ui/yui3/cssbase/cssbase-min.css'/>" />
-
<link rel="stylesheet" media="all" href='<s:url value="/roller-ui/styles/layout.css"/>' />
<link rel="stylesheet" media="all" href='<s:url value="/roller-ui/styles/roller.css"/>' />
<link rel="stylesheet" media="all" href='<s:url value="/roller-ui/styles/menu.css"/>' />
-
<link rel="stylesheet" media="all" href="<s:url value="/roller-ui/theme/"/><s:property value="getProp('editor.theme')" />/colors.css" />
+--%>
+
+<%-- jquery and bootstrap --%>
+<script src="<s:url value="/roller-ui/scripts/jquery-2.1.1.min.js" />"></script>
+<link rel="stylesheet" media="all"
+ href='<s:url value="/roller-ui/bootstrap-3.3.6-dist/css/bootstrap.min.css"/>' />
+<link rel="stylesheet" media="all"
+ href='<s:url value="/roller-ui/bootstrap-3.3.6-dist/css/bootstrap-theme.min.css"/>' />
+<script src="<s:url value="/roller-ui/bootstrap-3.3.6-dist/js/bootstrap.min.js"/>"></script>
+
+<%-- the links generated by the Struts-Bootstrap plugin are 404s --%>
+
+<sb:head includeScripts="false" includeScriptsValidation="false"/>
+
+<%-- roller Javascropt and styles --%>
+
+<link rel="stylesheet" media="all" href='<s:url value="/roller-ui/styles/roller.css"/>' />
<script src="<s:url value="/theme/scripts/roller.js"/>"></script>
<%-- struts2 head disabled until we need it --%>
http://git-wip-us.apache.org/repos/asf/roller/blob/2da6c3c2/app/src/main/webapp/WEB-INF/jsps/tiles/head.jsp
----------------------------------------------------------------------
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/head.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/head.jsp
index 912cd4b..23efc18 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/head.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/head.jsp
@@ -2,16 +2,33 @@
This default stuff goes in the HTML head element of each page
You can override it with your own file via WEB-INF/tiles-def.xml
--%>
+
<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
+<%--
<link rel="stylesheet" media="all" href="<s:url value='/roller-ui/yui3/cssreset/cssreset-min.css'/>" />
<link rel="stylesheet" media="all" href="<s:url value='/roller-ui/yui3/cssfonts/cssfonts-min.css'/>" />
<link rel="stylesheet" media="all" href="<s:url value='/roller-ui/yui3/cssbase/cssbase-min.css'/>" />
-
<link rel="stylesheet" media="all" href='<s:url value="/roller-ui/styles/layout.css"/>' />
<link rel="stylesheet" media="all" href='<s:url value="/roller-ui/styles/roller.css"/>' />
<link rel="stylesheet" media="all" href='<s:url value="/roller-ui/styles/menu.css"/>' />
+<link rel="stylesheet" media="all" href="<s:url value="/roller-ui/theme/"/><s:property value="getProp('editor.theme')" />/colors.css" />
+--%>
+
+<%-- jquery and bootstrap --%>
-<link rel="stylesheet" media="all" href="<s:url value="/roller-ui/theme/"/><s:property value="getProp('editor.theme')"/>/colors.css" />
+<script src="<s:url value="/roller-ui/scripts/jquery-2.1.1.min.js" />"></script>
+<link rel="stylesheet" media="all"
+ href='<s:url value="/roller-ui/bootstrap-3.3.6-dist/css/bootstrap.min.css"/>' />
+<link rel="stylesheet" media="all"
+ href='<s:url value="/roller-ui/bootstrap-3.3.6-dist/css/bootstrap-theme.min.css"/>' />
+<script src="<s:url value="/roller-ui/bootstrap-3.3.6-dist/js/bootstrap.min.js"/>"></script>
+<%-- the links generated by the Struts-Bootstrap plugin are 404s --%>
+
+<sb:head includeScripts="false" includeScriptsValidation="false"/>
+
+<%-- roller Javascropt and styles --%>
+
+<link rel="stylesheet" media="all" href='<s:url value="/roller-ui/styles/roller.css"/>' />
<script src="<s:url value="/theme/scripts/roller.js"/>"></script>
http://git-wip-us.apache.org/repos/asf/roller/blob/2da6c3c2/app/src/main/webapp/WEB-INF/jsps/tiles/menu.jsp
----------------------------------------------------------------------
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/menu.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/menu.jsp
index 3928e07..6166efb 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/menu.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/menu.jsp
@@ -20,41 +20,47 @@
<s:set name="tabMenu" value="menu"/>
<s:if test="#tabMenu != null">
-<table class="menuTabTable" cellspacing="0" >
-<tr>
-<s:iterator id="tab" value="#tabMenu.tabs" >
- <s:if test="#tab.selected">
- <s:set name="selectedTab" value="#tab" />
- <td class="menuTabSelected">
- </s:if>
- <s:else>
- <td class="menuTabUnselected">
- </s:else>
- <div class="menu-tr">
- <div class="menu-tl">
- <a href="<s:url action="%{#tab.action}"><s:param name="weblog" value="actionWeblog.handle"/></s:url>"><s:text name="%{#tab.key}" /></a>
- </div>
- </div>
- </td>
- <td class="menuTabSeparator"></td>
-</s:iterator>
-</tr>
-</table>
-
-<table class="menuItemTable" cellspacing="0" >
- <tr>
- <td class="padleft">
- <s:iterator id="tabItem" value="#selectedTab.items" status="stat">
- <s:if test="!#stat.first">|</s:if>
- <s:if test="#tabItem.selected">
- <a class="menuItemSelected" href="<s:url action="%{#tabItem.action}"><s:param name="weblog" value="actionWeblog.handle"/></s:url>"><s:text name="%{#tabItem.key}" /></a>
- </s:if>
- <s:else>
- <a class="menuItemUnselected" href="<s:url action="%{#tabItem.action}"><s:param name="weblog" value="actionWeblog.handle"/></s:url>"><s:text name="%{#tabItem.key}" /></a>
- </s:else>
+ <%--
+ <nav class="navbar navbar-default">
+ <div class="container-fluid">
+ <div id="navbar" class="navbar-collapse collapse">
+ <ul class="nav navbar-nav">
+
+ <s:iterator id="tab" value="#tabMenu.tabs">
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
+ aria-haspopup="true" aria-expanded="false">
+ <s:text name="%{#tab.key}"/> <span class="caret"></span>
+ </a>
+ <ul class="dropdown-menu">
+ <s:iterator id="tabItem" value="#tab.items" status="stat">
+ <li>
+ <a href="<s:url action="%{#tabItem.action}"><s:param name="weblog" value="actionWeblog.handle"/></s:url>">
+ <s:text name="%{#tabItem.key}"/>
+ </a>
+ </li>
+ </s:iterator>
+ </ul>
+ </li>
+ </s:iterator>
+
+ </ul>
+ </div> <!--/.nav-collapse -->
+ </div> <!--/.container-fluid -->
+ </nav>
+
+ <s:iterator id="tab" value="#tabMenu.tabs">
+
+ <h3><s:text name="%{#tab.key}"/></h3>
+
+ <div class="list-group">
+ <s:iterator id="tabItem" value="#tab.items" status="stat">
+ <a class="list-group-item" href="<s:url action="%{#tabItem.action}"><s:param name="weblog" value="actionWeblog.handle"/></s:url>">
+ <s:text name="%{#tabItem.key}"/></a>
</s:iterator>
- </td>
- </tr>
-</table>
+ </div>
+ </s:iterator>
+ --%>
+
</s:if>
http://git-wip-us.apache.org/repos/asf/roller/blob/2da6c3c2/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-mainmenupage.jsp
----------------------------------------------------------------------
diff --git a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-mainmenupage.jsp b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-mainmenupage.jsp
index 3613fc3..9f5c3c5 100644
--- a/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-mainmenupage.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/tiles/tiles-mainmenupage.jsp
@@ -18,47 +18,49 @@
<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
<!doctype html>
<html>
- <head>
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <link rel="icon" href="<%= request.getContextPath() %>/favicon.ico" type="image/x-icon">
- <title><s:property value="getProp('site.shortName')"/>: <s:property value="pageTitle" /></title>
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <link rel="icon" href="<%= request.getContextPath() %>/favicon.ico" type="image/x-icon">
+ <title><s:property value="getProp('site.shortName')"/>: <s:property value="pageTitle"/></title>
- <tiles:insertAttribute name="head" />
- <style>
- <tiles:insertAttribute name="styles" />
- </style>
- </head>
- <body>
-
- <div id="banner">
- <tiles:insertAttribute name="bannerStatus" />
- </div>
-
- <div id="content">
- <div id="leftcontent_wrap">
- <div id="leftcontent">
- </div>
- </div>
-
- <div id="centercontent_wrap">
- <div id="centercontent">
- <h1><s:property value="pageTitle" /></h1>
- <tiles:insertAttribute name="messages" />
- <tiles:insertAttribute name="content" />
- </div>
- </div>
-
- <div id="rightcontent_wrap">
- <div id="rightcontent">
- <tiles:insertAttribute name="sidebar" />
- </div>
+ <tiles:insertAttribute name="head"/>
+ <style>
+ <tiles:insertAttribute name="styles" />
+ </style>
+</head>
+<body>
+
+<tiles:insertAttribute name="bannerStatus"/>
+
+<div class="row">
+
+ <div class="col-md-3 roller-column-left">
+ <div class="panel panel-default">
+ <div class="panel-body">
+ <tiles:insertAttribute name="sidebar"/>
</div>
</div>
-
- <div id="footer">
- <tiles:insertAttribute name="footer" />
+ </div>
+
+ <div class="col-md-9 roller-column-right">
+
+ <div class="panel panel-default">
+ <div class="panel-body">
+ <h1><s:property value="pageTitle"/></h1>
+ <tiles:insertAttribute name="messages"/>
+ <tiles:insertAttribute name="content"/>
+ </div>
</div>
-
- </body>
+
+ </div>
+</div>
+
+<footer class="footer">
+ <div class="container">
+ <tiles:insertAttribute name="footer"/>
+ </div>
+</footer>
+
+</body>
</html>