DOWNLOAD DEMO
Current Version: 2.3.9.7 2013-04-30
Need a hand? Join the community.

Posts in Category: Architecture

mojoPortal 2.3.7.0 Released 

I'm happy to announce the release of mojoPortal 2.3.7.0, available now on our download page.

Since the last release, the focus of our work has been on improved web farm support. We've completed abstraction layers for the file system and for caching, and we've implemented a log4net appender that can log to the database. We are still working on various providers that can plug into the new abstraction layers and other improvements, so our work on web farm support will continue into October. We've almost completed our support and guidance documentation for Windows Azure, we have some of the web farm documentation online now, but we will be completing that work and making an announcement about it soon. After that we will turn our efforts to more traditional types of web farms using the Amazon EC2 cloud, and the Microsoft Web Farm Framework.

So, for now much of the web farm improvements are just architectural changes that won't be things users will notice. Other highlights of this release include:

  • Implemented an option to log errors and informational logging to the database instead of the file system
  • Upgraded to TinyMCE 3.4.5
  • Upgraded to CKeditor 3.6.2
  • Upgraded to the latest AjaxControlToolkit
  • Updated to latest version of Recaptcha library
  • Updated the google maps to use the new v3 API, thanks to Jamie Eubanks for his work on this
  • Added Whois ip address lookup dialog in most places where ip addresses are displayed

Updated Add On Products

The update to AjaxControlToolkit required us to also make new releases of Event Calendar Pro, Form Wizard Pro, and Web Invoice Pro, because these features use the AjaxControlToolkit and they need to use the same version of the AjaxControlToolit as mojoPortal. So you'll need to upgrade these products at the same time as you upgrade mojoPortal. 

Event Calendar Pro 3.4.0.2 includes new links to allow users to easily add events to Google Calendar, Yahoo Calendar, Windows Live Calendar, and Outlook/iCalendar. We also added a new text area that can be shown during event registration to capture additional information from users who register or purchase tickets for events. You can provide instructions that will be shown above the text area to let your users know what additional information is needed. As mentioned above this version was also updated to use the latest version of AjaxControlToolkit to keep it compatible with the latest version of mojoPortal.

Form Wizard Pro 2.6.0.3 includes a minor improvement to allow file uploads to be configured as optional instead of required. It also was updated to use the latest AjaxControlToolkit for compatibility with mojoPortal 2.3.7.0.

 

Vote mojoPortal for the 2011 Open Source Awards

 

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook

Gravatar
Posted by Joe Audette Thursday, September 29, 2011 1:41:00 PM Tagged In: Architecture Releases

mojoPortal SQL CE and WebMatrix 

This is just a quick post in follow up to my previous post SQL Server Compact 4.0 and mojoPortal, to provide some updated information. We recently released mojoPortal 2.3.4.8, and I've updated the package for SQL CE recently to contain migration scripts so that it is easy to migrate to SQL Server.

I've also created some new documentation.

Using WebMatrix with mojoPortal

WebMatrix includes IIS Express web server which is much easier to use on your local machine than IIS but has all the features of IIS. Once you install WebMatrix, you can right click a folder in Windows Explorer and choose "Open as a Web Site with Microsoft WebMatrix". So you can just unzip the mojoPortal package and right click the wwwroot folder to launch a mojoPortal site on your local machine. If using SQL CE you don't need to even need to configure a database, it just works, but for other mojoPortal packages you would have to set the connection string for the database. 

One could also use WebMatrix for light mojoPortal feature development, perhaps at some point I will make an article showing how to use the mojoPortal Hello World examples with WebMatrix. While WebMatrix is not designed to scratch the same itch as Visual Studio, it is a useful tool even for folks like me who really live in Visual Studio all day long. I encourage you to check it out, especially if you are interested in working with the SQL CE version of mojoPortal.

 

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook

Gravatar
Posted by Joe Audette Monday, July 26, 2010 10:38:00 AM Tagged In: Architecture Features Tutorials

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

Gravatar
Posted by Joe Audette Tuesday, July 20, 2010 7:46:00 AM Tagged In: Architecture Development

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.
 

Gravatar
Posted by Joe Audette Friday, November 28, 2008 3:10:00 PM Tagged In: Architecture Development Features

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!

Gravatar
Posted by Joe Audette Friday, October 24, 2008 10:24:45 AM Tagged In: Architecture Development Tutorials
Page 1 of 7 1 2 3 4 5 6 7 > >>
  • RSS
  • Subscribe

Statistics

  • Entries (443)

Archives