mojoPortal Blog https://www.mojoportal.com/blog http://www.rssboard.org/rss-specification mojoPortal Blog Module en-US webmaster@mojoportal.com (mojoPortal) 120 webmaster@mojoportal.com (mojoPortal) webmaster@mojoportal.com mojoPortal no A New Beginning It is an exciting day for the mojoPortal project! First, allow me to introduce myself. My name is Joe Davis. I am the Founder and President of i7MEDIA and a longtime supporter of mojoPortal. On Friday, February 3, 2017, I and Joe Audette, Founder of mojoPortal, completed an agreement for the sale of mojoPortal to i7MEDIA. This sale includes the open source project and the commercial modules available on the mojoPortal website from Joe Audette's company, Source Tree Solutions.

I have been using mojoPortal since 2008 and supporting it since 2009. I started my business in 2008 and set out to find a good content management system I could use to build websites for my customers. After a lot of trial and error, I came across mojoPortal and I was immediately drawn to its ease-of-use and friendly forum, fostered by Joe Audette. After 9 years of building sites with mojoPortal, contributing to the core, and providing support to my own clients and those around the world through the forums, I am thrilled that I, and my company, are able to ensure the further development of mojoPortal.

Rest assured mojoPortal will remain open source and there are no plans to change that. We (i7MEDIA) do, however, have plans for expanding mojoPortal to help it stay relevant and to provide the best .NET CMS platform on the market today.

You're sure to be wondering what Joe Audette has to say about all of this. Well, he is very enthusiastic about the new life of mojoPortal:

It gives me great satisfaction to know that I have created something that so many people have found useful and that it will continue to be used and supported by a top community member and his organization. Joe Davis and i7MEDIA have always been the most qualified consultants for mojoPortal other than myself, and I've always had great confidence in referring customers and projects to them over the years. Joe Davis has been a good friend and has been my go to guy when I needed to refer a customer or project that I did not have the capacity for. Whether you need design help, hosting, or custom feature development, i7MEDIA is the team you want with years of experience. mojoPortal was my baby for over a decade, and my baby is in good hands! Long live mojoPortal!

Joe Audette, mojoPortal Founder

What's Changing?

Basic Stuff

At first, we're going to focus on changing small things that will save site owners and site builders time. Some of these items are:

  • Ensuring that settings are logically organized and labeled properly.
  • Removing unnecessary markup (empty divs, excessive <br> elements, etc…).
  • Consolidating DB scripts.

Developer Support

Development of add-ons for mojoPortal isn't necessarily hard but there is a bit of a learning curve and quite a few steps one must take to prepare a working development environment. Our focus will be on cutting down on the number of steps and making the process easier overall. We will also explore possible MVC and WebApi implementations of some features, especially administration features like the File Manager. 

Additionally, we want to engage with the developers already using mojoPortal to get them contributing code to the project. GitHub provides a very simple mechanism for generating pull requests so if you have code you would like to contribute, we would be very grateful.

Beautiful Design

It has always been possible to create beautiful sites with mojoPortal but the built-in skins were not good examples. We're fixing that and we're committed to making sure that mojoPortal is seen as a designer-friendly CMS. To make that happen, we're going to implement some new functionality which will allow UI developers to include options for site owners to control various aspects of their skin.

Documentation Audit

mojoPortal is a fairly well-documented system but there is a lot of stuff that is just not needed anymore, other things have changed, and there's a lot that isn't documented. 

Commercial Add-On Pricing and Licensing

We're working on the licensing and pricing for the commercial add-ons. Some of them are going to be released as open source and others will see their prices change. The server licenses are back and are generally at a lower price than before. To see the new pricing, take a look at the store (we've renamed the page "Add-Ons" because in the near future we're going to have a marketplace so others can sell or list their own add-ons).

Licensing has changed for all commercial add-ons with regard to updates. Now, each purchase of an add-on will give the purchaser a year of updates to that add-on. If you purchase Form Wizard Pro on February 5, 2017, you can continue to download updates to the module through February 5, 2018.

When's the Next Update?

We expect to release a new version in the next couple of weeks with several small fixes, a few clean bootstrap-based skins, and a brand-new file manager to replace both of the current file managers and the link and image picker used in the WYSIWYG editors. That's right, one file manager that does it all. 

We Need Your Help

We purchased mojoPortal and we're committed to it being a success, again. We will need your help to make this happen. If you would like to help with documentation, let us know. If you would like to contribute code, check out how easy it is to submit a pull request. If you would like to help others looking for help, subscribe to the forums.

Here's to the Future of mojo!

I am very excited about the future of mojoPortal. We soft-launched the mojoPortal website over this past weekend and I have already received a few inquiries about what's going on and some messages of support. Thank you for taking the time to read this post. If you have any questions, please feel free to ask them in the forums or send us an email.


Joe Davis  ...Tweet This
]]>
https://www.mojoportal.com/a-new-beginning joe+mojoPortal@i7media.net (Joe Davis) https://www.mojoportal.com/a-new-beginning https://www.mojoportal.com/a-new-beginning Mon, 06 Feb 2017 14:56:00 GMT
Improvements to the mojoPortal Visual Studio Projects and Solutions Just a quick post to give a heads up to folks working with mojoPortal from the source code repository that the latest code in the repository has some significant improvements to the Visual Studio projects and solutions and I have updated some relevant documentation but wanted to bring it to your attention.

You can now use the Visual Studio Publish feature to package mojoPortal as described in the updated article Packaging and Deployment. I'm very happy about this because it has historically been one of those things that developers who are new to mojoPortal always stumbled with but prior to VS 2010 there was not an easy way to solve it. We've used the free UnleashIt tool to package mojoPortal since 2004 as we progressed from Visual Studio 2003 through VS 2005 and VS 2008, but improvements to Visual Studio 2010 and MsBuild made it possible to solve this problem easily so going forward will be able use Visual Studio 2010.

Also much nicer now for those who work with data layers other than MS SQL, you no longer have to change project references to use a different data layer. Now it is as easy as choosing the build configuration. I updated the old document "Setting the Data Layer in Visual Studio". I really love this since I'm always going back and forth working on different data layers.

screen shot of build configuration dropdown list

 

I think the out of the box experience with working with the source code in Visual Studio is significantly improved.

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/improvements-to-the-mojoportal-visual-studio-projects-and-solutions.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/improvements-to-the-mojoportal-visual-studio-projects-and-solutions.aspx https://www.mojoportal.com/improvements-to-the-mojoportal-visual-studio-projects-and-solutions.aspx Tue, 20 Jul 2010 11:46:00 GMT
SQL Server Compact 4.0 and mojoPortal On June 30, 2010, Scott Guthrie blogged New Embedded Database Support with ASP.NET, announcing that SQL CE 4 (SQL Server Compact Edition) would soon be available. It was officially released as a public CTP (Community Technology Preview) on July 7, 2010 with an announcement on the SQL Server Compact Team blog in a post by Ambrish Mishra entitled Introducing SQL Server Compact 4.0, the Next Gen Embedded Database from Microsoft.

This little database is big news for mojoPortal

Today I am happy to announce a preview release of mojoPortal 2.3.4.7 for SQL CE 4 and ASP.NET 4.0. This package has a pre-configured database and can be deployed under Medium Trust with .NET 4 hosting.(*) This means it is easy to deploy and use even on budget shared hosting where Medium Trust security policy is almost always used. You can download the package mojoportal-2-3-4-7-preview-sqlce-net40-deploymentfiles.zip from the bottom of this page on Codeplex. It is an MsDeploy package, so it can be installed by importing it in IIS, or you can just unzip it and install manually.

When installing web applications like mojoPortal, often one of the more challenging installation issues is setting up the database, for non-techies this is the part that people really struggle with, and even people who consider themselves fairly tech savvy can find themselves struggling to get it working unless they have a background in working with databases and understand all the nuances of connection strings and permissions. Using SQL CE 4 eliminates this challenge completely because the database is just a file on disk. There is no database software to install on the server, so it does not depend on the host having it installed, it only requires .NET 4 hosting. Since we ship a database file already populated with initial data, it is basically zero configuration for the database, you don't have to do anything, it just works.

I'm sure some of you are aware that mojoPortal has supported Sqlite for a long time, and it is also a zero configuration, file based database that many people like a lot. However, it has never worked under Medium Trust and if your site traffic starts to grow there is not an easy way to migrate the data to a more robust database.

  SQL CE Sqlite
Zero config deployment yes yes
Backing up the files backs up the database yes yes
Works in Medium Trust yes no
A supported migration path to a more robust database yes to SQL Express/Server/SqlAzure no convenient migration solutions that I know of

 

Now, I'm not yet sure yet how easy the migration of mojoPortal from SQL CE to SQL Server will be. Scott Gu mentioned that they will be shipping migration tools that will make it straight forward to migrate the tables and data from SQL CE to SQL Express, SQL Server or SQL Azure. However, since SQL CE does not support stored procedures and we do use them in the SQL Server data layer for mojoPortal, it means we will also need to make migration scripts available to install the latest stored procedures into the database after migration. So, in theory, the migration process will be to first use the tool that Microsoft will ship to migrate the tables and data, then run the scripts we will make available that contain the stored procedures for a given version of mojoPortal, then you would just deploy the mojoPortal version for SQL Server over your existing mojoPortal for SQL CE installation and set your connection string for the new database. Once the migration tools ship I will verify the process and create documentation with the migration steps.

In summary, I think that the SQL CE package for mojoPortal will make it easy for you to stand up impressive new web sites quickly and easily in budget hosting with the possibility to upscale to a more robust database platform later without too much difficulty. I would say that if you are putting up a site that you are expecting to grow traffic quickly, then you should probably just start out using SQL Express, SQL Server, or SQL Azure. But, how many sites that you put online for your customers really get a lot of traffic? If the answer is not many, then you may find SQL CE is the best choice for many of your projects, reducing costs and time to deployment.

Screen shot of mojoportal system information showing SQL CE

 

Top Secret Early Access! :-D

 
Now you may wonder how I managed to have a version of mojoPortal for SQL CE ready so soon after SQL CE 4 was released. The answer is that I had early access to SQL CE 4.0 and access to a bunch of good folks on the IIS and SQL Server teams to help me with guidance and questions and was also able to give them feedback while they were working on this release.
 
Back in early March I was contacted by Jonathan Hawkins of Microsoft and was invited to an online meeting where they told me what they were planning for SQL CE and why it might be beneficial for mojoPortal to support it, I of course was very excited about it.  At the time the alpha bits of SQL CE 4 were not quite ready but I was provided with good help and work arounds that would enable me to work on support for SQL CE using the 3.5 version so I could get started without waiting. So I went ahead at that time and implemented it for the core mojoPortal features (it took me about a week) and managed to get it working as proof of concept. Once that was done I moved on to work on other things not knowing how long it would be until the alpha bits of SQL CE 4.0 would be ready. Finally on June 2nd I got an email that the alpha bits were available, but I was knee deep in other projects right at the time, so it was around June 27-28 when I finally tried the new bits and verified it worked under Medium Trust. Then when Scott Gu blogged about it on June 30, I realized it was going to be public very soon so I scrambled to complete the SQL CE data layer for the rest of the mojoPortal features (except for WebStore and my Add On Products). It took about 1 week to finish that work and by Friday July 9 I was ready to produce a package but decided to wait until Monday to blog about it.
 
So here we are, it is Monday, and I've uploaded the package on Codeplex, at the bottom of our current release. I've done sanity testing of all the features but not exhaustive testing of every configuration of every feature, so it is possible and perhaps likely there are still a few bugs here and there in the data layer, after all this is our newest data layer and therefore the least tested of all our data layers at this point. That is why I'm calling it a "Preview" release, and I hope you will give it a try and report any problems you may encounter. I will fix them quickly.
 
I'd like to thank all the folks at Microsoft for giving me this opportunity to work closely with them and get early access to the technology, and I especially thank Jonathan Hawkins, Parasuraman Narasimhan, Radhakrishnan Srikanth, Mohammad Imran Siddique, Himadri Sarkar, and Ambrish Mishra for all their help. It has really been a great experience for me getting to work with these guys and do something with mojoPortal that fit well with cutting edge work these guys have done on SQL CE. I really think they have solved one of the long standing problems in ASP.NET web deployment. For low traffic sites or quick prototyping or proof of concept deployment, or just low budget web sites, this is really going to reduce friction and make it easy to put a site up in minutes. 
 

Technical Notes

 
It turned out well that I waited for SQL CE 4 before implementing all the mojoPortal features. When I implemented the core features I only had SQL CE 3.5 to work with so in places where I needed to select a page of data, I was having to use some awkward SQL syntax to make it work, it did work but it was difficult to read and write. One of the coolest new things in SQL CE 4.0 is the new syntax for selecting a page of data like this:
 
SELECT * FROM mp_GeoCountry ORDER BY Name OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;
 
It would be great if someday SQL Server supports an easier paging syntax, as it is still awkward to get a page of data efficiently in SQL Server, though it is a little easier than SQL CE 3.5 since SQL Server at least gives us stored procedures which provides a few additional strategies for getting a page of data. Anyway, you can guess I like this new syntax, it is much more convenient. Probably since I've worked with so many open source database platforms in mojoPortal, and have learned the major syntax differences between them, and really most of them have had easier ways to get a page of data than SQL Server for a long time, I'm glad to see something that makes a bit more sense. In a nutshell, MySql, PostgreSql, and Sqlite all support the LIMIT x OFFSET y syntax, Firebird has an interesting twist with SELECT FIRST x SKIP y, and SQL Server has always had the SELECT TOP (x) syntax but no equivalent to OFFSET, and this makes us have to jump through syntax hoops to get any efficient way to grab a page of data. So at the moment, in my view, SQL CE 4 has at least one cool syntax thing better than its big brother SQL Server even if it is not as capable in handling large traffic.
 

The mojoPortal Query Tool can talk to SQL CE

The above screen shot shows that the built in mojoPortal query tool can be used with SQL CE.

No need to install it in the GAC

One of the interesting things to me is that it seems like SQL CE 4 must be all managed code, that is, I think it must be implemented purely in .NET. The reasons I think this is because it seems that the database engine must be completely contained in System.Data.SqlServerCe.dll, and this dll just needs to be in the /bin folder, it doesn't even need to be installed in the GAC (Global Assembly Cache). The main reason why Sqlite doesn't work under Medium Trust is because it does some P/Invoke against a native dll written in C. To be allowed to do that the managed dll for Sqlite would have to be installed in the GAC. Since SQL CE can work without being installed in the GAC, I can guess it does not do any P/Invoke and is all managed code. Someone asked about this in the comments of Scott Gu's post, and while he did not specifically answer it, he did mention in comments that they are looking at enabling use of SQL CE in Silverlight which I think lends more evidence to it being fully managed code. I could be wrong though, possibly there are changes in code access security in .NET 4 that makes it possible to use without installing in the GAC.

The idea of being able to use SQL CE as a client side database in Silverlight is pretty compelling to me, so I'll be keeping my eyes open for future announcements. I had once done a proof of concept where I managed to use Sqlite as a client side database in Silverlight via Google Gears, but it had a few issues because database calls had to be marshalled back and forth from javascript to Silverlight via the Html Bridge. It would be much nicer to be able to use SQL CE directly from Silverlight. That would enable some really interesting client side scenarios.

(*) Actually I think SQL CE 4 could probably be used under 3.5 .NET but not under Medium Trust, it requires .NET 4 to work under Medium Trust, and the mojoPortal package for SQL CE is only going to be available for .NET 4.

Consolidation of Data Layers

At the moment we have a separate data layer for SqlAzure, SQL Server, and SQL CE. Back in March when I first began work on SQL CE support in mojoPortal, I blogged Anyone Still Using SQL 2000?, to guage how many people still use it. Going forward we are dropping support for SQL 2000 and then the MS SQL data layer will be modified to make it compatible with SqlAzure, and then we will eliminate the separate data layer for SqlAzure. I "think" the previous release of mojoPortal 2.3.4.5 was still compatible with SQL 2000, but the latest code in the repository is not compatible because we have changed from ntext to nvarchar(max) which is not supported in SQL 2000. So the next release of mojoPortal for sure will not be compatible with SQL 2000. Going forward we will support SQL 2005/2008/SqlAzure and SQL CE.

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/sql-server-compact-40-and-mojoportal.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/sql-server-compact-40-and-mojoportal.aspx https://www.mojoportal.com/sql-server-compact-40-and-mojoportal.aspx Mon, 12 Jul 2010 11:15:00 GMT
The Miraculous Resurrection of Novell Forge svn and the Recovery of Source Code History If you read this blog on a regular basis you may recall that back on May 12 I blogged Caught Off Guard Novell Forge svn is Gone!

I had missed the email and had not known that Novell Forge was going away as of March 2010. So as it was, the Novell Forge svn server had already been running way past the deadline when I found it was down on May 11 and 12. That morning I googled and found the notice about it. So we quickly moved to Codeplex with a new Mercurial repository which I have since found to be a joy to use. Ultimately I felt the whole situation had been a blessing in disguise because I like Mecurial so much better than Subversion.

Then a few weeks later on June 6, a surprising thing happened, there was a post in the forums where a user said he just got the latest version of the code from svn. As it turned out, the svn repository at Novell Forge was back online!

So the next morning I did some research and found this post and this linked post about how to get svn history into Mercurial. It seemed pretty straightforward so I kicked the process off wondering if it would really work given we have history in the svn repository going back to 2005. The process started working, it scanned the repository and started counting down from 6000 plus change sets that I guess it was converting to Mercurial change sets. So that was the morning of June 7, 2010 and it finally finished running this morning sometime before I got up. Today is June 28 so it ran for about 21 days. The conversion process was surprisingly robust in that a few nights (including the screen shot below where it was getting close to finishing) it would lose its connection with the server and stop running, but I would kick it off again and it would scan and then pick up where it left off. The process was killed one night because my computer went into hibernate mode an would not wake up without powering it off, and another night a forced reboot by windows update killed it, but every time it managed to work again and pick up where it left off.

hg convert screen shot

So now I have the ability to browse change history going back to the beginning of our svn repository using TortoiseHG with a Mercurial repository on my local machine.

TortoiseHG repository browser

I'm kind of glad we started with just the latest code in a clean repository at Codeplex because this much history takes up a lot of space on disk, but now it is nice that I will be able to have an archive the source code history on CD ROM.

I have to say that I am pleasantly amazed with Mercurial and TortoiseHG!

Anyway, thought I would share the happy ending!

 

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/the-miraculous-resurrection-of-novell-forge-svn-and-the-recovery-of-source-code-history.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/the-miraculous-resurrection-of-novell-forge-svn-and-the-recovery-of-source-code-history.aspx https://www.mojoportal.com/the-miraculous-resurrection-of-novell-forge-svn-and-the-recovery-of-source-code-history.aspx Mon, 28 Jun 2010 16:08:42 GMT
The .NET 4 Transition Plan for mojoPortal This post will outline the transition plan for moving forward with .NET 4.0 in mojoPortal while still maintaining support for .NET 3.5 and how this plan will impact developers working with the mojoPortal source code.

Beginning with the coming release, we will be making a separate set of compiled deployment packages for .NET 3.5 and for .NET 4.  For those who are not working with the mojoPortal source code, you don't need to read the rest of the post, the only part you really need to know is that when you upgrade to the next and future versions of mojoPortal you need to choose the correct download package for your hosting environment. If you are hosted in 3.5 .NET you will need to choose the appropriate package for 3.5 and if you are hosted in .NET 4 you will want the package for .NET 4.

Transition Duration

We will continue to produce deployment packages for .NET 3.5 for at least the next year and possibly longer depending on community feedback.

What Changes Will Be Required?

The target framework is a project level setting, so we will be changing the 3 web UI projects (mojoPortal.Web.csproj, mojoPortal.Features.UI.csproj, and WebStore.UI.csproj) to have a target of .NET 4. To the extent possible we will try to keep the target for all other supporting projects as 3.5 during the transition period.

To make it possible to be able to produce a build for 3.5 .NET I have made copies of the above project files and named them as mojoPortal.Web.net35.csproj, mojoPortal.Features.UI.net35.csproj, and WebStore.UI.net35.csproj and I have set them up in a separate set of solution files.  

mojoportal.net35.sln is the complete solution configured for .NET 3.5.
mojoportal.core.net35.sln is just the core without all the features like blog, forums and WebStore etc.
mojoportal.mssqlonly.net35.sln is the full set of features but leaving out the data projects for alternate databases.

The main solutions which will be used for .NET 4 development have the same name except for the .net35 segment.

The new projects for .NET 3.5 are already available in the repository, but I have not yet changed the target on the main projects to 4.0, this will probably be done tomorrow. I did a test conversion on a copy already to make sure I will have no problems with the conversion.

We also have mojoportal.mono.sln which is for use in MonoDevelop on Linux.

screen shot of target framework setting

 

How Will This Impact Developers?

For some developers this will be great because they are wanting to use .NET 4 and the main solution and project files will be setup for .NET 4 development.

Developers who need to continue working with .NET 3.5 for their own custom features will need to remove the 4.0 version projects and add the new net35 projects in their custom solution files and then may need to re-create project references to the new projects since references may be lost when the projects are removed.

There will also be one other inconvenience for those who need to stay on .NET 3.5 development. When we convert the main Web project to .NET 4 it will change the Web.config file to be compatible with .NET 4 and it will no longer be compatible with .NET 3.5. I have created an alternate Web.net35.config file, so you will have to copy the contents of that file into the Web.config file after getting the code. To avoid merge conflicts when getting code updates from the Mercurial repository, you may also need to revert the Web.config file before getting updates from the repository and then change it back again afterwards. 

Since the 4.0 and 3.5 versions of the projects will share the same files, I have added a conditional compilation symbol NET35 on the 3.5 versions of the projects. So in code that uses new properties or methods available only in .NET 4 we will have to wrap the code with checks for the conditional symbol like this:

#if !NET35

// some .NET 4 specific code

#else

//some alternate .NET 3.5 code if needed

#endif

screen shot of conditional compilation symbols

This way when we compile the 3.5 versions it will leave out the 4.0 only stuff.

Of course this means that whenever I add a new file to one of the 4.0 projects I have to remember to also add the file in the 3.5 version of the project, so there will be some extra tedium for me also during this transition period. Once the transition period is over and we feel it is safe to drop support for .NET 3.5, then we will remove the extra project and solution files and we will then be able to change the target on all the projects in the solution to .NET 4. There may be a few bumps along the way in a transition such as this, it is similar to what we went through in the transition from 1.1 .NET to 2.0 back around 2005.

So that is the go forward plan that will allow us to begin using some .NET 4 features while maintaining the ability to produce builds for 3.5 .NET for at least the next year. If anyone has any concerns or opinions or other feedback about this plan, please post in the comments. The main projects will be converted to .NET 4 possibly as soon as tomorrow. If that worriess you, you might want to go ahead and get a fresh update from the repository today.

UPDATE 2010-05-24: I've completed the conversion of the main projects to 4.0 .NET in the repository and verified that it is still very easy to make a build for 3.5 .NET.

www.mojoportal.com has been running on .NET 4 for several days now and all seems well. I did encounter a few little menu rendering issues at first but was able to solve them in code (already updated in the repository). So far the only significant issue I've found is that under .NET 4 Medium Trust configuration we get errors on any page that has NeatUpload on it. I've passed the information about the error on to Dean Brettle, the developer of NeatUpload so hopefully it can be resolved soon. In the mean time I would not recommend using mojoPortal under .NET 4 with medium trust. It does works fine in Full Trust and hopefully the Medium Trust issue can be solved in the near future.

