Switch to WebJars for Bootstrap, JQuery and JQuery UI, llso remove unecessary usage of Angular.
Project: http://git-wip-us.apache.org/repos/asf/roller/repo Commit: http://git-wip-us.apache.org/repos/asf/roller/commit/7cd8d6f6 Tree: http://git-wip-us.apache.org/repos/asf/roller/tree/7cd8d6f6 Diff: http://git-wip-us.apache.org/repos/asf/roller/diff/7cd8d6f6 Branch: refs/heads/bootstrap-ui Commit: 7cd8d6f6e4b86789b895d4cdb4c542388faab7fc Parents: bb92ba2 Author: Dave Johnson <[email protected]> Authored: Sun Aug 19 11:17:46 2018 -0400 Committer: Dave Johnson <[email protected]> Committed: Sun Aug 19 11:17:46 2018 -0400 ---------------------------------------------------------------------- app/pom.xml | 26 +- .../webapp/WEB-INF/jsps/editor/Comments.jsp | 1 - .../WEB-INF/jsps/editor/CommentsSidebar.jsp | 4 - .../WEB-INF/jsps/editor/EntriesSidebar.jsp | 4 - .../webapp/WEB-INF/jsps/editor/EntryEdit.jsp | 5 - .../WEB-INF/jsps/editor/MediaFileAddSuccess.jsp | 1 - .../WEB-INF/jsps/editor/MediaFileEdit.jsp | 2 - .../jsps/editor/MediaFileImageChooser.jsp | 2 - .../WEB-INF/jsps/editor/MediaFileView.jsp | 5 - .../WEB-INF/jsps/editor/StylesheetEdit.jsp | 4 - .../webapp/WEB-INF/jsps/editor/TemplateEdit.jsp | 4 - .../webapp/WEB-INF/jsps/editor/ThemeEdit.jsp | 322 +- .../WEB-INF/jsps/editor/WeblogRemoveConfirm.jsp | 2 + .../webapp/WEB-INF/jsps/taglibs-struts2.jsp | 3 + .../webapp/WEB-INF/jsps/tiles/head-ajax.jsp | 27 - app/src/main/webapp/WEB-INF/jsps/tiles/head.jsp | 21 +- .../main/webapp/roller-ui/JQueryUI-README.txt | 26 - .../css/bootstrap-theme.css | 587 -- .../css/bootstrap-theme.css.map | 1 - .../css/bootstrap-theme.min.css | 6 - .../css/bootstrap-theme.min.css.map | 1 - .../bootstrap-3.3.6-dist/css/bootstrap.css | 6760 ------------------ .../bootstrap-3.3.6-dist/css/bootstrap.css.map | 1 - .../bootstrap-3.3.6-dist/css/bootstrap.min.css | 6 - .../css/bootstrap.min.css.map | 1 - .../fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes .../fonts/glyphicons-halflings-regular.svg | 288 - .../fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 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 - .../images/animated-overlay.gif | Bin 1738 -> 0 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 212 -> 0 bytes .../images/ui-bg_flat_55_fbec88_40x100.png | Bin 206 -> 0 bytes .../images/ui-bg_glass_75_d0e5f5_1x400.png | Bin 336 -> 0 bytes .../images/ui-bg_glass_85_dfeffc_1x400.png | Bin 341 -> 0 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 332 -> 0 bytes .../ui-bg_gloss-wave_55_5c9ccc_500x100.png | Bin 5824 -> 0 bytes .../ui-bg_inset-hard_100_f5f8f9_1x100.png | Bin 333 -> 0 bytes .../ui-bg_inset-hard_100_fcfdfd_1x100.png | Bin 292 -> 0 bytes .../images/ui-icons_217bc0_256x240.png | Bin 4549 -> 0 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 4549 -> 0 bytes .../images/ui-icons_469bdd_256x240.png | Bin 4549 -> 0 bytes .../images/ui-icons_6da8d5_256x240.png | Bin 4549 -> 0 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 4549 -> 0 bytes .../images/ui-icons_d8e7f3_256x240.png | Bin 4549 -> 0 bytes .../images/ui-icons_f9bd01_256x240.png | Bin 4549 -> 0 bytes .../jquery-ui-1.11.0/jquery-ui.min.css | 7 - .../roller-ui/jquery-ui-1.11.0/jquery-ui.min.js | 10 - .../roller-ui/yui3/cssbase/cssbase-min.css | 8 - .../webapp/roller-ui/yui3/cssbase/cssbase.css | 84 - .../roller-ui/yui3/cssfonts/cssfonts-min.css | 8 - .../webapp/roller-ui/yui3/cssfonts/cssfonts.css | 49 - .../roller-ui/yui3/cssreset/cssreset-min.css | 8 - .../webapp/roller-ui/yui3/cssreset/cssreset.css | 123 - 57 files changed, 237 insertions(+), 10553 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/roller/blob/7cd8d6f6/app/pom.xml ---------------------------------------------------------------------- diff --git a/app/pom.xml b/app/pom.xml index b35fe2f..88e0a47 100644 --- a/app/pom.xml +++ b/app/pom.xml @@ -33,7 +33,6 @@ limitations under the License. <packaging>war</packaging> <properties> - <angular.version>1.2.29</angular.version> <ant.version>1.10.1</ant.version> <commons-validator.version>1.6</commons-validator.version> <commons-beanutils.version>1.9.3</commons-beanutils.version> @@ -185,6 +184,24 @@ limitations under the License. </dependency> <dependency> + <groupId>org.webjars</groupId> + <artifactId>bootstrap</artifactId> + <version>3.3.7</version> + </dependency> + + <dependency> + <groupId>org.webjars</groupId> + <artifactId>jquery</artifactId> + <version>3.3.1</version> + </dependency> + + <dependency> + <groupId>org.webjars</groupId> + <artifactId>jquery-ui</artifactId> + <version>1.12.1</version> + </dependency> + + <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-analyzers-common</artifactId> <scope>compile</scope> @@ -399,19 +416,12 @@ limitations under the License. </dependency> <dependency> - <groupId>org.webjars.npm</groupId> - <artifactId>angular</artifactId> - <version>${angular.version}</version> - </dependency> - - <dependency> <groupId>net.oauth.core</groupId> <artifactId>oauth-provider</artifactId> <scope>compile</scope> <version>${oauth-core.version}</version> </dependency> - <!-- Test deps --> <dependency> http://git-wip-us.apache.org/repos/asf/roller/blob/7cd8d6f6/app/src/main/webapp/WEB-INF/jsps/editor/Comments.jsp ---------------------------------------------------------------------- diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/Comments.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/Comments.jsp index 03dedcf..04b5e7f 100644 --- a/app/src/main/webapp/WEB-INF/jsps/editor/Comments.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/editor/Comments.jsp @@ -17,7 +17,6 @@ --%> <%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<script src="<s:url value="/roller-ui/scripts/jquery-2.1.1.min.js" />"></script> <%-- are we on a blog's comment management page or the global admin's comment management page? --%> <s:if test="actionName == 'comments'"> http://git-wip-us.apache.org/repos/asf/roller/blob/7cd8d6f6/app/src/main/webapp/WEB-INF/jsps/editor/CommentsSidebar.jsp ---------------------------------------------------------------------- diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/CommentsSidebar.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/CommentsSidebar.jsp index ff6603c..af1b98d 100644 --- a/app/src/main/webapp/WEB-INF/jsps/editor/CommentsSidebar.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/editor/CommentsSidebar.jsp @@ -17,10 +17,6 @@ --%> <%@ 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"/>'/> -<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> - <s:if test="actionName == 'comments'"> <s:set var="mainAction">comments</s:set> </s:if> http://git-wip-us.apache.org/repos/asf/roller/blob/7cd8d6f6/app/src/main/webapp/WEB-INF/jsps/editor/EntriesSidebar.jsp ---------------------------------------------------------------------- diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/EntriesSidebar.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/EntriesSidebar.jsp index f330a8c..9b52817 100644 --- a/app/src/main/webapp/WEB-INF/jsps/editor/EntriesSidebar.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/editor/EntriesSidebar.jsp @@ -17,10 +17,6 @@ --%> <%@ 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"/>'/> -<script src='<s:url value="/roller-ui/jquery-ui-1.11.0/jquery-ui.min.js"/>'></script> - - <h3><s:text name="weblogEntryQuery.sidebarTitle"/></h3> <hr size="1" noshade="noshade"/> http://git-wip-us.apache.org/repos/asf/roller/blob/7cd8d6f6/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 92c3717..7f821c0 100644 --- a/app/src/main/webapp/WEB-INF/jsps/editor/EntryEdit.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/editor/EntryEdit.jsp @@ -17,11 +17,6 @@ --%> <%@ 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"/>'/> - -<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> - <%-- Prevent annoying scrolling. taken from http://stackoverflow.com/a/10548809/3591946 --%> <script type="text/javascript"> $().ready(function () { http://git-wip-us.apache.org/repos/asf/roller/blob/7cd8d6f6/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp ---------------------------------------------------------------------- diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp index 1214149..ac72efe 100644 --- a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAddSuccess.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> <style> table.mediaFileTable { http://git-wip-us.apache.org/repos/asf/roller/blob/7cd8d6f6/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp ---------------------------------------------------------------------- diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp index 670eaa6..665a095 100644 --- a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp @@ -18,8 +18,6 @@ <%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %> <%@ page import="org.apache.roller.weblogger.config.WebloggerConfig" %> -<script src="<s:url value="/roller-ui/scripts/jquery-2.1.1.min.js" />"></script> - <s:if test="bean.isImage"> <div class="mediaFileThumbnail"> <a href='<s:property value="bean.permalink" />' target="_blank"> http://git-wip-us.apache.org/repos/asf/roller/blob/7cd8d6f6/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileImageChooser.jsp ---------------------------------------------------------------------- diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileImageChooser.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileImageChooser.jsp index af0bbd6..58e4be2 100644 --- a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileImageChooser.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileImageChooser.jsp @@ -17,8 +17,6 @@ --%> <%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %> -<script src="<s:url value="/roller-ui/scripts/jquery-2.1.1.min.js" />"></script> - <style> .mediaObject { width:120px; http://git-wip-us.apache.org/repos/asf/roller/blob/7cd8d6f6/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp ---------------------------------------------------------------------- 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 718ce4c..491a18d 100644 --- a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp @@ -16,11 +16,6 @@ directory of this distribution. --%> <%@ 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"/>' /> - -<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> - <script> http://git-wip-us.apache.org/repos/asf/roller/blob/7cd8d6f6/app/src/main/webapp/WEB-INF/jsps/editor/StylesheetEdit.jsp ---------------------------------------------------------------------- diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/StylesheetEdit.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/StylesheetEdit.jsp index cd771f6..7196d51 100644 --- a/app/src/main/webapp/WEB-INF/jsps/editor/StylesheetEdit.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/editor/StylesheetEdit.jsp @@ -16,7 +16,6 @@ directory of this distribution. --%> <%@ 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"/>' /> <p class="subtitle"><s:text name="stylesheetEdit.subtitle" /></p> @@ -89,9 +88,6 @@ </s:form> - <script src="<s:url value='/roller-ui/scripts/jquery-2.1.1.min.js'></s:url>"></script> - <script src="<s:url value='/roller-ui/jquery-ui-1.11.0/jquery-ui.min.js'></s:url>"></script> - <script> function revertStylesheet() { if (window.confirm('<s:text name="stylesheetEdit.confirmRevert"/>')) { http://git-wip-us.apache.org/repos/asf/roller/blob/7cd8d6f6/app/src/main/webapp/WEB-INF/jsps/editor/TemplateEdit.jsp ---------------------------------------------------------------------- diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/TemplateEdit.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/TemplateEdit.jsp index a07495a..6bbb505 100644 --- a/app/src/main/webapp/WEB-INF/jsps/editor/TemplateEdit.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/editor/TemplateEdit.jsp @@ -16,7 +16,6 @@ directory of this distribution. --%> <%@ 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"/>' /> <p class="subtitle"> <s:text name="pageForm.subtitle" > @@ -264,9 +263,6 @@ if (getCookie('control_advancedControl') != null) { } </script> - <script src="<s:url value='/roller-ui/scripts/jquery-2.1.1.min.js'></s:url>"></script> - <script src="<s:url value='/roller-ui/jquery-ui-1.11.0/jquery-ui.min.js'></s:url>"></script> - <script> $(function() { $( "#template-code-tabs" ).tabs(); http://git-wip-us.apache.org/repos/asf/roller/blob/7cd8d6f6/app/src/main/webapp/WEB-INF/jsps/editor/ThemeEdit.jsp ---------------------------------------------------------------------- diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/ThemeEdit.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/ThemeEdit.jsp index 4fde4f7..38857fa 100644 --- a/app/src/main/webapp/WEB-INF/jsps/editor/ThemeEdit.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/editor/ThemeEdit.jsp @@ -16,146 +16,232 @@ 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 src="<s:url value='/webjars/angular/1.2.29/angular.min.js' />"></script> - -<script> -function fullPreview(selector) { - selected = selector.selectedIndex; - window.open('<s:url value="/roller-ui/authoring/preview/%{actionWeblog.handle}"/>?theme=' + selector.options[selected].value); -} -function updateThemeChooser(selected) { - if (selected[0].value == 'shared') { - $('#sharedChooser').addClass("selectedChooser"); - $('#customChooser').removeClass("selectedChooser"); - $('#sharedOptioner').show(); - $('#customOptioner').hide(); - } else { - $('#customChooser').addClass("selectedChooser"); - $('#sharedChooser').removeClass("selectedChooser"); - $('#customOptioner').show(); - $('#sharedOptioner').hide(); - } -} -</script> <p class="subtitle"> - <s:text name="themeEditor.subtitle" > - <s:param value="actionWeblog.handle" /> - </s:text> + <s:text name="themeEditor.subtitle"> + <s:param value="actionWeblog.handle"/> + </s:text> </p> -<s:form action="themeEdit!save"> - <s:hidden name="salt" /> - <s:hidden name="weblog" /> - - <table width="100%" cellpadding="0" cellspacing="0"> - <tr> - <td width="50%" valign="top"> - <div id="sharedChooser" class="chooser"> - <h2><input id="sharedRadio" type="radio" name="themeType" value="shared" - <s:if test="!customTheme">checked</s:if> - onclick="updateThemeChooser($(this))" /> - <s:text name="themeEditor.sharedTheme" /></h2> - <s:text name="themeEditor.sharedThemeDescription" /> - </div> - </td> - <td width="50%" valign="top"> - <div id="customChooser" class="chooser"> - <h2><input id="customRadio" type="radio" name="themeType" value="custom" - <s:if test="customTheme">checked</s:if> - onclick="updateThemeChooser($(this))" /> - <s:text name="themeEditor.customTheme" /></h2> - <s:text name="themeEditor.customThemeDescription" /> - </div> - </td> - </tr> - </table> - - <div id="sharedOptioner" class="optioner" style="display:none;"> - <p> - <s:if test="!customTheme"> - <s:text name="themeEditor.yourCurrentTheme" />: +<s:form action="themeEdit!save" theme="bootstrap" cssClass="form-vertical"> + <s:hidden name="salt"/> + <s:hidden name="weblog"/> + + <%-- Two choices side-by-side: choose Shared or Custom Theme --%> + + <div class="row equal"> + + <div id="sharedChooser" class="col-md-6 panel"> + <div class="panel-heading"> + <h3 class="panel-title"> + <input id="sharedRadio" type="radio" name="themeType" value="shared" + <s:if test="!customTheme">checked</s:if> onclick="proposeThemeTypeChange($(this))"/> + <s:text name="themeEditor.sharedTheme"/> + </h3> + </div> + <div class="chooser panel-body"> + <s:text name="themeEditor.sharedThemeDescription"/> + </div> + </div> + + <div id="customChooser" class="col-md-6 panel"> + <div class="panel-heading"> + <h3 class="panel-title"> + <input id="customRadio" type="radio" name="themeType" value="custom" + <s:if test="customTheme">checked</s:if> onclick="proposeThemeTypeChange($(this))"/> + <s:text name="themeEditor.customTheme"/> + </h3> + </div> + <div class="chooser panel-body"> + <s:text name="themeEditor.customThemeDescription"/> + </div> + </div> + + </div> + + <%-- ********************************************************************************************************* --%> + + <div id="sharedNoChange" style="display:none;"> + + <%-- you have shared theme X --%> + <p class="lead"> + <s:text name="themeEditor.yourCurrentTheme"/> <b><s:property value="actionWeblog.theme.name"/></b> - <%-- The type of stylesheet we are using --%> <s:if test="%{sharedThemeCustomStylesheet}"> - <s:text name="themeEditor.yourCustomStylesheet" /> + <s:text name="themeEditor.yourCustomStylesheet"/> </s:if> <s:else> - <s:text name="themeEditor.yourThemeStyleSheet" /> + <s:text name="themeEditor.yourThemeStyleSheet"/> </s:else> - </s:if> - <s:else> - <s:text name="themeEditor.selectTheme" />: - </s:else> - </p> - </div> + </p> - <div id="customOptioner" class="optioner" style="display:none;"> - <%-- if already custom, an update must mean an import. --%> - <s:if test="customTheme"> + <%-- theme selector with preview image --%> + <p><s:text name="themeEditor.selectTheme"/></p> <p> - <span class="warning"><s:text name="themeEditor.importWarning" /></span> - <s:hidden name="importTheme" value="true" /> + <s:select id="themeSelector" name="selectedThemeId" list="themes" + listKey="id" listValue="name" size="1" + onchange="proposeSharedThemeChange(this[selectedIndex].value)"/> </p> - </s:if> - <%-- shared, may be required to do an import if no custom templates present --%> - <s:else> + <p id="themeDescription"></p> + <p><img id="themeThumbnail" src=""/></p> + + </div> + + <div id="sharedChangeProposed" style="display:none;"> + + <div id="sharedChangeToShared" style="display:none;"> + + <%-- Preview and Update buttons --%> + <p> <s:text name="themeEditor.previewDescription"/> </p> + <input type="button" name="themePreview" class="btn" style="margin-bottom:1em" + value="<s:text name='themeEditor.preview' />" + onclick="fullPreview($('#themeSelector').get(0))"/> + + <s:submit cssClass="btn btn-default" value="%{getText('themeEditor.save')}"/> + + </div> + + <div id="sharedChangeToCustom" style="display:none;"> + + <%-- Update button --%> + <s:submit cssClass="btn btn-default" value="%{getText('themeEditor.save')}"/> + + </div> + </div> + + <%-- ********************************************************************************************************* --%> + + <div id="customNoChange" style="display:none;"> + + <p class="lead"><s:text name="themeEditor.youAreUsingACustomTheme"/></p> + + </div> + + <div id="customChangeProposed" style="display:none;"> + + <p class="lead"><s:text name="themeEditor.youAreUsingACustomTheme"/></p> + + <div class="alert-warning"><s:text name="themeEditor.proposedChangeToShared"/></div> + + <%-- Preview and Update buttons --%> + <p> <s:text name="themeEditor.previewDescription"/> </p> + <input type="button" name="themePreview" class="btn" style="margin-bottom:1em" + value="<s:text name='themeEditor.preview' />" + onclick="fullPreview($('#themeSelector').get(0))"/> + <s:if test="firstCustomization"> <p> - <s:text name="themeEditor.importRequired" /> - <s:hidden name="importTheme" value="true" /> + <s:text name="themeEditor.importRequired"/> + <s:hidden name="importTheme" value="true"/> </p> </s:if> <s:else> - <%-- User has option not just to switch from shared to custom but also override present custom templates --%> - <s:checkbox name="importTheme"/> <s:text name="themeEditor.importAndOverwriteTemplates" /> - <tags:help key="themeEditor.importAndOverwriteTemplates.tooltip"/> + <p><s:text name="themeEditor.existingTemplatesWarning"/></p> + <s:checkbox name="importTheme" label="%{getText('themeEditor.importAndOverwriteTemplates')}"/> </s:else> + + <s:submit cssClass="btn btn-default" value="%{getText('themeEditor.save')}"/> + + </div> + +</s:form> + +<script type="text/javascript"> + + var proposedChangeType = "" + var proposedThemeId = "" + var originalThemeId = "<s:property value="themeId"/>" + var originalType = "" + + $.when( $.ready ).then(function() { + + <s:if test="customTheme"> + originalType = "custom" + updateThemeTypeChooser($('#customRadio')); + previewImage('<s:property value="themes[0].id"/>'); + </s:if> + + <s:else> + originalType = "shared" + updateThemeTypeChooser($('#sharedRadio')); + previewImage('<s:property value="themeId"/>'); </s:else> - </div> + }); - <div id="themeOptioner" class="optioner" ng-app="themeSelectModule" ng-controller="themeController"> - <p> - <select id="themeSelector" name="selectedThemeId" size="1" - ng-model="selectedTheme" ng-options="theme as theme.name for theme in themes track by theme.id"></select> - </p> - - <p>{{ selectedTheme.description }}</p> - <p> - <img ng-src="<s:property value='siteURL'/>{{ selectedTheme.previewPath }}"/> - </p> - <p> - <s:text name="themeEditor.previewDescription" /> - </p> - </div> + function proposeThemeTypeChange(selected) { + if (selected[0].value === 'shared') { + proposedChangeType = "shared" + } else { + proposedChangeType = "custom" + } + updateThemeTypeChooser(selected) + } - <div class="control"> - <span style="padding-left:7px"> - <input type="button" name="themePreview" - value="<s:text name='themeEditor.preview' />" - onclick="fullPreview($('#themeSelector').get(0))" /> + function proposeSharedThemeChange(themeId) { + proposedThemeId = themeId; + if ( proposedThemeId !== originalThemeId ) { + $('#sharedChangeProposed').show(); + $('#sharedChangeToShared').show(); + $('#sharedChangeToCustom').hide(); + } + previewImage(themeId) - <s:submit value="%{getText('themeEditor.save')}" /> - </span> - </div> + } -</s:form> + function previewImage(themeId) { + $.ajax({ + url: "<s:url value='themedata'/>", + data: {theme: themeId}, success: function (data) { + $('#themeDescription').html(data.description); + $('#themeThumbnail').attr('src', '<s:property value="siteURL" />' + data.previewPath); + } + }); + } + + function fullPreview(selector) { + selected = selector.selectedIndex; + window.open('<s:url value="/roller-ui/authoring/preview/%{actionWeblog.handle}"/>?theme=' + + selector.options[selected].value); + } + + function updateThemeTypeChooser(selected) { + + if (selected[0].value === 'shared') { + + $('#sharedChooser').addClass("panel-success"); + $('#customChooser').removeClass("panel-success"); + + if ( proposedChangeType === "" || proposedChangeType !== originalType ) { + $('#sharedChangeProposed').show(); + $('#customNoChange').hide(); + $('#customChangeProposed').hide(); + + if ( originalType === "shared" ) { + $('#sharedChangeToShared').show(); + $('#sharedChangeToCustom').hide(); + } else { + $('#sharedChangeToCustom').show(); + $('#sharedChangeToShared').hide(); + } + } + + } else { + + $('#customChooser').addClass("panel-success"); + $('#sharedChooser').removeClass("panel-success"); + + $('#sharedChangeProposed').hide(); + $('#sharedNoChange').hide(); + + if ( proposedChangeType === "" || proposedChangeType === originalType ) { + $('#customNoChange').show(); + $('#customChangeProposed').hide(); + } else { + $('#customChangeProposed').show(); + $('#customNoChange').hide(); + } + + } + } -<%-- initializes the chooser/optioner/themeImport display at page load time --%> -<script> - angular.module('themeSelectModule', []) - .controller('themeController', ['$scope', function($scope) { - $.ajax({ url: "<s:url value='themedata'/>", async:false, - success: function(data) { $scope.themes = data; } - }); - <s:if test="customTheme"> - updateThemeChooser($('#customRadio')); - $scope.selectedTheme = $scope.themes[0]; - </s:if> - <s:else> - updateThemeChooser($('#sharedRadio')); - $scope.selectedTheme = $.grep($scope.themes, function(e){ return e.id == "<s:property value='themeId'/>"; })[0]; - </s:else> - }]); </script> http://git-wip-us.apache.org/repos/asf/roller/blob/7cd8d6f6/app/src/main/webapp/WEB-INF/jsps/editor/WeblogRemoveConfirm.jsp ---------------------------------------------------------------------- diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/WeblogRemoveConfirm.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/WeblogRemoveConfirm.jsp index 3dcea04..db4be40 100644 --- a/app/src/main/webapp/WEB-INF/jsps/editor/WeblogRemoveConfirm.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/editor/WeblogRemoveConfirm.jsp @@ -34,6 +34,7 @@ <div class="row"> <div class="col-md-2"> + <s:form action="weblogRemove!remove" theme="bootstrap" cssClass="form-horizontal"> <s:hidden name="salt" /> <s:hidden name="weblog" value="%{actionWeblog.handle}" /> @@ -42,6 +43,7 @@ </div> <div class="col-md-2"> + <s:form action="weblogConfig" method="post" theme="bootstrap" cssClass="form-horizontal"> <s:hidden name="salt" /> <s:hidden name="weblog" value="%{actionWeblog.handle}" /> http://git-wip-us.apache.org/repos/asf/roller/blob/7cd8d6f6/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 e97d1e4..79ba287 100644 --- a/app/src/main/webapp/WEB-INF/jsps/taglibs-struts2.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/taglibs-struts2.jsp @@ -29,3 +29,6 @@ <%@ taglib uri="/struts-bootstrap-tags" prefix="sboo" %> <%@ taglib tagdir="/WEB-INF/tags" prefix="tags" %> + + + http://git-wip-us.apache.org/repos/asf/roller/blob/7cd8d6f6/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 deleted file mode 100644 index 2a978ba..0000000 --- a/app/src/main/webapp/WEB-INF/jsps/tiles/head-ajax.jsp +++ /dev/null @@ -1,27 +0,0 @@ -<%-- -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" %> - -<%-- jquery --%> -<script src="<s:url value="/roller-ui/scripts/jquery-2.1.1.min.js" />"></script> - -<%-- bootstrap --%> -<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 --%> -<%-- <s:head theme="ajax"/> --%> http://git-wip-us.apache.org/repos/asf/roller/blob/7cd8d6f6/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 7b7291c..7b06c3d 100644 --- a/app/src/main/webapp/WEB-INF/jsps/tiles/head.jsp +++ b/app/src/main/webapp/WEB-INF/jsps/tiles/head.jsp @@ -5,20 +5,19 @@ You can override it with your own file via WEB-INF/tiles-def.xml <%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %> -<%-- jquery --%> -<script src="<s:url value="/roller-ui/scripts/jquery-2.1.1.min.js" />"></script> - -<%-- bootstrap --%> -<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 +<%-- the links generated by the Struts-Bootstrap plugin are 404s <sb:head includeScripts="false" includeScriptsValidation="false"></sb:head> --%> +<script src="<s:url value='/webjars/jquery/3.3.1/jquery.min.js' />"></script> + +<link href="<s:url value='/webjars/jquery-ui/1.12.1/jquery-ui.theme.css' />" rel="stylesheet" /> +<script src="<s:url value='/webjars/jquery-ui/1.12.1/jquery-ui.min.js' />"></script> + +<link href="<s:url value='/webjars/bootstrap/3.3.7/css/bootstrap.min.css' />" rel="stylesheet" /> +<link href="<s:url value='/webjars/bootstrap/3.3.7/css/bootstrap-theme.min.css' />" rel="stylesheet" /> +<script src="<s:url value='/webjars/bootstrap/3.3.7/js/bootstrap.min.js' />"></script> + <%-- 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/7cd8d6f6/app/src/main/webapp/roller-ui/JQueryUI-README.txt ---------------------------------------------------------------------- diff --git a/app/src/main/webapp/roller-ui/JQueryUI-README.txt b/app/src/main/webapp/roller-ui/JQueryUI-README.txt deleted file mode 100644 index 96f1d79..0000000 --- a/app/src/main/webapp/roller-ui/JQueryUI-README.txt +++ /dev/null @@ -1,26 +0,0 @@ -The JQuery UI folder (roller-ui/jquery-ui-1.11.0) was created by doing the following: - -1. Going to the JQuery UI download builder (http://jqueryui.com/download/) and choosing the latest stable version. -2. Under Components, unselecting "toggle all" to make sure nothing selected. -3. Choosing the components Roller uses: accordion, datepicker, dialog, autocomplete, and tabs. - A full list can be obtained by opening up the current jquery-ui.min.js and reading the autogenerated comment header. - Let the Download Builder select whatever additional prerequisites needed. -4. Selecting theme "Redmond", or a different one if desired. (How each theme looks can be determined by going - to: http://jqueryui.com/themeroller/ and selecting the "Gallery" tab.) -5. For the subsequent download, extract into a new folder under roller-ui and delete all the non-"min" CSS - and JS files within that folder. Also delete: - a) the index.html and external/jquery/jquery.js files. (our JQuery is kept in the roller-ui/scripts folder.) - b) the structure and theme CSS files (they are unused subsets of the jquery-ui.min.css) -6. Update the Roller UI JSP's to point to the new JQuery UI folder and test all works. -7. Delete the old JQuery folder after the Roller UI has been updated. -8. Update this README as necessary if anything's changed. - -Following the above process when upgrading the JQuery UI version or changing the theme it uses will help to make sure all old files -get deleted while no necessary files are accidentally removed. - -Notes: -1. Recommended to keep the contents of the jquery-ui-1.11.0 folder within this folder, i.e., don't move the images or CSS' to other folders. This way, -when we delete this folder as a part of upgrading the JQueryUI version we'll know that all the resources of this version have also been deleted. - -2. Recommended not to add non-JQuery resources into this folder; again, this way, when we delete this folder we won't have to worry about other -resources still needed by Roller also getting deleted. http://git-wip-us.apache.org/repos/asf/roller/blob/7cd8d6f6/app/src/main/webapp/roller-ui/bootstrap-3.3.6-dist/css/bootstrap-theme.css ---------------------------------------------------------------------- diff --git a/app/src/main/webapp/roller-ui/bootstrap-3.3.6-dist/css/bootstrap-theme.css b/app/src/main/webapp/roller-ui/bootstrap-3.3.6-dist/css/bootstrap-theme.css deleted file mode 100644 index ebe57fb..0000000 --- a/app/src/main/webapp/roller-ui/bootstrap-3.3.6-dist/css/bootstrap-theme.css +++ /dev/null @@ -1,587 +0,0 @@ -/*! - * Bootstrap v3.3.6 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -.btn-default, -.btn-primary, -.btn-success, -.btn-info, -.btn-warning, -.btn-danger { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); -} -.btn-default:active, -.btn-primary:active, -.btn-success:active, -.btn-info:active, -.btn-warning:active, -.btn-danger:active, -.btn-default.active, -.btn-primary.active, -.btn-success.active, -.btn-info.active, -.btn-warning.active, -.btn-danger.active { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn-default.disabled, -.btn-primary.disabled, -.btn-success.disabled, -.btn-info.disabled, -.btn-warning.disabled, -.btn-danger.disabled, -.btn-default[disabled], -.btn-primary[disabled], -.btn-success[disabled], -.btn-info[disabled], -.btn-warning[disabled], -.btn-danger[disabled], -fieldset[disabled] .btn-default, -fieldset[disabled] .btn-primary, -fieldset[disabled] .btn-success, -fieldset[disabled] .btn-info, -fieldset[disabled] .btn-warning, -fieldset[disabled] .btn-danger { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-default .badge, -.btn-primary .badge, -.btn-success .badge, -.btn-info .badge, -.btn-warning .badge, -.btn-danger .badge { - text-shadow: none; -} -.btn:active, -.btn.active { - background-image: none; -} -.btn-default { - text-shadow: 0 1px 0 #fff; - background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); - background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #dbdbdb; - border-color: #ccc; -} -.btn-default:hover, -.btn-default:focus { - background-color: #e0e0e0; - background-position: 0 -15px; -} -.btn-default:active, -.btn-default.active { - background-color: #e0e0e0; - border-color: #dbdbdb; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #e0e0e0; - background-image: none; -} -.btn-primary { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88)); - background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #245580; -} -.btn-primary:hover, -.btn-primary:focus { - background-color: #265a88; - background-position: 0 -15px; -} -.btn-primary:active, -.btn-primary.active { - background-color: #265a88; - border-color: #245580; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #265a88; - background-image: none; -} -.btn-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641)); - background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #3e8f3e; -} -.btn-success:hover, -.btn-success:focus { - background-color: #419641; - background-position: 0 -15px; -} -.btn-success:active, -.btn-success.active { - background-color: #419641; - border-color: #3e8f3e; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #419641; - background-image: none; -} -.btn-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2)); - background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #28a4c9; -} -.btn-info:hover, -.btn-info:focus { - background-color: #2aabd2; - background-position: 0 -15px; -} -.btn-info:active, -.btn-info.active { - background-color: #2aabd2; - border-color: #28a4c9; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #2aabd2; - background-image: none; -} -.btn-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316)); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #e38d13; -} -.btn-warning:hover, -.btn-warning:focus { - background-color: #eb9316; - background-position: 0 -15px; -} -.btn-warning:active, -.btn-warning.active { - background-color: #eb9316; - border-color: #e38d13; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #eb9316; - background-image: none; -} -.btn-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a)); - background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #b92c28; -} -.btn-danger:hover, -.btn-danger:focus { - background-color: #c12e2a; - background-position: 0 -15px; -} -.btn-danger:active, -.btn-danger.active { - background-color: #c12e2a; - border-color: #b92c28; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #c12e2a; - background-image: none; -} -.thumbnail, -.img-thumbnail { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - background-color: #e8e8e8; - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - background-color: #2e6da4; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; -} -.navbar-default { - background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); - background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); - background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); - background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); -} -.navbar-brand, -.navbar-nav > li > a { - text-shadow: 0 1px 0 rgba(255, 255, 255, .25); -} -.navbar-inverse { - background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); - background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-radius: 4px; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); - background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); - background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); -} -.navbar-inverse .navbar-brand, -.navbar-inverse .navbar-nav > li > a { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); -} -.navbar-static-top, -.navbar-fixed-top, -.navbar-fixed-bottom { - border-radius: 0; -} -@media (max-width: 767px) { - .navbar .navbar-nav .open .dropdown-menu > .active > a, - .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; - } -} -.alert { - text-shadow: 0 1px 0 rgba(255, 255, 255, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); -} -.alert-success { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); - background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); - background-repeat: repeat-x; - border-color: #b2dba1; -} -.alert-info { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); - background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); - background-repeat: repeat-x; - border-color: #9acfea; -} -.alert-warning { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); - background-repeat: repeat-x; - border-color: #f5e79e; -} -.alert-danger { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); - background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); - background-repeat: repeat-x; - border-color: #dca7a7; -} -.progress { - background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); - background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090)); - background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); - background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); - background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); - background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.list-group { - border-radius: 4px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - text-shadow: 0 -1px 0 #286090; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); - background-repeat: repeat-x; - border-color: #2b669a; -} -.list-group-item.active .badge, -.list-group-item.active:hover .badge, -.list-group-item.active:focus .badge { - text-shadow: none; -} -.panel { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: 0 1px 2px rgba(0, 0, 0, .05); -} -.panel-default > .panel-heading { - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.panel-primary > .panel-heading { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; -} -.panel-success > .panel-heading { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); - background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); - background-repeat: repeat-x; -} -.panel-info > .panel-heading { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); - background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); - background-repeat: repeat-x; -} -.panel-warning > .panel-heading { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); - background-repeat: repeat-x; -} -.panel-danger > .panel-heading { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); - background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); - background-repeat: repeat-x; -} -.well { - background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); - background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; - border-color: #dcdcdc; - -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); -} -/*# sourceMappingURL=bootstrap-theme.css.map */
