 <?xml-stylesheet type="text/css" href="https://i7media.com/Data/style/rss1.css" ?> <?xml-stylesheet type="text/xsl" href="https://i7media.com/Data/style/rss1.xsl" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
  <channel>
    <title>Blog</title>
    <link>https://i7media.com/blog</link>
    <description />
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>mojoPortal Blog Module</generator>
    <language>en-US</language>
    <ttl>120</ttl>
    <atom:link href="https://i7media.com/Blog/RSS.aspx?p=50~99~2" rel="self" type="application/rss+xml" />
    <itunes:owner />
    <itunes:explicit>no</itunes:explicit>
    <item>
      <title>Software Architecture Patterns: A Time and Place for Everything</title>
      <description><![CDATA[<p>Software architectural patterns are one of the more polarizing and controversial topics in the development world.</p>

<p>"Here's all the patterns that every project needs!"</p>

<p>"All patterns are bad and you should feel bad if you use them!"</p>

<p>In this post I will talk about what Architectural Patterns are, when they matter, when to use them and when not to.</p>

<p>I will list out a few patterns in a way that I hope will share understanding rather than dogmatic positions that are often held by tech influencers on social media.</p>

<h2>What Are Architectural Patterns?</h2>

<p>An architectural pattern is a solution to a specific problem that arises in the design of a project. They come in the form of separating concerns, grouping functionality, abstracting implementation details, and dictating conventions for the team to use.</p>

<p>Patterns can be as simple as breaking features into predictable functions, or to complex layers that handle a multitude of use cases.</p>

<h2>When Should One Use Patterns?</h2>

<p>When you find your code being hard to navigate, disorganized, difficult&nbsp;to maintain, or having&nbsp;trouble&nbsp;on-boarding new developers, using patterns can make some sense of the chaos.</p>

<p>If you find that your project has a problem, sometimes a pattern will resolve your problem. If your project doesn't have the problem that the pattern addresses, or if you don't understand what problem the pattern address, don't use the pattern.</p>

<p>It's as simple as that.</p>

<p>After 16 years of experience with many CMSs (Content Management Systems), I have found that they benefit greatly from Architectural Patterns, or that the lack of patterns can hinder growth and modernization over the years.</p>

<p>Of all the CMSs I have experience with, mojoPortal is the one I know most about, is dearest to my heart, and the CMS that I will use to showcase&nbsp;my position on&nbsp;patterns.</p>

<h2>"I Don't Feel Like I Need Patterns"</h2>

<p>This is a good indicator that you don't need patterns. If you are a solo developer, are in a small team, or it's just a side project, there might not be a need for you to even consider a pattern.</p>

<p>If you have a project that later in its lifetime you feel like you would benefit from a pattern, refactoring is always an option.</p>

<h2>What are Common Patterns and the Problems They Solve?</h2>

<p>There are so many that I couldn't possibly list them, but I'll list a few I've had experience with, and some that I believe to have value in the CMS realm.</p>

<h3>Layered (N-Tier) Architecture</h3>

<p class="image-center"><img alt="" height="333" src="https://i7media.com/Data/blogs/software-architectural-patterns/application-layers.png" width="600" /></p>

<p>If you're familiar with mojoPortal, it mostly implements this pattern.</p>

<p>The idea behind this pattern is to separate functionality concerns into these project layers:</p>

<p>The <strong>Data Access Layer</strong> holds all implementation code for storing and manipulating data. It becomes the only API for the application to interface with your data, be it from a file, a database engine, or another system.</p>

<p>The <strong>Business Layer</strong> is the only layer that references the Data Access Layer. It holds domain entities (classes that represent tables in a database for instance) and the logic to bring the data together in code representations of the application features.</p>

<p>The <strong>Presentation (Web) Layer</strong> is the only layer that references the Business Layer. This layer is for "presenting" the features in the application. It could be a Windows Application or a Web Application, but the main thing it does is give a user interface to the code features from the Business layer.</p>

<p>The reason I said mojoPortal "mostly" implemented this pattern is because while the project is split into the proper layers, a lot of the business logic wound up in the Web (Presentation) Layer. This has made it very difficult to attempt to migrate away from the Web Forms framework it was built on to a more modern and capable framework.</p>

<p>The pros of this pattern are everything is grouped in a logical fashion and you know where everything belongs.</p>

<p>The cons of this pattern are that every layer is tightly coupled to the previous layer. This can be difficult later down the road when replacing dependencies or dealing with providers for services throughout the application. This leads into the next pattern.</p>

<h3>Clean Architecture</h3>

<p class="image-center"><img alt="" height="547" src="https://i7media.com/Data/blogs/software-architectural-patterns/clean-architecture.png" width="550" /></p>

<p>The purpose of this pattern is much like the previous pattern, but with some tweaks and the implementation of another pattern to facilitate changes to make up for the previous pattern's downfalls.</p>

<p>Much like the Layered Architecture pattern, the application is separated into several projects.</p>

<p>It differs on some key points.</p>

<ol>
	<li>All interaction between layers is done through the use of&nbsp;contract interfaces.<br />
	What this means is unlike layered architecture, instead of directly referencing the implementation of a service, you reference the interface the service implements. This allows for easily swapping out the implementation if needed.</li>
	<li>The layer references are moved around a bit. Rather than each project pointing to the previous project, the projects are placed in an encircling shape, all pointing inward or towards each other in their layer.</li>
</ol>

<p>The Layers are as such:</p>

<p>The <strong>Domain Layer</strong> is the ultimate authority of the entire application. It contains all the domain concerns and contracts for the application with no references to any internal or external dependencies. All other layers can use this layer. This layer is often coupled with the Domain Driven Design pattern, but it's not required.</p>

<p>The <strong>Application Layer</strong> contains the business logic of the application and the contract interfaces that are to be implemented in the Infrastructure layer. Often times this is where the CQRS and/or Vertical Slice patterns are used, but it's not required.</p>

<p>The <strong>Infrastructure Layer</strong> is where all implementations for the contracted services in the Application are kept. All external dependencies/libraries are abstracted here, allowing for easy replacement from one library to another if needed. An example would be if your project started by supporting SQL Server but later a migration to PostgreSQL was in order, the only assembly that would need to be edited or replaced would be the Infrastructure assembly.</p>

<p>Sometimes the Infrastructure Layer will break out only the database concerns into its own Persistence Layer(s), keeping the database specific code in it's own layer(s), but this is not required.</p>

<p>The <strong>Presentation Layer</strong> brings everything together through the use of the Inversion of Control Pattern. This allows each layer to register services in the IoC container using the interface contracts and keeping the implementation details hidden from the application. The IoC container handles the dependencies for all services that are registered to it, allowing the system to keep track of lifecycles and dispose of objects so that the implementation reference is kept in one location.</p>

<p>A cool thing about Clean Architecture is that one could have multiple Presentation Layers but share all the core functionality from the Application Layer. Do you need a multi-page website but want to administrate it through a mobile app? The answer could be two Presentation Layers, an MVC/Razor Pages layer for the website, and a Web API layer in conjunction with the mobile app for administration.</p>

<p>The pros of this pattern are that it's incredibly versatile while enforcing strict separation of concerns and external dependencies allowing for a very long-lived application.</p>

<p>The cons of this pattern are that it's moderately complicated, where boilerplate could become monotonous if the application doesn't need to use the pattern.</p>

<p>mojoPortal would have benefited a lot from this pattern being implemented properly, as migrating&nbsp;to .NET (Core) from .NET Framework would have consisted of replacing the Infrastructure layer using the same Application Layer contracts, and rebuilding the Presentation Layer in a .NET (Core) UI framework. The majority of the application wouldn't change.</p>

<p>More Reading:</p>

<ul>
	<li><a href="https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html">The Clean Architecture - The Clean Code Blog [Uncle Bob]</a></li>
	<li><a href="https://medium.com/@rudrakshnanavaty/clean-architecture-7c1b3b4cb181">Clean Architecture - Medium</a></li>
	<li><a href="https://en.wikipedia.org/wiki/Domain-driven_design">Domain-driven Design - Wikipedia</a></li>
</ul>

<h4>The Repository and Unit of Work Patterns</h4>

<p>The Repository pattern is an excellent pattern for data access. The Unit of Work pattern compliments the Repository pattern by allowing for bundles transactions for data integrity.</p>

<p>The Repository pattern's goal is to abstract repeated logic for data manipulation and querying. It allows you to have a single "GetById" method that works for all tables with the code being written once. It keeps your code DRY and makes it easy to do things like adding global query filters for features like soft deletion.</p>

<p>The Unit of Work pattern creates a "unit of work" for each action you take when mutating data. If you need to save a blog post, but it needs a new category that does not exist, the UoW will prevent bad data from being saved if creating the category fails by not saving the blog post. It's an interface for database transactions, if you're familiar with how those work.</p>

<p>Some people raise issue to the Repository (and Unit of Work) pattern when using Entity Framework, as Entity Framework implements its own versions of those patterns. This is&nbsp;completely understandable for application that will realistically never wish to change the library that connects to the database. However, from experience, I would rather have everything in my application have its own contracts to facilitate that possibility of change.</p>

<p>mojoPortal's Data Access layers all use ADO.NET, and their contracts are the implementations, which has made changing to something like Entity Framework for easy migrations and multiple database providers very hard. If the Repository pattern was between the layers, replacement would be a much more feasible.</p>

<p>More Reading:</p>

<ul>
	<li><a href="https://deviq.com/design-patterns/repository-pattern">Repository Pattern - DevIQ</a></li>
	<li><a href="https://learn.microsoft.com/en-us/aspnet/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application">Implementing the Repository and Unit of Work Patterns in an ASP.NET MVC Application - Microsoft</a></li>
</ul>

<h4>The Query Specification Pattern</h4>

<p>The Query Specification pattern is another pattern used in tandem with the repository pattern. It allows us to create domain level specifications that we can use in the Application Layer without having to expose an implementation's API.</p>

<p>For instance, we can create a "GetBookWithAuthors" specification that just takes a Book ID, and pass the specification to the Repository's "FirstOrDefaultAsync" method that&nbsp;will be sure that&nbsp;the underlying data access code will return the appropriate Book with Authors for that book.</p>

<p>More Reading:</p>

<ul>
	<li><a href="https://medium.com/@cizu64/the-query-specification-pattern-in-ddd-net-core-25f1ec580f32">The Specification Pattern in DDD .NET Core - Medium</a></li>
	<li><a href="https://deviq.com/design-patterns/specification-pattern">Specification Pattern - DevIQ</a></li>
</ul>

<h4>Plugin Architecture Pattern</h4>

<p>The Plugin Architecture Pattern&nbsp;is a pattern that facilitates the ability to add or change functionality of the application with the use of third party bundled code. Most CMSs support this pattern, mojoPortal has its own way of handling modules (plugins) that achieve the same goal.</p>

<p>It's quite simple, the main application provides a set of APIs (the Plugin Interface) that a plugin developer can implement in their plugin, and then register their code with the Plugin Manager, which is responsible for loading and running the Plugin code.</p>

<p>More Reading:</p>

<ul>
	<li><a href="https://learn.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support">Create a .NET Core application with plugins - Microsoft</a></li>
	<li><a href="https://blog.nashtechglobal.com/plugin-architecture-pattern-overview-net/">Plugin Architecture Pattern Overview (.NET) - Nash Tech</a></li>
</ul>

<h3>Bringing it all Together</h3>

<p>By using the Clean Architectural pattern, we have a good foundation to allow us to plug and play any&nbsp;implementations through the use of contract interfaces and Dependency Injection. In the event that the database code needs to be swapped out, a third party library needs to be replaced due to a security vulnerability, or having the ability to provide different implementations for selection through the application's settings, this will help facilitate these use cases.</p>

<p>Using the Repository, Unit of Work, and Query Specification&nbsp;patterns we can prevent repeating code for querying data&nbsp;and we abstract away data query implementation, and it allows us to support or swap database providers at runtime.</p>

<p>The Plugin pattern allows for us to expand the application in any way that is needed. Be it adding new features (Blog, Forums, Event Calendar, CRM, etc.)&nbsp;or modifying an existing feature (swapping out authentication methods, listening for events to modify data, etc.) it makes the application as flexible as possible.</p>

<h3>Conclusion</h3>

<p>These are what I believe are the foundational building blocks for&nbsp;a CMS like the next version of mojoPortal could use, and who knows? I might be doing just that. 😉</p>

<p>Does that mean that all applications should use Clean Architecture or the Repository patterns?&nbsp;Clearly not.</p>

<p>Patterns are like shoes, if they fit and do the job that you have a need for, use them, otherwise don't.&nbsp;Just don't make the mistake that if your application doesn't need&nbsp;patterns that&nbsp;no one needs&nbsp;patterns, as many people on the internet so readily declare.</p>
<br /><a href='https://i7media.com/blog/software-architecture-patterns-a-time-and-place-for-everything'>Elijah Fowler</a>&nbsp;&nbsp;<a href='https://i7media.com/blog/software-architecture-patterns-a-time-and-place-for-everything'>...</a>]]></description>
      <link>https://i7media.com/blog/software-architecture-patterns-a-time-and-place-for-everything</link>
      <author>elijah@i7media.net (Elijah Fowler)</author>
      <comments>https://i7media.com/blog/software-architecture-patterns-a-time-and-place-for-everything</comments>
      <guid isPermaLink="true">https://i7media.com/blog/software-architecture-patterns-a-time-and-place-for-everything</guid>
      <pubDate>Tue, 24 Feb 2026 17:24:00 GMT</pubDate>
    </item>
    <item>
      <title>i7MEDIA purchases mojoPortal</title>
      <description><![CDATA[<script>
$(document).ready(function() {
					     $('[data-b64]').each(function() {
					          var b64 = $(this).data('b64')
					               oValue = window.atob(b64);
					          $(this).attr('href', 'mailto:' + oValue).html(oValue);
					     });
					});
</script>
<h5 class="AlignCenter"><strong>Media wishing to learn more about this event, please send all questions to <a data-b64="aGlAaTdtZWRpYS5uZXQ=">&nbsp;</a></strong></h5>

<p><strong>FOR IMMEDIATE PUBLIC RELEASE:</strong></p>

<p><strong>i7MEDIA has purchased mojoPortal and all of its commercial modules</strong></p>

<p><strong>Kearney, Mo (Feb 6,&nbsp; 2017)</strong> - It is an exciting day for the mojoPortal project! i7MEDIA, a longtime supporter of the mojoPortal project, has completed the purchase of the open source project and the commercial modules available on the mojoPortal website from Source Tree Solutions.</p>

<p>Joe Davis, i7MEDIA President, has been strong supporter of mojoPortal since 2008. Joe built his business around this versatile and user-friendly content management system. i7MEDIA, is dedicated to furthering the development of mojoPortal and its tools.</p>

<p>Rest assured mojoPortal will remain an open source project and there are no plans to change that. However, I7MEDIA has plans for expanding mojoPortal to help it stay relevant and provide the very best .NET CMS platform on the market today.&nbsp;</p>

<p>Joe Audette, of Source Tree Solutions, is very enthusiastic about the new life of mojoPortal:</p>

<blockquote>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.&nbsp; 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 I am very glad to know my baby is in good hands! Long live mojoPortal! <cite>Joe Audette, mojoPortal Founder</cite></blockquote>

<p>mojoPortal has always been easy for users to add and manage their content. Over the past few years, though, it has fallen behind other systems which have taken more modern approaches to management and more fully utilized the capabilities of modern browsers. i7MEDIA has developed add-on features for mojoPortal which make content management easier and they are working on packaging these features for the masses to use.</p>

<p>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. The focus will be on cutting down on the number of steps and making the process easier overall. They will also explore possible MVC and WebApi implementations of some features, especially administration features like the File Manager.&nbsp;</p>

<p>It has always been possible to create beautiful sites with mojoPortal but the built-in skins were not good examples. i7MEDIA is working on providing newer skins to help showcase the power or mojoPotral. &nbsp;i7MEDIA is committed to making sure that mojoPortal is seen as a designer-friendly CMS.&nbsp;</p>

<p>A new version of mojoPortal is scheduled for release 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.&nbsp;</p>

<p>For the latest news, check out mojoPortal’s <a href="https://www.facebook.com/mojoPortal-146363180114/">Facebook</a> and <a href="https://twitter.com/mojoportal">Twitter</a> feeds.</p>
<br /><a href='https://i7media.com/i7media-purchases-mojoportal'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/i7media-purchases-mojoportal'>...</a>]]></description>
      <link>https://i7media.com/i7media-purchases-mojoportal</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/i7media-purchases-mojoportal</comments>
      <guid isPermaLink="true">https://i7media.com/i7media-purchases-mojoportal</guid>
      <pubDate>Mon, 06 Feb 2017 14:56:00 GMT</pubDate>
    </item>
    <item>
      <title>Long Term Support for mojoPortal</title>
      <description><![CDATA[<p class="alert alert-info"><strong>Update: </strong>i7MEDIA is now the owner of mojoPortal and is committed to its future success. <a href="https://i7media.net/i7media-purchases-mojoportal">Read more</a>…</p>

<p>As you may know, Joe Audette, founder and chief developer of mojoPortal, has announced that he will no longer be developing mojoPortal.</p>

<p>In the 7+ years I have known Joe and worked with mojoPortal, i7MEDIA has become the most trusted and experienced mojoPortal consultancy in the world. We have happy clients on every continent except Antarctica ranging in size from small start-ups to major international corporations and organizations. We've built and helped others build hundreds of mojoPortal sites. Most of our projects involving mojoPortal are still operational and we're adding more even as I'm writing this post.</p>

<p>Technology moves fast and that's a good thing, but sometimes it can move at a pace which can cause businesses to lose money if they're not careful. Whether a small company spends a few thousand dollars to build a nice website and customer portal or a large one spends several thousand dollars, scrapping what they have and building new just because there's a new technology (or even not new but more popular) doesn't make business sense.</p>

<p>We have a lot of clients who are using perfectly good and reliable WebForms systems like mojoPortal. We take a great deal of pride in the support we provide to our clients so we will be supporting and even providing enhancements to mojoPortal until we don't have any clients needing it anymore. After speaking with several of our clients over the past couple of months I can tell you, definitively, that we'll be supporting mojoPortal for quite a long while and that's fine by me and my team of mojoPortal experts.</p>

<p>So, if you're using mojoPortal already and you are looking for support, we will help you. If you're considering using mojoPortal because of its rich feature set, we will help you. <a href="https://i7media.com/hire-us">Contact us today so we can help you</a>!</p>
<br /><a href='https://i7media.com/long-term-support-for-mojoportal'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/long-term-support-for-mojoportal'>...</a>]]></description>
      <link>https://i7media.com/long-term-support-for-mojoportal</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/long-term-support-for-mojoportal</comments>
      <guid isPermaLink="true">https://i7media.com/long-term-support-for-mojoportal</guid>
      <pubDate>Fri, 20 Nov 2015 15:12:00 GMT</pubDate>
    </item>
    <item>
      <title>Ultimate mojoPortal Upgrade Guide</title>
      <description><![CDATA[<p>Due to its structure, upgrading mojoPortal is quite simple. The short story is you backup your site and database, download the new version, copy the files to your server, open the setup page and you're done. There are a few areas where one might start over thinking the process and make it harder than it really is so we decided we would write this guide to help quell the desire to make it difficult.</p>

<div class="alert alert-warning"><strong>THE GREAT BIG WARNING:</strong> If you do not backup your website and its database you are asking for trouble. While we have never had an upgrade break a site, it could happen and having a backup is the only way to insure yourself against it.</div>

<h3>The Canon</h3>

<p>The process for upgrading mojoPortal is no different if you are upgrading from a really old version or a relatively new version. mojoPortal doesn't have "minor" updates or "major" upgrades. The terms update and upgrade can be used interchangeably when referring to mojoPortal. Version numbers don't mean much, version 2.4.0.0 didn't necessarily contain any more new features or bug fixes than 2.3.7.2. The version numbers increase by 0.0.0.1 each time a database change or a set of database changes is needed. There are never "upgrade" or "update" packages released by mojoPortal. All releases packages&nbsp;contain a full installation which if&nbsp;copied to an existing site will upgrade the site.&nbsp;<strong>If you do not backup your site and database before upgrading, you are not being responsible.</strong></p>

<h3>Process Overview</h3>

<ol>
	<li>Take the Site Offline</li>
	<li>Backup the Site Files and Database</li>
	<li>Prepare the web.config File</li>
	<li>Copy New Files to the Site</li>
	<li>Bring the Site Online</li>
	<li>Run the Setup Page</li>
	<li>Make Skin Changes if Needed</li>
</ol>

<h3>Take the Site Offline</h3>

<p>You want to do this prior to backing up the site because once the site is offline, no one can make any changes to it. If you were to backup the site before taking it offline, someone could make a change which is not backed up.</p>

<p>To take the site offline, add an "App_Offline.htm" file to the root of the site. <em>The root of the site is the same location where the web.config file resides.</em> <a href="https://i7media.net/SharedFiles/Download.aspx?pageid=6&amp;mid=9&amp;fileid=402" rel="nofollow">You can download an example App_Offline.htm here</a>.</p>

<h3>Backing up</h3>

<p>There are many, many ways to backup files and databases. We will cover two methods for backing up files and two methods for backing up databases (one for MSSQL and one for MySQL).</p>

<h4>Backing up Files When You Have Access to the Server's Desktop</h4>

<p>Use this method if you have access to the servers desktop. If you don't have access to the servers desktop, use the FTP method.</p>

<p>In general, you will want to browse to the location of your site files. If you do not know what this is, you should contact your server admin or, if you are familiar with IIS, check the physical path for the site in IIS. Once you have located the site files, select all of them and create a zip file of them. We use <a href="http://7-zip.org/">7-Zip</a> but you can use whatever you like.</p>

<h4>Backing up Files with FTP</h4>

<p>Download a <strong>good</strong> FTP client which provides verbose logging and an easy way to retry operations which may have failed. We use <a href="https://filezilla-project.org/">FileZilla</a> and recommend it above any other FTP client.</p>

<p>Open your FTP client and connect to your server. Download <strong>all</strong> of the files in your site to a directory on your computer. Check the FTP Client's log for any failures and re-download any files which did not download properly.</p>

<h4>Backing up MSSQL Database in SQL Server Management Studio</h4>

<p>Use this method if you have access to the database using SQL Server Management Studio (SSMS). Some hosting providers provide this access but the more security minded hosting providers (like i7MEDIA) do not. If you cannot access the database with SSMS, use your hosting providers control panel tools to back up your database. If you are an i7MEDIA customer, follow the instructions in our "<a href="http://i7media.net/clients/knowledgebase/145/Backing-up-and-Restoring-SQL-Server-Databases.html">Backing up and Restoring SQL Server Databases</a>" knowledge base article.</p>

<h4>Create the Backup</h4>

<ol>
	<li>Open SSMS and connect to the database server hosting the database.</li>
	<li>Right-click the database in the Object Explorer of SSMS and then select Tasks &gt; Back Up. For further instructions, read the "<a href="http://technet.microsoft.com/en-us/library/ms187510.aspx#SSMSProcedure">Create a Full Database Backup</a>" article on the MSDN website.</li>
</ol>

<h4>Backing up MySQL Database using MySQL Workbench</h4>

<p>Use this method if you have access to the database using MySQL Workbench. Some hosting providers provide this access but the more security minded hosting providers (like i7MEDIA) do not. If you cannot access the database with MySQL Workbench, use your hosting providers control panel tools to back up your database. Many hosting providers do provide access to a tool called <a href="http://www.phpmyadmin.net">PHPMyAdmin</a> which you can use to back up your database as well. If you are an i7MEDIA customer, follow the instructions in our "<a href="http://i7media.net/clients/knowledgebase/172/Backing-up-and-Restoring-MySQL-Databases.html">Backing up and Restoring MySQL Server Databases</a>" knowledgebase article.</p>

<h4>Create the Backup</h4>

<ol>
	<li>Open MySQL Workbench and connect to the database server hosting the database.</li>
	<li>Select "Data Export" under "Management" in the Navigator.</li>
	<li>Select the database in the "Object Selection" panel.</li>
	<li>Select your desired options in the Options section and click the "Start&nbsp;Export" button. Note: <strong>do not </strong>select the "Skip table data" option because you will not end up with any of your site data if you do select this option.</li>
</ol>

<h3>Prepare the web.config File</h3>

<p><strong>You should use the web.config file which comes with the mojoPortal release.</strong> This cannot be stressed enough because trying to compare every line of your old web.config file and the new one will take a long time and you may miss something.&nbsp;Nearly all of the settings you might change should be done in the user.config file anyway so you shouldn't have many changes to the web.config file in the first place. A few exceptions to this rule are listed below:</p>

<dl>
	<dt><strong>machineKey</strong></dt>
	<dd>The machineKey is used for encryption and decryption of authentication cookie data and view-state data. In mojoPortal it is also used for encryption and decryption of stored passwords if the Password Storage option is set to "Encrypted." You should copy this from your previous web.config file to the new web.config file. Read our "<a href="http://i7media.net/separating-sections-from-the-mojoportal-webconfig-file">Separating Sections From the mojoPortal web.config File</a>" article if you have a lot of sites and don't want to modify the new web.config for each of them.</dd>
	<dt><strong>Keys Related to Large File Uploads</strong></dt>
	<dd>The httpRuntime and requestFiltering elements in the web.config help with the support of large file uploads. If you have made changes to these elements, you will need to copy those changes to the new web.config file. Read the <a href="https://www.mojoportal.com/supporting-large-file-uploads.aspx">Supporting Large File Uploads</a> article in the mojoPortal documentation for more information on this topic.</dd>
	<dt><strong>Keys Related to Error Pages</strong></dt>
	<dd>The configuration of custom and http error pages for a website hosted in IIS is saved in the web.config file. If you have changed these settings from the default values, you'll need to copy them over to the new web.config file. The customErrors element contains the settings for handling .net related errors and the httpErrors element contains the settings for handling http errors (e.g., 404). Tip: take a look at our article "<a href="http://i7media.net/prettifying-the-mojoportal-error-page">Pretifying the mojoPortal Error Page</a>" for information on how to modify the .net error page.</dd>
</dl>

<p>If you have several items which cannot go in the user.config file, you should keep them saved in some kind of notes file with the site. For best security, save your notes file with a .config extension to prevent it from being download via the web.</p>

<p>Note: this is an upgrade, not a new install so you <strong>should not</strong> copy create a new user.config file.</p>

<h3>Copy New Files to the Site</h3>

<p>If you have access to the servers desktop you can simply copy the files from the release (with changes made to the web.config) to the location of your site files in the order listed below. When prompted to with the option&nbsp;merge existing folders or not, select "yes." When prompted to "Copy and Replace" for existing files or "Don't copy,"&nbsp;check the "Do this for all conflicts" checkbox and then click the "Copy and Replace" option.</p>

<p>If you are accessing the site with FTP, again be sure you are using a good FTP client. Using the FTP client, upload all of the files in the order listed below. When prompted to overwrite existing files, choose whichever option overwrites the existing files.</p>

<h4>Order to Copy or Upload New Files/Folders</h4>

<ol>
	<li>Setup folder</li>
	<li>ClientScript&nbsp;folder</li>
	<li>Data folder</li>
	<li>All other files and folders</li>
</ol>

<h3>Bring the Site Online</h3>

<p>The site was taken offline by adding the App_Offline.htm file to the root of the site. To bring the site back online, all you need to do is rename or move the file. We generally customize our App_Offline.htm files with customer logos so we simply rename the file to App_Offline.config instead of moving it elsewhere.</p>

<h3>Run the Setup Page</h3>

<p>The setup page runs all of the database scripts for all of the features which have database changes. It also processes all of the feature configuration files which control what settings you see on the settings page for module instances.</p>

<p>To run the setup page, open a web browser and go to http://www.yourwebsite.url/Setup/Default.aspx. Once all of the scripts run, you will see a summary at the bottom of the page along with a link to the site.</p>

<p>If you see any errors, you will need to address them. Generally, you shouldn't see any errors but we have compiled a short list of the most common errors.</p>

<dl>
	<dt><strong>Setup is disabled. To continue, please set DisableSetup to false in Web.config.</strong></dt>
	<dd>This is showing up because the DisableSetup key in the web.config or user.config file has been set to true. If you were logged in to the site prior to upgrading, you will not see this error. To get around this, open the user.config file and change the setting to false. Next, open the web.config file and add a space to the bottom of the file. Finally, reload the setup page.</dd>
	<dt><strong>The system cannot connect to the MSSQL database. Please check your connection string.</strong></dt>
	<dd>The Connection String key in the user.config file is not correct. This error is always accompanied by more detailed information to help you troubleshoot the problem. If the database server can be accessed, it will state something to the effect of "...error occurred while establishing a connection..." If the database name, username or password is incorrect, it will state something to the effect of "the login failed."</dd>
</dl>

<h3>Make Skin Changes if Needed</h3>

<p>The skins in the mojoPortal release packages are not copied over the skins used by sites (located in \Data\Sites\[sitenum]\skins). The skins located \Data\Skins are updated or appended with the updated or new files from the release package. If you are using a skin which came with mojoPortal and have not modified it, you can copy it from \Data\Skins to \Data\Sites\[sitenum]\skins.</p>

<p>If you are using a custom skin or you have modified a packaged skin, you should check the "<a href="https://www.mojoportal.com/important-skin-changes">Important Skin Changes</a>" article in the mojoPortal Documentation for details on any changes you need to make to your skin to support the new release. You will want to check the details of every version between your old version and the new version you are installing. This is rather easy as the changes are listed in descending order in the article and there aren't very many.</p>

<h3>Summary</h3>

<p>See, it's rather simple. You don't need to worry about database scripts, different methods for minor or major versions, lots of file merging or anything like that. Really, all you need to do is create a backup and copy over the new files.</p>

<p>If you run into problems, check out the <a href="https://www.mojoportal.com/forums">mojoPortal Forums</a>. Do a search for your issue before posting because someone else may have already reported the problem and resolution has been provided by the community.</p>

<h3>Want someone else to do it?</h3>

<p>If you would rather have someone else handle upgrades for you, check out our <a href="http://i7media.net/mojoportal-upgrade-service">Upgrade Service</a>.</p>

<h3>Want to learn more about mojoPortal?</h3>

<p>If you enjoyed this guide and would like to learn more about mojoPortal, check out our <a href="http://i7media.net/mojoportal-training">Training Classes</a>.</p>
<br /><a href='https://i7media.com/ultimate-mojoportal-upgrade-guide'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/ultimate-mojoportal-upgrade-guide'>...</a>]]></description>
      <link>https://i7media.com/ultimate-mojoportal-upgrade-guide</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/ultimate-mojoportal-upgrade-guide</comments>
      <guid isPermaLink="true">https://i7media.com/ultimate-mojoportal-upgrade-guide</guid>
      <pubDate>Fri, 06 Dec 2013 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Prettifying the mojoPortal Error Page</title>
      <description><![CDATA[<p>When encountering an error on a mojoPortal site, the error.htm file is display which is a very plain page simply stating that something went wrong.</p>

<p><img alt="" class="thumbnail" src="https://i7media.com/Data/Sites/1/media/blog/error-page_old.png" /></p>

<p>Now, it gets the job done but it's kinda plain so we revamped it on our site:</p>

<p><img alt="" class="thumbnail" src="https://i7media.com/Data/Sites/1/media/blog/error-page_new.png" /></p>

<p>Is it better? Well, it's still an error message but at least it has some character. :-)</p>

<p>It's actually quite simple to accomplish as well:</p>

<ol>
	<li>Create a new file in the root of your site, we'll call it Oops.htm.</li>
	<li>Add the following to it:</li>
</ol>

<pre class="linenums language-markup" data-rel="Oops.htm">
<code>&lt;!DOCTYPE HTML&gt;
&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;Error&lt;/title&gt;
		&lt;link href='https://i7media.com//fonts.googleapis.com/css?family=Architects+Daughter' rel='stylesheet' type='text/css'&gt;
		&lt;style&gt;
			html,
			body {
				width: 100%;
				height: 100%;
			}
			
			body {
				background: #f2f5f6; /* Old browsers */
				background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPHJhZGlhbEdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iNzUlIj4KICAgIDxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiNmMmY1ZjYiIHN0b3Atb3BhY2l0eT0iMSIvPgogICAgPHN0b3Agb2Zmc2V0PSIzNyUiIHN0b3AtY29sb3I9IiNlM2VhZWQiIHN0b3Atb3BhY2l0eT0iMSIvPgogICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYzhkN2RjIiBzdG9wLW9wYWNpdHk9IjEiLz4KICA8L3JhZGlhbEdyYWRpZW50PgogIDxyZWN0IHg9Ii01MCIgeT0iLTUwIiB3aWR0aD0iMTAxIiBoZWlnaHQ9IjEwMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
				background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,#f2f5f6), color-stop(37%,#e3eaed), color-stop(100%,#c8d7dc)); /* Chrome,Safari4+ */
				background: -webkit-radial-gradient(center, ellipse cover,  #f2f5f6 0%,#e3eaed 37%,#c8d7dc 100%); /* Chrome10+,Safari5.1+ */
				background:    -moz-radial-gradient(center, ellipse cover,  #f2f5f6 0%, #e3eaed 37%, #c8d7dc 100%); /* FF3.6+ */
				background:		-ms-radial-gradient(center, ellipse cover,  #f2f5f6 0%,#e3eaed 37%,#c8d7dc 100%); /* IE10+ */
				background:		 -o-radial-gradient(center, ellipse cover,  #f2f5f6 0%,#e3eaed 37%,#c8d7dc 100%); /* Opera 12+ */
				background: 		radial-gradient(ellipse at center,  #f2f5f6 0%,#e3eaed 37%,#c8d7dc 100%); /* W3C */
				display: table;
			}

			div.wrap {
				display: table-cell;
				vertical-align: middle;
			}
			
			div.inner {
				margin: 0 auto;
				width: 50%;
			}

			h1 {
				font-size: 40px;
				font-family: 'Architects Daughter', cursive;
				margin-top: 0;
				text-align: center;
			}

			p {
				font-size: large;
				font-family: Arial, Helvetica, sans-serif;
			}
		&lt;/style&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;div class="wrap"&gt;
			&lt;div class="inner"&gt;
				&lt;h1&gt;
					Ouch! That Hurt!
				&lt;/h1&gt;
				&lt;p&gt;
					So sorry for the inconvenience but an error has occurred while trying to process your request.
				&lt;/p&gt;
				&lt;p&gt;
					The error has been logged and will be reviewed by our staff as soon as possible. It's possible the error was a momentary hiccup and you may wish to use the back button to try your request again, or you can to the &lt;a href="default.aspx"&gt;home page&lt;/a&gt;.
				&lt;/p&gt;
			&lt;/div&gt;
		&lt;/div&gt;
	&lt;/body&gt;
&lt;/html&gt;</code>
</pre>

<ol start="3">
	<li>Open your web.config file and locate the line which looks like this:<br />
	<code class="language-markup">&lt;customErrors mode="RemoteOnly" defaultRedirect="Error.htm"&gt;</code></li>
	<li>Replace Error.htm with Oops.htm</li>
	<li>Save your web.config file.</li>
</ol>

<p>Don't forget to make this change to your web.config each time you upgrade mojoPortal.</p>

<p>Happy mojo-ing!</p>
<br /><a href='https://i7media.com/prettifying-the-mojoportal-error-page'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/prettifying-the-mojoportal-error-page'>...</a>]]></description>
      <link>https://i7media.com/prettifying-the-mojoportal-error-page</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/prettifying-the-mojoportal-error-page</comments>
      <guid isPermaLink="true">https://i7media.com/prettifying-the-mojoportal-error-page</guid>
      <pubDate>Fri, 28 Jun 2013 19:36:00 GMT</pubDate>
    </item>
    <item>
      <title>jQuery UI + mojoPortal = happiness</title>
      <description><![CDATA[<h3>What is jQuery UI?</h3>

<p><a href="http://jquery.com/">jQuery</a> is a JavaScript library, mostly used for expediting script writing. <a href="http://jqueryui.com/">jQuery UI</a> is a user interface built with jQuery. In the words of <a href="http://jqueryui.com" target="_blank">jQueryUI.com</a>:</p>

<blockquote>jQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. Whether you're building highly interactive web applications or you just need to add a date picker to a form control, jQuery UI is the perfect choice.</blockquote>

<p>Now you might think "hey, that sounds nice!", and "how do I use it on my website?". You can find instructions on how to use jQuery UI on their website, <a href="http://jqueryui.com/support" target="_blank">here</a>.</p>

<p>But, lucky for those of us using mojoPortal, jQuery is already built in — and so is jQuery UI. This post will explain how to use it with mojoPortal.</p>

<h3>Creation</h3>

<p>The first thing you need before you can integrate a new UI style into mojoPortal, is a new UI style. I highly suggest using the <a href="http://jqueryui.com/themeroller" target="_blank">jQuery UI Themeroller</a>, as it is much easier than manually changing the CSS and images for an old UI theme.</p>

<p>Before you start, you might find it helpful to click the "gallery" tab on the left and look through the native themes to see if they have something a little closer to what you want. Once you've found one that you like, click the "edit" button under it in the gallery, and you're ready to begin making changes.</p>

<p>When I do this, I usually go to my mojoPortal site design and use a color-picker to pick out the primary colors from the skin, then add them to my UI theme until it matches the skin pretty well. <em><strong>Hint</strong>: The parts of mojoPortal that use the UI tend to use it very heavily, so you'll want to go easy on the bright colors.</em></p>

<p>Once you have the theme the way you like it, click the "download theme" button. This will bring you to a page that lets you pick what UI features you need. You can disable these as you like, but if you don't care about the file size just leave it all on the defaults and scroll to the bottom of the page, where you can name your theme and then click download again.</p>

<h3>Encouragement</h3>

<p>The next part can be a little confusing the first time you do it (which is why I wrote instructions), but after you get through it once you'll realize it's actually quite easy. Working for i7MEDIA, I do it on a regular basis and now the whole process only takes me 5 minutes.</p>

<p>I've written detailed instructions below, if you follow them it shouldn't take you too long either. Have fun!</p>

<h3>Installation</h3>

<p>Once you've gotten your theme downloaded, you'll need to extract the zip file into some folder on your computer. Next, navigate within that folder to the "css" folder, and then to the folder named whatever you named the theme (default is "custom-theme"). Now just follow these instructions:</p>

<ol>
	<li>Inside of the "custom-theme" folder, there are two css files and a folder.</li>
	<li>Before putting them in your skin, you'll want to rename "jquery-ui-#.#.#.custom.css" to "style-jquery.css", and rename the "images" folder to "jquery-images".</li>
	<li>Copy the renamed images folder and css file into your skin.</li>
	<li>Open the "style.config" file within your skin and add a line that corresponds with the name of the new file.<br />
	In example: <span class="shl">&lt;file&gt;style-jquery.css&lt;/file&gt;</span> — where "style-jquery.css" is the name of the css file you copied from the folder.</li>
	<li>Now there's some slight editing you need to do within the jquery css file. Open it and do a "find-and-replace" (usually ctrl+f or ctrl+h) for the following keys:
	<ul>
		<li>Find: <span class="shl">(images/</span> — Replace with: <span class="shl">('jquery-images/</span> <a href="#exlist">[1]</a>.</li>
		<li>Find: <span class="shl">.png)</span> — Replace with: <span class="shl">.png')</span> <a href="#exlist">[2]</a>.</li>
		<li>Find: <span class="shl">(opacity</span> — Replace with: <span class="shl">('opacity</span>.</li>
	</ul>
	</li>
	<li>Now for the next one, you can't automate the find and replace because the numbers at the end of the "opacity" rule are always different. You'll need to look for any rules like this: <span class="shl">filter:Alpha('Opacity=#)</span>, and replace them with this: <span class="shl">filter:Alpha('Opacity=#')</span> — The only difference being the new apostrophe before the last parenthesis.</li>
	<li>Next, open your "layout.master" file, and search for: <span class="shl">&lt;portal:StyleSheetCombiner</span>. Once you've found it, check for the following key inside of it: <span class="shl">IncludeJQueryUI="false"</span>. If this is set for "false", you'll be okay — if it is "true", change it to "false".</li>
</ol>

<p>Hopefully, now your new UI theme works. However, if you have a really old version of mojoPortal, or are using a really old skin, you might need to read the next section, too.</p>

<h3>Changing mojoPortal's native jQuery version</h3>

<p>As of this writing, the latest version of jQuery UI is 1.9.2. The latest version of mojoPortal (2.3.9.4) ships with UI version 1.9.0 — as you can imagine, this could be a problem.</p>

<p>Usually, your particular skin will be configured to use the version of the UI that its theme was built to use when it was created. However, if you try to upload a new UI theme as per the instructions above, but find that it is not displaying properly or certain features of the UI are buggy/broken, you might need to force the mojoPortal installation you have to use a new version of the UI.</p>

<p>To do this, simply follow these instructions:</p>

<ol>
	<li>Open the layout.master file in your skin.</li>
	<li>Search for the following line: <span class="shl">&lt;portal:ScriptLoader</span>.</li>
	<li>Make sure that the ScriptLoader has the following key: <span class="shl">AssumejQueryUiIsLoaded="true"</span></li>
	<li>Once that's done, add the following line somewhere under the ScriptLoader:<br />
	<span class="shl">&lt;script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js" type="text/javascript"&gt;&lt;/script&gt;</span> - <a href="#exlist">[3]</a></li>
	<li>The numbers in that link can be changed from "1.9.2", to whatever is the latest version of jQuery UI. You can find what the latest version is and easily find the google CDN link at the bottom of <a href="http://jqueryui.com" target="_blank">this page</a>, under "quick access".</li>
</ol>

<p>You might also find this article helpful: <a href="http://www.mojoportal.com/self-hosting-jquery-jquery-ui-files" target="_blank">http://www.mojoportal.com/self-hosting-jquery-jquery-ui-files</a></p>

<h3>Help</h3>

<p>If you've read this article, followed the instructions, and ripped out your hair trying to figure out why something is still broken… Well, you might need a psychiatrist — but you can also just try asking us for help in the comments section below!</p>

<div id="exlist" style="border-bottom-color: rgb(210, 210, 210); border-bottom-width: 1px; border-bottom-style: solid;">&nbsp;</div>

<p><span class="small">[1] In this case, "jquery-images" is the name of the "images" folder that you renamed before putting it in your skin.</span><br />
<span class="small">[2] The apostrophes are necessary to stop the StyleSheetCombiner from failing to combine the CSS properly.</span><br />
<span class="small">[3] If your site has SSL, or if you just prefer not to call the script this way, you can call call it <a href="https://www.mojoportal.com/controlling-jquery-jquery-ui-versions" target="_blank">via the web.config</a>.</span></p>
<br /><a href='https://i7media.com/jquery-ui-mojoportal-happiness'>Isaac Hall</a>&nbsp;&nbsp;<a href='https://i7media.com/jquery-ui-mojoportal-happiness'>...</a>]]></description>
      <link>https://i7media.com/jquery-ui-mojoportal-happiness</link>
      <author>isaac@i7media.net (Isaac Hall)</author>
      <comments>https://i7media.com/jquery-ui-mojoportal-happiness</comments>
      <guid isPermaLink="true">https://i7media.com/jquery-ui-mojoportal-happiness</guid>
      <pubDate>Fri, 14 Dec 2012 18:46:00 GMT</pubDate>
    </item>
    <item>
      <title>Mocha Released</title>
      <description><![CDATA[<h3>Announcing the release of Mocha v1</h3>

<p>Earlier this year we released a free skin called SwiftBlue. Now we're happy to announce that we've just released another HTML5 <a href="http://www.mojoportal.com">mojoPortal</a> skin called Mocha. Mocha is SwiftBlue's Sister skin, and more are to come. It was designed as a contribution to the mojoPortal community and the <a href="http://html5mojo.codeplex.com/" target="_blank">html5mojo project</a>. Like SwiftBlue, Mocha was created with semantics-friendly HTML5 Markup.</p>

<p>Check out the <a href="http://mocha.mojoskins.com/" target="_blank" title="Visit Mocha">live demo website</a> to see what your mojoPortal website could look like today!</p>

<figure style="text-align: center; padding-top: 5px; border-top-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-top-width: 1px; border-bottom-width: 1px; border-top-style: solid; border-bottom-style: solid;"><a href="http://mocha.mojoskins.com/" target="_blank" title="Visit Mocha"><img alt="Mocha Screenshot" src="https://i7media.com/Data/Sites/1/userfiles/35/mocha-screenshot.jpg" style="width: 550px; height: 278px;" /></a>

<figcaption style="font-style: italic; margin-top: 5px; margin-bottom: 5px;"><a href="http://mocha.mojoskins.com/" target="_blank" title="Visit Mocha">Mocha</a> is an HTML5 mojoPortal skin which was designed by <a href="http://www.i7media.net" title="Visit i7MEDIA">i7MEDIA</a>.</figcaption>
</figure>

<h3>Features</h3>

<p>As with all i7MEDIA Skins, Mocha has detailed style for every feature found in mojoPortal, most notably for the Event Calendar, Event Calendar Pro, Blog, Forums, Feed manager, and jPlayer Media Players.</p>

<p>Other features include:</p>

<ul>
	<li style="margin-bottom: 5px;">Mocha includes support for a few basic content templates, including a fancy content slider. Making use of these templates will help you to create easy and professional content formats, so that you can spend less time worrying about layout and more time perfecting the content that your viewers came to see.</li>
	<li style="margin-bottom: 5px;">We've created a custom design for the dedicated Sign in and Register pages on Mocha. This way it is easier for your users to interact with the site, without having to sort through other page content.</li>
	<li>Mocha utilizes a fancy User Bar based on Twitter Bootstrap. The bar includes a lot of features, links to mojoPortal, member profiles, and the ability for administrators to toggle the settings and edit links - this way you can see your site the way your users do. But mostly it's just beautiful.</li>
	<li style="margin-bottom: 5px;">HTML5 is an important new language that is of high interest to website owners, this is because of the implications for SEO, among other things. Mocha is HTML5 Friendly. Not sure what this means? We explain more on the <a href="http://mocha.mojoskins.com/" target="_blank" title="Visit Mocha">live demo site</a>.</li>
</ul>

<h3>Support</h3>

<p>The Mocha help center is built to ensure that your time working with Mocha is successful.<br />
The skin help center covers topics like:</p>

<ul>
	<li>Installation of Mocha</li>
	<li>A basic introduction to CSS Classes and how they effect you in mojoPortal</li>
	<li>An explanation of how to use the Mocha Content Templates</li>
	<li>A FAQ to answer common questions about Mocha</li>
	<li>A form so that you can request help, and get answers to questions that weren't answered on the FAQ.</li>
	<li>Another form so that you can report any bugs you find. This is important because we'll be trying to keep the skin up to date. We feel that getting input from the users of the skin is the best way to make sure the skin is maintained well over the course of mojoPortal updates.</li>
</ul>

<p>Check out the <a href="http://mocha.mojoskins.com/skin-help.aspx" target="_blank">Mocha Skin-Help center</a> now.</p>

<p style="padding-top: 5px; border-top-color: rgb(211, 211, 211); border-top-width: 1px; border-top-style: solid;">Mocha and SwiftBlue are just another way you can make your mojoPortal site shine with a little help from i7MEDIA. Keep your eyes out, we'll be releasing more free skins soon!<br />
Interested? Check out the <a href="http://mocha.mojoskins.com/" target="_blank" title="Visit Mocha">Mocha live demo site</a></p>
<br /><a href='https://i7media.com/mocha-released'>Isaac Hall</a>&nbsp;&nbsp;<a href='https://i7media.com/mocha-released'>...</a>]]></description>
      <link>https://i7media.com/mocha-released</link>
      <author>isaac@i7media.net (Isaac Hall)</author>
      <comments>https://i7media.com/mocha-released</comments>
      <guid isPermaLink="true">https://i7media.com/mocha-released</guid>
      <pubDate>Wed, 24 Oct 2012 16:01:00 GMT</pubDate>
    </item>
    <item>
      <title>Styling the mojoPortal HTML SlideShow Pager</title>
      <description><![CDATA[<p>Back in March of 2011 we added the "Pager" option to the Slide Show feature of the mojoPortal HTML Module. Since that time, we've seen some requests for styling the pager links so here's a simple style we use on this site. It can be adapted to any design and doesn't use any images. To use this CSS, just copy it to one of your skin's .css files and then apply the "prettycyclenav" class to the "Custom CSS Class" option in the HTML module settings. If you want the slide number to be shown within the navigation, add the "withnumbers" class to the "Custom CSS Class" option.</p>

<pre class="language-css linenums" data-rel="CSS">
<code>.prettycyclenav .cyclenav {
	margin: 5px 0;
	text-align: center;
}
	
.prettycyclenav .cyclenav a {
	text-indent: -9999px;
	line-height: 40px;
	background-color: #A5A5A5;
	width: 14px;
	height: 14px;
	overflow: hidden;
	display: inline-block;
	margin: 0 5px;
	text-decoration: none;
}
	
.prettycyclenav.withnumbers .cyclenav a {
	padding: 3px;
	font: 14px/1 'Rationale', Charcoal, serif;
	text-indent: 0;
	color: #fff;
}
	
.prettycyclenav .cyclenav a:focus,
.prettycyclenav .cyclenav a.activeSlide {
	background-color: #e26917;
}	

.prettycyclenav .cyclenav a:hover {
	background: #636363;
}</code></pre>
<br /><a href='https://i7media.com/styling-the-mojoportal-html-slideshow-pager'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/styling-the-mojoportal-html-slideshow-pager'>...</a>]]></description>
      <link>https://i7media.com/styling-the-mojoportal-html-slideshow-pager</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/styling-the-mojoportal-html-slideshow-pager</comments>
      <guid isPermaLink="true">https://i7media.com/styling-the-mojoportal-html-slideshow-pager</guid>
      <pubDate>Mon, 24 Sep 2012 17:17:00 GMT</pubDate>
    </item>
    <item>
      <title>SwiftBlue v1 Released</title>
      <description><![CDATA[<p><strong>Announcing the release of SwiftBlue v1</strong></p>

<p>SwiftBlue is the first in a series of template skins developed by i7MEDIA for <a href="http://www.mojoportal.com">mojoPortal</a>. It was designed as a contribution to the mojoPortal community and the <a href="http://html5mojo.codeplex.com/" target="_blank">html5mojo project</a>. SwiftBlue has been created with semantics-friendly HTML5 Markup.</p>

<p>Check out the <a href="http://swiftblue.mojoskins.com/" target="_blank" title="Visit SwiftBlue">live demo website</a> to see what your mojoPortal website could look like today!</p>

<figure style="text-align: center; padding-top: 5px; border-top-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-top-width: 1px; border-bottom-width: 1px; border-top-style: solid; border-bottom-style: solid;"><a href="http://swiftblue.mojoskins.com/" target="_blank" title="Visit SwiftBlue"><img alt="" src="https://i7media.com/Data/Sites/1/userfiles/35/swiftblue-screenshot.png" style="width: 550px; height: 278px;" /></a>

<figcaption style="font-style: italic; margin-top: 5px; margin-bottom: 5px;"><a href="http://swiftblue.mojoskins.com/" target="_blank" title="Visit SwiftBlue">SwiftBlue</a> is an HTML5 mojoPortal skin which was designed by <a href="http://www.i7media.net" title="Visit i7MEDIA">i7MEDIA</a>.</figcaption>
</figure>

<p><strong>Features</strong></p>

<p>As with all i7MEDIA Skins, SwiftBlue has detailed style for every feature found in mojoPortal, most notably for the Event Calendar, Event Calendar Pro, Blog, Forums, Feed manager, and jPlayer Media Players.</p>

<p>Other features include:</p>

<ul>
	<li style="margin-bottom: 5px;">Support for a number of content templates is included in SwiftBlue. Using these templates makes it easy to make your data appear on the page in a nice professional format. It doesn't cover everything, but it will help you with the basics so you can spend more time perfecting your content and less time worrying about basic layout.</li>
	<li style="margin-bottom: 5px;">SwiftBlue is HTML5 friendly. Not sure what this means? We explain more on the <a href="http://swiftblue.mojoskins.com/" target="_blank" title="Visit SwiftBlue">live demo site</a>.</li>
	<li style="margin-bottom: 5px;">Custom styled dedicated Sign in and Register pages, this way potential users don't have to sort through the regular page content to find what they need to interact with the site.</li>
	<li>A fancy User Bar based on Twitter Bootstrap. The bar includes a lot of features, links to mojoPortal, member profiles, and the ability for administrators to toggle the settings and edit links - this way you can see your site the way your users do. But mostly it's just beautiful.</li>
</ul>

<p><strong>Support</strong></p>

<p>The SwiftBlue help center is built to ensure that your time working with SwiftBlue is successful.<br />
The skin help center covers topics like:</p>

<ul>
	<li>Installation of SwiftBlue</li>
	<li>A basic introduction to CSS Classes and how they effect you in mojoPortal</li>
	<li>An explanation of how to use the SwiftBlue Content Templates</li>
	<li>A FAQ to answer common questions about SwiftBlue</li>
</ul>

<p>And if that's not enough, we've set up an easy way for you to request help or report a bug. Check out the <a href="http://swiftblue.mojoskins.com/skin-help.aspx" target="_blank">SwiftBlue Skin-Help center</a> now.</p>

<p style="padding-top: 5px; border-top-color: rgb(211, 211, 211); border-top-width: 1px; border-top-style: solid;">SwiftBlue is just another way you can make your mojoPortal site shine with a little help from i7MEDIA.<br />
Interested? Check out the <a href="http://swiftblue.mojoskins.com/" target="_blank" title="Visit SwiftBlue">SwiftBlue live demo site</a></p>
<br /><a href='https://i7media.com/swiftblue-v1-released'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/swiftblue-v1-released'>...</a>]]></description>
      <link>https://i7media.com/swiftblue-v1-released</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/swiftblue-v1-released</comments>
      <guid isPermaLink="true">https://i7media.com/swiftblue-v1-released</guid>
      <pubDate>Wed, 15 Aug 2012 14:26:00 GMT</pubDate>
    </item>
    <item>
      <title>Hide Module Settings and Edit Links</title>
      <description><![CDATA[<p>One of the things that most of our users like the most about mojoPortal is the easy access they have to module settings and edit screens. Sometimes, people ask if they can hide these links (or icons if the skin uses those) while remaining logged into the site.</p>

<p>Well, here's an extremely easy way to hide the links without sacrificing the usability of mojoPortal. This solution is completely skin based so it doesn't require any additions to the mojoPortal core.</p>

<p>First, we add the following to our skin script (see "<a href="https://i7media.net/optimize-your-mojoportal-skin-scripts">Optimize Your mojoPortal Skin Scripts</a>" for more info):</p>

<pre class="language-javascript linenums" data-rel="scripts.js">
<code>function HideEditLinks() {
	$(".modulelinks").hide();
	$(".ModuleEditLink").hide();
}

function ShowEditLinks() {
	$(".modulelinks").show();
	$(".ModuleEditLink").show();
}

$(document).ready(function() {
	var editLinksState = Get_Cookie('editLinksState');
	if (editLinksState != null) {
		if (editLinksState == 'hidden') {
			HideEditLinks();
		}
		if (editLinksState == 'visible') {
			ShowEditLinks();
		}
	}

	$("a#togglemodulelinks").click(function() {
		editLinksState = Get_Cookie('editLinksState');
		if (editLinksState == null || editLinksState == 'visible') {
			HideEditLinks();
			Set_Cookie('editLinksState', 'hidden')
		} else if (editLinksState == 'hidden') {
			ShowEditLinks();
			Set_Cookie('editLinksState', 'visible')
		}
	});
});</code></pre>

<p>Second, we add the following inside the AutoHidePanel in the layout.master:</p>

<pre class="language-markup">
<code>&lt;a href="#" rel="nofollow" id="togglemodulelinks"&gt;Toggle Edit Links&lt;/a&gt;</code></pre>

<p>The code above simply hides the links if they're shown and displays them if they're hidden.</p>

<p>Placement of the "Toggle Edit Links" link can be done with CSS but it should definitely be inside of the <code>AutoHidePanel</code>. The <code>AutoHidePanel</code> will ensure that the link isn't shown unless one of the Admin Toolbar items is shown. You could add another <code>AutoHidePanel</code> to the layout.master but there's no point in increasing page load if you don't have to.</p>

<p>Happy mojo-ing!</p>
<br /><a href='https://i7media.com/hide-module-settings-and-edit-links'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/hide-module-settings-and-edit-links'>...</a>]]></description>
      <link>https://i7media.com/hide-module-settings-and-edit-links</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/hide-module-settings-and-edit-links</comments>
      <guid isPermaLink="true">https://i7media.com/hide-module-settings-and-edit-links</guid>
      <pubDate>Mon, 11 Jun 2012 03:03:00 GMT</pubDate>
    </item>
    <item>
      <title>Link mojoPortal Welcome Message to User's Profile</title>
      <description><![CDATA[<p>The mojoPortal Welcome Message control can be configured to link to the logged-in user's profile. This is useful if you want to have a message like "Signed In As: USER NAME" and have USER NAME link to the user's profile settings.</p>

<h4>Here's the code for it:</h4>

<pre class="language-aspnet linenums" data-rel="HTML">
<code>&lt;portal:WelcomeMessage id="WelcomeMessage" runat="server"
	CssClass="greetinglink"
	RenderAsListItem="true"
	OverrideFormat="Welcome, &lt;a id='lnkMyAccount' href='https://i7media.com/Secure/UserProfile.aspx' title='Manage your User Account'&gt;{0}&lt;/a&gt;" /&gt;</code></pre>

<p>The <code class="language-markup">{0}</code> is where the user name will be placed.</p>

<p>And that's that. Happy mojo-ing!</p>
<br /><a href='https://i7media.com/link-mojoportal-welcome-message-to-users-profile'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/link-mojoportal-welcome-message-to-users-profile'>...</a>]]></description>
      <link>https://i7media.com/link-mojoportal-welcome-message-to-users-profile</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/link-mojoportal-welcome-message-to-users-profile</comments>
      <guid isPermaLink="true">https://i7media.com/link-mojoportal-welcome-message-to-users-profile</guid>
      <pubDate>Tue, 05 Jun 2012 02:01:00 GMT</pubDate>
    </item>
    <item>
      <title>Optimize your mojoPortal Skin Scripts</title>
      <description><![CDATA[<p>Almost every single skin we develop uses a couple JavaScript scripts, but even the addition of one script can slow the speed of a website. We use a fairly simple process to combine as many of our scripts into one file and then using a neat mojoPortal control, we add that script the combined site script. The combined site script contains most of the scripts mojoPortal uses for things like site cookies, ASP.NET&nbsp;CSS friendly adapters, etc… This process will result in fewer files being delivered to the browser, thus improving performance (somewhat).</p>

<h3>Create the Skin Script and call it from the <code>layout.master</code></h3>

<ol>
	<li>Create a new js file in your skin directory, I usually name it skinscript.js.</li>
	<li>Add your javascript to the new file. Don't use <code class="language-markup">&lt;script&gt;</code> tags, you don't need them in javascript files.</li>
	<li>Add the following&nbsp;to your&nbsp;<code>layout.master</code>. I usually add this right after the&nbsp;<code class="language-markup" style="word-spacing: 0px;">&lt;asp:ScriptManager</code>&nbsp;control.
	<pre class="language-aspnet">
<code>&lt;portal:SkinFolderScript ID="sfs1" runat="server" ScriptFileName="skinscript.js" AddToCombinedScript="true" /&gt;</code></pre>
	</li>
</ol>

<h3>Copy all the scripts from your layout.master to the Skin Script</h3>

<p>This is the part that can be a little bit tricky because not all scripts are going to work properly when combined with other scripts. If you copy the scripts to your new file one at a time and test the result, you'll find those pesky ones that will not cooperate. Just leave them in the layout.master, or if you're feeling froggy, rewrite them so they can be combined.</p>

<h4>A note about SuperFish</h4>

<p>Most of our skins use a SuperFish menu but the scripts for the SuperFishmenu come in two parts. One is the static script that is in the ClientScript&nbsp;directory which contains all of the SuperFish&nbsp;magic. The other is an initialization script that is loaded in the <code>layout.master</code> of the skin. Typically, these are loaded by adding the <code>layout.master</code> a <code class="language-markup">&lt;portal:SiteScript</code> control to load the main SuperFish script and then a <code class="language-markup">&lt;script&gt;</code> element with a bit of jQuery to initialize the SuperFish menu. We decided to use the jQuery <code class="language-javascript">.getScript()</code> method to load the main script from our Skin Script. Using this method allows us to initialize the SuperFish menu only if the main script is loaded properly.</p>

<h3>A Sample Skin Script</h3>

<p>The script below is what we use for starting our skin scripts. It includes the JavaScript for the Administration Toolbar Menu, SuperFish Menu and a neat bit of jQuery that will give the "Add File" button in the Shared Files module a hover state. The script is written out long-form so you can easily see what it does. I suggest that you minify the script before using it in production.</p>

<pre class="language-javascript linenums" data-rel="scripts.js">
<code>//  ========== 
//  = This file stores all of the scripts that would normally be placed inside the layout.master
//  = Use the following syntax for referencing this script from the layout.master.
//  = <portal:skinfolderscript addtocombinedscript="true" id="sfs1" runat="server" scriptfilename="skinscript.js">
//  ==========

/*Standard JavaScript */

function HideMenuToolbar() {
	$("#toolbar").fadeOut();
	$("#toolbarbut").fadeIn("slow");
}

function ShowMenuToolbar() {
	$("#toolbar").fadeIn();
	$("#toolbarbut").fadeOut("slow");
}


/* jQuery Scripts */
$(document).ready(function() {

	/* Admin Toolbar */
	$("span.downarr a").click(function() {
		HideMenuToolbar();
		Set_Cookie('openstate', 'closed')
	});
	$("span.showbar a").click(function() {
		ShowMenuToolbar();
		Set_Cookie('openstate', 'open')
	});
	$("span.downarr a, span.showbar a").click(function() {
		return false;
	});
	var openState = Get_Cookie('openstate');
	if (openState != null) {
		if (openState == 'closed') {
			HideMenuToolbar();
		}
		if (openState == 'open') {
			ShowMenuToolbar();
		}
	}

	/* Superfish Menu */
	/* Get Superfish mojoPortal Script */
	$.getScript("/ClientScript/jqmojo/mojosuperfish.js", function() {
		$("ul.sf-menu").supersubs({
			minWidth: 1,
			maxWidth: 27,
			extraWidth: .2
		}).superfish({
			pathClass: 'current',
			pathLevels: 0,
			delay: 500,
			animation: {
				opacity: 'show',
				height: 'show'
			},
			speed: 200,
			dropShadows: false,
			autoArrows: true
		});
	});
	/* This will make the Shared Files "Add File" button have a hover state */
	$("div.uploadpanel &gt; div &gt; input + div + div").hover(
		function() {
			$("div.uploadpanel div .jqbutton").addClass("ui-state-hover")
		},
		function() {
			$("div.uploadpanel div .jqbutton").removeClass("ui-state-hover")
		});
});</portal:skinfolderscript></code></pre>

<h3>Further Reading</h3>

<p>If you're serious about optimizing the speed of your mojoPortal site, I highly suggest you read the "<a href="http://www.mojoportal.com/improving-your-yslow-or-page-speed-score">Improving Your YSlow or Page Speed Score</a>" article in the mojoPortal Documentation.</p>

<p>Happy mojo-ing!</p>
<br /><a href='https://i7media.com/optimize-your-mojoportal-skin-scripts'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/optimize-your-mojoportal-skin-scripts'>...</a>]]></description>
      <link>https://i7media.com/optimize-your-mojoportal-skin-scripts</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/optimize-your-mojoportal-skin-scripts</comments>
      <guid isPermaLink="true">https://i7media.com/optimize-your-mojoportal-skin-scripts</guid>
      <pubDate>Tue, 31 Jan 2012 16:37:00 GMT</pubDate>
    </item>
    <item>
      <title>Form Wizard Pro Templates</title>
      <description><![CDATA[<div class="alert alert-info"><strong>Update 1/10/2012:</strong> Updated the download with a US State list question. All 50 states plus the District of Columbia are included.</div>

<p>Form Wizard Pro (FWP) is a great tool for creating ad-hoc style forms on the fly in mojoPortal. One feature that makes FWP so great is the ability to import and export Form Definitions and individual Questions.</p>

<h3>Exporting a Question</h3>

<p><img alt="Export Question Screenshot" class="floatleftimage image-left" src="data:image/png;base64,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" /></p>

<p>Exporting a Question is very simple, just click the "Export Question" link next to the question in the "Edit Form" screen. The file will be named like "FWP-Instance-NameYYYYMMDDHHMMSS-q.config." This includes the name of the FWP instance, the exact date and time you clicked the export link, and a "-q" to let you know this file is a Question, not an entire form. You can of course change the name of the file without causing any problems for importing the question later.</p>

<h3>Exporting a Form</h3>

<p><img alt="Exporting a Form Screenshot" class="floatleftimage" src="data:image/png;base64,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" /></p>

<p>Exporting an entire Form is also very simple, just click the "Export Form Definition" button at the bottom of the "Edit Form" screen. The file will be named like "FWP-Instance-NameYYYMMDDHHMMSS.config." This includes the name of the FWP instance and the exact date and time you clicked the export button. Again, changing the name doesn't harm anything.</p>

<h3>Importing a Question or Form</h3>

<p><img alt="Importing a question or form screenshot" class="floatleftimage" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXgAAABbCAIAAAD2sAndAAAK3klEQVR4nO2dS28aWRqG6xfxB4JasuYvJJN1nHjlGeQN7ZGXHVCysOQ407PIpmS17Cw6iejcFCmxFStSFMfGgNOxNR1DXTA4GBcXB2xZUGhmURdOXSgXUEUVxfvoVVyXc853zvm+egFHwlSr3YYgCHJVlHrEC423+6WnycLjz3kIgqCB9TRZeLdf4oWm3mhSfPXV3vGfzDHD8QwAAAwDx3/JFV9mjtN8tWs03GnjRaaYZTivZwcACA45lnuZOeaEhmw06welP5ljr2cFAAgaX3LH6wcnstH8njzKsfjEBABwmCzLPUkWZKN5/Dnv9XwAAMHk8ec8jAYA4C4wGgCA68BoAACuA6MBALgOjAYA4DowGgCA6/RhNNs7u+82Pjx59hIaL73b+LC9syslcXFxcX5+fi4ozM/PLy4uuv+YgGHpw2jyR+UTof4/MG6cCPVD9phhmFg8vry8XCqVxKBQKpWWl5dj8fhIHhYwOP0ZjdePDBgQyWii0Wi5XG61Wj+CQqvVKpfL0Wh0JA8LGBwYzUQgGc3c3Jwoil6bg8OIojg3NzeShwUMDoxmIlCNpt1unwWLdrsNo/E/MJqJgDSaerCA0YwFMJqJgDSamhUv/0lp+dvDL5YdPAdGMxbAaCYC1WharVbFiuf/oKYeZLrnmQdT2gu+o9VqwWj8D4xmIiCNRrDi+Sw19SBNXEg/mKJmn1v28RYYzVgAo5kISKM5tSIxS00tpbrnqaUpajah3pqdnaLk89TSlPLxSuqRWppS+5oeJ2bVD2TykLpxiKv2gdGMBTCaiUA1mouLi5wVazO639H8dO8DcUs9W5uhqJk13fHajNJgbYZS7n+49xM1s6b80Hfudslpmtjn4uICRuN/YDQTAWk0h1as3qHC8U3NuXKBvKVtthkPU3dWpcvqzzt3DNe0Q1uM0w8wmrEARjMRkEbzzYrV21Q4vklc2IyH5SvErc14mLq9auwlX1+9rflXHXD1tvI+Sb60GQ/r3kDpotsARjMWwGgmAtVozs/P/2vFb9NUOLZBXNiIhanp3/S3tM26bTZi4XAsJt3ciIWp6VgsrB1PaS9dNYTrn/PzcxiN/4HRTASk0RxYsTJNXbu7rjlXLmhurUxT1PSK8Xj97jVK6UEea3qv372mdCD7ak/sAqMZC2A0E4FqNM1m86sV9C3dR5lrv7zt3uqefP369pdrxjbSZeWcPNZ0oG7RZuMol+lbFHWLluLpohppNpswGv8Do5kISKP5EixgNGMBjGYiUI2m0WjsBYtGowGj8T8wmolA/T6afD4vCEI6KAiCkM/n8X00/gdGMxFIRhOPx5eWlgqFQiMoFAqFpaWlOL5hz/fgqzyDj/pVngzDxGKxaDQ6iq/zHQnRaDQWi7n/mIBh6cNoWDZ/dFKDxlEsiz9xAbwEf24FAOA6MBoAgOvAaAAArgOjAQC4DowGAOA6MBoAgOvAaAAArgOjAQC4DowGAOA6MBoAgOv0bTTfCpVdvr6VrXw8FCDIpraylV2+/lexgooKhiwS6oDR7BfOkmyNES5LP8RyswNBNlX6IbLC5Q5b2y+coaICoF4JdcBo/ipUtpna9wYKAhpQpYa4w9a+FQRUVDCkS6gzRpPi66xw6fnaoLEWI1ym+DoqKjAiE+qM0XzKVkp48YGG0/eG+ClbQUUFRmRCnTGaj4eC56uCAqCPhwIqKkhSEwqjgXwkGE3ABKOB/CgYTcAEo4H8KBhNwASjgfwoGE3ABKOB/CgYTcDkH6NhFyJ0KLL52usdMUxJr4WkF3HvpzP9d19I2txVi2be5MUJo/FhRcnKvEmQyb35pjqq0J7tCYymU252Xq+Y2oefjCZChyKJR5yttYSGNhpiQ2A0g6hHRXXKzeqj+2bJ7eOFZJjJwGg82wI58b2NZvRTkuKStqJU5wp7ZXfJaIZwQ4sNGZ3G2WisNlB5GSCSy6Vvuvi+xhfZLPvUaJKbksc/krOy+Zp4t6n3ZqmxoaTId6dECuVneGElYeNV5YpKtRci8eiNneUY42rfv8jl2J0MGV0ZRPtqeT+d0SxBOVYqmwihNrMe4cpVmw4+VF0GsaIMO6NJrm7DrfZfUzzdaavt/ZLNsq+Nppfk5Fn9IoP8+CBLfi+g65W4qc+EcUqm49gPQRauxXKuLEepaOSLxug331TtGY3FZl5tNLZX3WtpnhqN5xUlPbcm20Im18poeuS9+7ZIG9ov2fS50ZDHiUecqfGrNiyfLiTVZsqDquRgIWns1bHx0cksE32FsLUcm0ZDLLCbeJPqMftMrp0YOStNM92GELfsr1ozuH+MxuuKUt5Y9TAackAzo7HIu62RPcumK0bD1sSBxEYjdCjy/llNZLfehyJ06F76U01ks+nr6nWyjeZYZGviM5oORejrr6pyd5pljbfkXomHWTVu9eE9OhSho1uWU9KprxC2lmOMS05SnWfiYVYZUC+5vTQTZTnGHVOH7bWZug0x5MXWqntvnT2RRhOcipJCS9PQiOyim4ZhFaZ5lxelLwafZJNMqL+NRs5NUIzGZDnGuDqjubLg5CVcZTRmFeyY0ZgOPlRdBrGilMbZ9HXNK4d0vV+jUQKZe40vssm6YTRcTRxI8mISNZFTymKrJnLZ9A31mGwjH9M3XlWJ7nR0S+kSSfw7K3I13amcaflWTeRqYkJ5Mq2mpFNfIWwtxxjXZJIhmiXCmU1Mvxzjjqm9et7qOcLVqzYdfBCRRhOgilLyqLRXTumQfkpy961X0i9ryf2/elfJCfghm5wbRsPX2gMp97O8mDbfLYs23y0LbRv5WCu5WVuTP0l0joiS+DXbDd1trHQ3mZJBfYSwtRxjXKO6Y5pE16795y3jEnThet7SbkiPW+arNh18EJFGE6CKavM14dd7pslVU2baoPf+SyFM3uzIU/JDNsmEOmY0R2fiQGLnI3Qo8v6PM/FoWy6LnTPxiJHLYkfXRj3eVrdYui5r53X3/+1uvK5qoyT+wxChe4ygDWciuyFsLccYV19PO9pmf9Dmd6Xr89vGJejC9b6l2RD9JC1XbTr4ICKNJkAVZTIU8ZCzcgNphhEpj/qd7JV3IqhZ+XmaTTKhjhlN4UwcieTFPx9ROGikIo1mVEE9rSgm/fcIPb/t/c67JOeNpvhDHInksngxonDQSEUazaiCoqJclPNG873RGYnYf0XoUGTz1YjCQSMVaTSjCoqKclHOG02p2YGgIUUajeeTgYaX80Zz0uxA0JAijcbzyUDDy3mjOT3vQNCQIo3G88lAw8t5oxHOOxA0pEij8Xwy0PBy2Gg+5SpCU6xedCBoYJ2eE39ADhU1/iIT6ozRpPk6X730fGHQWIuvXKbydVRUYEQm1Bmj+Vao7LA1oSnWLjoQNIBOm5q/CY+KGnfpEuqM0TAMc1CoJ7kaV7msnKM4oD5UORe5ymWSre0X6qioAKhXQp0xGoZhDouVFF/fylY+HgoQZFNb2UqKr38rmnyYR0WNoywS6ozRAABAv8BoAACuA6MBALgOjAYA4DowGgCA68BoAACu0zWa35NHOZb3ej4AgKCRZbknyYJsNOsHpS/MsddTAgAEjb3c8cbBiWw03GnjRaZ4yHBezwoAEBwOGe55usgLDdloWu12iq++zBT3mOMcC7sBAAxFjuX2csUXmWKar0oOIxtNq93mhca7/dLT3cLjz3kIgqCB9XS38G6/xAtN1V66RgNBEOSS/g9eWV0HRuHflwAAAABJRU5ErkJggg==" /></p>

<p>Importing a Question is very straightforward. Simply click the "Browse" button and select a Question definition file from your computer and then click the "Import Question" button. You'll see the question added to the "Edit Form" screen.</p>

<p>You can import a Form Definition the same way you import a Question, except that you will want to select a Form definition file and click the "Import Form Definition" button. One very important thing to keep in mind is that importing a Form will erase all of the questions you already have on your form. Any data that has been submitted to the form will still be intact but the questions corresponding to the data will be gone so the data will be "orphaned" so you may not know what all of the responses mean.</p>

<h3>Some Form Definitions For You</h3>

<p><a class="btn btn-primary bt-lg" href="https://i7media.net/SharedFiles/Download.aspx?pageid=6&amp;mid=9&amp;fileid=91" title="Download Some Sample Form Definitions">Download</a></p>

<p>Happy mojo-ing!</p>
<br /><a href='https://i7media.com/form-wizard-pro-templates'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/form-wizard-pro-templates'>...</a>]]></description>
      <link>https://i7media.com/form-wizard-pro-templates</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/form-wizard-pro-templates</comments>
      <guid isPermaLink="true">https://i7media.com/form-wizard-pro-templates</guid>
      <pubDate>Tue, 10 Jan 2012 14:46:00 GMT</pubDate>
    </item>
    <item>
      <title>Using the LoginView in mojoPortal</title>
      <description><![CDATA[<p>Often times clients will want to display certain text for logged in users vs anonymous users. While this is possible using the settings on individual content modules, it is sometimes necessary to add this functionality to elements in the <code>layout.master</code>.</p>

<p>For introductory information on the <code class="language-markup">LoginView</code> control, please review the <a href="http://msdn.microsoft.com/en-us/library/ms178338.aspx">MSDN Documentation</a> for it.</p>

<p>An example scenario is: The client wants to display a Login control on every page and when the user is logged in, some links should be present in place of the login control. A title should be present above the control with the text "Please Sign In: " for Anonymous Users and the text "Welcome Back" for Authenticated Users.</p>

<p>For this scenario, the solution would be to place a LoginView control in the <code>layout.master</code> with the <code class="language-markup">mp:Login</code> control and "Returning Visitors ..." title inside the <code class="language-markup">AnonymousTemplate</code>. The links and the "Welcome Back" title will be placed in the <code class="language-markup">LoggedInTemplate</code>. You may recognize that the <code class="language-markup">Portal:WelcomeMessage</code> control uses the <code class="language-markup">OverrideFormat</code> property as discussed in our <a href="http://i7media.net/customizing-mojoportals-welcome-message-for-logged-in-users">Customizing mojoPortal's Welcome Message for Logged In Users</a> article.</p>

<pre class="language-aspnet linenums" data-rel="Anonymous Template">
<code><span class="tag">&lt;<span class="title">asp:LoginView</span><span class="attribute"> id=<span class="value">"lv1"</span></span><span class="attribute"> runat=<span class="value">"server"</span></span>&gt;</span>
	<span class="tag">&lt;<span class="title">AnonymousTemplate</span>&gt;</span>
		<span class="tag">&lt;<span class="title">h2</span><span class="attribute"> class=<span class="value">"moduletitle"</span></span>&gt;Please Sign In:</span><span class="tag">&lt;/<span class="title">h2</span>&gt;</span>
		<span class="tag">&lt;<span class="title">mp:Login</span><span class="attribute"> ID=<span class="value">"login1"</span></span><span class="attribute"> runat=<span class="value">"server"</span></span><span class="attribute"> SetRedirectUrl=<span class="value">"false"</span></span> /&gt;</span>
	<span class="tag">&lt;/<span class="title">AnonymousTemplate</span>&gt;</span>
	<span class="tag">&lt;<span class="title">LoggedInTemplate</span>&gt;</span>
		<span class="tag">&lt;<span class="title">h2</span><span class="attribute"> class=<span class="value">"moduletitle"</span></span>&gt;</span>
			<span class="tag">&lt;<span class="title">portal:WelcomeMessage</span><span class="attribute"> id=<span class="value">"WelcomeMessage1"</span></span><span class="attribute"> runat=<span class="value">"server"</span></span> 
			<span class="attribute">	RenderAsListItem=<span class="value">"false"</span></span> 
			<span class="attribute">	OverrideFormat=<span class="value">"Welcome Back {0}"</span></span> 
			<span class="attribute">	CssClass=<span class="value">" "</span></span>
			/&gt;</span>
		<span class="tag">&lt;/<span class="title">h2</span>&gt;</span>
		<span class="tag">&lt;<span class="title">ul</span>&gt;</span>
			<span class="tag">&lt;<span class="title">li</span>&gt;</span><span class="tag">&lt;<span class="title">asp:HyperLink</span><span class="attribute"> id=<span class="value">"lnk1"</span></span><span class="attribute"> runat=<span class="value">"server"</span></span><span class="attribute"> NavigateUrl=<span class="value">"~/members-only-articles.aspx"</span></span><span class="attribute"> Text=<span class="value">"Articles"</span></span>/&gt;</span><span class="tag">&lt;/<span class="title">li</span>&gt;</span>
			<span class="tag">&lt;<span class="title">li</span>&gt;</span><span class="tag">&lt;<span class="title">asp:HyperLink</span><span class="attribute"> id=<span class="value">"lnk2"</span></span><span class="attribute"> runat=<span class="value">"server"</span></span><span class="attribute"> NavigateUrl=<span class="value">"~/members-only-downloads.aspx"</span></span><span class="attribute"> Text=<span class="value">"Downloads"</span></span>/&gt;</span><span class="tag">&lt;/<span class="title">li</span>&gt;</span>
			<span class="tag">&lt;<span class="title">li</span>&gt;</span><span class="tag">&lt;<span class="title">asp:HyperLink</span><span class="attribute"> id=<span class="value">"lnk3"</span></span><span class="attribute"> runat=<span class="value">"server"</span></span><span class="attribute"> NavigateUrl=<span class="value">"~/members-only-forums.aspx"</span></span><span class="attribute"> Text=<span class="value">"Forums"</span></span>/&gt;</span><span class="tag">&lt;/<span class="title">li</span>&gt;</span>
			<span class="tag">&lt;<span class="title">portal:LogoutLink</span><span class="attribute"> id=<span class="value">"LogoutLink1"</span></span><span class="attribute"> runat=<span class="value">"server"</span></span><span class="attribute"> RenderAsListItem=<span class="value">"true"</span></span><span class="attribute"> ListItemCSS=<span class="value">" "</span></span><span class="attribute"> CssClass=<span class="value">" "</span></span>/&gt;</span>
		<span class="tag">&lt;/<span class="title">ul</span>&gt;</span>
	<span class="tag">&lt;/<span class="title">LoggedInTemplate</span>&gt;</span>
<span class="tag">&lt;/<span class="title">asp:LoginView</span>&gt;</span></code></pre>

<p>The result can be something like this:</p>

<p><strong>Anonymous</strong></p>

<p><img alt="Anonymous LoginView" src="https://i7media.com/Data/Sites/1/blogdata/loginview-anonymous.png" style="border-width: 2px; border-style: solid; width: 415px; height: 339px;" /></p>

<p>&nbsp;</p>

<p><strong>Authenticated</strong></p>

<p><img alt="Authenticated LoginView" src="https://i7media.com/Data/Sites/1/blogdata/loginview-authenticated.png" style="border-width: 2px; border-style: solid; width: 415px; height: 339px;" /></p>

<p>&nbsp;</p>

<p>Happy mojo-ing!</p>

<p>&nbsp;</p>
<br /><a href='https://i7media.com/using-the-loginview-in-mojoportal'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/using-the-loginview-in-mojoportal'>...</a>]]></description>
      <link>https://i7media.com/using-the-loginview-in-mojoportal</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/using-the-loginview-in-mojoportal</comments>
      <guid isPermaLink="true">https://i7media.com/using-the-loginview-in-mojoportal</guid>
      <pubDate>Mon, 08 Aug 2011 21:57:00 GMT</pubDate>
    </item>
    <item>
      <title>Customizing mojoPortal's Welcome Message for Logged In Users</title>
      <description><![CDATA[<p>Have you ever wanted to change the <a href="http://www.mojoportal.com">mojoPortal</a>&nbsp;WelcomeMessage text to display something besides "Signed In As: Joe Davis"?</p>

<p>​Well, if you have mojoPortal 2.3.6.1 or higher, it is quite easy. You can override it in your skin's <code>layout.master</code> file by setting a property on <code class="language-markup">&lt;portal:WelcomeMessage</code> like this:</p>

<p><code class="language-markup">OverrideFormat="My name is {0}"</code>, or if you only want the user name then you could put <code class="language-markup">OverrideFormat</code><code class="language-markup">="{0}"</code></p>

<p>The <code class="language-markup">{0}</code> is replaced by the user's display name.</p>

<p>I prefer <code class="language-markup">OverrideFormat="Welcome Back, {0}"</code> which displays "Welcome Back, Joe Davis" very nicely.</p>

<p>Hope this helps you out. If it did, please spread the word through Twitter or Facebook!</p>

<p>Happy mojo-ing,<br />
Joe Davis</p>
<br /><a href='https://i7media.com/customizing-mojoportals-welcome-message-for-logged-in-users'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/customizing-mojoportals-welcome-message-for-logged-in-users'>...</a>]]></description>
      <link>https://i7media.com/customizing-mojoportals-welcome-message-for-logged-in-users</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/customizing-mojoportals-welcome-message-for-logged-in-users</comments>
      <guid isPermaLink="true">https://i7media.com/customizing-mojoportals-welcome-message-for-logged-in-users</guid>
      <pubDate>Sat, 06 Aug 2011 17:13:00 GMT</pubDate>
    </item>
    <item>
      <title>Separating sections from the mojoPortal web.config file</title>
      <description><![CDATA[<p>Many people host more than one <a href="http://www.mojoportal.com" title="mojoPortal.com">mojoPortal</a> site and upgrading all of their sites can become very complex and cumbersome. This article will shed some light on the ability to separate some of the web.config configuration settings into individual files.</p>

<div class="txterror info">Note: This is an advanced topic and use of the items discussed here are not beneficial for most mojoPortal installations. If you have several sites that you update on a regular basis, this document will be very beneficial.</div>

<h3>configSource - The Key to Happiness</h3>

<p>Okay, so a configuration option isn't really the key to happiness but this one will make your life easier so you can focus on whatever it is that does make you happy. configSource is an attribute that can be applied to a web.config section to instruct the .NET application to find the actual configuration for the section in another file. Use of configSource in a few sections of the mojoPortal web.config file will make updating multiple sites a lot easier. When upgrading a mojoPortal installation, it is best practice to use the web.config file that comes with release. The main reason for this is because new settings can be in the web.config file and other settings could have been changed since you last upgraded. The problem that arises is that there are two sections of the web.config that changes must be made to because those sections contain site specific settings.</p>

<p>The machineKey and the system.net SMTP sections contain site specific settings. If you don't use a custom machineKey for your site, <a href="http://www.mojoportal.com/use-a-custom-machine-key.aspx">please see this page</a>. When you have a lot of mojoPortal installations to upgrade, you have to modify the web.config for each site which can be very time consuming and the process is prone to user error. You may have a script that copies all of the release files to each of mojoPortal installations; the unique settings in each sites' web.config can defeat much of the purpose of your script. The configSource attribute remedies the dilemma altogether. Using this technique, you can set all of your sites to use external files for these sections, and then when you update the sites, you only need to modify the web.config once and all of your sites unique settings will be retained.</p>

<p>One could use the configSource attribute on other sections of the web.config but we will only focus on the machineKey and system.net SMTP sections.</p>

<h3>machineKey configSource</h3>

<p>To use configSource on the machineKey, copy the entire machineKey section to a new file. Name the new file machineKey.config (you can name it whatever you like but you should absolutely use the .config section to keep people from downloading the file). Next change the machineKey section in the web.config to only have the configSource attribute specifying the machineKey.config file. The result should be:</p>

<h4>web.config File</h4>

<pre class="language-markup linenums" data-rel="web.config">
<code>&lt;!-- other web.config sections --&gt;
&lt;machineKey configSource="machineKey.config" /&gt;
&lt;!-- other web.config sections --&gt;</code></pre>

<h4>machineKey.config File</h4>

<p>Please note: you should not use the machineKey below. You should generate your own as described <a href="http://www.mojoportal.com/use-a-custom-machine-key.aspx">here</a>.</p>

<pre class="language-markup linenums" data-rel="machineKey.config">
<code>&lt;?xml version="1.0"?&gt;
&lt;machineKey
	validationKey="55BA53B475CCAE0992D6BF9FE463A5E97F00C6C16DA3D7DF9202E560078AB501643C15514785FEE30FEF26FC27F5CE594B42FFCA55452EF90E8A056B4DAE9F39"
	decryptionKey="939232D527AC4CD3E449441FE887DA110A16C1A36924C424CBAAE3F00282436C"
	validation="SHA1"
	decryption="AES"
/&gt;</code></pre>

<h3>system.net smtp configSource</h3>

<p>To use configSource on the smtp section, copy the entire smtp section to a new file. Name the new file smtp.config (you can name it whatever you like but you should absolutely use the .config section to keep people from downloading the file). Next change the smtp section in the web.config to only have the configSource attribute specifying the smtp.config file. The result should be:</p>

<h4>web.config File</h4>

<pre class="language-markup linenums" data-rel="web.config">
<code>&lt;!-- other Web.config sections --&gt;
&lt;system.net&gt;
	&lt;mailSettings&gt;
		&lt;smtp configSource="smtp.config"&gt;&lt;/smtp&gt;
	&lt;/mailSettings&gt;
&lt;/system.net&gt;
&lt;!-- other web.config sections --&gt;</code></pre>

<h4>smtp.config File</h4>

<pre class="language-markup linenums" data-rel="tp.config">
<code>&lt;?xml version="1.0"?&gt;&lt;br /&gt;
&lt;smtp from="noreply@yourdomain.com"&gt;
	&lt;network host="localhost" port="25" password="" userName="noreply@yourdomain.com" /&gt;
&lt;/smtp&gt;</code></pre>

<hr />
<h3><a href="http://i7media.net/mojoportal-upgrade-service">Managed mojoPortal Upgrade Services</a></h3>

<p><a href="http://i7media.net/mojoportal-upgrade-service"><img alt="i7MEDIA: Elegant mojoPortal Solutions" src="https://i7media.com/Data/logos/web_logo.png" style="border-width: 0px; border-style: solid; margin: 5px; float: left; width: 200px; height: 60px;" /></a>i7MEDIA, LLC offers Upgrade Services for mojoPortal. Trusted by the mojoPortal community and owned by mojoPortal Community Manager, Joe Davis, you can rest assured your site will be taken care of by i7MEDIA.</p>

<p>&nbsp;</p>

<p>Happy mojo-ing!</p>

<p>-Joe Davis</p>
<br /><a href='https://i7media.com/separating-sections-from-the-mojoportal-webconfig-file'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/separating-sections-from-the-mojoportal-webconfig-file'>...</a>]]></description>
      <link>https://i7media.com/separating-sections-from-the-mojoportal-webconfig-file</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/separating-sections-from-the-mojoportal-webconfig-file</comments>
      <guid isPermaLink="true">https://i7media.com/separating-sections-from-the-mojoportal-webconfig-file</guid>
      <pubDate>Wed, 24 Nov 2010 14:00:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal Logs: Hidden in Plain Sight</title>
      <description><![CDATA[<p>In my daily support of <a href="http://www.mojoportal.com">mojoPortal</a> on the <a href="http://www.mojoportal.com/forums.aspx">mojoPortal&nbsp;Forums</a>, I see a lot of people asking for help with the standard mojoPortal&nbsp;error message that is displayed to users.</p>

<blockquote>
<p>We're sorry but a server error has occurred while trying to process your request.</p>

<p>The error has been logged and will be reviewed by our staff as soon as possible. It is possible that the error was just a momentary hiccup and you may wish to use the back button and try again or go back to the home page.</p>
</blockquote>

<p>This error message is intentionally vague to prevent those who would do your site harm from gaining important information about your site.</p>

<p>Many first-time adopters of mojoPortal and even some that have been around a while, don't realize that when this error message is displayed, the actual error is written to a log file within the mojoPortal installation. One can easily read the log by browsing to the Administration Menu and selecting the "System Log" option. If the error is not allowing access to that page, the log file can be found in the \Data directory, named currentLog.config. This log contains all of the warning and critical errors mojoPortal encounters. Keep in mind that the .config extension prevents the log from being downloaded by would-be attackers.</p>

<p>So, if you encounter the extremely generic message above, check out the \Data\currentLog.config file for the real error. Also, if you are working with your site skin's layout.master file and things go awry where everything is miss-placed or even a weird skin is shown instead of your own, check out the System Log... chances are you will find a hint as to the cause of the problem.</p>

<p>Need more information on the logs and troubleshooting? Check out the "<a href="http://www.mojoportal.com/basic-troubleshooting.aspx">Basic Troubleshooting</a>" guide on the mojoPortal site.</p>

<p>Happy mojo-ing!</p>

<p>Joe D.<br />
mojoPortal Community Manager</p>
<br /><a href='https://i7media.com/mojoportal-logs-hidden-in-plain-sight'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/mojoportal-logs-hidden-in-plain-sight'>...</a>]]></description>
      <link>https://i7media.com/mojoportal-logs-hidden-in-plain-sight</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/mojoportal-logs-hidden-in-plain-sight</comments>
      <guid isPermaLink="true">https://i7media.com/mojoportal-logs-hidden-in-plain-sight</guid>
      <pubDate>Mon, 22 Nov 2010 17:30:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal: Skinning the Search Input Box</title>
      <description><![CDATA[<p>Ever wondered how to style the mojoPortal Search Input Box? I wrote a how-to on the subject late last week. I hope it helps! <a href="http://www.mojoportal.com/styling-the-search-input-box.aspx" title="http://www.mojoportal.com/styling-the-search-input-box.aspx">http://www.mojoportal.com/styling-the-search-input-box.aspx</a>.</p>

<p>Are there any other topics you would like to see in the documentation? If so, <a href="http://i7media.net/contact">send us an email</a> and we will do our best to take care of it for you.</p>
<br /><a href='https://i7media.com/mojoportal-skinning-the-search-input-box'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/mojoportal-skinning-the-search-input-box'>...</a>]]></description>
      <link>https://i7media.com/mojoportal-skinning-the-search-input-box</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/mojoportal-skinning-the-search-input-box</comments>
      <guid isPermaLink="true">https://i7media.com/mojoportal-skinning-the-search-input-box</guid>
      <pubDate>Tue, 24 Aug 2010 00:12:00 GMT</pubDate>
    </item>
    <item>
      <title>Using GreyBox and LightBox with mojoPortal</title>
      <description><![CDATA[<div class="txterror warning"><strong>Update March 30, 2011:</strong> As of version 2.3.6.4, mojoPortal changed from GreyBox to Colorbox, these instructions are no longer relevant.</div>

<h3>Using GreyBox</h3>

<p>mojoPortal comes bundled with <a href="http://orangoo.com/labs/GreyBox/">Greybox</a> which is a great in-site pop-up utility that can be used for displaying images and even other webpages in an in-site pop-up. It is used in the image galleries, help system, skin <span><span>previewer</span></span>, and a lot of other areas of <span><span>mojoPortal</span></span></p>

<p>You might be interested to know that you can use GreyBox in your mojoPortal site without utilizing the ImageGallery or other features of mojoPortal that use it. Simply add the <code class="language-markup">rel="gb_image[]"</code> or <code class="language-markup">rel="gb_page[]"</code> property to any link and the the link target will open in a GreyBox pop-up window.</p>

<p>For example, clicking the thumbnail below will open the full-size image in a GreyBox window:</p>

<pre class="language-markup">
<code>&lt;a href="https://i7media.com/Data/Sites/1/blogdata/lightbox-dsc06798-full.jpg" rel="gb_image[]" title="4th &amp;amp; Broadway, San Diego, CA (C) Joe Davis"&gt;
	&lt;img alt="" src="https://i7media.com/Data/Sites/1/blogdata/lightbox-dsc06798-thumb.jpg" width="133" height="100" /&gt;
&lt;/a&gt;</code></pre>

<p><a href="https://i7media.com/Data/Sites/1/blogdata/lightbox-dsc06798-full.jpg" rel="gb_image[]" title="4th &amp; Broadway, San Diego, CA (C) Joe Davis"><img alt="4th &amp; Broadway, San Diego, CA (C) Joe Davis" height="100" src="https://i7media.com/Data/Sites/1/blogdata/lightbox-dsc06798-thumb.jpg" width="133" /></a></p>

<p>The link below will open the mojoPortal website in a fullscreen GreyBox window:</p>

<pre class="language-markup">
<code>&lt;a href="http://www.mojoportal.com" rel="gb_page_fs[]" title="mojoPortal, The World's Greatest .NET CMS"&gt;Open mojoPortal in GreyBox&lt;/a&gt;</code></pre>

<p><a href="http://www.mojoportal.com" rel="gb_page_fs[]" title="mojoPortal, The World's Greatest .NET CMS">Open mojoPortal in GreyBox</a></p>

<p>There are a lot of other neat things you can do with GreyBox that you may not be aware of so I recommend checking out the <a href="http://orangoo.com/labs/GreyBox/">GreyBox</a> website for more helpful hints.</p>

<p>&nbsp;</p>

<h3>Using LightBox with MojoPortal</h3>

<p>Some people like other utilities like <a href="http://leandrovieira.com/projects/jquery/lightbox/">LightBox</a> (the jQuery version), for example. I will demonstrate to you how to use LightBox alongside GreyBox with mojoPortal.</p>

<h4>The Setup</h4>

<ol class="fancy">
	<li><span>The first step to using LightBox is to download the jQuery-LightBox release from <a href="http://leandrovieira.com/projects/jquery/lightbox/">http://leandrovieira.com/projects/jquery/lightbox/</a>. Once you have downloaded the release, extract it to your local hard drive.</span></li>
	<li>Using your favorite FTP client (mine is <a href="http://filezilla-project.org/">FileZilla</a>):
	<ol style="list-style-type: lower-alpha">
		<li style="margin-left: 0px"><span>Create a new directory under \ClientScript named lightbox and upload jquery.lightbox-0.5.min.js, jquery.lightbox-0.5.css and the images directory included in the zip to this new directory.</span></li>
		<li style="margin-left: 0px"><span>Browse to the directory containing your site's skin (\data\sites\[SiteNumber]\skins\NameOfSkin and download the layout.master file.</span></li>
	</ol>
	</li>
	<li><span>Using your favorite HTML editor (mine is <a href="http://notepad-plus-plus.org/">Notepad++</a>):</span>
	<ol style="list-style: none outside none">
		<li style="margin-left: 0px">Add the following lines to the layout.master directly after the <code class="language-markup">&lt;asp:ScriptManager</code> control
		<pre class="language-markup" data-rel="layout.master">
<code>&lt;link href="https://i7media.com/ClientScript/lightbox/jquery.lightbox-0.5.css" type="text/css" rel="stylesheet" /&gt;
&lt;script type="text/javascript" src="https://i7media.com/ClientScript/lightbox/jquery.lightbox-0.5.pack.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
	$(document).ready(function(){
		$('a.lightbox').lightBox({
			imageLoading:	'/ClientScript/lightbox/images/lightbox-ico-loading.gif',
			imageBtnClose:	'/ClientScript/lightbox/images/lightbox-btn-close.gif',
			imageBtnPrev:	'/ClientScript/lightbox/images/lightbox-btn-prev.gif',
			imageBtnNext:	'/ClientScript/lightbox/images/lightbox-btn-next.gif'
		});
	});
&lt;/script&gt;</code></pre>
		</li>
	</ol>
	</li>
	<li>Back in your FTP client, upload the modified layout.master file.</li>
</ol>

<h4>Using LightBox</h4>

<p><span>Now to use LightBox, all you need to do is add <em>lightbox</em> as a class on any link that you want to open in a LightBox pop-up. For Example:</span></p>

<pre class="language-markup">
<code>&lt;a href="images/image-1.jpg" class="lightbox" title="my caption"&gt;
	&lt;img src="images/image-1-thumb.jpg"&gt;
&lt;/a&gt;</code></pre>

<p>You can see more examples on the <a href="http://leandrovieira.com/projects/jquery/lightbox/">LightBox</a> website.</p>

<h4>See It In Action</h4>

<p><a class="lightbox" href="https://i7media.com/Data/Sites/1/blogdata/lightbox-dsc06798-full.jpg" rel="lightbox" title="4th &amp; Broadway, San Diego, CA (C) Joe Davis"><img alt="" src="https://i7media.com/Data/Sites/1/blogdata/lightbox-dsc06798-thumb.jpg" style="width: 133px; height: 100px" /></a></p>

<h4>Some Friendly Words of Caution</h4>

<p>Including additional javascript files in your site will make it run slower. The difference in speed may be negligible when adding just one script but don't get carried away.</p>

<p>Also, you may have noticed that I put the CSS and Images in the ClientScript\lightbox directory. I did this because I couldn't get the LightBox to work properly with those items in the \Data\Style directory like they should be. Also, I couldn't get the script to work with the CSS being loaded from the CSSHandler so I had to put a reference to the CSS file in the layout.master. This should not be done without thoroughly testing your site and making every attempt to put the CSS file where it belongs, in the CSSHandler's style.config.</p>

<h4>Conclusion</h4>

<p>In the end, I prefer GreyBox primarily because it is already built-in to mojoPortal and it does more than LightBox. If you find that you want to use something along with GreyBox, you can adapt this post to whatever tool you decide to use. It should help get you on your way.</p>

<p>Happy mojo-ing!</p>
<br /><a href='https://i7media.com/using-greybox-and-lightbox-with-mojoportal'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/using-greybox-and-lightbox-with-mojoportal'>...</a>]]></description>
      <link>https://i7media.com/using-greybox-and-lightbox-with-mojoportal</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/using-greybox-and-lightbox-with-mojoportal</comments>
      <guid isPermaLink="true">https://i7media.com/using-greybox-and-lightbox-with-mojoportal</guid>
      <pubDate>Wed, 28 Jul 2010 20:41:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal Online User Group: A Great Value Add</title>
      <description><![CDATA[<p>The mojoPortal Online User Group, started by David Dean of <a href="http://www.yamisee.com/official-mojoportal-online-user-group.aspx">Yamisee</a>, has been going strong for a few months now. A couple different people have led the monthly meetings, each bringing valuable information to those who attend. I believe this group is a great Value Add for the community as the meetings are open to the public and the type of information discussed ranges between installation, skinning and programming. Joe Audette, mojoPortal Founder and Chief Developer, attends the meetings regularly and is even leading the August meeting.</p>

<p>Over the past couple of months, the topics and leaders of the meetings have been:</p>

<ul>
	<li>April 2010: SEO Tools and Tips, David Dean of <a href="http://www.yamisee.com/">Yamisee</a></li>
	<li>May 2010: Creating Custom Page Titles, Joe Davis of i7MEDIA</li>
	<li>June 2010: Log4Net, Steve Land of <a href="http://www.strongeye.com/">StrongEye Solutions</a></li>
	<li>August 2010: ZedGraph, Joe Audette</li>
</ul>

<p>If you are interested in mojoPortal, I highly suggest you subscribe to the Forum thread on the user community <a href="http://www.mojoportal.com/Forums/Thread.aspx?pageid=5&amp;mid=34&amp;ItemID=9&amp;thread=5923">here</a>.</p>

<p>Personally, I want to thank David Dean for his hard work and dedication to the mojoPortal community.</p>
<br /><a href='https://i7media.com/mojoportal-online-user-group-a-great-value-add'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/mojoportal-online-user-group-a-great-value-add'>...</a>]]></description>
      <link>https://i7media.com/mojoportal-online-user-group-a-great-value-add</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/mojoportal-online-user-group-a-great-value-add</comments>
      <guid isPermaLink="true">https://i7media.com/mojoportal-online-user-group-a-great-value-add</guid>
      <pubDate>Tue, 13 Jul 2010 16:47:00 GMT</pubDate>
    </item>
  </channel>
</rss>