UPDATE 2010-05-25: Thanks to assistance from Dean Brettle, the latest version of mojoPortal in the repository now works with no errors under .NET 4 Medium Trust.

 

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/the-net-4-transition-plan-for-mojoportal.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/the-net-4-transition-plan-for-mojoportal.aspx https://www.mojoportal.com/the-net-4-transition-plan-for-mojoportal.aspx Thu, 20 May 2010 15:45:00 GMT
Caught Off Guard Novell Forge svn is Gone!  

Hi All,

This is a heads up to anyone working from our svn repository. Yesterday afternoon as I tried to do an svn commit I got an error that it could not connect to the server. I figured it was a temporary issue but it was down still this morning so I did a quick google for "novell forge svn is down" and what I found totally caught me off guard. Apparently the service is shut down completely and I was never notified it was coming and did not see the announcement about it. So I had no time to prepare and migrate to another project hosting. Of course I still have the latest version of the code on my machine but all the history of changes is lost as far as I know.

It sure would have been nice if this had been communicated through more channels like an email to project administrators or to the novell forge mailing list.

So, today I have to figure out the go forward plan and execute it as quickly as possible so I can get back to normal development tasks.

The 2 viable choices as I see them are either hosting the code at SourceForge where we can continue using svn and TortoiseSVN for all source control operations or hosting the code at Codeplex. The advantage of Codeplex would be that source code activities would now be captured as project activity and possibly help us get recognized on Codeplex as being a very active project whereas in the past we never got on the list of most active projects partly because they had no tracking of our source code activity when we were hosted on Novell Forge. The downside would be that we would no longer be able to do all source control operations with TortoiseSVN. There is an svn bridge built into the Codeplex service so it would still be possible to do svn checkout and svn update and probably commit would also work, but it does not support merge which is a very important function when you maintain different branches of code and want to merge changes from one branch to another. But the real source code control system behind Codeplex is Team Foundation Server and we would have the option of using Visual Studio Team Explorer. My perception is that branching and merging is a lot different in TFS so there would be a learning curve to get up to speed as compared with continuing to use svn at SourceForge. This would only affect those with commit access though, users just doing checkout and update could use TortoiseSVN to get the code from Codeplex.

Github would also be a possibility but would require a learning curve and different tools for working with source control. I would love to have been able to consider Google Code but they don't support our use of the Common Public License and I don't think we should have to change our license to make Google happy.

At the moment I'm leaning towards using Codeplex. It is the go to place for Microsoft centric open source projects and we already host our download files there and it seems advantageous to consolidate our source code repository there. If anyone has an opinion, feel free to weigh in with comments.

UPDATE: I've completed the initial checkin at Codeplex, you can now get the latest code again, using TortoiseSVN, the url is https://mojoportal.svn.codeplex.com/svn/trunk

It was a fairly smooth migration to Codeplex and it all seems to be working ok and back to business as usual.

UPDATE 2010-05-19: We had some issues where some client machines could not get all the files using TortoiseSVN while other machines had no problems. After trying for several days to figure out why it didn't work on a problem machine we had no success in finding the cause or solution. So yesterday we reset the repository and are now using Mercurial instead of TFS. New instructions for getting the code with TortoiseAG can be found here. At first I was a little hesitant to switch to Mercurial but after reading up on it, it seemed like it might have some advantages. So far I'm really liking it better than svn.

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/caught-off-guard-novell-forge-svn-is-gone.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/caught-off-guard-novell-forge-svn-is-gone.aspx https://www.mojoportal.com/caught-off-guard-novell-forge-svn-is-gone.aspx Wed, 12 May 2010 12:30:06 GMT
5 New Developer Training Videos Just a quick post to mention that 5 more videos have been completed in the developer series of videos. Here is the full list of videos so far and more are on the way soon. The newest videos are at the bottom of the list. The series is aimed at teaching how to build custom features that plug into mojoPortal by demonstrating step by step how to implement a guest book feature. Once the series is completed I will also make the source code available.

  1. Getting the code with TortoiseSVN
  2. Source Code Overview Part 1
  3. Source Code Overview Part 2
  4. Custom Solution
  5. Hello Web
  6. Hello Web Part 2
  7. Hello Guest Book
  8. Concepts Part 1
  9. Concepts Part 2
  10. Debugging in IIS
  11. Create a Table Using the Setup System
  12. Using The Setup System to Run Upgrade Scripts
  13. Generating a Data Access Class
  14. Generate the Business Layer
  15. First Guestbook Submission
  16. Form Layout
  17. Form Layout and Data Binding
  18. Upgrading from svn and Converting to VS 2010
  19. CSS Layout
  20. Using a WYSIWYG Editor and Captcha
  21. Default Button and Input Validation
  22. Protecting Against Untrusted Content
  23. Supporting Pages Part 1
  24. Supporting Pages Part 2
  25. Supporting Pages Part 3
  26. Enforcing Security Part 1
  27. Enforcing Security Part 2
  28. Implementing the update method

UPDATED 2010-05-11: added 3 more videos 26, 27, and 28

Also don't forget the mojoPortal online user group meeting is coming up on May 18, 2010 at 8PM EDT.

mojoportal online user group meeting

 

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/5-new-developer-training-videos.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/5-new-developer-training-videos.aspx https://www.mojoportal.com/5-new-developer-training-videos.aspx Mon, 10 May 2010 12:22:05 GMT
mojoPortal 2.3.4.3 Released I'm happy to announce the release of mojoPortal 2.3.4.3, available now on our download page. This is primarily a minor bug fix release for issues reported in the forums since the last release, but also introduces alternate Web.config files that allow hosting mojoPortal in ASP.NET 4.0.

Hosting in ASP.NET 4.0 and the Plan for Transitioning to 4.0

Although the current release of mojoPortal is compiled for the 3.5 SP1 .NET framework, it is compatible for hosting under .NET 4.0, but requires different Web.config settings. So basically we have 4 different Web.config files

  • Web.config is configured for .NET 3.5 full trust hosting
  • Web.mediumtrust.config is meant for .NET 3.5 medium trust hosting
  • Web.net4.config is for .NET 4 full trust hosting
  • Web.net4.mediumtrust.config is for .NET 4 medium trust hosting

Whichever file you use needs to be named Web.config, so for example to run in .NET 4 medium trust you should rename the Web.config to Web.net35.config and then rename the Web.net4.mediumtrust.config to Web.config

demo.mojoportal.com has been running under .NET 4 for several days now and seems to be working well. My recommendation would be for new installations to use .NET 4 hosting to be future proof. I might hold off a bit before migrating existing installations to .NET 4 but it is time to start thinking about migrating to .NET 4 at some point in the not too distant future.

UPDATE 2010-05-15 Several people have reported problems trying to get mojoPortal working in shared hosting under .NET 4. Therefore I recommend stay with 3.5 hosting until we put out a package compiled for .NET 4.

For developers

In the source code packages and in our svn source code repository, we currently have alternate project and solution files for Visual Studio 2008, but the main projects and solutions have already been converted to Visual Studio 2010. I recommend that everyone begin using Visual Studio 2010 as soon as possible. I will not be keeping the VS 2008 compatible files for long because it is more work to do so. You can also use the free Visual Web Developer Express 2010, so there should be no barrier to moving forward. After eliminating the VS 2008 project and solution files, I will then setup alternate project and solution files for .NET 3.5 and then the main projects and solution can be changed to target .NET 4. Once I do this, we will have to maintain separate release packages for 3.5 and 4.0 .NET and we will have to use conditional compilation to wrap any use of .NET 4 specific features so that we can continue to produce builds for 3.5 .NET. We went through a similar process with the transition from .NET 1.1 to .NET 2.0 back in 2005. it will be more difficult for a while having to manage supporting both 3.5 and 4.0 .NET while beginning to use some of the 4.0 features. We will probably do this for about 1 year and then we will drop the effort to support 3.5 framework. Hopefully this will give most users enough time to migrate to 4.0 .NET hosting.

Miscellaneous

  • Implemented option to allow users to choose which editor they prefer if enabled from site settings
  • Added setting to allow hiding the search box in forums per community request
  • made it possible to use a custom configuration file for the Vertigo Silverlight slideshow used in the Image Gallery and Flickr module, to be documented
  • upgrade from NeatUpload 1.3.22 to 1.3.24
  • updated Italian Translation from Diego Mora
  • added some Codesmith templates for VB.NET in source code package
  • some more refinements of TimeZone handling
  • previously we had added this to the layout.master file of skins to pre-zoom the screen for iPhone: 
    <meta name="viewport" content="width=670, initial-scale=0.45, minimum-scale=0.45"/>
    this has been removed from existing skins and I recommend you remove it from your layout.master if it is there after upgrading. The reason is that it also affects iPad, but we really don't want to pre-zoom the screen in iPad since the screen is much larger, so now we add this meta element from code only when the request is from iPhone, therefore it does not need to be in the layout.master file
  • fixed an issue where the wrong cart could be used if there were more than 1 WebStore in a site
  • other miscellaneous bug fixes for things reported in the forums

I'm still working on the series of developer training videos and you can expect to see more of them in May

 

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/mojoportal-2343-released.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/mojoportal-2343-released.aspx https://www.mojoportal.com/mojoportal-2343-released.aspx Thu, 29 Apr 2010 15:29:21 GMT
mojoPortal 2.3.4.2 Released I'm happy to announce the release of mojoPortal 2.3.4.2, available now on our download page. This is primarily a bug fix release, but also, this release marks the move to Visual Studio 2010.

Bug Fixes

  • Fixed a bug that prevented changing the password format.
  • Reverted from TinyMCE 3.3.2 back to version 3.2.7 due to some bugs in the paste as text and paste from word in the newer version.
  • Reverted from jQuery 1.4.2 back to 1.4.1 due to a minor bug where a script error would happen in IE if the javascript debugger was enabled such as when working in Visual Studio
  • other miscellaneous bug fixes

Miscellaneous

This release will probably be the last one to support MS SQL 2000. Users running on SQL 2000 should plan to upgrade to SQL 2005/2008 soon or use the free Express version of SQL 2008. This will enable us to make the main MS SQL data layer also work for SqlAzure so that we don't have to maintain a separate version just for Sql Azure. The main changes that will be made going forward involve changing from ntext to nvarchar(max) and a few syntax changes in some procedures. ntext is now considered a deprecated data type, it is not supported in Sql Azure. SQL 2000 on the other hand does not support nvarchar(max), thus to move forward we need to be willing to drop support for SQL 2000.

Upgrade from CKeditor 3.2 to 3.2.1

Visual Studio 2010 and .NET 4.0

Yesterday, Microsoft released Visual Studio 2010 and .NET 4.0, bringing us to a transition point similar to when we changed from Visual Studio 2003 to Visual Studio 2005, and then to Visual Studio 2008. For developers like me who spend their day in Visual Studio, it is always exciting to get the new version. Microsoft really delivers great developer tools and there are always a lot of great improvements in new versions of Visual Studio.

With a project such as mojoPortal that is widely deployed we cannot expect everyone to upgrade their servers or hosting immediately to ASP.NET 4. Therefore we will continue targeting .NET 3.5 SP1 for possibly up to a year to give time for ASP.NET 4.0 hosting to become widely available and to allow time for people to plan migrating or upgrading their hosting environments to ASP.NET 4. However, on the developer side we can immediately begin using Visual Studio 2010. Of course, just as in previous Visual Studio upgrades the project and solution files get upgraded and then can no longer be opened in the older version.

Visual Studio Project upgrade wizard screen shot

Things are a lot better this time than in previous upgrades because there is a free version of Visual Web Developer Express, that can be used with mojoPortal, so there is nothing holding anyone back from working with the latest mojoPortal using the latest tools. I have created temporary project and solution files that can still be used in Visual Studio 2008. These are named with -vs2008.sln and can still be opened in VS 2008. However I don't plan to keep them around for more than a month or so at most because it is more work maintaining these solutions and projects. So I recommend get yourself the latest version of Visual Studio or Visual Web Developer Express as soon as you can. It is time to bid a fond farewell to our old friend Visual Studio 2008, it is now officially a legacy tool. Back when Visual Studio 2008 was first released, we had to maintain projects and solutions for Visual Studio 2005 much longer because the free version of Visual Web Developer Express 2008 did not support class library projects until SP1, so we really had no free option available to work with mojoPortal and had to wait for most people to upgrade to VS 2008.

Today is my first day working in Visual Studio 2010, having not tried the betas or release candidate. It definitely feels more modern and smooth than VS 2008. Haven't spent enough time with it yet but so far it seems really nice, I love the ability to peel off a screen and move it to a different monitor!

 

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/mojoportal-2342-released.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/mojoportal-2342-released.aspx https://www.mojoportal.com/mojoportal-2342-released.aspx Tue, 13 Apr 2010 12:19:17 GMT
Anyone Still Using SQL 2000 with mojoPortal? Hello mojoPortal community,

I would like to gather your feedback about something I am contemplating. Not long ago I implemented a new data layer for Sql Azure. I could have just made changes in the MS SQL data layer to make it compatible. The biggest change would be that ntext fields must be changed to nvarchar(max). There are a few other changes needed to support Sql Azure but that is the main issue as we are currently using ntext all over the place. The problem is that nvarchar(max) was introduced in SQL 2005, so doing this would be explicitly dropping support for SQL 2000 in mojoPortal. Doing this would be very beneficial to me because I could consolidate into 1 data layer that supports SQL 2005, 2008, and Azure and this would reduce maintenance by eliminating the need for an extra data layer for Sql Azure. 

So, what I'm trying to guage is how many of you are using SQL 2000?

It is 10 year old technology after all and at some point it seems like we should be able to drop support for it. If I were to drop support for it sometime soon how many of you would be chasing me with pitch forks?

Thanks,

Joe


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/anyone-still-using-sql-2000-with-mojoportal.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/anyone-still-using-sql-2000-with-mojoportal.aspx https://www.mojoportal.com/anyone-still-using-sql-2000-with-mojoportal.aspx Wed, 10 Mar 2010 18:23:26 GMT
Some New Training Videos Just a quick post to let people know about new training videos available. I am making it my focus for this month to produce a lot more tutorials to answer common questions and especially to help developers get started with custom development. I still have a ways to go with the developer tutorials, but thought I would go ahead an post links to videos I've completed so far.

Installation and Configuration

Developer Series

I've begun a series of clips where I plan to implement a simple Guestbook feature as a way to cover important concepts. 

  1. Getting the code from svn trunk
  2. Introduction to the Source Code Part 1
  3. Introduction to the Source Code Part 2
  4. Creating a Custom Solution and Project
  5. Hello Web Part 1
  6. Hello Web Part 2
  7. Guestbook first steps
  8. Concepts Part 1
  9. Concepts Part 2
  10. Debugging in IIS
  11. Create a Table in the db using the setup system
  12. Create stored procedures with an upgrade script using the setup system
  13. Generating a data access class
  14. Generate the business layer
  15. First Guestbook submission achieved
  16. Form Layout 
  17. Form Layout Part 2 and data binding

Just getting started so far, lots more clips to produce to complete the Guestbook tutorial. I'm planning to cover development of business and data access classes and how to add supporting pages to your feature as well as how to make your feature searchable. I'm working only from an outline not a script, so the videos are mostly improvised and I stumble on a few things here and there, but rather than edit them out, I think it is helpful since you may also stumble a little bit, so learning to work through the stumbles is part of the process.

Each clip will be less than 10 minutes in order to fit them on YouTube, but they are in high definition so the video quality should be pretty decent.

UPDATE 2010-03-08 -added items 8 - 17 to the list above.

 

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/some-new-training-videos-2010-03-02.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/some-new-training-videos-2010-03-02.aspx https://www.mojoportal.com/some-new-training-videos-2010-03-02.aspx Tue, 02 Mar 2010 17:25:37 GMT
Web Chat Using Live Messenger Several people have asked about a chat feature for mojoPortal in the past and I've had my eye on a few ways to implement chat but have mainly been too busy working on other things to try and tackle it because I viewed it as a complex feature to implement. But recently I found out about the Live Messenger Web Toolkit and that seemed to lower the bar so that it was pretty mch low hanging fruit to implement chat. There are actually quite a few things developing in Microsoft Live Services that are very interesting. Much of it was announced at Mix 09, I still haven't watched all the videos but I plan to watch them soon and learn about tha various scenarios that can be implemented. But, so far I have implemented chat and it will be in the coming release of mojoPortal as a built in feature that can be enabled/disabled.

There will be a new "Live Messenger Chat" feature that you can put on a page, as a supplement to the contact form for example and your web visitors will be able to chat with you no matter whether they have a Live Messenger account or not. You will chat using your desktop Live Messenger and the web control will display your availability and if you are online it will allow web visitors to initiate a chat with you.

In addition to the new "Live Messenger Chat" feature that plugs into the content system, you can also enable your site users to have web chat controls on their profile page so that site users can initiate chat with one another. To receive chats a user will need the Live Messenger desktop software but chats can be initiated by web site visitors directly in the web page with no need for a Live account.

I invite you to try the chat here on mojoPortal.com to help iron out any kinks before the release (which I hope to make on Monday). To enable chat on your mojoPortal user profile, visit the "My Account" page using the link at the top (after you sign in), click the profile tab, then click the link that says "Acquire/Refresh a Live Messenger Permission Token" (ok its mispelled in the screen shot but I will fix that before the release)

aquire live messenger permission link screen shot

You'll note that te checkbox is disabled until you have the token. Once you have the token the checkbox becomes enabled and if you check it ans save, the chat will appear on your public profile page like this:

live messenger web control screenshot

You can see it on my profile here, there are links to member profiles also on the member list page and in the forums.

Now I'm not really big on using chat myself because I'm very busy and generally don't like things popping up and interupting me, so don't expect me to be generally available for chat. I built this feature mainly for others (who have requested it) to use. I'm not going to be using it for support, the forums are much better for that because they are searchable. But it would be great if people could test this out and give some feedback in the forums if you find any problems or have suggestions for improvements. I know lots of you out there use chat all the time whereas I hardly ever use it, so your feedback is important. For me its just a really cool feature that I'll hardly ever use ;-) so I'm not the best judge of it.

 


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/web-chat-using-live-messenger.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/web-chat-using-live-messenger.aspx https://www.mojoportal.com/web-chat-using-live-messenger.aspx Fri, 17 Apr 2009 11:20:09 GMT
New Color Picker Landed in svn I've recently been working on some soon to be released enhancements to my Event Calendar Pro product. One of the requested features was the ability to set the colors for each event so they can be colored differently on the Month View. In order to implement this I needed a color picker, but rather than build the color picker into the Event Calendar Pro product, I decided to implement it in the core of mojoPortal so it can be used in other features and so other developers can use it in their own features. I implemented it as a UserControl that implements ISettingControl, a simple interface that makes it possible to use the control in Module Settings or in custom user profiles. So for example if you wanted to have a Favorite Color Property on the user profile page you could add this to your profile.config file:

<add name="FavoriteColor"
type=""
iSettingControlSrc="~/Controls/ColorSetting.ascx"
labelResourceKey="Favorite Color"
defaultValue="#34983E"
/>

and the result looks like this:

Color Picker Screen shot

The color picker javascript is using the YUI Color Picker via a custom implementation from Dynamic Drive that I enhanced further to add localization and pre-selection of the color in the picker.

I hope to release the new version of Event Calendar Pro in the next few days. In order to do that I will also be releasing a new version of mojoPortal with the color picker because the Event Calendar Pro upgrade depends on this feature.

UPDATE 8:45am EST

I've deployed the latest version of Event Calendar Pro to the demo site.

Here is a list of the improvements:

  1. Ability to specify the end date for recurring events.
  2. Will Pay option for ticket sales. There is a setting on each event where you can check a checkbox to allow users to register for the event by clicking a button that says "I Will Pay Later". You can further control this from the module settings (gear icon) where there is a new setting so you can specify roles that are allowed to use the Will Pay button. That way you can put your trusted customers into a role and only allow them to register with this button, other users will not see the "I Will Pay Later" button, they will have to use the normal payment methods. button.
  3. Color coding of events in Month View. You can now sepcify foreground, background and border colors for events to make them have different colors in Month View.
  4. Ability to specify the text for event registration link.
  5. Location alias - for use when you want the name of the location to be different than what you need to enter for the google map to work.
  6. Meta Keywords and description per event
  7. Map settings per event instead of global

Any testing or feedback much appreciated, I'd like to release it soon. It will be a free upgrade for existing customers who have purchased it already.


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/new-color-picker-landed-in-svn.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/new-color-picker-landed-in-svn.aspx https://www.mojoportal.com/new-color-picker-landed-in-svn.aspx Thu, 15 Jan 2009 11:50:23 GMT
Silverlight + Google Gears = Awesome! at least in Firefox I spent most of the week prototyping some things in Silverlight. I figured during the holiday week most people out there goofed off on their jobs a lot this week, so rather than work on my roadmap priorities, I decided to have some fun and play with Silverlight.

