From 797a987e2b8fc3410a562df9d158b76692e6ead2 Mon Sep 17 00:00:00 2001 From: Benjamin Gamard Date: Tue, 27 Feb 2018 19:02:23 +0100 Subject: [PATCH] refresh ui css + init inbox scanning settings --- .../docs/core/service/InboxService.java | 57 +++---- .../docs/rest/resource/ThemeResource.java | 4 +- docs-web/src/main/resources/image/logo.png | Bin 3365 -> 10321 bytes docs-web/src/main/webapp/src/app/docs/app.js | 9 ++ .../docs/controller/settings/SettingsInbox.js | 85 ++++++++++ docs-web/src/main/webapp/src/index.html | 10 +- .../main/webapp/src/lib/angular.ngprogress.js | 2 +- docs-web/src/main/webapp/src/locale/en.json | 1 + .../webapp/src/partial/docs/document.html | 30 ++-- .../webapp/src/partial/docs/settings.html | 5 +- .../src/partial/docs/settings.inbox.html | 145 ++++++++++++++++++ .../src/main/webapp/src/partial/docs/tag.html | 4 +- .../webapp/src/partial/docs/usergroup.html | 4 +- docs-web/src/main/webapp/src/style/main.less | 142 +++++++++++++---- .../sismics/docs/rest/TestThemeResource.java | 4 +- 15 files changed, 416 insertions(+), 86 deletions(-) create mode 100644 docs-web/src/main/webapp/src/app/docs/controller/settings/SettingsInbox.js create mode 100644 docs-web/src/main/webapp/src/partial/docs/settings.inbox.html diff --git a/docs-core/src/main/java/com/sismics/docs/core/service/InboxService.java b/docs-core/src/main/java/com/sismics/docs/core/service/InboxService.java index d1622b95..2df5c6e5 100644 --- a/docs-core/src/main/java/com/sismics/docs/core/service/InboxService.java +++ b/docs-core/src/main/java/com/sismics/docs/core/service/InboxService.java @@ -21,7 +21,6 @@ import javax.mail.*; import java.util.Date; import java.util.Properties; import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; /** * Inbox scanning service. @@ -57,6 +56,9 @@ public class InboxService extends AbstractScheduledService { syncInbox(); } + /** + * Synchronize the inbox. + */ public void syncInbox() { TransactionUtil.handle(new Runnable() { @Override @@ -98,36 +100,34 @@ public class InboxService extends AbstractScheduledService { }); } + /** + * Test the inbox configuration. + * + * @return Number of messages currently in the remote inbox + */ public int testInbox() { - final AtomicInteger count = new AtomicInteger(-1); - TransactionUtil.handle(new Runnable() { - @Override - public void run() { - Boolean enabled = ConfigUtil.getConfigBooleanValue(ConfigType.INBOX_ENABLED); - if (!enabled) { - return; - } + Boolean enabled = ConfigUtil.getConfigBooleanValue(ConfigType.INBOX_ENABLED); + if (!enabled) { + return -1; + } - Folder inbox = null; - try { - inbox = openInbox(); - count.set(inbox.getMessageCount()); - } catch (Exception e) { - log.error("Error testing inbox", e); - } finally { - try { - if (inbox != null) { - inbox.close(false); - inbox.getStore().close(); - } - } catch (Exception e) { - // NOP - } + Folder inbox = null; + try { + inbox = openInbox(); + return inbox.getMessageCount(); + } catch (Exception e) { + log.error("Error testing inbox", e); + return -1; + } finally { + try { + if (inbox != null) { + inbox.close(false); + inbox.getStore().close(); } + } catch (Exception e) { + // NOP } - }); - - return count.get(); + } } @Override @@ -139,6 +139,7 @@ public class InboxService extends AbstractScheduledService { * Open the remote inbox. * * @return Opened inbox folder + * @throws Exception e */ private Folder openInbox() throws Exception { Properties properties = new Properties(); @@ -167,7 +168,7 @@ public class InboxService extends AbstractScheduledService { * Import an email. * * @param message Message - * @throws Exception + * @throws Exception e */ private void importMessage(Message message) throws Exception { // Parse the mail diff --git a/docs-web/src/main/java/com/sismics/docs/rest/resource/ThemeResource.java b/docs-web/src/main/java/com/sismics/docs/rest/resource/ThemeResource.java index 430787ea..dd60e7c2 100644 --- a/docs-web/src/main/java/com/sismics/docs/rest/resource/ThemeResource.java +++ b/docs-web/src/main/java/com/sismics/docs/rest/resource/ThemeResource.java @@ -58,7 +58,7 @@ public class ThemeResource extends BaseResource { // Build the stylesheet StringBuilder sb = new StringBuilder(); sb.append(new Selector(".navbar") - .rule("background-color", themeConfig.getString("color", "#24292e"))); + .rule("background-color", themeConfig.getString("color", "#ffffff"))); sb.append(themeConfig.getString("css", "")); return Response.ok().entity(sb.toString()).build(); @@ -83,7 +83,7 @@ public class ThemeResource extends BaseResource { JsonObject themeConfig = getThemeConfig(); JsonObjectBuilder json = Json.createObjectBuilder(); json.add("name", themeConfig.getString("name", "Sismics Docs")); - json.add("color", themeConfig.getString("color", "#24292e")); + json.add("color", themeConfig.getString("color", "#ffffff")); json.add("css", themeConfig.getString("css", "")); return Response.ok().entity(json.build()).build(); } diff --git a/docs-web/src/main/resources/image/logo.png b/docs-web/src/main/resources/image/logo.png index 1bcc7321eb4d14b27c6ec8cce0a8c805fa07a070..ae3e9f12aa2b118f906a6623a234965b4f99340a 100644 GIT binary patch literal 10321 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

^P0(lk-xv%h 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 qP1GcU*V12t2`~UTed9SNN9~*d0000 + @@ -98,7 +99,7 @@ -