Show Changes Show Changes
Edit Edit
Print Print
Recent Changes Recent Changes
Subscriptions Subscriptions
Lost and Found Lost and Found
Find References Find References
Rename Rename
Administration Page Administration Page
Search

History

9/28/2004 12:42:28 PM
List all versions List all versions

RSS feed for the FlexWiki namespace

Flex Wiki Notification
.
Summary

Newsletter Changes

Single Topic Notifications

I'd like to see a property (":NotifyMeOnChange:"?) that can be added to any page, that would typically be hidden, and that would allow me to subscribe to just one page, or any page I want. For example, on my wiki dotNetInfluencers.org I'm asking people to post their resume, but they'll want to know when it is changed although most may not care about many other pages on the wiki. -- MikeSchinkel [2004-07-14]

Delivery Changes

I'd like to see FlexWiki move to something a bit more industrial-strength for email. I think FreeSMTP.NET looks like a good choice. I've used it before and it seems very capable. I've looked over the license, and it seems appropriate for inclusion in an open source project. More than one opinion on that would be good, though: IANAL.

The reason I suggest a change is that I have seen the current code hang up when talking to my SMTP server. I don't yet know if this is a problem with the SMTP server or the code, but either way, it doesn't make sense that there's socket-level SMTP code in the current bits - this is something we should be able to reuse from elsewhere. -- CraigAndera

Eh - just realized the free version doesn't support SMTP authentication. :p -- CraigAndera

Why not create an EmailProvider like .Text has, and then let people create and/or use their own? I might even be able to get one of my vendors to offer a special free license for Wikis that are not used in a corporate environment. -- MikeSchinkel

Feature Enhancements

One of the things I will probably do is to change the way WikiNewsletters work. As a person who likes to receive things in email (hence my love for Newsgator as a news aggregator), I think that the WikiNewsletters almost do the job. The biggest problem with them right now is that they are static - you have to know a new topic has been added before you can list it in the newsletter, which means that it's crap as a notification mechanism. The RSS feed provides notification of all changes to the wiki, but this has a different set of problems

I think the sweet spot is somewhere in the middle. To that end, I'd like to add the capability to add what I think of as exclusionary newsletters to FlexWiki. This is basically the same as a WikiNewsletter, but instead of listing the topics you care about, you list the topics you don't care about. Defining them can take the same exact form it does today, with the addition of a NewsletterType property that could be set to either Inclusive or Exclusive to get the desired behavior. The default, of course, would be Inclusive, which should maintain backwards compatibility.

Thoughts? We need this at work, so I can go ahead and implement it if I don't hear that it's a terrible idea.

I really like the WikiNewsletters too and it's one of the main reasons I chose to use FlexWiki for team communication. I also like the new wildcard in the current build which makes them properly viable for my team.

Issues I see:

So I thought maybe something like the following:

I realise the drawbacks could be that the personal newsletters can only be small scale as they'll need to be generated per subscriber, but then this personalisation option could be a web.config setting to make the system viable for large scale use. -- MarcHolmes

Somebody suggested supporting wildcards on the list of topics included in a newsletter. It might be nice to combine this with the include and exclude mechanism proposed above. -- DavidOrnstein

Question

I would also like to see the RSS feeds deliver the same content as the newsletters. I really don't find the RSS stuff that valuable unless there is the latest content with a diff ala the newsletter.

Replacing NewsletterManager.AllTopicsForNewsletter seems to do it for me:

    public IEnumerable AllTopicsForNewsletter(AbsoluteTopicName newsletter)
    {
      // HybridDictionary switches between using a ListDictionary and a Hashtable 
      // depending on the size of the collection - should be a good choice since we don't
      // know how big the collection of topic names will be 
      HybridDictionary answer = new HybridDictionary(); 


      ContentBase cb = ContentBaseForNewsletter(newsletter);


      foreach (string s in FieldAccessor().GetListFieldValue(newsletter, "Topics"))
      {
        // If the wildcard appears, ignore all the other topics listed - include every topic
        if (s == "*")
        {
          answer.Clear(); 
          foreach (AbsoluteTopicName atn in cb.AllTopics(false))
          {
            answer.Add(atn.Fullname, atn); 
          }
          // No need to continue iterating after we find the wildcard 
          break; 
        }
        else
        {
          RelativeTopicName rel = new RelativeTopicName(s);
          foreach (AbsoluteTopicName atn in cb.AllAbsoluteTopicNamesThatExist(rel))
          {
            answer.Add(atn.Fullname, atn); 
          }
        }
      }


      // Now we need to remove any topics that appear in the Exclude field
      foreach (string s in FieldAccessor().GetListFieldValue(newsletter, "Exclude"))
      {
        RelativeTopicName rel = new RelativeTopicName(s);
        foreach (AbsoluteTopicName atn in cb.AllAbsoluteTopicNamesThatExist(rel))
        {
          answer.Remove(atn.Fullname); 
        }
      }


      return answer.Values;
    }

I didn't check in these changes because

  1. It was a pretty quick job in a part of the code I'm not familiar with
  2. I completely hate GotDotNet source control, especially with web projects. I highly recommend that we change the web project to a class library, since that will get rid of the annoying "You have to check out under C:\inetpub\wwwroot" problem, without any loss of functionality.

David, if you'd like to incorporate these changes, go ahead. If you'd like me to do it, I'd be happy to when I have more time. -- CraigAndera

I just changed it from a class library cause it makes debugging a web project a pain in the butt. However, you are correct, GDN + Webprojects sucks and is thankfully fixed in Whidbey. I put some detailed instructions on how to make the web project work on DeveloperProcess. However, it may be better if we nuke using the VS.NET source control plugin as the WinForms source control client, while slow, does not suffer these problems. -- OmarShahine

Interestingly, I don't share your opinion about debugging class library-based web projects - I've been able to set up regular class library projects to give me full-up "just hit F5" debugging. You have to tweak one or two project settings, but it can work. If I get a chance tomorrow, I'll see if I can get this to work with the projects in SourceSafe. If it works, I'll post here and we can figure out what the best thing to do is.

Oh, BTW, someone somewhere wrote a command-line GotDotNet scc provider. I have it sitting around somewhere - have to dust it off and see how it works. Generally, I find that cmd-line scc isn't too bad, but I'm sort of a command-line kind of guy. If we can get the benefits of VS.NET integration with the niceness of integrated debugging, that would obviously be best. -- CraigAndera

Ooh, if you can do that I'm sold. -- OmarShahine

It was trivially easy: http://staff.develop.com/onion/Samples/aspdotnet_without_web_projects.htm . I was able to get F5 debugging working no problem.

I hesitate to check it in, though, since you (Omar) are the one that posted the instructions about how to set up. And also because I'm having source control issues at the moment (SourceSafe blows). Do you want to go ahead and make the changes? About the only thing I did differently from Fritz's instructions was to pick Enable ASP.NET Debugging in the project settings. -- CraigAndera

I'll take a stab at this probably this weekend. -- OmarShahine

Not logged in. Log in

Welcome to the home of FlexWiki, a collaboration tool, based on WikiWiki, implemented using Microsoft .NET technologies

This is FlexWiki, an open source wiki engine.

This site supports the new NoFollow anti-spam initiative.
Change Style

Recent Topics