Some of you who have followed my blog for a while may remember some posts I made in the past about my plans for Site Office as a second plug in model for mojoPortal more geared to line of business apps that need a consistent look and feel rather than the web site kind of look, they need to look like applications. I originally protyped the UI using Dojo and then later re-did it with ExtJs. You can see the ExtJs version if you login to this site (or http://demo.mojoportal.com using admin@admin.com and password admin), then click the Site Office link at the top. You'll see the drag resizable panes that give the idea of where I wanted to go with Site Office as a UI for LOB applications. This prototype has just been sitting there without much attention because of other priorities and also partly because my enthusiasm for ExtJs disappeared when they changed the license from LGPL to GPL. Anyway, even back then I implemented a google gears query tool. Its really the only functioning app in the old Site Office prototype, you can find it by clicking the My Stuff in the left accordian menu in Site Office and then click SQL. For those who don't know, google gears is a client side SQL database built on SQLite and having this database available opens a lot of possibilities in web development for very rich and responsive applications.

Well, now my plan is to scrap the old ExtJs based Site Office prototype and build a better one with Silverlight. I've already got the Google Gears Query Tool re-implemented in Silverlight as shown below:

silverlight google gears query tool ascreenshot

I wrote a nice managed code wrapper around the javscript calls for gears. The only problem is, it doesn't work well in IE 7 for some reason, it works great in Firefox. I've sent an email off to Scott Guthrie at Microsoft in hopes of some help looking into the problem, but for now you can try it out online at http://demo.mojoportal.com/Index.aspx, you can see that I've got the basic layout of Site Office again implemented in Silverlight with the drag re-sizable panes. I plan to build a plug in model that allows you to plugin your own Silverlight applets and let the framework provide stuff thats common across applications. If I can get google gears working well across browsers with Silverlight its really going to be sweet. The code for this is in my svn sandbox and will probably land in trunk sometime next week.

Now using the managed gears wrapper can be seen in this client side business/data class, it looks very much like a server side class but its a client side object populated from a client side database in a very similar fashion to what it would look like in server side code. Notice the parametrized queries to prevent sql injection attacks. This class represents a saved query but it could represent anything.

using System;


namespace mojoPortal.Silverlight.Helpers.Gears
{
   
    public class SavedQuery
    {
        public SavedQuery()
        {}

        private int id = -1;
        private string name = string.Empty;
        private string query = string.Empty;

        public int Id
        {
            get { return id; }
        }

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public string Query
        {
            get { return query; }
            set { query = value; }
        }

        public void Save(GearsDb gearsDb)
        {
            if (id == -1) { Create(gearsDb); return; }

            Update(gearsDb);
        }

        private void Create(GearsDb gearsDb)
        {
            if (gearsDb == null) { return; }

            string sqlCommand = "insert into savedqueries (name, query) values (?, ?)";
            object[] parameters = new object[2];
            parameters.SetValue(name, 0);
            parameters.SetValue(query, 1);
            gearsDb.Execute(sqlCommand, parameters);
            id = gearsDb.LastInsertRowId();

        }

        private bool Update(GearsDb gearsDb)
        {
            if (gearsDb == null) { return false; }

            string sqlCommand = "update savedqueries set name = ?, query = ? where id = ?";
            object[] parameters = new object[3];
            parameters.SetValue(name, 0);
            parameters.SetValue(query, 1);
            parameters.SetValue(id, 2);
            gearsDb.Execute(sqlCommand, parameters);
            int rowsAffected = gearsDb.RowsAffected();
            return (rowsAffected > 0);
        }

        public static SavedQuery GetQuery(GearsDb gearsDb, int id)
        {
            if (gearsDb == null) { return null; }
            string sqlCommand = "select * from savedqueries where id = ?";
            object[] parameters = new object[1];
            parameters.SetValue(id, 0);
            GearsResultSet rs = new GearsResultSet(gearsDb.Execute(sqlCommand, parameters));

            SavedQuery query = null;
            if (rs.IsValidRow())
            {
                query = new SavedQuery();
                query.id = Convert.ToInt32(rs.GetFieldValue("id"));
                query.name = rs.GetFieldValue("name").ToString();
                query.query = rs.GetFieldValue("query").ToString();
            }
            rs.Close();

            return query;
        }

        public static SavedQuery GetQuery(GearsDb gearsDb, string name)
        {
            if (gearsDb == null) { return null; }

            string sqlCommand = "select * from savedqueries where name = ?";
            object[] parameters = new object[1];
            parameters.SetValue(name, 0);
            GearsResultSet rs = new GearsResultSet(gearsDb.Execute(sqlCommand, parameters));

            SavedQuery query = null;
            if (rs.IsValidRow())
            {
                query = new SavedQuery();
                query.id = Convert.ToInt32(rs.GetFieldValue("id"));
                query.name = rs.GetFieldValue("name").ToString();
                query.query = rs.GetFieldValue("query").ToString();
            }
            rs.Close();

            return query;
        }

        public static bool Delete(GearsDb gearsDb, int id)
        {
            if (gearsDb == null) { return false; }
            string sqlCommand = "delete from savedqueries where id = ?";
            object[] parameters = new object[1];
            parameters.SetValue(id, 0);
            gearsDb.Execute(sqlCommand, parameters);
            int rowsAffected = gearsDb.RowsAffected();
            return (rowsAffected > 0);

        }

    }
}

Update 2008-12-23

I have narrowed down the problem with IE and use of Google Gears in Silverlight. All the Gears functionality works except for 2 methods. The 2 methods broken in IE are GearsResultSet.GetFieldName(int fieldIndex) and GearsResultSet.GetFieldValue(int fieldIndex). I can get the field value if I know the field name ahead of time using GearsResultSet.GetFieldValue(string fieldName), so for most applications I should still be able to use Gears even in IE because my field names will be known ahead of time. Unfortunately for the query tool we have no way of knowing what fields will be in the result of ad hoc queries. So the query tool will only be useful in Firefox, but for other features I should be able to use gears without any trouble and this is very good news. I also have got a few web services talking to Silverlight, so I'm able to authenticate and get user roles. These services are actually built into the framework so I didn't have to implement them. I am working on some RESTful web services using the WCF REST Starter Kit.
 


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/silverlight-google-gears-awesome-at-least-in-firefox.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/silverlight-google-gears-awesome-at-least-in-firefox.aspx https://www.mojoportal.com/silverlight-google-gears-awesome-at-least-in-firefox.aspx Fri, 28 Nov 2008 20:10:00 GMT
mojoPortal Gets A Little Microformat Oomph Just integrated Oomph, a javascript Microformat Overlay into mojoPortal. You can watch the PDC presentation about Oomph from this page https://sessions.microsoftpdc.com/public/timeline.aspx, click Day 3 then click Oomph and you can see the video links at the bottom.

Microformats are a way of marking up information in html using some agreed upon conventions that add semantic meaning to the markup. For example hcard, is a format for marking up contact information. What Oomph does is recognize the hcards and hcalendar items in your page and creates a javascript widget in the top left of the page that gives you some neat options for adding contact to your Yahoo Contacts, adding events to your googe calendar, showing event and contact locations on a map using Virtual Earth, etc. Pretty neat stuff. You can see it in action on our consulting list, where I've marked up the content using hcard format. The list view feature of our Event Calendar Pro add on product also renders in hcalendar format so events can show up in the oomph widget. I've shrunk my browser window down a bit to make a screen shot of the widget below but for best impressions try it yourself.

oomph screen shot

Other Developments

I always like to dogfood new features here on mojoPortal.com to work out any issues, so this site is runnning the very latest code from my sandbox.

At the moment I'm also testing some performance optimizations that I just integrated into mojoPortal. As we start to do more ajaxy javascript things in mojoPortal we find ourselves adding a lot of links to javascript files which adds additional http requests to our page. So I've integrated some work by Omar Al Zabir, that he has made available in the very cool Dropthings project. This combines most of our javascript files into one request and moves the javascript to the bottom of the page to improve performance.

A similar issue exists for css files in the skin. We like to organize css into separate files based on logical things from a development perspective, but from a performance perspective we'd like to have only one link to an external css file. I implemented a solution for css files based on some of the techniques I learned from Omar's work. It combines all the css files and minifies them as well using Michael Ash's C# implementation of the YUI Compressor. So far it seems to be working great and I haven't noticed any side effects or problems.

These new feature is only in my sandbox at the moment but will be in svn trunk within a few days.

UPDATE 2008-11-03

Just discovered that moving the javascript to the bottom broke usage of NeatHtml in the forums. Luckily I have Web.config setting to disable the javascript combiner so I have fixed it on this site while I investigate a solution. There is an option that Omar implemented to add a "pin" attribute to any script that you don't want to combine or move to the bottom. The problem is I don't believe that is a valid attribute and it will break xhtml validation to use it, so I will have to find another solution.

UPDATE 2008-11-04

I managed to get a solution to pin some scripts without breaking xhtml validation, so now on this site I'm testing combined scripts again and so far so good.


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/mojoportal-gets-a-little-microformat-oomph.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/mojoportal-gets-a-little-microformat-oomph.aspx https://www.mojoportal.com/mojoportal-gets-a-little-microformat-oomph.aspx Mon, 03 Nov 2008 14:40:00 GMT
Hello World mojoPortal Quick Start Code Just completed a new documentation page to help developers get going quickly with mojoPortal.

Hello World - Developer Quick Start

The article has a zip with sample code you can drop in and start hacking on with a few simple steps as indicated in the article. It shows how you can use a plain old UserControl or a UserControl that inherits from SiteModuleControl. Both examples also illustrate the use of the ASP.NET UpdatePanel for ajax postbacks.

Enjoy!


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/hello-world-mojoportal-quick-start-code.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/hello-world-mojoportal-quick-start-code.aspx https://www.mojoportal.com/hello-world-mojoportal-quick-start-code.aspx Fri, 24 Oct 2008 14:24:45 GMT
Lowering Entry Point Barriers for Developers I'm always interested to hear developer opinions about mojoPortal. I don't always agree with them, but I try to keep an open mind and see their perspective. So I monitor the blogosphere with google alerts, so that if anyone mentions mojoPortal in their blog I get an email alert with a link. It doesn't catch everything and more often than not I just get alerts about my own blog posts, but now and then something of interest appears.

So I got an alert about this blog post by Artem Smirnov where he complained about having to inherit from a base class to make a mojoPortal plug in. He wishes he could just use a plain old UserControl and he does not want to have to create any configuration file to install it.

mojoPortal provides a base class, SiteModuleControl which "is a" UserControl that contains some additional functionality that allows you to make multi instance features. Like a blog for example, in mojoPortal you can put an instance of the blog feature on one page and another instance on another page and these are totally separate instances with different content. This is the way most of the features in mojoPortal work and SiteModuleControl provides the instance specific properties and settings that enable easy development of features that support multiple intances.

But maybe sometimes you don't need your feature to support multiple instances and would rather just use a plain old UserControl. This is the valid point I took from Artem's post. And since SiteModuleControl "is a" UserControl and plugs in the same way you plug in a UserControl, I thought, why not make it possible to use a plain old UserControl if you want to. Its a very simple code change to support it, the only thing we do differently if the UserControl is a SiteModuleControl is set a few properties on it, if its just a plain UserControl we skip that step.

Control c = Page.LoadControl(module.ControlSource);
if (c == null) { continue; }

if (c is SiteModuleControl)
{
SiteModuleControl siteModule = c as SiteModuleControl;

siteModule.SiteId = siteSettings.SiteId;
siteModule.ModuleConfiguration = module;
parent.Controls.Add(siteModule);
}
else if(c is UserControl)
{
parent.Controls.Add(c);
}

This change is in svn trunk now. I would also like to mention that you can easily install a SiteModuleControl or a UserControl right from the Web UI, you don't have to create configuration files to install it though there is a system for it and it is recommended if you will be packaging your feature for installation on other machines. The place where you can install it from the UI is under Administration Menu > Advanced Tools > Feature Installation

So, it is now possible to use a plain old UserControl if you want to. If you need to support multiple instances of your feature like we do for most of the mojoPortal features then you should inherit your UserControl from SiteModuleControl and follow the guidelines for feature development.


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/lowering-entry-point-barriers-for-developers.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/lowering-entry-point-barriers-for-developers.aspx https://www.mojoportal.com/lowering-entry-point-barriers-for-developers.aspx Thu, 16 Oct 2008 12:25:14 GMT
A Custom AdRotator - Borrowing Code from The Mono Project Sometimes in ASP.NET development you need just a little different functionality than what the built in controls have. Often you can inherit the control and extend functionality on top of the original version, but sometimes you wish you could just make a small change to the inner workings of the control. One option is to borrow the Mono implementation and modify it to meet your needs.

So today I wanted to implement an Ad Rotator so I could alternate the banner ad on mojoPortal.com to switch between my add for Event Calendar Pro and Form Wizard Pro. There is a built in AdRotator control in ASP.NET, so I read a few articles about it, here and here. In those articles they suggest click tracking by using a redirect page, but I wanted to track it in google Analytics since we already have it integrated in mojoPortal. To do this I need to add an onclick to the rendered link to call the tracking code and then navigate to the href. So an example onclick for tracking is like this:

onclick="mojoPageTracker._trackPageview('/EventCalendarProBanner.aspx');window.open(this.href,'_self');return false;"

This just tracks a made up url (/EventCalendarProBanner.aspx) before navigating to the linked product page.

The ASP.NET AdRotator control can consume an xml file in this format:

<?xml version="1.0" encoding="utf-8" ?>
<Advertisements>
<Ad>
<ImageUrl>~/images/Contoso_ad.gif</ImageUrl>
<NavigateUrl>http://www.contoso.com</NavigateUrl>
<AlternateText>Ad for Contoso.com</AlternateText>
</Ad>
<Ad>
<ImageUrl>~/images/ASPNET_ad.gif</ImageUrl>
<NavigateUrl>http://www.asp.net</NavigateUrl>
<AlternateText>Ad for ASP.NET Web site</AlternateText>
</Ad>
</Advertisements>
 

But I wanted to add another property to store my OnClick code, so my new format is like this:

<?xml version="1.0" encoding="utf-8" ?>
<Advertisements>
<Ad>
<ImageUrl>~/Data/Sites/1/skins/mojosite-brightside/eventcalpro-banner.gif</ImageUrl>
<NavigateUrl>~/event-calendar-pro-offer.aspx</NavigateUrl>
<AlternateText>A better event calendar for mojoportal</AlternateText>
<OnClientClick>mojoPageTracker._trackPageview('/EventCalendarProBanner.aspx');window.open(this.href,'_self');return false;</OnClientClick>
</Ad>
<Ad>
<ImageUrl>~/Data/Sites/1/skins/mojosite-brightside/formwizardpro-leaderboard.gif</ImageUrl>
<NavigateUrl>~/form-wizard-pro-single-installation-license-offer.aspx</NavigateUrl>
<AlternateText>Form Wizard Pro - Easy Forms for mojoPortal</AlternateText>
<OnClientClick>mojoPageTracker._trackPageview('/FormWizardProBanner.aspx');window.open(this.href,'_self');return false;</OnClientClick>
</Ad>
</Advertisements>

Since I don't really have access to the internal workings of the ASP.NET AdRotator, I decided to have a look at the source code for the Mono project implementation of this control. I downloaded the 3 files AdRotator.cs, AdCreatedEventArgs.cs, and AdCreatedEventHandler.cs, added them into my mojoPortal.Web.Controls project and changed the namespace so it wouldn't clash with the built in ASP.NET version. I had to modify a few small things where it was using some internal Mono stuff but not much. I added the OnClientClick property to AdCreatedEventArgs.cs and added on line of code to the render method of AdRotator.cs:

if (e.OnClientClick != null && e.OnClientClick.Length > 0)
w.AddAttribute(HtmlTextWriterAttribute.Onclick, e.OnClientClick);

I add it to my layout.master (Master Page) and configure it to read the xml file with my ads:

<mp:AdRotator id="ads1" runat="server" AdvertisementFile="~/App_Data/mojoads.ads" />

And voila, it works and only took about 20 minutes to implement.

 


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/a-custom-adrotator-borrowing-code-from-the-mono-project.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/a-custom-adrotator-borrowing-code-from-the-mono-project.aspx https://www.mojoportal.com/a-custom-adrotator-borrowing-code-from-the-mono-project.aspx Mon, 13 Oct 2008 18:47:51 GMT
ZedGraph - Easy Web Charts Everybody likes charts, a picture tells a thousand words they say, and I'm no different, I like them too. I've had my eye on the ZedGraph project for several years and have been including their dlls with mojoPortal for a long time with the intention of using ZedGraph in mojoPortal. I don't know why it took me so long to actually use it, but I finally implemented a chart in the Site Statistics feature of mojoPortal to show the trend of site registrations. I suppose it might have taken me so long to get around to this partly because charts are not that useful unless you have a significant amount of data. This year I have definitely noticed an increasing rate of people registering on mojoPortal.com, so I thought I would like to see this on a chart. ZedGraph is so easy! It took me maybe 30 minutes total to figure out how to create my first chart. Now I'm all excited to use it in a lot of places like sales reports for the web store feature and other interesting metrics. Maybe could produce pie charts of survey results, not for text questions but for ones that have choices we could show pie charts of how many people picked the various choices. Anyway, lots of ideas where to use it!

You can see the live version of this chart on our community page:

community growth chart

Now for me this chart is very meaningful because I can see that site registration started rising after the august 2007 release of mojoPortal that included support for OpenID and Windows Live ID, having those options makes it easy for a lot of people to register becuase they don't have to have any new passwords. That rise also was probably due to the 2007 CMS Awards. Then the big increase in the trend started when I went on a mojoPortal Beautification Campaign and made about 20 new good looking skins from April 2008 to May 2008. mojoPortal.com got a makeover with a new skin in May 2008 as well. In any case, its a positive trend showing an order of magnitude in growth. I sure hope it keeps going up! We have at least another order of magnitude to go to catch up with DotNetNuke. Where we are currently getting about 250 new members per month, they get more than that per day. So I look to them to see how high it could go.  They have a lot more visibility due to all the support they have from Microsoft, and they take a more agressive approach to aquiring members by requiring site registration in order to download. I don't plan to change our approach, registration is not required to download mojoPortal, but registration is required to get support in the forums. I am looking at ways to increase our visibility in the Microsoft ecosystem. Hopefully we will be able to move to CodePlex soon for our source code and file hosting. The Codeplex Team is working on some fixes to their svn bridge that should make it possible for us to move there. I think that move will give us a lot more visibility in the .NET community.

Don't Forget Voting for the 2008 CMS Awards ends October 20

So if you haven't already please vote for mojoPortal!

vote for mojoportal in the 2008 cms awards

 


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/zedgraph-easy-web-charts.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/zedgraph-easy-web-charts.aspx https://www.mojoportal.com/zedgraph-easy-web-charts.aspx Mon, 13 Oct 2008 12:48:02 GMT
Content Rating System and Feed Manager Improvements Just a quick post to mention some new goodness that has landed in the mojoPortal code repository.

Content Rating System

I just completed the first version of the Content Rating System. Its built into the core in such a way that it can be used across features. So far I've integrated it into the Html Content Mdodule and the Blog, but there are lots of other places where I plan to use it too such as for product ratings in the WebStore feature.

content rating screen shot

It has an option to also allow feedback comments:

content rating with comments screen shot

but I haven't yet implemented a UI for reviewing or showing the comments.

On this site I've configured it just for rating without comments in the blog (since it already has comments) but in the documentation pages like here, I've enabled the comments. I've got mixed feelings about it in terms of the comments because I also plan to implement a threaded comment feature that can be integrated into any of the features so that threaded dicussions can be attached to any content. When that is ready it may make this comment feature for the ratings less useful.

Feed Manager Improvements

Huge thanks to Walter Ferrari for his improvements to the Feed Manager! We now have support for Atom feeds and the really cool new feature is an option for selective publishing. With selective publishing you can subscribe the Feed Manager instance to a bunch of feeds and then selectively publish just the posts you like from those feeds.

You can try these features now on demo.mojoportal.com

I expect to make a new release of mojoPortal to include these features within days.

 

 


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/content-rating-system-and-feed-manager-improvements.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/content-rating-system-and-feed-manager-improvements.aspx https://www.mojoportal.com/content-rating-system-and-feed-manager-improvements.aspx Fri, 10 Oct 2008 19:20:31 GMT
Mono 2.0! Congrats to the Mono Team on shipping Mono 2.0!

Mono 2.0

I'm eager to try it myself and am interested to hear from people using mojoPortal on Mono. So if you try it with our latest release package for Mono, let us know how it works for you.

I generally test Mono with a virtual machine where I build Mono from svn to stay up with the latest changes and then I keep another VM for testing the releases. So I downloaded the new VMWare image with openSuse 11 and Mono 2.0, but apparently this vmware image isn't compatible with the older version of VMWare server I have running, so I've got some upgrading to do before I can try it. I have a physical machine running openSuse 10.3 with VMWare server and then I run the testing virtual machines inside it. I also got a new video card I need to install in this machine so I'm installing that first and then upgrading my vmware host machine to openSuse 11 and then I'll install the newer release of VMWare server, and then finally I will be ready to play with the new Mono release.

2.0 is a big milestone for the Mono project so I'm really looking forward to it. Hope you will try it too and share your experiences. If you are a developer and you have MonoDevelop, we include a MonoDevelop solution with the mojoPortal source code, so you can checkout mojoportal from our Subversion repository and compile it with MonoDevelop. So not ony can you run mojoPortal on Mono, you can also do mojoPortal development on Linux with MonoDevelop.


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/mono-20.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/mono-20.aspx https://www.mojoportal.com/mono-20.aspx Wed, 08 Oct 2008 13:28:09 GMT
FormWizard Pro is almost ready I've almost finished my second premium feature for mojoPortal. The feature will be called FormWizard Pro and you can try it now on the demo site.

Any feedback on the product is much appreciated. The Form Wizard Pro feature makes it easy to create arbitrary ad hoc forms for capturing input from your site visitors. You can create as many instances of forms as you like on as many pages as you like. It supports Text, Paragraph, Radio Button lists, Checkbox lists, Dropdown lists, Date, and Sliding Scale questions. You can re-arrange the questions using drag and drop, and you can export the submitted data as CSV (Comma Separated Values) which can be opened in Excel or other spreadsheet programs for analysis.

Here is a little snippet of the edit screen, but to see how it really works just try it out on the demo site.

form wizard pro screen shot

I hope to have it on sale very soon.


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/formwizard-pro-is-almost-ready.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/formwizard-pro-is-almost-ready.aspx https://www.mojoportal.com/formwizard-pro-is-almost-ready.aspx Wed, 24 Sep 2008 18:13:58 GMT
Should we move to Codeplex? Big news today that Codeplex now supports svn bridge on the server. I'm thinking it would be very good for the mojoPortal project if we move our source code repository there, it would get us a lot more visibility among ASP.NET developers.

The Codeplex repository actually uses Team Foundation Server and in the past you could still connect with TortoiseSVN if you installed a client side svn bridge. The problem we faced with mojoPortal is that some developers work with mojoPortal on Linux using MonoDevelop and there wasn't an svn bridge for Linux, so it could not work for developers working on Linux. That pretty much made it not an option for us. Now, if I understand the announcement correctly, with the server side svn bridge, there is nothing to install on the client so it should work with the command line svn client. I will have to test it out before making a move, but I'm leaning very strongly that way. If anyone in the mojoPortal community has strong opinions about it, now is the time to sound off. Novell Forge, where we host our source code now has been good to us but I think being a part of the Codeplex community would be good for getting more exposure to a wider community of ASP.NET developers.

UPDATE 2008-09-22

I've been trying out the Codeplex svn bridge and its mostly working but not currently able to do merge. The Codeplex team has been very helpful and responsive and is looking into the merge issue. We should know more in a few days, but as long as we can get the merge working I see no reason not to move to Codeplex. Thanks for all the input, I'll post updates as things progress.

UPDATE 2008-09-27

The latest update from the Codeplex team is that its going to take about 4-8 weeks for them to implement support for svn merge. So we will have to wait a while and try it again after they implement this. To me this is good news. I was afraid the answer was going to be that they only support svn checkout and svn update. The fact that they are going to get it working (or at least try) is very good news even if we can't move to Codeplex right away, we will be able to move there when this feature is implemented. I was surpised that they think svn merge is a rarely used feature since I use it all the time merging changes from my sandbox into trunk. It makes me wonder if I use svn merge more than most svn users. I thought my use scenario was very common having trunk and branches, and sandboxes. I generally work in my sandbox and merge changes to trunk at the end of each day as long as my work is at a stable point. I'm curious what work flow other svn users have.


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/should-we-move-to-codeplex.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/should-we-move-to-codeplex.aspx https://www.mojoportal.com/should-we-move-to-codeplex.aspx Tue, 16 Sep 2008 20:32:26 GMT
Coming Soon - The mojoPortal Store Back in October of 2006 when I first launched my company, Source Tree Solutions to work full time on mojoPortal, I had kind of a fuzzy business plan with the main idea being that I would make revenue by offering consulting around the free mojoPortal product. I guess in my wide eyed optimism I thought that doing this kind of consutling would improve mojoPortal and in fact it did to some extent. A few customers actually sponsored development for things that improved mojoPortal for everyone. But most of the consutling was really for things that were not of any general benefit beyond the customer's needs, so in some cases I felt like taking on this work was actually slowing me down from progress on improving mojoPortal. Forming a business around consulting means you always have to be taking on more projects to keep the business going because you don't make any money unless you are doing billable work. Now I am in the process of shifting my strategy to sell some premium features on top of the free mojoPortal core product. I think that selling some products in order to generate revenue will be better because it will pay for the free time I need to keep improving the mojoPortal. Consulting will remain a part of my business model but my plan is to keep it very limited goig forward.

So with this changing strategy in mind I've been working feverishly to get my first product completed so that I can open up a Store here on mojoPortal.com in early July and begin selling it. The first feature for sale will be a more advanced Event Calendar that allows selling tickets to events. Following that I plan to build a Form Wizard that allows users to easily create forms to capture arbitrary data. I also plan a Fund Raiser feature and an add on package for Web Farm support. I have a lot of ideas for premium features, but my main goal is to just get enough revenue rolling in to allow me to keep improving the core. There are a lot of planned improvements for the core that I'm eager to complete, like built in support for tagging, comments, and content versioning so that they can easily be enabled for any feature with little effort. Eventually I'd like to open the store up so that other developers can also sell products there too, so that it can be a market place something like snowcovered.com which sells add ons for DNN.

One of the reasons I chose to implement a commerce enabled feature as my first product was so that I could figure out which pieces of the commerce architecture need to b re-usable. We already have a WebStore project that I will be using to sell my premium products and this WebStore is one of the free open source features of mojoPortal. So far the WebStore is very rudimentary, it can only sell download products and its really a bare bones implementation for the product catalog at the moment. The project was originally started under a sponsorship by BrainBeacon but was never completed fully because they went out of business before ever opening a store. Its hard to really polish up a complex feature like ecommerce unless you are actually using it for business or supporting a customer who is using it. So using it to sell my own products will lead to a lot of improvement in the WebStore feature. I've been doing a lot of re-factoring in the WebStore to get the re-usable pieces built into mojoPortal core so they can be used across features. For example, Country List, State List, Currency List, Language List and their administrative features were originally in the WebStore projects but I've moved them into the core of mojoPortal because they will be needed by other features. Support for Payment gateways like Google Checkout and PayPal are also being moved into the core so they can be re-used by any feature that wants to implement ecommerce. Since my first product will be an Event Calendar that allows selling tickets it will need to leverage a lot of the same ecommerce code that the WebStore does. Rather than re-implement it in every feature it has forced me to think about the best way to make most of it easily re-usable.

Implementing this more advanced Event Calendar has also led me to other improvements in the core of mojoPortal. For example one of the features in my new Event Calendar is support for recurring events. When you create a recurring event it actually creates event instances going out x number of years. Since  events are also searchable using the site search, you have to update the search index for each created event as well. What I found was that creating events in rapid succession due to recurrence could lead to some problems due to the way I was handling the indexing of items. The indexing was triggered by the saving of the event then code to update the index was spawned on a new thread so that it doesn't block the UI. Under some circumstances the writing to the index was not in the proper sequence and errors could occur. So I implemented a queue in the database so that items to be indexed could be queued and then processed in batch on a background thread while keeping the sequence correct because everything is processed in queue sequence.

Another thing that got improved in the core as I implemented this new Event Calendar is module settings, which is just a place to store feature specific settings for instances of a feature. In a number of the mojoPortal features we have support for google maps, but some of the settings needed for google maps were not well supported by module settings. For example the google maps api defines some constants for the Map Type like G_NORMAL_MAP, G_SATELLITE_MAP, G_HYBRID_MAP, etc. When I first enabled support for specifying the map type, it was done in module settngs by entering the constant in a textbox like this:

pretty yucky and not user friendly since its easy to put something incorrect there and nothing to tell the user what is acceptable. So as much as this bothered me I could not conceive of shipping a paid product with this kind of setting so I implemented ISettingControl as a way to introduce a possibility to use a custom UserControl for this setting and now for all features that use the google map the setting looks like this:

much better implemented as a dropdown list! Actually not shown in the screen shot is I also implemented a dropdown for the zoom level so that it is limited to the range of acceptable values.

So, in short, developing features to sell has made me think more deeply about what is needed in the core of mojoPortal to support 3rd party feature development more easily, because its made me think more like a third party.

I haven't blogged much this month because I've been so busy working to get this feature completed and to get the store opened, but thught I should go ahead and post this to let people know what I'm doing. Several people have asked recently what happened to the store demo site as it is currently off line. I will have that site back up soon. I just have a little more re-factoring of the WebStore code to do and I will setup the demo store again.

I'm very excited about the new store opening soon and will announce it here in the blog as soon as its open. There will also be anew release of mojoPortal soon with the improvements I've mentioned above as well as a few bug fixes and skin tweaks to better support Firefox 3.


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/coming-soon-the-mojoportal-store.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/coming-soon-the-mojoportal-store.aspx https://www.mojoportal.com/coming-soon-the-mojoportal-store.aspx Fri, 27 Jun 2008 10:58:05 GMT
A Few New Developer Docs Just a quick post to point out some new documentation for mojoPortal developers.

Setting Up Your Projects - has notes about how to work with mojoPortal from our repository and your own code from your own repository.

Using The Installation System - talks about how to leverage the mojoPortal installation system to install your own features.

Using The Task System - discusses a little framework we have for managing long running tasks on a background thread. You can implement your own and plug them in. I built it for sending the news letter emails. It can chug through a long list effectively because it can resume even if the thread is killed by recycling the app pool. When the app starts again it picks up where it left off.


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/a-few-new-developer-docs-2008-06-07.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/a-few-new-developer-docs-2008-06-07.aspx https://www.mojoportal.com/a-few-new-developer-docs-2008-06-07.aspx Sat, 07 Jun 2008 16:29:05 GMT
Support For Css Control Adapters Has Landed in Mono svn Those of you who have been using mojoPortal on Mono will be excited to hear of an important milestone reached in the Mono project. Recently in Mono's svn repository (r100264 or newer) has landed support for ASP.NET CSS Control Adapters.

Thanks to the great work of Dean Brettle for implementing this in Mono! Dean has been involved with mojoPortal from the beginning and is also the author of 2 great projects, NeatUpload and NeatHtml, both of which are used in mojoPortal.

The need for Css Control Adapters arises from the fact that the original ASP.NET implementation of some important .NET controls like Menu and Treeview was less than ideal when first released by Microsoft. The problem was that these controls rendered as nested html tables instead of the more semantically correct nesting of ul and li elements. To solve this problem, Microsoft subesquently released the CSS Control Adapters. Since the Mono implementation of Menu and Treeview mirrored the original Microsoft implementation it also rendered as nested tables. Some plumbing was needed in Mono to support the control adapters and Dean stepped up and took on the task.

Because the mojoPortal css was designed to style nested ul and li elements and not html tables, up until now the menu in mojoPortal did not render or style correctly when running on Mono as shown in this screen shot of mojoPortal running on the current Mono 1.9 release:

menu style without css adapters

and now with the latest Mono built from svn:

menu with css control adapters

So I think the next release of Mono will be very exciting for anyone using mojoPortal on Mono.

Again, huge thanks to Dean Brettle, Marek Habersack, and anyone else who may have had a hand in getting this done!

Update 2008-04-10 1:46PM EST - Dean mentioned that: "Owen Brady (aka Ocean) deserves a lot of the credit.  I used his code to parse and process the *.browser files."

 


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/support-for-css-control-adapters-has-landed-in-mono-svn.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/support-for-css-control-adapters-has-landed-in-mono-svn.aspx https://www.mojoportal.com/support-for-css-control-adapters-has-landed-in-mono-svn.aspx Thu, 10 Apr 2008 14:25:00 GMT
SubSonic - All Your Databases Are Belong To Us mojoPortal no longer supports SubSonic.

In the week prior to my vacation I had started working with SubSonic to see if it could be useful in mojoPortal since it has support for a number of databases, I figured it could reduce the work of supporting all these different dbs.

SubSonic is basically a toolkit for interogating databases for their schema and has the ability to generate db specific sql statements for common tasks. It also has a code generation feature so it can generate .NET classes based on database tables. It can be used as an OR mapper, that is, you could use the generated classes as your business objects, you could either inherit from them or use partial classes to bolt on custom functionality on top of what was generated by SubSonic. But for people like me who just never bought into the whole OR mapper thing, the generated classes can just be thought of as data objects that abstract the database table. It can return standard data in the form of IDataReader which is what the mojoPortal business objects like to consume and allows using SubSonic without having any particular dependency on SubSonic in my business classes.

It comes with providers for MS SQL, Oracle, MySql and SQLite and there were some other partially complete providers that I found in the wild. So my plan was, for proof of concept, to take a simple feature like the links module and try to re-implement it for all the dbs by using SubSonic. The short story is, yes I got it working for all 5 of the currently supported databases in mojoPortal. I re-implemented a new SQLite provider using Mono.Data.Sqlite which I already knew works both on Windows and on Linux/Mono. I found a postgresql provider here (thanks to Justin Greene and Maurício Machado) that was usable with a little bit of work. I also found a starter implementation for Firebird Sql (thanks to  Ricardo García) that I was able to complete and get working.

I've since gone on to implement the data layer for the WebStore feature for MySql, mostly using SubSonic. And the things that did use SubSonic are completely re-usable for the other data layers so the bulk of the work is already done for implementing the web store for postgre sql and Firebird.

SubSonic also comes with a thing called the scaffold page which is basically a web page that allows managing data in all of the tables in your database. Just drop it in and it works. I've modified the one in mojoPortal a little for various little issues I encountered and also to add security checks to control access to the page.

Since the code templates used by SubSonic are basically .aspx pages, I got the idea of making a browser based gui for code generation. I implemented that today and got the initial proof of concept done in about 4 hours of playing around. So at the moment its kind of like a poor man's Codesmith in the browser.

At any rate, I made a quick tutorial video about use of SubSonic in mojoPortal, sort of a developers introduction to it. Its pretty cool stuff so I hope you'll have a look.

 


Joe Audette  ...Tweet This
]]>
https://www.mojoportal.com/subsonic-all-your-databases-are-belong-to-us.aspx joe.audette@gmail.com (Joe Audette) https://www.mojoportal.com/subsonic-all-your-databases-are-belong-to-us.aspx https://www.mojoportal.com/subsonic-all-your-databases-are-belong-to-us.aspx Tue, 04 Mar 2008 21:35:00 GMT
New Google Map Feature Landing in svn Tonight I am about finished implementing a quick google maps feature. I went ahead and updated this site with the code so I could show it off. You can see it in action here: http://www.mojoportal.com/googlemaps.aspx

