Add notification on a first start of Sone.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 12 Dec 2010 13:33:04 +0000 (14:33 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 12 Dec 2010 13:33:04 +0000 (14:33 +0100)
src/main/java/net/pterodactylus/sone/main/SonePlugin.java
src/main/java/net/pterodactylus/sone/web/WebInterface.java
src/main/resources/i18n/sone.en.properties
src/main/resources/templates/notify/firstStartNotification.html [new file with mode: 0644]

index fbf8b1a..ca629fa 100644 (file)
@@ -147,6 +147,7 @@ public class SonePlugin implements FredPlugin, FredPluginL10n, FredPluginBaseL10
                /* create a configuration. */
                Configuration oldConfiguration;
                Configuration newConfiguration = null;
+               boolean firstStart = !new File("sone.properties").exists();
                try {
                        oldConfiguration = new Configuration(new MapConfigurationBackend(new File("sone.properties"), false));
                        newConfiguration = oldConfiguration;
@@ -181,6 +182,7 @@ public class SonePlugin implements FredPlugin, FredPluginL10n, FredPluginBaseL10
 
                /* create the web interface. */
                webInterface = new WebInterface(this);
+               webInterface.setFirstStart(firstStart);
                core.addCoreListener(webInterface);
 
                /* create the identity manager. */
index dc09d78..0e7905d 100644 (file)
@@ -70,6 +70,7 @@ import net.pterodactylus.sone.web.page.PageToadlet;
 import net.pterodactylus.sone.web.page.PageToadletFactory;
 import net.pterodactylus.sone.web.page.StaticPage;
 import net.pterodactylus.util.logging.Logging;
+import net.pterodactylus.util.notify.Notification;
 import net.pterodactylus.util.notify.NotificationManager;
 import net.pterodactylus.util.notify.TemplateNotification;
 import net.pterodactylus.util.template.DateFilter;
@@ -244,6 +245,22 @@ public class WebInterface implements CoreListener {
                return new HashSet<Reply>(newReplyNotification.getElements());
        }
 
+       /**
+        * Sets whether the current start of the plugin is the first start. It is
+        * considered a first start if the configuration file does not exist.
+        *
+        * @param firstStart
+        *            {@code true} if no configuration file existed when Sone was
+        *            loaded, {@code false} otherwise
+        */
+       public void setFirstStart(boolean firstStart) {
+               if (firstStart) {
+                       Template firstStartNotificationTemplate = new Template(createReader("/templates/notify/firstStartNotification.html"));
+                       Notification firstStartNotification = new TemplateNotification("first-start-notification", firstStartNotificationTemplate);
+                       notificationManager.addNotification(firstStartNotification);
+               }
+       }
+
        //
        // ACTIONS
        //
index d0c44f5..1a69477 100644 (file)
@@ -176,6 +176,7 @@ WebInterface.SelectBox.Yes=Yes
 WebInterface.SelectBox.No=No
 WebInterface.ClickToShow.Replies=Click here to show hidden replies.
 
+Notification.FirstStart.Text=This seems to be the first time you start Sone. To start, create a new Sone from a web of trust identity and start following other Sones.
 Notification.Startup.Text=Sone is currently starting up. It may take a while to retrieve all identities and Sones from the web of trust. If you are missing some elements, please be patient, they will probably reappear very soon.
 Notification.Button.Dismiss=Dismiss
 Notification.NewSone.Text=New Sones have been discovered:
diff --git a/src/main/resources/templates/notify/firstStartNotification.html b/src/main/resources/templates/notify/firstStartNotification.html
new file mode 100644 (file)
index 0000000..b4ce468
--- /dev/null
@@ -0,0 +1 @@
+<div class="text"><%= Notification.FirstStart.Text|l10n|html></div>