Display new post notifications.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 14 Nov 2010 19:56:34 +0000 (20:56 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 14 Nov 2010 19:56:34 +0000 (20:56 +0100)
src/main/java/net/pterodactylus/sone/web/WebInterface.java
src/main/resources/i18n/sone.en.properties
src/main/resources/templates/notify/newPostNotification.html [new file with mode: 0644]

index 0002e2c..87f8238 100644 (file)
@@ -37,6 +37,7 @@ import net.pterodactylus.sone.data.Sone;
 import net.pterodactylus.sone.freenet.L10nFilter;
 import net.pterodactylus.sone.freenet.wot.Identity;
 import net.pterodactylus.sone.main.SonePlugin;
+import net.pterodactylus.sone.notify.NewPostNotification;
 import net.pterodactylus.sone.notify.NewSoneNotification;
 import net.pterodactylus.sone.template.CollectionAccessor;
 import net.pterodactylus.sone.template.CssClassNameFilter;
@@ -110,6 +111,9 @@ public class WebInterface implements CoreListener {
        /** The “new Sone” notification. */
        private final NewSoneNotification newSoneNotification;
 
+       /** The “new post” notification. */
+       private final NewPostNotification newPostNotification;
+
        /**
         * Creates a new web interface.
         *
@@ -143,6 +147,9 @@ public class WebInterface implements CoreListener {
                /* create notifications. */
                Template newSoneNotificationTemplate = templateFactory.createTemplate(createReader("/templates/notify/newSoneNotification.html"));
                newSoneNotification = new NewSoneNotification(newSoneNotificationTemplate);
+
+               Template newPostNotificationTemplate = templateFactory.createTemplate(createReader("/templates/notify/newPostNotification.html"));
+               newPostNotification = new NewPostNotification(newPostNotificationTemplate);
        }
 
        //
@@ -359,7 +366,8 @@ public class WebInterface implements CoreListener {
         */
        @Override
        public void newPostFound(Post post) {
-               /* TODO */
+               newPostNotification.addPost(post);
+               notificationManager.addNotification(newPostNotification);
        }
 
        /**
@@ -386,7 +394,10 @@ public class WebInterface implements CoreListener {
         */
        @Override
        public void markPostKnown(Post post) {
-               /* TODO */
+               newPostNotification.removePost(post);
+               if (newPostNotification.isEmpty()) {
+                       newPostNotification.dismiss();
+               }
        }
 
        /**
index 419bf96..eca813e 100644 (file)
@@ -207,3 +207,4 @@ Warning.PluginNotConnected.Text=The Web of Trust plugin could not be found! This
 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:
+Notification.NewPost.Text=New posts have been discovered by the following Sones:
diff --git a/src/main/resources/templates/notify/newPostNotification.html b/src/main/resources/templates/notify/newPostNotification.html
new file mode 100644 (file)
index 0000000..5889ef5
--- /dev/null
@@ -0,0 +1,6 @@
+<div class="text">
+       <%= Notification.NewPost.Text|l10n|html>
+       <%foreach posts post>
+               <a href="viewPost.html?post=<% post.id|html>"><% post.sone.niceName|html></a><%notlast>,<%/notlast><%last>.<%/last>
+       <%/foreach>
+</div>