It allows you to specify a location, map size, optional to show the map type control (Satellite,hybrid,map), option to show the zoom control, option to open a balloon with info about the location, option to show a local area google search, and a few other options.

I haven't finished implementing the get driving directions, will finish that tomorrow but its exciting enough I couldn't wait to blog about it. Its in my svn sandbox now and will be in svn trunk by later tonight.

It was really very easy, but visual stuff is always exciting and fun to work on.

Those working from the source code using svn trunk, it will be available in the next few hours. After you do svn update, rebuild the solution then visit yoursiteroot/Setup/Default.aspx to install it. Then it will show up like other features that you can put on any page.

Update: 2007-12-09

I got the driving directions working as you can see by clicking the link above. One thing to be aware of is that driving directions won't work on a local network or on localhost using the free google maps API key. As I understand it, if you buy an enterprise license it can work on local networks but the free one only works on public sites. The map seems to work just fine on localhost, its only the driving directions feature that doesn't work on localhost.


  ...Tweet This
]]>
https://www.mojoportal.com/new-google-map-feature-landing-in-svn-tonight.aspx () https://www.mojoportal.com/new-google-map-feature-landing-in-svn-tonight.aspx https://www.mojoportal.com/new-google-map-feature-landing-in-svn-tonight.aspx Wed, 05 Dec 2007 22:50:31 GMT
Visual Studio 2008 How Long Should We Wait? Since Microsoft has released Visual Studio 2008 and the .NET framework 3.5, I like most passionate geek developers could not wait to try it out. I was under the impression that projects and solutions from VS 2005 would be compatible so I figured great I can benefit from the new javascript debugging features and over time tiptoe into using Silverlight and some other new things in the 3.5 framework.

However, when I tried to open the mojoPortal solution in VS 2008 the first thing that happens is the project conversion wizard starts, so apparently the projects and solutions are not backward compatible. I of course immediately cancelled the operation because it said the projects and solution would no longer work with VS 2005 so if I do this that means that no-one can work with the solution unless they have VS 2008.

So we face a hurdle for the project that I'm sure other open source .NET projects will also face. Obviously at some point we must move forward but the question is how long should we wait?

I invite your feedback if you are actively using mojoPortal in your development, how soon will you be getting VS 2008? How long do you think we should wait before making the change and leaving behind VS 2005?

UPDATE: I stand happily corrected!

Thanks to the readers who pointed out that only the solution files changed. This is great news! I'm in the process now of making bakup solution files for VS 2005 and upgrading the solutions for VS 2008. Should have this in svn trunk in the next few hours.

Note for those who don't have VS 2008 you will need to use the alternte solution files which have been renamed like mojoportal-complete-vs2005.sln
mojoportal-core-vs2005.sln
... etc

This means that those of us with VS 2008 can move forward without leaving behind the VS 2005 developers. Though at some point we will need to make the decision to target the 3.5 framework instead of the 2.0 framework I think we can potentially add projects to the solution that do target 3.5, we just can't change the target on projects that are shared in he VS 2005 solution files.

Happy Day! Go get your free 90 day trial of VS 2008 or if you are an msdn subscriber you can get it there.


  ...Tweet This
]]>
https://www.mojoportal.com/visual-studio-2008-how-long-should-we-wait.aspx () https://www.mojoportal.com/visual-studio-2008-how-long-should-we-wait.aspx https://www.mojoportal.com/visual-studio-2008-how-long-should-we-wait.aspx Wed, 21 Nov 2007 14:21:26 GMT
Heads Up to svn users who may have custom projects that use the DatePicker control Just a quick heads up to users of mojoPortal who may have custom features that use the mojoPortal.Controls.DatePicker

In order to make it possible to use different date pickers in mojoPortal I have now implemented a provider model and now the control is just a wrapper around a provider specific control.

I had to rename the control becuase of a namespace clash when I built the provider model under the namespace mojoPortal.Controls.DatePicker I got an error because you can't have a class named DatePicker and namespace named DatePicker.

Renaming the control is a breaking change but is easy to fix. The new control class name is DatePickerControl instead of DatePicker so anywhere you have used DatePicker you will need to change it to DatePickerControl.

For example <mp:DatePicker... becomes <mp:DatePickerControl...

I have fixed these in all the projects included in mojoportal-complete.sln and will be committing this change to trunk tonight.

Those of you who have custom projects using this control will need to change your code after you get this update. If you have any trouble post in the Developer Forum and I'll try to help.

We've used a .NET control that wraps the jsCalendar javscript date picker for a long time but there are other nice ones available now. Specifically I plan to implement one using the ExtJs toolkit but needed to get this provider model in place first.


  ...Tweet This
]]>
https://www.mojoportal.com/heads-up-to-svn-users-who-may-have-custom-projects-that-use-the-datepicker-control.aspx () https://www.mojoportal.com/heads-up-to-svn-users-who-may-have-custom-projects-that-use-the-datepicker-control.aspx https://www.mojoportal.com/heads-up-to-svn-users-who-may-have-custom-projects-that-use-the-datepicker-control.aspx Wed, 07 Nov 2007 20:26:41 GMT
More work on .NET Wrapper Controls for ExtJs As I mentioned in my previous post, I've started implementing some .NET wrapper controls around the ExtJs javascript toolkit to make it easy to use in ASP.NET and especially in mojoPortal.

So far I've implemented ExtPanel, TabPanel, Tab, SplitPanel, and Viewport server controls. I just updated this site  with my latest code and created a ExtJs Complex Layout Demo page using my controls. I spent some hours thrashing before I got it working but its very fun implementing these widgets once you do get them working it seems like magic. The layout possibilities are just awesome. I love the way you can collapse any panel to hide it and can resize them by dragging the borders.

Of course I'm sure I will continue improving these controls and will undoubtedly find bugs when I start trying to use them for real applications but they will get polished up as I use them for real features. I'm just trying to get some useful baseline proof of concept implementations working now.

I found a .NET project for ExtJS this morning but it depends on the MS AJAX framework. Although we can use the MS AJAX framework in mojoPortal, I'm choosing to implement mine without that dependency. I'm also choosing not to embed the javascript in the dll but instead just have a setting to the base path for the ext javascript files. I do see the convenience of embedding but I also see that putting a lot of javascript inside a dll increases its size and dlls have to be loaded into memory on the server which is probably not a problem on beefy machines but in shared hosting with limited resources its more optimal in my opinion not to have it in the dll.

I'll be posting more demo pages as I complete the wrappers for more ExtJs widgets.


  ...Tweet This
]]>
https://www.mojoportal.com/more-work-on-net-wrapper-controls-for-extjs.aspx () https://www.mojoportal.com/more-work-on-net-wrapper-controls-for-extjs.aspx https://www.mojoportal.com/more-work-on-net-wrapper-controls-for-extjs.aspx Sat, 03 Nov 2007 14:39:26 GMT
New Survey Feature Landed in svn trunk Those of you who subscribe to svn commit notification may have noticed the new Survey feature by Rob Henry landing in there recently. Rob has been working on this feature for a while and the feature is ready for some testing and feedback so that he can put the final polish on it. You can test using his demo site at http://www.justsome.net/surveydemo/

You can login using admin@admin.com and password admin

The feature allows creation of complex multi page surveys and supports a variety of question formats. Currently its only implemented in MS SQL but we plan to add the other data layers after its finished.

Those working with svn trunk can just do svn update, rebuild the mojoportal-survey.sln or mojoportal-complete.sln in VS and then visit the siteroot/Setup/Default.aspx page and the feature will install automatically.

Post any feedback in the Developer Forums

Thanks Rob for your work on this! It will be a valuable feature for the mojoPortal community.


  ...Tweet This
]]>
https://www.mojoportal.com/new-survey-feature-landed-in-svn-trunk.aspx () https://www.mojoportal.com/new-survey-feature-landed-in-svn-trunk.aspx https://www.mojoportal.com/new-survey-feature-landed-in-svn-trunk.aspx Fri, 02 Nov 2007 12:46:00 GMT
Site Settings Layout Improvements using ExtJs I've been wanting to revamp the Site Settings UI in mojoPortal for a while now. On friday I started doing a little work in the WebStore UI trying to implement tabs for grouping settings. First I implemented a server control that wraps the dojo TabContainer but for some reason I could not get the FCKeditor to display in Firefox inside the dojo Tabs. So saturday morning I tried using the ExtJs project and wrapping a .NET server control around their Tabs and it worked much better.

So I decided to go ahead and use it in Site Settings.

Much better organization than the previous layout. I just updated demo.mojoportal.com with this for anyone who wants a closer look. It will also be in svn trunk by tonight.

I have to say the ExtJs project is very impressive and I think I will focus on using it instead of dojo. Nothing against the dojo project but ExtJs seems more mature, has better documentation and better demos.

Amazingly impressive is their WebDesktop demo. Very cool stuff.


  ...Tweet This
]]>
https://www.mojoportal.com/site-settings-layout-improvements-using-extjs.aspx () https://www.mojoportal.com/site-settings-layout-improvements-using-extjs.aspx https://www.mojoportal.com/site-settings-layout-improvements-using-extjs.aspx Sun, 28 Oct 2007 18:47:45 GMT
Updated Developer Documentation I've updated several developer documents today, primarily the ones beneath

Extending mojoPortal 

I also added some new ones:

Setup and Upgrade for Custom Featues
Making Custom Features Searchable
Module Settings - A Developer Convenience
Adding Custom Items to The Administration Menu

 


  ...Tweet This
]]>
https://www.mojoportal.com/updated-developer-documentation.aspx () https://www.mojoportal.com/updated-developer-documentation.aspx https://www.mojoportal.com/updated-developer-documentation.aspx Tue, 04 Sep 2007 19:42:30 GMT
MS AJAX and Mono - Heads Up to svn users For a while now I've held off on fully utilizing the MS AJAX framework in the core of mojoPortal because it was not yet supported in Mono but recently, at least in Mono built from svn head quite a bit of the System.Web.Extensions stuff is working. In the past I had an AJAX Extensions pak which could be used to add MS AJAX support for Windows in case developers wanted to use it in their custom features. It also allowed for making the WebPart drag and drop work in Firefox by using the Microsoft.Web.Preview namespace. The Microsoft.Web.Preview stuff is not working in Mono yet but since WebParts are also not working in Mono yet its not needed. However in svn trunk I've modified (or will have soon, merge is in process) the Solution so that these things are referenced and no extension pak is needed. Since some web.config settings are needed to use these things I made a custom Web.config for mono that comments out these things otherwise errors happen on Mono. So heads up to any Mono users who are working with mojoPortal from svn.

If you are working with Mono compiled yourself from svn, you'll need to replace the Web.config file in the Web folder with the one from the _mono_errata folder

If you are working with Mono 1.2.4 or 1.2.5 release versions you will need to either just use the current zip download or use svn/branches/2.2.3.6 because the System.Web.Extensions stuff is not yet available in these versions.

One of the changes to add more general support for MS AJAX was to add the ScriptManager to the layout.master file of each skin so if you are using a custom skin you will need to copy this from one of the included skins into your custom skin.

I may go ahead and make another release with this soon as I know some developers are anxious to start using MS AJAX in mojoPortal and this will make it easier. I used the UpdatePanel in the BlogEdit.aspx page so Categories can be added to a post nice and smooth with no full postback.

Another thing I did recently that is in svn is I implemented a ProviderModel pattern for the IndexBuilders used to build the Lucene.NET seach engine index. This will make it much easier for developers to make their own features participate in Search by implementing an IndexBuilderProvider (which only requires implementing 2 methods). I plan to write a tutorial on that soon but I think most developers could figure it out just by looking at the included providers for existing features.

I'm still a fan of some of the other AJAX frameworks included with mojoPortal, especially dojo which I plan to use more of but its nice to finally be able to use the MS AJAX stuff. UpdatePanel makes things very easy.


  ...Tweet This
]]>
https://www.mojoportal.com/ms-ajax-and-mono-heads-up-to-svn-users.aspx () https://www.mojoportal.com/ms-ajax-and-mono-heads-up-to-svn-users.aspx https://www.mojoportal.com/ms-ajax-and-mono-heads-up-to-svn-users.aspx Fri, 31 Aug 2007 18:16:20 GMT
Open Source Project Hosting Options- Should we move? Currently the source code repository and file downloads for mojoPortal are hosted on Novell Forge. Several years ago I chose Novell Forge because they were offering Subversion aka svn repositories and at the time SourceForge was limited to cvs. Over time my satisfaction with Novell Forge has declined and now I am considering whether to move the project to a different provider. The current options to consider are:

1. Stay with Novell Forge, its been fairly reliable but there was a week long outage last year and currently I am not able to add a user to the project due to some issue in their system and when I send a message to the mailing list I get nothing but crickets chirping. Novell Forge seems almost abandonded and certainly a very low priority effort by Novell though I'm a big fan of Novell and their work with Mono and openSuse. I don't really blame Novell as it seems like providing this kind of infrastructure is a cost center with little if any benefit to their bottom line. The whole Novell Forge plan seems to be in flux maybe it will eventually settle down but if you look at the 2 newest news items on the old Novell Forge, they migrated everything to Media Wiki in 2006, so that site is here and now they seem to be in the throws of moving to yet another wiki engine here which you can only get to with a Novell login. Presumably there will be some benefit to it but it looks a lot like the current wiki and there wasn't much response on the mailing list when the new beta site was announced so it makes the impression on me that the Novell Forge community is not exactly a thriving one. Staying with Novell Forge would be the easiest choice in terms of effort but I don't seem to be getting any help adding a user to my project so staying may not be a viable option.

2. Google Code - I'm a big fan of Google and I wish it were an option but unfortunately the company that would do no evil has an agenda when it comes to open source licenses and does not offer Common Public License as an option so moving there would require a license change which is not something I'm inclined to do as it would require permission from all previous contributors. It also rubs me wrong that they have this agenda which would coerce me into changing my chosen license. I understand their goal of reducing the proliferation of open source licenses but their list is too short and leaves out established OSI approved licenses. No-one should have to change their license just to get project hosting.

3. CodePlex - Microsoft is putting a lot of effort into hosting open source projects and CodePlex seems to be gaining popularity in the .NET world. There might be some benefits to mojoPortal if it were a member of the CodePlex community, we are still very unknown compared to things like DotNetNuke which everyone knows about. I'd like to be able to consider Codeplex but they use Team Foundation I believe for source code. They have a client side utility called svnbridge that allows users to access the repository using svn and they are working on a server side svn bridge so no client bridge is needed. If that were ready today I'd seriously consider going with Codeplex but I'm less inclined at the moment because I don't want any difficulty checking out the code on linux and I really like svn and not sure I would like it as much if its not working the same in the back end as svn.

4. SourceForge - the first major player in open source project hosting and probably still the biggest. They have long since added svn to their list of services. They seem very committed to what they are doing and they seem to have a thriving community. This is the option I'm leaning towards. It would be a bit of work moving the code but it would probably be worth it in the long run.

Any thoughts or opinions?

Joe

UPDATE: Since posting this I did get a response from Cory Aitchison from Novell on the Novell Forge mailing list and he is helping me with the immediate problem of adding a user so for now I think we will stay with Novell Forge and see how things look after the new migration. In hindsight my comment about no reply except crickets chirping was probably not fair. I did get a response to the message I sent today and I fear it may have been my own fault that I did not get a response yesterday because I sent it from gmail but my message may have bounced because I'm registered on the list with my yahoo mail account. It all forwards to my gmail but I think I forgot yesterday that I needed to specify my Yahoo account in the from box. I applogise for that and thank Cory for his help.


  ...Tweet This
]]>
https://www.mojoportal.com/open-source-project-hosting-options-should-we-move.aspx () https://www.mojoportal.com/open-source-project-hosting-options-should-we-move.aspx https://www.mojoportal.com/open-source-project-hosting-options-should-we-move.aspx Fri, 31 Aug 2007 14:41:00 GMT
Achieving the Single Sign On Dream with Open ID and Windows Live ID I've just updated this site with the very latest code and have enabled authentication with Open ID and also with Windows Live ID. It is now possible to register or sign in to this site using either of these services.

Tip: If you are already a registered user of the site and you want to associate your Open ID with your existing site account you can do so on the My Profile page after you login with your current credentials.

For those interested, a good place to get a free Open ID account is at MyOpenID.com.

I really think single sign on is a huge thing the web has needed for a long time. I hope it catches on so I can use the same password at most sites. Now mojoPortal makes it easy to setup sites that support these single sign on services.

The code has already landed in svn in my sandbox and I will be merging it to trunk in the next few hours. Any testing would be appreciated. I would like to make a new release with these features very soon.

 


  ...Tweet This
]]>
https://www.mojoportal.com/achieving-the-single-sign-on-dream-with-open-id-and-windows-live-id.aspx () https://www.mojoportal.com/achieving-the-single-sign-on-dream-with-open-id-and-windows-live-id.aspx https://www.mojoportal.com/achieving-the-single-sign-on-dream-with-open-id-and-windows-live-id.aspx Sat, 25 Aug 2007 20:55:29 GMT
New Setup System landed in svn trunk Heads up to anyone working with the sourcecode from svn trunk. I've just merged the new Setup system. The new system provides a lot more helpful information during setup and is designed such that if an error happens, the process can continue if the cause of the error is corrected. When doing a clean install, all you have to do is create the database and set the connection string with a user that has sufficient permission to create the schema and the Setup will do the rest including creating all needed database objects. The only data layer where I have not got it working correctly yet is Firebird, but it fails gracefully and tells the user where to find the scripts that need to be run manually. I think I may yet be able to get this automated in Firebird but it looks like it will not work using the same approach as all the other data layers so I will have to try to make it work a different way than the others do.

In addition to the new automated schema creation, the new Setup system installs features based on xml configuration files so it will be easy for third party developers to package their own features into the setup process as well as the ability to leave included features out if they want to. You can even make a custom header file so the setup screen shows your own custom branding during install.

The system also allows configuration of pages that will be created during setup. You can specify pages in the xml and which features to put on a page. Currently it is limited to just putting an instance of a feature on a page and setting its title, it cannot set any properties on the instance except for the included Html Content module. For the Html Content module you can specify a content template so that actual html content is on the page. For all other features like the Blog for example, it can put a blog on a page and give it a title but it can't currently put a post in the blog. Maybe I can come up with  design to do things like that later if they seem important.

I am still refining and testing a little bit and would appreciate anyone testing this from svn trunk and letting me know any issues so I can fix them and then can make a new release.

Other improvements that also landed in svn trunk.

  • Automatic Google Site Map you can submit to google using yoursiteroot/SiteMap.ashx
  • Page Settings now has settings for Search Engine Optimization, ie, you can configure the changefrequency, and the priority within a site for each page. This determines how it will appear in the Google Site Map.
  • Feature Names are now localizable
  • A simple log viewer has been implemented in the Admin section to allow viewing the error log without having to download via ftp.
  • Improved the Child Page Menu so it now renders more like the Site Map page, showing all pages below the current page
  • Fixed a bug that was happening when creating new pages using SQLite

I would like to release these improvements soon so any help in testing would be great.


  ...Tweet This
]]>
https://www.mojoportal.com/new-setup-system-landed-in-svn-trunk.aspx () https://www.mojoportal.com/new-setup-system-landed-in-svn-trunk.aspx https://www.mojoportal.com/new-setup-system-landed-in-svn-trunk.aspx Thu, 09 Aug 2007 17:46:54 GMT
SiteOffice UI work in svn Just  a quick post that will only be of interest to those building and running mojoPortal from svn.

I've been working on the UI for the Site Office feature. I started on this feature almost a year ago and got side tracked but am picking up where I left off.

I had done a UI prototype before using jsObjects, but wasn't entirely satisfied with it. It would not work right if the doctype was xhtml.

I've now started reworking a protoype that uses dojo for the resizable panels and Rico for the accordian panels. So the result is kind of like outlook.

If you're working with the VS Solution from svn/trunk, after you update and rebuild, set these to true in either Web.config or user.config:

<add key="UseSiteMailFeature" value="true" />
<add key="UseOfficeFeature" value="true" />
<add key="UseExternalMailFeature" value="true" />

Now when you login you'll see the Site Office link in the top nav. Click that to see the new UI protoype. To see the old one using jsObjects change the url from Office.aspx to Default.aspx

Let me know what you think.

Joe

ps: Sorry this is not in the MonoDevelop Solution yet, once it solidifies a little more I will add it in there.


  ...Tweet This
]]>
https://www.mojoportal.com/siteoffice-ui-work-in-svn.aspx () https://www.mojoportal.com/siteoffice-ui-work-in-svn.aspx https://www.mojoportal.com/siteoffice-ui-work-in-svn.aspx Sat, 16 Jun 2007 22:21:01 GMT
Google Gears Looks Interesting Google just released a beta of a new product called Google Gears. They've combined a browser plugin and a javascript API to enable local storage of data so that web apps can work offline. This is similar in concept to Smart Client, or so it seems to me, but with the desktop application replaced by the browser extension an the UI all handled by the browser rather than having the desktop UI installed on the client machine.

So I think for example you could implement something like for a travelling salesman who gets to connect from time to time but is not always connected. You might implement his contacts and product catalog as a web site but when he is disconnected the contacts and product catalog come from a local database via Google Gears. Whenever he connects the contacts and catalog would be updated and any orders he has entered can be pushed to the server.

The developer page for Google Gears is here: http://code.google.com/apis/gears/


  ...Tweet This
]]>
https://www.mojoportal.com/google-gears-looks-interesting.aspx () https://www.mojoportal.com/google-gears-looks-interesting.aspx https://www.mojoportal.com/google-gears-looks-interesting.aspx Thu, 31 May 2007 10:57:52 GMT
New Multi Sites Feature landed in svn I mentioned in this previous post that I'm working on a new variation of the Multi Sites hosting feature. This work is being sponsored as open source development by one of my customers. I'm not sure if I can mention who the customer is so for now I will leave them nameless.

For a long time it has been possible to host multiple sites using a single installation of mojoPortal with the secondary sites defined by different host names. The new feature provides an option to define the secondary sites by the first folder after the host name like http://somehostname/somefoldername.

The initial implementation of this has landed in svn/branches2.x for anyone interested in trying it out or providing testing. I'm sure there are still a few bugs here and there and am working to test all the features and fix any outstanding issues before making an official release.

I've also updated the documentation here:
http://www.mojoportal.com/muliplesites.aspx
and here:
http://www.mojoportal.com/multiplesitesbasedonfoldernames.aspx
with information about using this feature.


  ...Tweet This
]]>
https://www.mojoportal.com/new-multi-sites-feature-landed-in-svn.aspx () https://www.mojoportal.com/new-multi-sites-feature-landed-in-svn.aspx https://www.mojoportal.com/new-multi-sites-feature-landed-in-svn.aspx Mon, 14 May 2007 14:15:23 GMT
A few interesting things landed in svn Some interesting changes have been committed to svn branches/2.x

One big change is that I have created dedicated physical pages for the admin features (SiteSettings, Role Manager, Content Manager, etc) which until now have just been modules that plug into the content sysem the same as the content modules. Now there is an Admin Menu page with links to all the admin features, and they no longer appear in the main menu. I did this for a number of reasons.

I'm planning to make it configurable which features are "installed" but the admin features should always be there. In the previous model because the admin features just exist on pages in the content system, it is possible to remove the admin features from the site using the content management features with no way to get them back easily without doing it directly in the db.  So separating the admin features into physical pages outside the content system seemed the way to go. This change also helps with multi site installations using one web and db because when new sites are created we don't need to create admin pages in the content system in the new site either.

There are now 2 new skins named treeview1 and treeview2 which are really coopies of the existing jwv1 and jwh1 skins but modified to use the TreeView control for the menu. One of the cool things about the TreeView is its ability to load nodes on demand from the SiteMap. In large sites with lots of pages and deep hierarchies this can be a performance benefit.

When using the normal Menu all the navigation links for the entire site are rendered as markup into the page, typically showing only the top level and using mouse over to reveal deeper nodes. If you view the source you see the Menu rendered as ul and li elements in the markup and every link is there for the whole navigation tree which can be a lot of markup in a large site. The more markup there is the bigger the page size and the slower the perfomance. Since the menu is on pretty much every page its part of the payload of most requests.

The TreeView control also renders as ul and li elements but with PopulateOnDemand it will not render the markup for invisible nodes. When you click a node it will expand and add just the nodes requested. You can see this when you view the source of the page. If you want to check it out, the treeview1 skin has the TreeView for the menu and the treeview2 skin has a regular horizontal menu for the main menu and a TreeView for sub pages beneath the top level. To see for yourself, create some deep hierarchies of pages and view the source of the page as you drill down from the top.

I also shortened the 3 column names on the mp_Users table and 2 column names on the mp_Sites table. Recently there has been some renewed activity by the Firebird data layer team. Firebird doesn't allow columns longer than 31 characters so this was a barrier in implementing the 2.x mojoPortal data layer. By renaming the columns this barrier is now removed so hopefully work will proceed for the Firebird data layer. Thanks to Gareth for all his hard work implementing Firebird for 1.x mojoPortal!

Some have noticed that the SQLite data layer for 2.x mojoPortal was broken a few versions ago and has not been shipped with the last few versions. Joseph Hill, who initially implemented the SQLite data layer has agreed to look into, so hopefully that data layer will come back to life sometime soon.


  ...Tweet This
]]>
https://www.mojoportal.com/a-few-interesting-things-landed-in-svn.aspx () https://www.mojoportal.com/a-few-interesting-things-landed-in-svn.aspx https://www.mojoportal.com/a-few-interesting-things-landed-in-svn.aspx Mon, 30 Apr 2007 21:55:16 GMT
The National Recycling Coalition Goes Live With mojoPortal The National Recycling Coalition (NRC) recently revamped their web site using mojoPortal.

The project was managed by DDB Seattle, which is part of DDB Worldwide Communications Group.

I helped with the project as a consultant, providing some help with skinning and custom feature development.

"The NRC represents every sector of the waste reduction field including local recycling coordinators, corporate environmental managers, state and federal regulators, environmental educators and advocates, and waste management professionals. NRC's objective is to eliminate waste and promote sustainable economies through advancing sound management practices for raw materials in North America."

Its very exciting to know that mojoPortal can play a small part in such an important cause as Recycling. It was also a pleasure working with the good folks at DDB Seattle, I hope to have an opportunity to collaborate with them on other projects in the future. They are true professionals.


  ...Tweet This
]]>
https://www.mojoportal.com/the-national-recycling-coalition-goes-live-with-mojoportal.aspx () https://www.mojoportal.com/the-national-recycling-coalition-goes-live-with-mojoportal.aspx https://www.mojoportal.com/the-national-recycling-coalition-goes-live-with-mojoportal.aspx Wed, 25 Apr 2007 14:52:18 GMT
SVN Users should use branches/2.x I know some users have been getting frequent svn updates directly from branches/joesandbox2

I've suggested using it in the past in some forum posts but I want to give a heads up to anyone working from svn code to use branches/2.x instead

Instructions for getting the source code from svn on Windows with TortoiseSVN can be found here:
http://www.mojoportal.com/tortoisesvn.aspx
and for those who want to experiment with mojoPortal on Linux, svn instructions are here:
http://www.mojoportal.com/gettingthecodewithsvn.aspx

You can rely on branches/2.x being relatively stable. I merge my changes from branches/joesandbox2 into branches/2.x when I believe them to be stable enough to share with other developers.
Use branches/joesandbox2 only at your own risk as I need to be able to commit changes there whether they are final/correct or not just to make sure I never lose work due to hard drive failure.

I mention this because I'm about to start working on some things that may make things bumpy in branches/joesandbox2 because I will be making changes in the core and will probably implement some things in MS SQL long before I get the other data layers implemented and therefore joesandbox2 will be broken for the other layers until I implement them.

I have a customer who is sponsoring a new feature, or really a variation on a current feature and this is what I'll be working on. The customer has been using mojoPortal for a few small projects and they want to use it on a larger planned project but to meet their needs they need the multiple sites feature to work differently than it currently does. Currently the site id is determined by the host name so mojoPortal can host multiple sites on a single web installation and db as long as each site has a different host name like this:
http://host1/
http://host2/

Note that on the internet the fully qualified host name is usually used so the pattern is:
http://hostname.domainname.topleveldomainname
like
http://www.somedomain.info
where www is the hostname, somedomain is the domain, and info is the top level domain

Of course you also often see the pattern:
http://domainname.topleveldomainname
like
http://somedomain.com
the reason this works without the host name is that the domain has a default host that is used when no specific host is specified

My customer needs the ability to create new sites in sub folders beneath the host name like:
http://hostname/site1
http://hostname/site2
or examples with fully qualified names would be:
http://www.somedomain.com/site1
http://www.somedomain.com/site2

So in these examples the hostname is the same and the site id will be determined by the first level folder.

I don't plan to eliminate the hostname driven feature but to add a config option to use the foldername instead.

The sites will be completely independent with their own users and content just as they currently are using hostnames.

Some of the challenges will be in making sure the friendly url re-writing adapts correctly and making sure sites aren't defined using folder names that clash with physical folders

This feature is being sponsored as open source development which means it will become part of mojoPortal and other users of mojoPortal who may desire this functionality will benefit.


  ...Tweet This
]]>
https://www.mojoportal.com/svn-users-should-use-branches2x.aspx () https://www.mojoportal.com/svn-users-should-use-branches2x.aspx https://www.mojoportal.com/svn-users-should-use-branches2x.aspx Fri, 13 Apr 2007 13:17:56 GMT
Localization Documentation Updated I've just updated the documentation about localizing mojoPortal

http://www.mojoportal.com/localization.aspx
 
I'm renewing my push to improve documentation as I believe this is critical to improving the popularity of mojoPortal, which in turn is crucial for my business plan and trying to make a living working on mojoPortal.

Right now my top priorities are documentation and preparing for a new release with the recently completed extensible User Profile system.

The e-Commerce Solution project is temporarily on hold for now because the deadline has been pushed out by the one sponsor I have for this project and because the project is currently under funded and therefore not as high on my priority list.
 
Currently I have one sponsor pledging $1000 for this feature. I would really like to find some additional sponsors to make it worthwhile for me to work on the e-commerce feature so if you are interested in this feature and have any funds in your budget, please consider sponsoring this project. Please contact me if you are interested.


  ...Tweet This
]]>
https://www.mojoportal.com/localization-documentation-updated.aspx () https://www.mojoportal.com/localization-documentation-updated.aspx https://www.mojoportal.com/localization-documentation-updated.aspx Sat, 06 Jan 2007 16:16:24 GMT
New Extensible Profile System in svn I just committed the new Extensible Profile System to svn branches/2.x

Anyone who can help test before the release, it would be greatly appreciated. Post in the forums if you have any difficulty or questions.

With this feature, user profile properties are specified in mojoProfile.config file, you can totally customize what properties show up on the user profile page and you can also specify properties that are required for Registration on the site. You can specify any System data type that can be serialized as a string. Boolean properties will be rendered as checkboxes, all other types will be rendered as a textbox. It is also possible to configure dropdown lists, see the Gender property in mojoProfile.config for example syntax:
<add    name="Gender"
                type="System.String"
                allowMarkup="false" 
                labelResourceKey="GenderLabel"
                lazyLoad="false"
                requiredForRegistration="false"
                readOnly="false"
                allowAnonymous="false"
                visibleToAnonymous="false"
                visibleToAuthenticated="true"
                visibleToUser="true"
                editableByUser="true"
                regexValidationExpression=""
                validationErrorResourceKey=""
                onlyAvailableForRoles=""
                defaultValue=""
                includeHelpLink="true"
                >
            <OptionList>
                <Option value="" TextResourceKey="GenderUnselectedLabel"></Option>
                <Option value="M" TextResourceKey="GenderMaleLabel"></Option>
                <Option value="F" TextResourceKey="GenderFemaleLabel"></Option>
                <Option value="T" TextResourceKey="missingkeytest"></Option>
            </OptionList>
        </add>

I'll be working on documentation for this new feature tomorrow, so more to come, but I'm hoping some brave developers will jump right in and try it out.

Update 1/5/2007: I've just completed the documentation for this feature here, let me know if there is anything unclear or any feedback for improving the documentation or the feature itself.


  ...Tweet This
]]>
https://www.mojoportal.com/new-extensible-profile-system-in-svn.aspx () https://www.mojoportal.com/new-extensible-profile-system-in-svn.aspx https://www.mojoportal.com/new-extensible-profile-system-in-svn.aspx Thu, 04 Jan 2007 18:46:59 GMT
Browser specific bug in Search I just got a bug report about getting an error page on this site when trying to use the search feature. After looking into it, I cannot reproduce the problem using the latest Firefox browser, but with IE7 I get an error page 100% of the time.

I no longer have a machine running IE6 so I don't know if its just IE7 or not. If anyone out there has IE6 and can confirm if this error happens using it or not I would appreciate it. Anyone who finds this error does happen for them in Firefox please let me know, but so far it doesn't happen for me except in IE7.

Update: I also am not able to replicate this bug in IE7 using my local machine http://localhost/mojoportal/

Weird.

Thanks,

Joe

Update Again: In IE7 the error happens I think partly because of the cross page postback from the SearchInput control to SearchResults.aspx. Even more odd, is if I go straight to the page http://www.mojoportal.com/SearchResults.aspx and do a search with IE7 I get no error, but I also get no results.

Update Problem Solved:
It turns out that the cause of this was a little script I placed in my skin from Technorati that was supposed to just link to my technorati profile. Even though I saved my settings on technorati to not include their blog search button it was still doing it. Removing their script fixed the problem that was happening in IE when trying to do search on this site.


  ...Tweet This
]]>
https://www.mojoportal.com/browser-specific-bug-in-search.aspx () https://www.mojoportal.com/browser-specific-bug-in-search.aspx https://www.mojoportal.com/browser-specific-bug-in-search.aspx Wed, 06 Dec 2006 11:08:19 GMT
Significant Namespace changes in svn/branches/2.x Heads up to those working from svn and those who have developed their own custom features.

I've done some major re-organization of namespaces that will require changes to custom modules/features you have developed (outside of mjoPortal svn) in order to keep in sync with the newest/next versions of mojoPortal

If you get branches/2.x and test your custom features you will find some things broken due to the namespace changes. The functionality has not been removed, just moved so if you have any trouble finding the new methods post in the forums and I will try to help.

Some of the changes include, moving SiteUtils out of mojoPortal.Business into mojoPortal.Web and moving some of its functionality into WebUtils in a new project mojoPortal.Web.Framework

The main goal of the changes was to remove the reference from mojoPortal.Business to System.Web and to organize things a little more. While namespace changes can be painful for those with custom features I think that these changes will be very beneficial in the long run and I will be happy to help anyone with the needed changes in their own libraries.

Because some of the business objects need some web specific extensions I created another class library project:
mojoPortal.Business.WebHelpers
which provides things like caching support and other extensions that require a reference to System.Web
These are the things that previously were in mojoPortal.Business and needed the reference to System.Web

I also added a class library:
mojoPortal.Web.Framework
where I have moved functionality that s useful to any web application, this library has no reference to mojoPortal.Business

A few key changes:
SiteUtils.GetCurrentSiteSettings() is now CacheHelper.GetCurrentSiteSettings()
SiteUtils.GetCurrentPage() is now CacheHelper.GetCurrentPage()
SiteUser.IsInRoles(...) is now WebUser.IsInRoles(...)
SiteUser.IsInRole(...) is now WebUser.IsInRole(...)

After some more testing I will likely make a new release of mojoPortal to get these changes out before making any changes that require db schema changes

Any help from the community in testing branches/2.x before the release is greatly encouraged and appreciated.


  ...Tweet This
]]>
https://www.mojoportal.com/significant-namespace-changes-in-svnbranches2x.aspx () https://www.mojoportal.com/significant-namespace-changes-in-svnbranches2x.aspx https://www.mojoportal.com/significant-namespace-changes-in-svnbranches2x.aspx Sun, 26 Nov 2006 11:35:32 GMT
Anonymous Checkout From Subversion is Working Again For anyone who has been having trouble with anonymous checkout from svn, it is finally working again.

There was a major outage last week and it took a while to get everything configured again but as of now everything seems to be working as it should.

Joe


  ...Tweet This
]]>
https://www.mojoportal.com/anonymous-checkout-from-subversion-is-working-again.aspx () https://www.mojoportal.com/anonymous-checkout-from-subversion-is-working-again.aspx https://www.mojoportal.com/anonymous-checkout-from-subversion-is-working-again.aspx Tue, 07 Nov 2006 13:06:44 GMT
Now from Charlotte, NC I've completed my move to Charlotte. Still doing some unpacking and settling in but I have my machines all up and running and getting back to some mojoPortal development. I still haven't closed on my house in TN so I have to go back probably for a day sometime next week.

I'm still currently working full time for Integration Management of Brentwood TN until November 15. After that I will still be doing some work for them but mainly launching Source Tree Solutions so I can devote more time to advancing mojoPortal. I'm very excited and full of ideas to take mojoPortal to the next level.

Wish I could have made it up to the Mono Meeting but at least got to watch some of it thanks to the guys at Mono-Cast.


  ...Tweet This
]]>
https://www.mojoportal.com/now-from-charlotte-nc.aspx () https://www.mojoportal.com/now-from-charlotte-nc.aspx https://www.mojoportal.com/now-from-charlotte-nc.aspx Thu, 26 Oct 2006 21:28:13 GMT
mojoPortal 2.1.4 Released I've been continuing to polish things up before my push into the next major features so lately its been little incremental releases.

Release 2.1.4 is now available on the download page

There are no database schema or stored procedure changes, 2.1.4 is the same in the db as 2.1.2 and 2.1.3. (and 2.1.2 only had stored procedure changes since 2.1.1)

Enhancements:

Added new Setup page for initial data creation. It will give a warning if the Data folder is not writable and won't allow data creation until this is configured correctly. This also
ensures no partial data gets created which was happening for some users before. It would create the home page but then error out on writing a module cache dependency file which would prevent the rest of the pages from being created.

Implemented new SiteMap feature and added SiteMapLink to skin layout.Master files, you can see the Site Map link at the bottom of this page

Implemented Skip Links navigation in skins for improved accessibility

Implemented PageMenuControl and 2 sample skins splitmenu1 and splitmenu2 which illustrate using 2 menus, a top horizontal menu with just one level and per page vertical menu for pages with child pages. This would be good for a top horizontal main menu with just a few items, but rather than a dynamic menu dropping down, there is a second menu on the left side for sub pages of the selected main menu item. These skins aren't very pretty, I just modified a couple of the existing skins to show the mechanics of using the split menu. I'm sure with a little CSS love they could look a lot better.

Moved DatePicker .js files from ClientScript to ClientScript/DatePicker

Bug Fixes:

Fixed bug where button labels were blank on ChangePassword page if not using shortcut keys
Fixed bug in Forum Notification Subscription manager, button events had become unhooked from some recent change
Fixed bug in MySQL/SQLite Data layers where Forum unsubscribe was broken due to incorrect sql
Maybe fixed bug in Search that was happening occassionally on this site, couldn't produce error on dev machine
Fixed issue where login from forum would not clear ssl on redirect
Fixed issue with using Forums module on home page caused bad links when the .aspx pages was not part of the url, ie using the default document for /

As always be sure and back up your site and db before doing an upgrade and post in the forums if you need help getting mojoPortal working.


  ...Tweet This
]]>
https://www.mojoportal.com/mojoportal-214-released.aspx () https://www.mojoportal.com/mojoportal-214-released.aspx https://www.mojoportal.com/mojoportal-214-released.aspx Mon, 02 Oct 2006 20:50:09 GMT
Support for Firebird Coming Soon In the near future we will have support for using Firebird Relational Database.

Thanks to Gareth Goslett from South Africa who is the developer/maintainer of this new Data Layer.

We will first have this in the 1.x version of mojoPortal for 1.1 .NET/Mono and will follow up after that with a version for 2.x mojoPortal

Initial code has already landed in svn/trunk

Lots of other good things happening with mojoPortal that I will blog about soon.


  ...Tweet This
]]>
https://www.mojoportal.com/support-for-firebird-coming-soon.aspx () https://www.mojoportal.com/support-for-firebird-coming-soon.aspx https://www.mojoportal.com/support-for-firebird-coming-soon.aspx Sun, 10 Sep 2006 15:21:00 GMT
mojoPortal vs DotNetNuke People often ask me how mojoPortal compares to DotNetNuke, I've responded with my opinions here a while back, but for a long time I've wanted to do some actual load test comparisons between mojoPortal and DotNetNuke. I've always thought the performance of mojoPortal was good and a number of people have told me mojoPortal is faster and uses less resources than DotNetNuke but I haven't been using DNN myself for any real sites so I still wondered in the back of my mind how mojoPortal would stack up in actual tests.

I've been load testing mojoPortal recently to test whether caching would improve performance and to make sure it didn't use too much memory. So this morning I decided to download and setup the latest 4.3.4 version of DotNetNuke and try some testing. I realize I'm not a neutral party so I would say if you have any doubts try some tests yourself, but I tried to make the tests as comparable as possible and tried to get the best performance I could out of both. I created the same number of pages and the same content in each site. You can see the results I posted in this forum thread.

I should note that this was with my version from svn/branches/joesandbox2 not from the current release files. I have made some improvements recently by caching the SiteSettings (thanks to a suggestion from Bo Rey) and tweaking the module cache feature that already exists in mojoPortal and hope to make a release with these improvements soon. Hopefully tomorrow I will update this site with the latest code so we can test in the real world a bit before the release.


  ...Tweet This
]]>
https://www.mojoportal.com/mojoportal-vs-dotnetnuke2006-09-02.aspx () https://www.mojoportal.com/mojoportal-vs-dotnetnuke2006-09-02.aspx https://www.mojoportal.com/mojoportal-vs-dotnetnuke2006-09-02.aspx Sat, 02 Sep 2006 20:32:21 GMT
Source Tree Solutions I blogged about it on my personal site, but thought I should at least have some mention on this site too. I've formed a company, Source Tree Solutions, LLC, and beginning around mid October or so I will be going full time working on mojoPortal and taking on projects building custom applications on mojoPortal.

I think my main value proposition is that I can implement applications quickly because I don't have to spend any development time implementing important things like security, navigation, skinning, and other things already implemented in mojoPortal. I can start right in on the functionality needed. So keep me in mind if you need to implement an application for your company.

I also really hope to see other developers take the time to become familiar with mojoPortal and do value added consulting building projects on top of the existing mojoPortal infrastructure. Part of my plan is to beef up the documentation with tutorials to help developers get up to speed quickly.

Exciting times ahead, its going to be a lot of fun.


  ...Tweet This
]]>
https://www.mojoportal.com/source-tree-solutions2006-08-16.aspx () https://www.mojoportal.com/source-tree-solutions2006-08-16.aspx https://www.mojoportal.com/source-tree-solutions2006-08-16.aspx Wed, 16 Aug 2006 21:01:59 GMT
Request for Feedback I've started to work on the feature to allow site members to send private messages to other site members, but in addition to the typical implementations I've seen for forums that allow this, I've decided to be a bit more ambitious. I really want mojoPortal to evolve to something you can run a business on so I'm envisioning site mail as just the first feature of a more elaborate SiteOffice feature.

All registered users will be able to use the SiteMail element of SiteOffice to send messages to other site members but in addition to that I will have roles that allow users to also access external email accounts, send and recieve mail from those accounts, maintain personal contacts separate from site member contacts etc.
Later I plan to add a role to alow users to store files, eventually we will hopefully see open source editors for OpenDocument format and ultimately the whole office experience can be had in the browser. You can see how this could progress with nice calendaring for users and groups and other typical office like features.

So far I've just stubbed out some UI using jsObjects TaskBar and TreeView with some MagicAjax Panels. Registered users who login can get a sneek peek at the UI using this link http://www.mojoportal.com/SiteOffice/Default.aspx and I invite your feedback whether you think this is a good direction to go. Its pretty similar to older versions of Outlook. I've experimented some trying to make a UI more like newer versions of Outlook using the Rico Accordian panel and some of the dojo layout widgets. dojo has an accordian but it seems broken in IE. The idea would be to have the treeview inside the accordian panel which would be more similar to the newer versions of Outlook and you can see my experiment here http://www.mojoportal.com/SiteOffice/Office.aspx. I'm just not sure yet if I can get a hook in to handle client side clicks to the accordian that I need to show and hide things like I am using the dsObjects stuff. I got a good chunk of work done already using jsObjects so not sure if its worth the effort to pursue the accordian thing and this is what I'm asking feedback about. I'm at apoint where I see clearly how to implement things with jsObjects whereas the other stuff is going to require more digging and experimenting. I'm kind of leaning toward sticking with the jsObjects approach and maybe trying to integrate the dojo feature that allows re-sizing the layout elements. The only problem so far I've had with the jsObjects is in Firefox the height of the taskbar seems to want to go a little longer than the page height no matter what I try though their sample page doesn't have this problem. I'm thinking it might be all the hidden Ajax panels are somehow taking up space in Firefox even when they are hidden.

Some of the things I plan to use for the external email functionality are DotNetOpenMail, sharpmimetools, and the mono.net.POP3 classes. I also found sharpwebmail which has the POP3 functionality but I can't use it because it is licensed under the GPL. Luckily I remembered reading Zac Bowling's blog that he had contribute some POP3 feauteres to the Mono project and I can use that.

Nothing is functional yet but you can see by clicking some of the buttons how the Ajax partial postback is nicer than normal postback.

So login, have a peek and let me know your opinion.

Thanks,

Joe


  ...Tweet This
]]>
https://www.mojoportal.com/request-for-feedback.aspx () https://www.mojoportal.com/request-for-feedback.aspx https://www.mojoportal.com/request-for-feedback.aspx Sun, 13 Aug 2006 14:29:36 GMT
This Site Is Running the latest code I just updated this site to the latest 2.1.1 from svn for final testing before the release this weekend.

This release will include the new localization model which detects the browser language and uses resource for that language if available. So anyone visiting this site using one of the languages we currently have translations for should see the labels and buttons in their own language.

Currently mojoPortal is tranlated into:
English
Spanish-Mex
German
Dutch
Turkish
Russian
Czech
Italian
Portuguese (Brazil)

So if you set your browser language to one of those you should see the labels and buttons change to those languages on this site.

Also this release features a new help system making it easy to add contextual help links anywhere in a page or module with an editing system to make it easy to update or translate the help files.

The Image Gallery also uses a new modal dialog to show images. I've added an image gallery to the MyPage page, click one of the thumbnails there to see how cool the new modal dialog is. The same dialog is also used in the help system.

This will be an easy upgrade as there are no changes to db tables. Users of MS SQL and PostgreSQL will need to run the stored procedure scripts to get the latest procedures.

Access/shortcut keys for all important buttons is another new feature this release. It can be disabled from the web.config file if you don't like it but its pretty convenient not having to grab the mouse for everything.

This release will also be able to run in Medium trust hosting environments.


  ...Tweet This
]]>
https://www.mojoportal.com/this-site-is-running-the-latest-code2006-07-21.aspx () https://www.mojoportal.com/this-site-is-running-the-latest-code2006-07-21.aspx https://www.mojoportal.com/this-site-is-running-the-latest-code2006-07-21.aspx Fri, 21 Jul 2006 21:54:51 GMT
Menu Icons and more WebParts work If you've visited this site before you've probably noticed the new menu icons. Just added that over the weekend into branches/2.1. It was low hanging fruit. There was already a field in the mp_Pages table for MenuImage that had been there a long time but not implemented as a feature. So I added the UI elements to pick an icon and hooked it into the menu.

The only interesting bits about the implementation was that while the ASP.NET Menu items have an image property, the standard SiteMapNode does not so there was no where to store it when populating the node tree from within a custom SiteMapProvider. Not a difficult problem at all though, I just implemented a mojoSiteMapNode that inherits from SiteMapNode and add a property to store the image url. Then when I build the node tree I populate it with mojoSiteMapNode objects.
Since I'm already handling the MenuItemDataBound event to filter the menu based on roles I just had to add a little code ther to populate the image like this:

mojoSiteMapNode mapNode = (mojoSiteMapNode)e.Item.DataItem;
if (mapNode.MenuImage.Length > 0)
{
      e.Item.ImageUrl = mapNode.MenuImage;
}

Pretty sweet!

The other cool thing that landed in svn branches/2.1 this weekend was my further WebPart work including the WebPartModule and WebPartAdminModule features mentioned in my previous post, allowing use of 3rd party WebParts (if you can find some) both in the MyPage feature and anywhere in the content system. Also I have implemented the feature on MyPage to allow users to create as many "pages" of personailzed content as they like similar to pageflakes.com.

Now I still have some work to do in styling the User Page Menu on MyPage in the various skins (so far I've only been working in subblue). I'm not the greatest designer as I'm sure you have observed but hopefuly it will come out looking something like tabs.

With this, almost all of the compelling new 2.0 ASP.NET features are being used to good advantage in mojoPortal which means we are getting close to a time when I can try and focus on identifying what needs work in mono to get mojoportal 2.x working. There is still just one more big 2.0 feature I would like to take advantage of and that is the new improved localization features. I shied away from the conventional 1.1 .NET localization in the current mojoPortal localization implementation because I felt it had one fatal flaw. It required storing resource strings in satellite assemblies which meant a developer would need to be involved just to change a label. I felt very strongly that it should be possible to change any label with a text editor and not require any compilation. This and more is now possible and efficient in 2.0 .NET and would give us some ability to adapt labels in the site to the culture of the user's browser (if we have resources for his culture) with fallback to a default culture if not available. I still think the value added is very limited because the bulk of the content comes from the db and will never localize unless a person translates it but it is worth doing because there is some benefit if the login button and other buttons are localized as well as calendar and date time formats, it may help someone who knows some english for example but is not fluent.

I think I am leaning toward making the 2.1 release before tackling the localization changes. It will not be difficult but it will be a lot of grunt work copying strings from the culture files into the resource editor and going through the site to make the changes.

So I guess its a little more polish on the MyPage stuff, some QA and then make the 2.1 release

For those of you following along with the sources from svn, I pretty much work in branches/2.1 most of the time except when making changes that require db schema changes. To avoid breaking things for users who are working from svn I do the db change work in my sandbox branch and only merge it back into 2.1 once I have all the data layers implemented. This weekend I merged quite a bit, you may need to look for the newer stuff in the upgrade scripts if you are working with an existing db. There is still quite a bit of things to do before the release but I think the db changes are done for this coming release.


  ...Tweet This
]]>
https://www.mojoportal.com/menu-icons-and-more-webparts-work.aspx () https://www.mojoportal.com/menu-icons-and-more-webparts-work.aspx https://www.mojoportal.com/menu-icons-and-more-webparts-work.aspx Mon, 19 Jun 2006 18:57:21 GMT
More WebPart Next Steps I implemented the WebPartModule and WebPartAdmin module in my sandbox over the weekend using the MS SQL data layer. I still have some work in the other data layers but I'm waiting until I complete all the schema changes In this db before moving through the other layers.

These modules work just as I planned using a test dll I made with a simple web part. I was able to drop it in the bin folder, it showed up on a list in the WebPart Admin module as a WebPart available to install. Installing was 2 clicks and 2 check boxes to indicate whether it should be made available for MyPage and the Content System. I checked them both and then was able to use the WebPart on MyPage and in the content system. Pretty Sweet!....but, if you build it wil they come?

Googling I could not find any webpart libraries available for download except those for Sharepoint which are not compatible with ASP.NET WebParts. Often, people don't realize these are not the same thing because they are both named WebParts, but they are not the same thing.

So the utility of this feature is good for developing your own WebParts as features for mojoPortal or other projects using WebParts but we have yet to see much of anything out there right now as far as 3rd party WebParts. Maybe that will emerge later, we shall see.

But anyway, there is still more that I want to do in the MyPage implementation of WebParts.

Similar to what they have over at www.pageflakes.com, I want the user to be able to have multiple pages on MyPage, with the ability to create more as needed.

Also, I want to do something more elaborate with the WebPart Catalog. You can only show so many choices in the default presentation without it getting obnoxious so I need to figure out how to implement it so that the most popular ones show up in a short list and there is a more link where you can open a screen that lets you page through them so that it is not too cumbersome having a large catalog and browsing through them.

I think after those 2 things are implemented I will start the QA process towards a release. Not sure how long that will take, hopefully it will go quickly.


  ...Tweet This
]]>
https://www.mojoportal.com/more-webpart-next-steps.aspx () https://www.mojoportal.com/more-webpart-next-steps.aspx https://www.mojoportal.com/more-webpart-next-steps.aspx Sun, 11 Jun 2006 15:37:08 GMT
WebPart Next Steps Now that I've had a chance to think more about WebParts and play with the first iteration of WebParts in mojoPortal as implemented in the MyPage feature I'm starting to get a vision for the next steps and here is what I've come up with and will be working on this weekend. Basically, I'm envisioning 2 new modules WebPartModule and WebPartAdminModule.

WebPartModule will allow us to use any installed WebPart as content anywhere in the site. When I say installed I'm talking about assemblies dropped in the bin folder, in other words third party WebParts or WebParts developed as pure WebParts outside of mojoportal and compiled into a class library like MyCustomWebParts.dll and placed in the bin folder beneath the web. Of course WebParts used this way won't have the drag and drop and personalization but will be just like any other content in the site (not including MyPage) and will stay where the Admin puts it. So this module will just be a way to make any WebPart available for the Content System. When installed WebParts are used on MyPage they will have all the WebPart features but the WebPartModule is not part of that equation, its job is just to load a WebPart as if it were any other site content wherever you tell it to. In this context the WebPart will be treated like an ordinary Control.

WebPartAdminModule will allow the admin to "install" the WebParts by entering the Assembly Name, the Class Name, and Description to display in the WebPart Catalog on MyPage. It will also allow configuring whether each installed WebPart is available for MyPage and/or available for the Content System using the above WebPartModule. To make it friendly I may use Reflection to iterate through the assemblies in the bin folder and make a list of WebParts in those assemblies that aren't yet installed. I've already done preliminary work on loading WebParts dynamically from assemblies. The WebPartAdmin module will just give them permission to be used on a site by site basis. In a multi site installation the root site will be able to determine which WebParts are installed in each subordinate site just as we currently do with the Installed Feature Administration in Site Settings. This feature will show the currently installed WebParts and the WebParts found in the bin assemblies that are not installed to make it easy to install them.

So these features will allow us to use third party WebParts on MyPage where they will have all the WebPart bells and whistles or anywhere else in the site where they will be treated like ordinary controls.

I think this will work, should be fun.


  ...Tweet This
]]>
https://www.mojoportal.com/webpart-next-steps.aspx () https://www.mojoportal.com/webpart-next-steps.aspx https://www.mojoportal.com/webpart-next-steps.aspx Fri, 02 Jun 2006 20:27:46 GMT
New Email List for Subversion Commit Notification Hey Everyone the svn commit notification is working again but I think it lost the people I had added manually to recieve notification. The good news is we now have a list that the notifications go to so people can subscribe or unsubscribe as it suits them.

If you would like to get notification whenever commits are made to the Subversion Repository please visit this page and subscribe:
http://forge.novell.com/mailman/listinfo/mojoportal-svncommits

If you have been getting the notification in the past I think you will still need to subscribe as I'm pretty sure it lost the previous list of individual users. There were only about 10 of you, you know who you are


  ...Tweet This
]]>
https://www.mojoportal.com/new-email-list-for-subversion-commit-notification.aspx () https://www.mojoportal.com/new-email-list-for-subversion-commit-notification.aspx https://www.mojoportal.com/new-email-list-for-subversion-commit-notification.aspx Tue, 30 May 2006 20:58:48 GMT
WebParts have landed in svn branches/2.1 You may have noticed the new MyPage link at the top of this site. The appearance of this link signifies completion of the first iteration in implementing WebParts in mojoPortal. WebParts allow page personalization kind of like My Yahoo or Google personalized pages. To customize the page and see how it works you have to login to this site, otherwise you just see the default content I have enabled on MyPage.

I've started some documentation on the MyPage feature here. Any content in the site can be made available for the MyPage Catalog and users can pick which content to show on MyPage and the site will remember their settings. You can also drag and drop the content into any of the 3 columns.

There is an upgrade script in svn for MS SQL, MySQL, and PostgreSQL. I still have some work left for the SQLite implementation. Of course backup your db and site completely before trying this out.

I know the mono users will be dissapointed this is only for Windows at this time but be patient, when the mono 2.0 stack is ready you will be able to upgrade.

There is also a new Content Manager module and content module instances have been de-coupled form pages so you can have the same content on any number of site pages and you can even have content that is not on any page but is available for MyPage.

Any developers out there who play with this please give me your feedback on any problems you find. It should be fairly stable as this site is running on it. We are probably getting close to a 2.1 release depending on what people report.

Those of you who have contributed translations, now would be a good time to update the translation files to get them updated before the next release. There are a lot of new items in the cultureusa.config file, it would be nice to get the others updated before we make a release.

On another note, svn commit email notification hasn't been working lately but believe me there have been a lot of commits. I've notified Paul at Novell forge about the problem so it will probably be cleared up soon. Most likely its releated to some transition of the project administration to media wiki. In the past I have added users 1 by 1 to the svn list when they let me know they would like to be on it, but going forward we will have a mailing list for svn commits and people can opt in or out as they please. To sign up for the list just visit this page
http://forge.novell.com/mailman/listinfo/mojoportal-svncommits

Cheers,

Joe

Update - some additional notes for those upgrading from svn, ignore if doing a clean install

In addition to the normal backup your db and site completely before upgrading, you should be aware of a few manual steps you will want to take after the upgrade to enable some new features.

First you will want to add the new Content Manager module. Go to Admin > Feature Modules and click add new module. For the Feature Name type "Content Manager", for the Control Source, tpye Admin/ContentManager.ascx. Leave Is Admin unchecked for now but after we add this to a page come back in here and set it to true so that it cannot be added to any other pages. Save the Feature and then go back into it and you will see a new link for "Configure Settings", click this link and add a new setting:
ContentListPageSize
TextBox
15
^[1-9][0-9]{0,2}$

Now while we are in here there are some new settings for the Forums module. Go back to Admin > Feature Modules and click the gear for Forums then click the Configure Settings link. Add the following settings:

ForumEnableRSSAtModuleLevel
CheckBox
false

ForumEnableRSSAtForumLevel
CheckBox
false

ForumEnableRSSAtThreadLevel
CheckBox
false

this is just making the deafult setting false, if you want to enable this for a specifi forum you will be able to do that as these new settings will show up in the module settings for each forum instance.


  ...Tweet This
]]>
https://www.mojoportal.com/webparts-have-landed-in-svn-branches21.aspx () https://www.mojoportal.com/webparts-have-landed-in-svn-branches21.aspx https://www.mojoportal.com/webparts-have-landed-in-svn-branches21.aspx Mon, 29 May 2006 12:19:13 GMT
A Good Example of a Site Using WebParts If you follow my blog posts you probably know I am working on converting the built in mojoPortal features into WebParts. Actually I'm working on the Personalization and Membership APIs first which is the foundation for getting the most out of WebParts.

Probably not everyone really knows what kind of cool things you can do with WebParts. I just learned about http://www.pageflakes.com/ from someone's forum post at www.asp.net

pageflakes.com uses the ASP.NET WebPart framework. notice how you can drag things around and arrange the page and add or remove content. You don't even have to login to try it. Mouse over any of the module titles on their site and your cursor changes to the drag cursor. Click the Edit link to add or remove content.

In the not too distant future it will be possible to do things like this in mojoPortal. My plan is to make it configurable so that you can have pages the user cannot modify but you can also have pages they can customize

I think that is way cool. What do you think?


  ...Tweet This
]]>
https://www.mojoportal.com/a-good-example-of-a-site-using-webparts.aspx () https://www.mojoportal.com/a-good-example-of-a-site-using-webparts.aspx https://www.mojoportal.com/a-good-example-of-a-site-using-webparts.aspx Wed, 19 Apr 2006 20:08:53 GMT
SVN Update Just wanted to let everyone know that the subversion repository for mojoPortal source code is back up and running on the new server.

I have updated the documentation here to reflect the new change. Basically, ssh access is only available to those with commit access but https access is available both to anonymous users and those with commit access. The urls to use in TortoiseSVN are now

https://forgesvn1.novell.com/svn/mojoportal/trunk  for the 1.x branch
and
https://forgesvn1.novell.com/svn/mojoportal/branches/2.1 for the 2.x branch

On initial checkout you will be prompted to accept a security certificate.

https access is better anyway because most companies have the port for https open on their firewalls while not all have the port open for ssh.

Thanks go out to Paul at Novell for all his hard work in this transition!


  ...Tweet This
]]>
https://www.mojoportal.com/svn-update2006-03-15.aspx () https://www.mojoportal.com/svn-update2006-03-15.aspx https://www.mojoportal.com/svn-update2006-03-15.aspx Wed, 15 Mar 2006 08:39:20 GMT
Just Updated This Site to Latest svn In preparation for the release, I've just updated this site to the latest code from svn. A lot of layout and style has changed, if anything looks funky, you may need to refresh the browser a couple of times to get the latest css stylesheet. It was cached in my browser when I first viewed the site after the update and the forums looked funky but refreshing the page fixed it.

If you notice any problems in this site that don't go away after a refresh be sure and let me know


  ...Tweet This
]]>
https://www.mojoportal.com/just-updated-this-site-to-latest-svn2006-03-13.aspx () https://www.mojoportal.com/just-updated-this-site-to-latest-svn2006-03-13.aspx https://www.mojoportal.com/just-updated-this-site-to-latest-svn2006-03-13.aspx Mon, 13 Mar 2006 21:54:39 GMT
A New Release Soon A new release of mojoPortal is coming soon, either this Sunday or the following one if all goes well.

Hopefully we will release version 2.0.1 for Windows/2.0 .NET and version  1.0.1 for 1.1 .NET or Mono.

Most of my recent work has been in the 2.x branch. The 2.0 release of mojoPortal was just compiled against the 2.0 .NET framework, it did not use any of the 2.0 .NET features per se, but the upcoming 2.0.1 release will use a number of 2.0 .NET features.

Changes for the 2.0.1 version

  • MasterPages, previously we were using Paul Wilson's MasterPages which made this an easy change
  • Themes, using a custom VirtualPathProvider and VirtualFile, I am storing the theme.skin files in the same folder with the other skin elements like layout.master and style.css and images under ~/Data/Sites/[SiteID]/skins/[skinname] instead of in the default App_Themes folder. Themes give you awesome control over the visual properties of all the built in server controls. I have stubbed out most of the server control properties in the skin.theme files with the default properties to make it easy for designers to know what properties are available.
  • I implemented a custom SiteMapProvider and am now using the new ASP.NET Menu control for the menu instead of skmMenu. The skmMenu is still there if you want to use it there is a setting to allow that and you can also use the new TreeView control for the menu if you wish.
  • I reduced the number of included skins but the ones I kept are all using css layout with no tables.
  • I removed table layouts from most of the modules and supporting pages except where displaying tabular data
  • The site is in general now XHTML compliant though it may still be possible in some cases that you could manage to get non compliant markup into the database. To get my sites compliant I had to do some cleanup of existing content in the db.

Changes for both 2.0.1 and 1.0.1 versions

  • Update to the latest version of NeatUpload, the awesome upload control by Dean Brettle
  • Dean Brettle is also working on a new Cross Site Scripting (XSS) prevention technique that will hopefully be in this release
  • The last release added support for LDAP Authentication against OpenLDAP contributed by TJ Fontaine, this release we add support for Active Directory authentication as well as regular Windows NTLM authentication with help from Haluk Eryuksel, who also contributed the Turkish translation
  • Joseph Hill added a whole new data layer for SQLite and also provided a feature to expose the forums as RSS
  • I implemented a feature to automatically create initial site data for new installations and when creating new sites. Previously we had separate data creation scripts for each data layer and over time they had become inconsistent. This feature eliminates the need to maintain data creation scripts and makes the initial data consistent no matter which data layer is used. The initial data is retrieved from text files with a .config extension stored under Data/MessageTemplates and can be localized or customized

Numerous other little changes and fixes have also been done. If any of you think of anything major I've forgotten to mention let me know and I'll update this post.

For the current release, there will be no difference in the data schema between the 1.0.1 and the 2.0.1 versions but going forward the 2.x branch will begin to diverge as I add tables and columns to support the Personalization and Membership APIs and other plumbing to prepare for converting the modules into WebParts.

Its been several weeks since I have done any serious testing of the mono 2.0 stack. At my last test it was still broken in a number of places. I know they have been working hard on it though and I plan to get back on the testing and bug reporting after this release is shipped. Once the 2.0 mono stack is ready and stable we will drop the 1.x branch and get back to supporting just one version on all platforms.


  ...Tweet This
]]>
https://www.mojoportal.com/a-new-release-soon2006-03-13.aspx () https://www.mojoportal.com/a-new-release-soon2006-03-13.aspx https://www.mojoportal.com/a-new-release-soon2006-03-13.aspx Mon, 13 Mar 2006 19:38:00 GMT
SVN Heads Up from Novell Forge Just thought I'd pass along a heads up from Paul at Novell to Novell Forge svn users. Accessing the mojoPortal svn repository might be a little bumpy on monday during the transition, but https access will be a little more firewall friendly so this transition will be a good thing. After the transition I'll update the instructions for svn access to mojoPortal

>
Hello again,

Monday, 13 Mar 2006 we will be migrating all subversion projects to the new server.  This will cause intermittent outages during that afternoon MST.  The new server will continue to allow ssh access for users with commit access, but will no longer support anonymous ssh access.  There will also be https access for both anonymous users and user with commit rights.  If you desire, you will also be able to mount your repositories as a davs drive.

The website will be updated with the new information at the same time.

If you are using ssh keys to allow scripts you access your repository you will need to accept the new server fingerprint.   All of your public keys will be moved to the new server.

Please let me know if you see any problems and I will respond as quickly as I can.

Thank you,
Paul
<


  ...Tweet This
]]>
https://www.mojoportal.com/svn-heads-up-from-novell-forge.aspx () https://www.mojoportal.com/svn-heads-up-from-novell-forge.aspx https://www.mojoportal.com/svn-heads-up-from-novell-forge.aspx Fri, 10 Mar 2006 19:11:25 GMT
This Page Is Valid XHTML 1.1! I did a little more tweaking and now This Page Is Valid XHTML 1.1!

Again you have to try it with the source from a browser like Firefox, if you just point the validator at this page it renders down level which is not compliant.



I should note that the FCKeditor is only XHTML 1.0 compliant so any page with an editor will not validate against XHTML 1.1 until that support is in place. In any case since browsers seem to be forgiving I think I can still go forward with the XHTML 1.1 DOCTYPE

Also I had to fix even more content in the db where I have historically had the bad habit of using target=_blank on links to external sites. target is no longer valid in XHTML 1.1

This site is also currently using much more CSS layout and most of the table layout has been removed. I'm still working on a few areas of this and still need to update more of the built in skins to work with the new model but I figured it was good to go ahead and do the skin for this site first so I can test it in the real world.

Thanks go out to Alexander Orlov for help and good advice in working toward XHTML compliance.


  ...Tweet This
]]>
https://www.mojoportal.com/this-page-is-valid-xhtml-1-1.aspx () https://www.mojoportal.com/this-page-is-valid-xhtml-1-1.aspx https://www.mojoportal.com/this-page-is-valid-xhtml-1-1.aspx Sat, 18 Feb 2006 14:45:29 GMT
This Page Is Valid XHTML 1.0 Transitional! After a good bit of work, according to the Wc3 validator page, this page is Valid XHTML 1.0 Transitional!

Now if you want to confirm this yourself I will say you can't just enter the url www.mojoportal.com and have it come up valid becuase when the validator pages makes a request it is rendered differently than when using a browser. In other words the .NET Server controls do their down level rendering when it can't detect the browser and apparently the downlevel rendering is not valid.

If you view this page with Firefox and then right click and view the page source then save this file as www.mojoportal.htm and upload it to the validator it gives it the nice approval.

Ultimately I would like to get to Strict compliance instead of Transitional but this is a step in the right direction.

Another factor that comes into play in a CMS like mojoPortal is whether the existing markup in the database that has been entered using the CMS features conforms. I think in general FCKeditor does produce valid markup, but I have found places where I edited stuff directly as source and I didn't do it with XHTML validation in mind at the time so I am cleaning things up in the content as well as in mojoportal code. For example using a valign attribute on a td is not valid for Transitional and moving forward toward Strict, links with a target attribute are not allowed so I am cleaning up things like that too.

I doubt if all the pages in this site are currently valid but I am making progress and eventually we will be able to proudly display the icon


  ...Tweet This
]]>
https://www.mojoportal.com/this-page-is-valid-xhtml-10-transitional.aspx () https://www.mojoportal.com/this-page-is-valid-xhtml-10-transitional.aspx https://www.mojoportal.com/this-page-is-valid-xhtml-10-transitional.aspx Sat, 18 Feb 2006 11:54:55 GMT
Yahoo Released some nice UI stuff under the BSD license Yahoo has released their Yahoo User Interface Library under the BSD license and has also shared their Design Patterns Library.

This is some very cool stuff and I will likely find some use for it in mojoPortal


  ...Tweet This
]]>
https://www.mojoportal.com/yahoo-released-some-nice-ui-stuff-under-the-bsd-license.aspx () https://www.mojoportal.com/yahoo-released-some-nice-ui-stuff-under-the-bsd-license.aspx https://www.mojoportal.com/yahoo-released-some-nice-ui-stuff-under-the-bsd-license.aspx Tue, 14 Feb 2006 19:07:57 GMT
2.1 branch svn heads up I just committed some major changes in svn on the 2.1 branch. You may want to hold off for a couple of days on getting latest. It will build but if you use any skin other than theblues1 it will be broken at run time.

I've been going through all the modules and pages and changing to CSS layout and now I need to go back through the other skins to fix them like I did with theblues1 skin. I should have things in better shape over the next few nights. I was going to wait until it was all working before checking it in but then again I hate to keep this much work checked out and another developer who is doing similar work in the 1.x branch needs to see my work.

Update 2/13/2006: I just commited at least enough fixes that you don't get runtime errors with any of the built in skins. Still the only usable one is theblues1 as the others all need some css work to fix the layout and style. I'll be working on those. If you have your own custom skin, you will need to get the 3 new Panels named divLeft, divCenter, and divRight and add them to your skin and then you will probably have to fix some style to get the layout right. There are some new classes for css, right now theblues1 css has all the right classes, you will need to get the missing ones and add them to your css and probably tweak them to fit your needs.


  ...Tweet This
]]>
https://www.mojoportal.com/21-branch-svn-heads-up.aspx () https://www.mojoportal.com/21-branch-svn-heads-up.aspx https://www.mojoportal.com/21-branch-svn-heads-up.aspx Sun, 12 Feb 2006 20:32:34 GMT
XHTML and CSS One of the  great things in 2.0 .NET is that it supports XHTML compliance. For those who don't know XHTML is a newer w3c standard meant to replace HTML and, in a nutshell, is just a stricter version of HTML.

XHTML compliance is really just the first step towards compliance with the w3c Web Content Accessibility Guidelines (WCAG) and the US Government Section 508 guidelines. The big picture goal is to make the web site content accessible to the widest audience of people including those with handicaps that make web browsing difficult by supporting the widest variety of browsers and devices including everything from screen readers to electronic braille pads. The new standards and guidelines are desinged to do just that and I definitely want mojoPortal to comply with these guidelines wherever possible.

The biggest things to be aware of when trying to convert HTML to XHTML are that everything is lower case and eveything must comply with standard xml rules. Some of the HTML tags that did not require formal closing tags now do require them. <BR> for example must be <br /> so that it has and end tag.

The change in 2.0 ASP.NET is that the server controls like TextBox, Calendar, DataGrid, etc render XHTML compliant markup. You still have to make your own markup that wraps these controls compliant.

In mojoPortal I have had the forsight in most places to use <br /> and other XHTML compliant forms even before 2.0 .NET just to be prepared but there are some places where I had non-compliant markup. I am going through all the pages and controls now in the 2.1 branch and fixing these things, its really not that big a job. What is a big job is changing from html table driven layout to using div and span elements with css. This is fairly tedious work for me to go through the whole project and do this and these changes will likely require some effort to convert existing custom skins for those upgrading when I make the next release. if it seems like a lot of work to you just remember I did it for the included skins . When I'm done you should be able to tell what you need to do to upgrade your custom skin by looking at the included layout.Master files and style.css files

At first I thought I would wait and convert to web parts before making this change but I decided to do this first so that I will have cleaner markup when I get to that step. Best to get the skinning and layout really nailed down first. This will be a solid foundation for meeting our compliance goals.


  ...Tweet This
]]>
https://www.mojoportal.com/xhtml-and-css.aspx () https://www.mojoportal.com/xhtml-and-css.aspx https://www.mojoportal.com/xhtml-and-css.aspx Thu, 09 Feb 2006 21:48:33 GMT
More consistent creation of initial site data I committed some stuff to svn today that will make it easier going forward to have consistent data initialisation accross the different supported dbs. It will no longer be needed to run the script to create initial site data during installation, only the table creation script and depending on the db maybe a stored procedure script will need to be run.

maintaining the different data creation scripts for each db as new features are added will no longer be needed

I encapsulated the data creation logic up in the business layer in a new class, mojoSetup.cs.

When the application starts it will check the count of rows in the mp_Sites table and if there are 0, it will create the initial site data by calling mojoSetup.CreateInitialData.

If you use the multiple sites on one installation feature of mojoPortal, it will call mojoSetup.CreateNewSiteData whenever you create a new site to populate the new site with the standard pages.

The content for the initial data and new site data comes from new files I added in the /Data/MessageTemplates folder

For example the intial home page content comes from en-US-InitialSiteHomeContent.config

You can localize these by creating your own files with a prefix matching the culture setting you have in the Web.config Culture key and dropping your files in the same folder.

For example a German translation of the same file would be named:
de-DE-InitialSiteHomeContent.config

If it can't find the file for the culture you have set in your Web.config file, it will fall back to using the english file.

As always any contributions of translated files is welcome and many thanks to all those who have contributed the culture files and translations already.


  ...Tweet This
]]>
https://www.mojoportal.com/more-consistent-creation-of-initial-site-data.aspx () https://www.mojoportal.com/more-consistent-creation-of-initial-site-data.aspx https://www.mojoportal.com/more-consistent-creation-of-initial-site-data.aspx Sun, 05 Feb 2006 20:07:02 GMT
The good stuff is happening in the 2.1 branch of svn Those of you playing with mojoPortal from the Subversion repository using TortoiseSVN, if you are using VS 2005 I recommend you get:

svn+ssh://anonymous@forgesvn1.novell.com/svn/mojoportal/branches/2.1
rather than /branches/2.0
2.0 was the intial build against the 2.0 .NET runtime but it did not use any of the new 2.0 features.

All the fun stuff is happening in the 2.1 branch.

So far I've

  • Converted from Paul Wilson's MasterPages to the new intrinsic ASP.NET MasterPages. This was very easy thanks to Paul's version being very similar to the shipping 2.0 version from MS
  • Came up with a way to store the theme.skin file for the new Theme feature in ASP.NET in the site specific skin folder along with the other elements like layout.Master, style.css, and supporting images. This keeps everything together and keeps things private between sites when running multiple sites from one mojoPortal installation. Themes allow you to set all the visual properties for the built in server controls. Now its a tedious task of moving markup off the controls in the pages and modules into the theme.skin file but it will be well worth it to gain complete control of control presentation from the skin. I predict more interesting looking skins after this!
  • Implemented a SiteMapProvider, mojoSiteMapProvider on top of the mojoPortal SiteSettings object. This is used to bind to the new Menu or TreeView controls and also the new SiteMapPath control which provides Breadcrumbs and will probably replace our current breadcrumbs control soon.
  • I setup the new Menu control and styled it in the theme.skin fairly close to how the older skmMenu is styled in the current skins. I also moved the style for the blog calendar and events calendar into the theme.skin file. I plan to make the menu have 3 options you can set in to enable either the new Menu, the new TreeView, or the skmMenu for the menu. I still need to style the treeview at least a little


I will be working on implementing the membship api and trying out conversion to WebParts in the near future after I get some more of the theme grunt work done.

Note: the 2.x branch of mojoportal is Windows only at this point, it will not run on mono until the mono 2.0 implementation catches up. It will probably be a while before this happens so mono users should stick with the 1.x branch aka trunk


  ...Tweet This
]]>
https://www.mojoportal.com/the-good-stuff-is-happening-in-the-21-branch-of-svn.aspx () https://www.mojoportal.com/the-good-stuff-is-happening-in-the-21-branch-of-svn.aspx https://www.mojoportal.com/the-good-stuff-is-happening-in-the-21-branch-of-svn.aspx Tue, 24 Jan 2006 20:57:54 GMT
MasterPages works on Mono! I got mojoPortal loading its content using MasterPages on Mono tonight at http://dev.mojoportal.com
On Windows it was working with AutoEventWireup=true but it was not firing the events on mono so tonight I set it to false on Windows and hooked up the events manually and it worked both on Windows and when I deployed it on mono.

Sweet! I'll merge this into the 2.0 bnranch after I get the rest of the pages and skins converted.

So the current 2.0 runtime status of mojoPortal on mono (r54948 compiled 1/1/2006) is illustrated as follows:

http://demo.mojoportal.com = 1.1 framework version

http://demo2.mojoportal.com =  2.0 framework version not using any 2.0 features  with 1 outstanding mono bug

http://dev.mojoportal.com = 2.0 framework with main pages using MasterPages

progress...

Update 1/5/2006: After another evening of struggle trying to find a way to get other pages than the main Default.aspx page to load their content I have to say something is either broken or not implemented yet in mono that is preventing the other pages from loading their content inside the ContentPlaceHolder controls within the master pages. The Default.aspx page is the main CMS page and loads its controls all dynamically based on database settings but other supporting pages have controls nested within the markup of the place holders like this:

<asp:content runat="server" id="MPContent"contentplaceholderid="mainContent">  
<asp:panel runat="server" id="pnlLogin">  

Hello World

 </asp:panel>  </asp:content>  

on windows it works but on mono you don't see the controls nested within the Content regions and if you try to access them in code you get NullReferenceExceptions

Currently on http://dev.mojoportal.com the Register page is throwing the NullReferenceException and the login page is not showing the login controls due to this. I'm going to try and produce a small test case this weekend.

Update 1/10/2006: I was able to make a little test case this past weekend with this issue on mono. The null reference exception is occuring when trying to hookup button click events and such. If you set the MasterPage for the page programmatically in OnPreInit it somehow loses its reference to controls nested within the ContentRegions on the page.


  ...Tweet This
]]>
https://www.mojoportal.com/masterpages-works-on-mono.aspx () https://www.mojoportal.com/masterpages-works-on-mono.aspx https://www.mojoportal.com/masterpages-works-on-mono.aspx Wed, 04 Jan 2006 20:55:53 GMT
2.0 Roadmap Thoughts I made some progress tonight converting from Paul Wilson's MasterPages to the built in ASP.NET 2.0 MasterPages. I got the Default.aspx page converted and working on Windows, it was pretty straightforward given that Paul modelled his version from early specs for the real thing. Now it will just be a machanical repetitious task to update the remaining pages and skins, but not tonight, I'm spent.  I tested on mono at demo2.mojoportal.com, it did load the MasterPage but something went wrong loading the rest of the page content as you can see. I'll follow up with that and see if I can pin down the problem.

I've been getting very excited learning about the Web Part framework. I know I said I would pace my changes with mono support but I think what I will do is keep a separate branch in step with mono support until the mono support catches up so I can move forward taking advantage of 2.0 ASP.NET features. Some of them are just too compelling to wait and besides it will take some time to make the changes and figure out exactly how I want to do it. Right now I'm thinking the Web Part model will replace the existing implementation for Feature Modules.

I definitely will try and help implement some of the missing mono features if I can, or at least provide testing and feedback for the guys who are doing it.


  ...Tweet This
]]>
https://www.mojoportal.com/20-roadmap-thoughts.aspx () https://www.mojoportal.com/20-roadmap-thoughts.aspx https://www.mojoportal.com/20-roadmap-thoughts.aspx Tue, 03 Jan 2006 20:39:20 GMT
mojoPortal 2.0 Release files available I just put up some release files compiled against the 2.0 .NET framework for those eager to play in the 2.0 space.

Unfortuantely I found another bug today in the mono 2.0 runtime that I haven't been able to work around and will probably have to wait for a bug fix in mono to get it working correctly. The site does run under mono using the 2.0 runtime as you can see at http://demo2.mojoportal.com but when posting back updates on pages using a CheckBoxList like the Module Settings page and the Page Settings page, I'm seeing this error:

System.Exception: Unhandled Exception while processing NeatUpload child request ---> System.ArgumentOutOfRangeException: Index is less than 0 or more than or equal to the list count.
Parameter name: index
2
in <0x00096> System.Collections.ArrayList:get_Item (Int32 index)
in <0x00012> System.Web.UI.WebControls.ListItemCollection:get_Item (Int32 index)
in <0x0010f> System.Web.UI.WebControls.ListControl:LoadControlState (System.Object savedState)
in <0x00141> System.Web.UI.Page:LoadPageControlState (System.Object data)
in <0x0004d> System.Web.UI.Page:LoadPageViewState ()
in <0x0012f> System.Web.UI.Page:InternalProcessRequest ()
in <0x000aa> System.Web.UI.Page:ProcessRequest (System.Web.HttpContext context)--- End of inner exception stack trace ---

in <0x004a3> Brettle.Web.NeatUpload.UploadHttpModule:Application_BeginRequest (System.Object sender, System.EventArgs e)
in (wrapper delegate-invoke) System.MulticastDelegate:invoke_void_object_EventArgs (object,System.EventArgs)
in <0x0046f> System.Web.HttpApplication+<RunHooks>__0:MoveNext ()

I posted to the mono dev list and will follow up when I hear something but figured I would go ahead and make the files available to those who want them.


  ...Tweet This
]]>
https://www.mojoportal.com/mojoportal-20-release-files-available.aspx () https://www.mojoportal.com/mojoportal-20-release-files-available.aspx https://www.mojoportal.com/mojoportal-20-release-files-available.aspx Mon, 02 Jan 2006 14:29:45 GMT
mojoPortal progress with .NET 2.0 Using the new preview of VS 2005 Web Projects which allows you to implement web projects in a way more similar to VS 2003, I was able to convert mojoPortal to VS 2005 and get it running on mono at http://demo2.mojoportal.com/

It runs great on Windows, there are still some errors on mono if you click around in the administration section but that's major progress! Now I can start figuring out exactly what is broken and see if I can't get them fixed either by reporting bugs or maybe even trying to fix it in the mono sources myself.

I've committed the vs 2005 version of mojoportal source code to svn, you can get it here:
svn+ssh://anonymous@forgesvn1.novell.com/svn/mojoportal/branches/vs2005

use anonymous for the password, you'll be prompted about 3 times on the first checkout. Its configured to use PostgreSQL, if you want to use a different db you'll have to drop the reference to the PostgreSQLData project and add a project reference to the data layer of your choice, MSSQLData or MySQLData.

Before you open it in VS 2005, make sure you have installed the new project type for VS from here: http://webproject.scottgu.com/
Configure IIS so that http://localhost/mojo2005 maps to the Web folder and build the solution

Let me know how it goes.

Joe

Update 12/26/2005:
Managed to find workarounds for most of the issues running under mono using the vs2005 branch of mojoPortal. I haven't tested everything thoroughly but mostly it is working well now at http://demo2.mojoportal.com
There is a problem with the Event Calendar but that problem also manifests under Windows so its not a mono bug but an ASP.NET 2.0 breaking change. Overall, this is very encouraging progress. There are some major issues still remaining in mono but I have found non-horrible workarounds for them at least for mojoPortal.
The 2 biggest problems were

  1. System.NotImplemented exceptions when data binding a DropDownList or anything that inherits from ListControl. I worked around this by creating a helper function to add ListItems instead of calling the built in DataBind()
  2. System.NotImplemented exceptions anywhere a DataSet is used, it would break at System.Data.Common.DbDataAdapter:Fill. This is probably a big problem for a lot of projects but in mojoPortal I mostly use IDataReader so there were only a few places I was using DataSets and all I really needed was a DataTable so I created and populated one using an IDataReader instead of letting it come from a DataSet

I've commited the workarounds on the vs2005 branch for anyone who wants to play on the cutting edge. To make mod_mono use the 2.0 stuff see my tutorial on Virtual Host configuration, especially the part about the MonoServerPath setting. Of course those working on Windows have surely discovered the new ASP.NET tab in IIS settings where you can choose either the 1.1 or 2.0 framework


  ...Tweet This
]]>
https://www.mojoportal.com/mojoportal-progress-with-net-20.aspx () https://www.mojoportal.com/mojoportal-progress-with-net-20.aspx https://www.mojoportal.com/mojoportal-progress-with-net-20.aspx Sat, 24 Dec 2005 16:19:08 GMT
.NET 2.0 on Hold for mojoPortal I've tried several tests now deploying mojoPortal compiled in VS 2005 on mono without success so I will have to wait to start developing in VS 2005 until it works. I'm getting a 500 error with no real details in the apache error log so I'm not sure how to proceed, other than to periodically update mono/xsp/mod_mono from svn and try again.

I'm also going to try creating some small test projects in VS 2005 and see if I can get any of them to work. For now work will proceed in VS 2003

If any of you have good luck getting a web project built in VS 2005 to work on mono please let me know any tips for making it work.

Update 11/17/2005
Miguel posted a good bit of information today about where things stand in the mono project including info about the progress on .NET 2.0 features. It sounds like Master Pages is already implemented and from other things I've read recently I get the impression that to use the 2.0 stuff that is there you have to run xsp2 instead of xsp which may account for why may test deployment built in VS 2005 didn't work on my mono test machine. I do plan to move forward in VS 2005 as soon as possible but there are a number of things that I need to work through and test before that can happen. For one thing I don't want a build of mojoPortal that I can't run at my hosting company www.Grokthis.net so I will have to be sure I am happy with the way it works on my demo server before I can even begin thinking about trying to convince them to set things up for 2.0. I also want to be sure I can provide any configuration information needed so that it is easy for others to get things running on their mono servers. In short I think there will be at least one more release of mojoPortal for the 1.1 framework before we start making the move forward down the 2.0 path. There are a lot of good things to look forward to but also a lot of new things to learn.


  ...Tweet This
]]>
https://www.mojoportal.com/net-20-on-hold-for-mojoportal2005-11-14.aspx () https://www.mojoportal.com/net-20-on-hold-for-mojoportal2005-11-14.aspx https://www.mojoportal.com/net-20-on-hold-for-mojoportal2005-11-14.aspx Mon, 14 Nov 2005 17:20:34 GMT
mojoPortal compiled in Visual Studio 2005 I managed to convert a copy of mojoPortal to VS 2005 this evening without too much trouble. I had a few compile errors that were easily remedied then the Solution built fine and most importantly, the site works!

The next step is to test a deployment on mono and make sure things still work. I think they will since I'm really not using any of the ASP.NET 2.0 features yet. I know some of the 2.0 features are ready in mono so I expect I will tiptoe into changes to the new 2.0 way of doing things and test each change on mono as I go.

Then the next logical step is to tag the current VS 2003 code in svn and update the trunk to VS 2005. My timeline on this will depend on how the testing goes but I'm inclined to do it soon if things go well.

I invite comments from those of you actively working with the mojoPortal source code in VS.NET. Are you going to have access to VS 2005 anytime soon or will it cut you out of the loop if the main branch of development moves to VS 2005?

I'm excited about the 2.0 .NET stuff. There are definitely some major changes and new ways of doing things though it seems to support the old way fairly well so I think we can effectively pace our changes to coincide with mono support. I'm definitely not planning on doing anything that doesn't work under mono. It will be interesting to find out how much is already working.


  ...Tweet This
]]>
https://www.mojoportal.com/mojoportal-compiled-in-visual-studio-2005.aspx () https://www.mojoportal.com/mojoportal-compiled-in-visual-studio-2005.aspx https://www.mojoportal.com/mojoportal-compiled-in-visual-studio-2005.aspx Tue, 01 Nov 2005 19:33:32 GMT
LDAP Thrashing rescued by SLES 9 For about 3 weekends now I've been thrashing with getting OpenLDAP setup and working on my Suse 9.3 machine so I could test some work contributed by TJ Fontaine for supporting LDAP authentication. I read a lot of great tutorials but I always ran into some trouble. I did manage to get OpenLDAP running and was able to query it but I had problems getting the YaST and Samba integration working. I would run net getlocalsid and it would say it couldn't get either secret but I figured ok at least I can query it but I needed some users with the right schema elements especially a mail attribute. I was using the Samba shema which has a mail property but when I would try and set that using ldapmodify and a .ldif file it would give errors like that wasn't a valid attribute. I think the trouble had something to do with Samba being setup before I configured LDAP and then trying to change the Samba setup to use LDAP it got funky. I decided to try Edd Dumbill's tutorial on my laptop running the latest greatest Ubuntu breezy but it could not find all the needed packages to follow his instructions. I tried updating my sources.list file to see if some of the other repositories had the libraries but for some reason I could not connect reliably to any of the Ubuntu or Debian repositories. Not sure if this is just traffic problems due to the popularity of Ubuntu and the new release or what. I'm sure a linux super guru could have worked past these issues but for a long time Windows guy trying to learn as he goes its been quite a struggle with obstacles at every step. I do plan to give it another try soon with SUSE 10 for my own learning benefit but for now I just needed the shortest path to getting a working LDAP implementation so I can get back to working on mojoPortal.

Then it hit me (just like in the Novell ads ;D) maybe SLES 9 has an easier setup for LDAP, there must be some value added above and beyond what comes in the free version so I downloaded the 30 day eval version last night and installed it this morning. Sure enough you can configure LDAP as part of the install process. Unless I missed something this was not in the Suse 9.3 install. Anyway 30 minutes later I have a working LDAP server and 15 minutes after that I was able to login against it(in mojoPortal) using TJ's changes! Whoohoo!

Now I can get to the parts I need to do like implementing the other 2 data layers to support the new fields and creating upgrade scripts and other things to integrate TJ's changes. I have 30 days before my eval of SLES 9 runs out so I better get working! After that I need to test against Active Directory, in theory it should work the same way. TJ's implementation uses the Novell.Directory.Ldap library that comes with mono. I put this dll into the bin folder of my app on my Windows development machine and was able to compile against it and run under the .NET framework so it will work for mojoPortal installations under Windows or mono.


  ...Tweet This
]]>
https://www.mojoportal.com/ldap-thrashing-rescued-by-sles-9.aspx () https://www.mojoportal.com/ldap-thrashing-rescued-by-sles-9.aspx https://www.mojoportal.com/ldap-thrashing-rescued-by-sles-9.aspx Sun, 23 Oct 2005 10:31:56 GMT
Major Skinning changes landing in svn today Update: I've commited the changes to svn and still testing and tweaking but as you can see I've updated this site with one of Jasmin's new skins.

I'll be committing major changes to svn today that affect the skinning system of mojoportal.  This will require a little re-work for those of you who already have your own custom skins. I have already done this re-work for all the included skins so if you are using one of those you don't have to do anything.

Jasmin Savard contributed a complete re-organization of the stylesheet classes that is much better than what we had before and allows for much more intricate styling, he also contributed 2 very nice skins that show what is possible with this new style organization.

I have changed the way skins are stored in the file system to make it easier to work with skins and create new ones. Now all skins will have their own folder and the name of the folder will be the skin name you see in the SiteSettings dropdown for skins. Inside this folder will be the skin file which must be named layout.ascx and the stylesheet which must be named style.css. Any supporting images can also be put in this folder.

To convert your existing custom skin just create a folder as mentioned above and put your files in it with the appropriate names. You will also need to re-visit the stylesheet and compare the classes in the new built in skins with the ones in your stylesheet and update your stylesheet with the new classes.

I will hopefully deploy the new model to this site later today after some additional testing and after I commit these changes to svn.

On another note, those of you using the latest release of mojoPortal on Windows should be aware of a bug in NeatUpload that was found to corrupt some file uploads. This does not affect users who are running on mono, only on Windows. The bug has been fixed in NeatUpload and will be included in the next release coming soon. In the meantime you can either comment out the upload module in your Web.config file or go get the updated NeatUpload code, compile and replace the Brettle.Web.NeatUpload.dll file in your bin folder beneath the web site root.


  ...Tweet This
]]>
https://www.mojoportal.com/major-skinning-changes-landing-in-svn-today.aspx () https://www.mojoportal.com/major-skinning-changes-landing-in-svn-today.aspx https://www.mojoportal.com/major-skinning-changes-landing-in-svn-today.aspx Mon, 05 Sep 2005 08:58:03 GMT
FCKeditor 2.0 Final Release I just upgraded the source code in svn to use the new final release of FCKeditor. Those of you using the mojoPortal source code from svn can get it now. After I've had a chance to do some more testing I'll make a new release. I've upgraded this site to use it as well so I can test. So far so good.

Update:
I'm having a few issues with the new FCKeditor and trying to work through them. Its not allowing me to browse the server or upload files on mono. It works in IIS, I think there is a case sensitivty issue somewhere but haven't found it yet.

Also the css for the editor is displaying funky but appears ok when it renders outside the editor.


  ...Tweet This
]]>
https://www.mojoportal.com/fckeditor-20-final-release.aspx () https://www.mojoportal.com/fckeditor-20-final-release.aspx https://www.mojoportal.com/fckeditor-20-final-release.aspx Sat, 30 Jul 2005 13:54:00 GMT
Using the VS.NET Web Page Designer with mojoPortal For a long time my use of MasterPages has prevented the use of the VS.NET designer in setting up page layout.  Its never really bothered me because I'm an old school html guy and really never use the designer anyway so I didn't look into it too hard.  Since then several people have asked and expressed their wish for it to work in the VS.NET designer.  Well big thanks go out to Jan Hussaarts for figuring out why it didn't work and how to easily fix it.

It wasn't a problem with MasterPages itself, it was code I added to make it get the skin setting from the SiteSettings object stored in the HttpContext. The problem was that at design time there is no HttpContext so all it needed was a check to see if HttpContext is null before using it and now it works in the designer!

Its commited to svn for those of you working with the VS.NET Solution.


  ...Tweet This
]]>
https://www.mojoportal.com/using-the-vsnet-web-page-designer-with-mojoportal.aspx () https://www.mojoportal.com/using-the-vsnet-web-page-designer-with-mojoportal.aspx https://www.mojoportal.com/using-the-vsnet-web-page-designer-with-mojoportal.aspx Wed, 13 Jul 2005 19:47:00 GMT
Release 20050620 I just made a new release that includes the cool new SmartDropdown I mentioned in my previous posts. I don't normally make a new release only 2 days after the previous release but this feature did not require any changes to the structure of the database so its an easy upgrade from 20050618. As always be sure and back up both your web site and your db if you are using the site. Update all the web files. If upgrading from previous versions run the appropriate upgrade scripts first and if using MS SQL or PostgreSQL run the stored procedure script again to update all the procedures.  Of course if you are fairly new to mojoPortal a clean install of the latest version is the easy way to go.

I also wanted to go ahead and roll out this feature because the next things I'm going to work on are fairly significant features and I didn't want to delay the current feature too long.

Next on my list are Site Search which I'm going to try and implement with Lucene.NET and logging which I plan to implement with Log4Net

Woa! I just went to the Lucene.NET site to get the link for this post and it says they have stopped open source development. Looks like they've gone commercial. Wonder if I can use the version of Lucene.NET I already have in mojoPortal without getting into any trouble? I hadn't been to the site in a while, looks like they made the decision last September.

Any license gurus out there? If they previously released it under Apache License, Version 2.0 can I continue to use that version in mojoPortal or can they retroactively change the license? I could use some advice before I invest my time trying to get it working.

Update: Thanks Michel, I was confused, it is DotLucene that I planned to use all along and it is still open source. I went to the the Lucene.NET page by accident and got confused.


  ...Tweet This
]]>
https://www.mojoportal.com/release-20050620.aspx () https://www.mojoportal.com/release-20050620.aspx https://www.mojoportal.com/release-20050620.aspx Mon, 20 Jun 2005 19:39:05 GMT
New Feature implemented using an Ajax technique I just commited the new feature to svn that allows you to give a single user edit permission on any module without creating a special role. If you need to give more than 1 user permission on a module, you should use a role. The new feature utilizes a SmartDropDown control that I implemented using Sarissa for the Ajax magic.  You can start typing a user name or email into the dropdown and the dropdown will suggest matching users from the database. You can either click or arrow down to select the user.

The feature is particularly useful if you want to give a user a blog in your site without creating a new role just for that user. It does work with any module though, not just blogs.

I will probably make another release with this feature in a day or so.

If you are using MS SQL or PostgreSQL, you will need to run the stored procedure script.


  ...Tweet This
]]>
https://www.mojoportal.com/new-feature-implemented-using-an-ajax-technique.aspx () https://www.mojoportal.com/new-feature-implemented-using-an-ajax-technique.aspx https://www.mojoportal.com/new-feature-implemented-using-an-ajax-technique.aspx Sun, 19 Jun 2005 20:08:12 GMT
Upgrading from ByteFX to the .NET Connector for MySQL Last night I made the switch from the older ByteFX Data provider for MySQL to the newer  .NET Connector for MySQL.  It required some code changes in the MySQL data layer. 

For Example, anywhere I was using parameters like @SiteID, they had to be changed to ?SiteID except in places where the parameter is not being passed in but used in SQL with a SET statement .

In this line:
SET @PageLowerBound = (?PageSize * ?PageNumber) - ?PageSize

?PageSize and ?PageNumber are passed in but @PageLowerBound is not and it wouldn't work if I used ? instead of @

Another difference is in ByteFx you have only one data type for int MySqlDbType.Int whereas in the newer .NET Connector you have MySqlDbType.Int16, MySqlDbType.Int24, MySqlDbType.Int32, and MySqlDbType.Int64 and it won't work with just MySqlDbType.Int so you have to change the code.

I wasn't having any problems with the ByteFX provider myself but a few people have posted in the forums and been unable to connect using ByteFX with their specific version of MySQL. One person tried switching to the .NET Connector and then was able to connect but of course without the code changes described above it did not work for him either.  Hopefully this change will eliminate any problems some users were having with the MySQL version of mojoPortal.  It will be included in tomorrow's release.

Another user reported problems with losing special characters when data was saved to the database.  He was working with Portuguese content and it worked correctly in Text fields populated using the FCKeditor but did not work correctly with VarChar fields populated using normal text boxes.  I don't know if this change will fix that problem but I hope so.

Other gotchas I have observed with ByteFX and .NET Connector when building on Windows and deploying on mono you get the dreaded "File Not Found error" which would more accurately be described as "Couldn't load assembly".  This is caused because these data providers are shipped with a pre-comiled version of sharpziplib that was built using incremental build.  This problem is easily overcome by obtaining the source code for sharpziplib and compiling it myself with full Re-Build.  By doing this I have no problems compiling on Windows with VS.NET and deploying on mono.
 


  ...Tweet This
]]>
https://www.mojoportal.com/upgrading-from-bytefx-to-the-net-connector-for-mysql.aspx () https://www.mojoportal.com/upgrading-from-bytefx-to-the-net-connector-for-mysql.aspx https://www.mojoportal.com/upgrading-from-bytefx-to-the-net-connector-for-mysql.aspx Sat, 02 Apr 2005 06:40:13 GMT
Anonymous SVN Checkout now available I am happy to announce that the mojoPortal source code is now available using anonymous checkout from a Subversion source control repository hosted on forge.novell.com. See the Download page for details.

Big Thanks to Novell for making this service available free to the open source community!


  ...Tweet This
]]>
https://www.mojoportal.com/anonymous-svn-checkout-now-available.aspx () https://www.mojoportal.com/anonymous-svn-checkout-now-available.aspx https://www.mojoportal.com/anonymous-svn-checkout-now-available.aspx Sat, 12 Feb 2005 09:01:21 GMT
Data Loss is a drag In my rush to prepare for my presentation at the .NET user group I made a major bad move. Ouch!  I have 2 linux machines setup with MySQL and the one that was hosting the data for the mojoPortal web site was also the one I wanted to bring to demo mono. So I thought I'd copy the data to another machine and just point the site at that until I'm done with my presentation. Both machines already had a mojoportal database so I went to delete the one on the target machine so I could copy it over fresh but in a true Homer moment I deleted the wrong one. I had a backup but its about a week and half old so I lost some recent blog comments, forum posts and some major documentation work I did last weekend. Yes I know better, thats why it hurts so much. I let my guard down because my production machines are also development machines.

Anyway I'm all set for the meeting and none of the lost data has any financial impact, just frustration factor. I do have the names of everyone who requested one of the dvds I'll be giving away.

I appologize to Troels for losing his post in the bug forums.


  ...Tweet This
]]>
https://www.mojoportal.com/data-loss-is-a-drag.aspx () https://www.mojoportal.com/data-loss-is-a-drag.aspx https://www.mojoportal.com/data-loss-is-a-drag.aspx Wed, 09 Feb 2005 20:02:37 GMT
Database Paging continued I've updated my previous post with the actual implementation after testing and tweaking. The stored procedure for paging through threads in a forum from newest to oldest is quite different than my original post. The paging through posts in a thread is more like my original idea because it pages from oldest to newest. The forums are coming along nicely now. Once I finish with the MS SQL implementation it will be only a little extra work to get the MySQL version working so I can show it off on this site. This site is using MySQL but on my development machine I switch back and forth between the the 2 data layers as needed.


  ...Tweet This
]]>
https://www.mojoportal.com/database-paging-continued.aspx () https://www.mojoportal.com/database-paging-continued.aspx https://www.mojoportal.com/database-paging-continued.aspx Sat, 25 Sep 2004 10:42:00 GMT
New Skin This skin only took about 20 minutes to create. When I have time I'll do something more elaborate. For the moment I'm much more focused on functionality than making it pretty. I envision being able to create tools within the site that will allow creation of skins using the web browser. Other features need to be done first. I'd like to have the photo gallery and forums modules ready before I make a release, particularly the forums because then if people find bugs they can post to the forum instead of sending me an e-mail and I can avoid having to answer the same questions to multiple users.


  ...Tweet This
]]>
https://www.mojoportal.com/new-skin.aspx () https://www.mojoportal.com/new-skin.aspx https://www.mojoportal.com/new-skin.aspx Mon, 06 Sep 2004 10:20:00 GMT
The IBuySpy Skin Well the site skinning is essentially complete. From the Admin page you can select from available skins. This is the IBuySpy skin. I plan to make some new skins soon but it tickles me that I was able to make all the changes I made without losing the original look. I really can't think of any limits on the design possibilities with the new skinning. The skmMenu fits right in nicely and has its own skinning that integrates easily. I also created a MetaContent control and setup the abilility to specify default meta content at the site level and over-ride it at the page level if desired. Now its easy to move the menu around and change it from horizontal to vertical within the skin template. I still need to implement the page hierarchy for sub menu items. I also got about 80% of the culture localization support completed. The goal is for no hard coded labels in the site. All labels get their content from a Culture.config file. I'm providing a CultureUSA.config file and hoping that as others convert to their own cultures they will contribute additional Culture.config files that I can provide with the downloads.


  ...Tweet This
]]>
https://www.mojoportal.com/the-ibuyspy-skin.aspx () https://www.mojoportal.com/the-ibuyspy-skin.aspx https://www.mojoportal.com/the-ibuyspy-skin.aspx Sun, 29 Aug 2004 21:14:00 GMT
Scott Mitchell's skmMenu I'm making more progress on the site skinning. Today I integrated Scott Mitchell's skmMenu, an open source cross-browser Dynamic HTML menu for ASP.NET. It took me quite a bit of experimentation before I could get it to display the same as IE using Mozilla and Firefox when it was served from Mono. It looked pretty much the same right away in all browsers if served from IIS. I think it is a behavioural difference in mono's implementation of ASP.NET. The same code was rendering a rules="" attribute on the menu table on Mono but not under IIS on Windows. This was eliminating the border between menus when viewed in Mozilla or Firefox but not IE, when served from Mono. This was kind of mysterious because I could not find anywhere in the skmMenu code where it adds a "rules" attribute. I also experimented and Mono doesn't automatically add a "rules" attribute when you add an HtmlTable to the control tree. I never did figure out the cause, but I finally discovered that I could control it by explicitly setting the GridLines property of the menu.


  ...Tweet This
]]>
https://www.mojoportal.com/scott-mitchells-skmmenu.aspx () https://www.mojoportal.com/scott-mitchells-skmmenu.aspx https://www.mojoportal.com/scott-mitchells-skmmenu.aspx Sat, 28 Aug 2004 19:24:00 GMT
MasterPages Rock! I finally got all the pages in the site using Paul Wilson's MasterPages implementation. I've also changed my mind about needing to skin the site header separately. It will be better to break the site header control up into its constituent components and make them into their own controls and then position them within the MasterPage template. This will allow a great deal of flexibility in terms of design and make the design work very easy to understand for anyone who understands HTML. The templates are just .ascx files with markup. I plan to display them in a dropdown on the admin page. You would simply create a new one and drop it into a folder to add a skin. Of course you would have to include any supporting images and style sheets.


  ...Tweet This
]]>
https://www.mojoportal.com/masterpages-rock.aspx () https://www.mojoportal.com/masterpages-rock.aspx https://www.mojoportal.com/masterpages-rock.aspx Tue, 24 Aug 2004 20:35:00 GMT
Planned Architecture Changes and Notes To Myself IBuySpy, was not implemented in an OOP style. It uses mostly static methods in its "components" which are really just data access code and are embedded right in the web project. In mojoPortal I have already separated the layers cleanly allowing for interchangeable data layers. I wrote the Blog Module in an OOP style and plan to re-write the other modules in the same fashion. In particular the ModuleSettings and ModuleItems really reperesent the same thing and have overlapping properties that map to the same row in the Modules table. Same thing with the TabSettings and TabItem they will be combined into one class. I also plan to re-name Tab to Page and Portal to Site as I believe they are more intuitive conceptual abstractions. I've never liked the DesktopDefault.aspx page and plan to make that just Default.aspx. I'm not really focused on supporting mobile devices at this point but if I do I'm pondering a separate web site implementation since I think of the whole web site as a presentation layer. I could easily create a thinner presentation layer using the same business objects and I make no assumption at this point that it would be easier to design one site to handle all devices. Then again, maybe that will just be part of a skinning aproach, who knows.


  ...Tweet This
]]>
https://www.mojoportal.com/planned-architecture-changes-and-notes-to-myself.aspx () https://www.mojoportal.com/planned-architecture-changes-and-notes-to-myself.aspx https://www.mojoportal.com/planned-architecture-changes-and-notes-to-myself.aspx Tue, 17 Aug 2004 20:00:00 GMT
Exciting New Era As I recall, the IBuySpy Portal reference architecture was released while Visual Studio.NET was in beta and was the first good sample code to help Classic ASP developers make the leap to this new .NET thing. It was later updated for the release and has been used as a starting point in countless private projects and at least 2 notable open source projects, RainbowPortal and DotNetNuke

A lot has happened since then. The .NET Community has blossomed into a wealth of sites with articles, code samples, forums, blogs, and open source projects. Now we have the approaching release of ASP.NET 2.0 and the first release of The Mono Project, a port of the .NET framework that runs on Unix, Linux, and Mac OS X. These are exciting times! The vision of cross platform applications is within reach!

But its not a slam dunk. Chances are the ASP.NET code you've already written will need some massaging to make it work in the case sensitive file and url world of GNU/Linux/Apache. You will also have to add some new skills to your repetoire to learn web server administration in the apache world. My plan with this project is to use what I've learned over the past several years of ASP.NET development and create an improved reference architecture that teaches Object Oriented implementation by example while at the same time fleshing out a truly cross platform, feature rich web site framework that can be used by others as a starting point for their projects as well as my own. When I complete my vision, there won't be much resemblence to the original IBuySpy architecture, but even today it makes a good starting point in terms of functionality.


  ...Tweet This
]]>
https://www.mojoportal.com/exciting-new-era.aspx () https://www.mojoportal.com/exciting-new-era.aspx https://www.mojoportal.com/exciting-new-era.aspx Tue, 17 Aug 2004 18:54:00 GMT