 <?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~4" rel="self" type="application/rss+xml" />
    <itunes:owner />
    <itunes:explicit>no</itunes:explicit>
    <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>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>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>Oh, The Things to Come</title>
      <description><![CDATA[<p>I was browsing through the SVN update log for mojoPortal this afternoon and I am very excited about some of the things Joe Audette is working on for the upcoming release.</p>

<p>I started browsing around the demo site (<a href="http://demo.mojoportal.com">http://demo.mojoportal.com</a>) so I could see some of the new changes in action. The list below are just the ones I found interesting, there are a lot more changes coming in the next release.</p>

<ol class="fancy">
	<li><span>A new File Manager has been added and the old one has been re-factored. The new File Manager is very nice and is a big improvement over the old one. It uses Javascript whereas the old one doesn't so Audette decided to keep the old File Manager and allow users to switch back and forth between the old and the new. Usability is very big to mojoPortal and as a matter of fact, mojoPortal can be used entirely without Javascript if one chooses to do so. There is also a new link&nbsp;with the Administration and Edit Page links&nbsp;which opens the&nbsp;File Manager in a graybox. This allows for easy access&nbsp;to the File Manager at all times.<br />
	<img alt="" height="424" src="https://i7media.com/Data/Sites/1/blogdata/upcoming2334_filemanager.jpg" width="550" /></span></li>
	<li><span>Adding users to Roles via the Role Administration admin page is a lot easier thanks to a new selector dialog. Previously, users not in a role were listed in a single drop-down list which made it very difficult to use when a site had a lot of users.<br />
	<img alt="" height="122" src="https://i7media.com/Data/Sites/1/blogdata/upcoming2334_addusertorole.jpg" width="550" /></span></li>
	<li><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span>mojoPortal</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> uses a CSSHandler to combine &amp; minimize CSS files. This process makes caching easier and allows sites to load faster. The url to CSSHandler has been http://somedomain.com/data/sites/[sitenumber]/skins/[skinname]/CSSHandler.ashx. This required the&nbsp;Data directory or at least the skin directory to be executable which is not ideal.&nbsp;The CSSHandler URL has been&nbsp;moved to the&nbsp;root of applicaiton in the next release. Problem solved.</span></li>
	<li><span>A new SQL Query tool will allow developers to easily see and modify data in the database from the website. This tool must be enabled by a site administrator in the web.config prior to it being available for use. It will allow developers to save queries which can be used to populate date in a custom module for quick and dirty data access.<br />
	<img alt="" height="438" src="https://i7media.com/Data/Sites/1/blogdata/upcoming2334_querytool.jpg" width="550" /></span></li>
	<li><span>The main administration links (admin, add page, edit page, page settings) used to be just that, links. If a site designer like yours truly wanted to display the links in a drawer or some other type of cool UI, custom code would have to be developed to create the links manually. This next version will include support for controls for each link which means it will be possible to declare them directly in the layout.master and they will show/hide automatically according to internal logic. See number 6 for what this really means.</span></li>
	<li><span>The <a href="http://plugins.jquery.com/project/mbextruder">jQuery Extruder</a>&nbsp;plugin has been included with mojoPortal which allows for an example of using a widget with the admin links.<br />
	<a href="https://i7media.com/Data/Sites/1/blogdata/upcoming2334_admindrawer-closed.jpg"><img alt="" height="102" src="https://i7media.com/Data/Sites/1/blogdata/upcoming2334_admindrawer-closed.jpg" width="224" /></a>&nbsp;<a href="https://i7media.com/Data/Sites/1/blogdata/upcoming2334_admindrawer-open.jpg"><img alt="" height="108" src="https://i7media.com/Data/Sites/1/blogdata/upcoming2334_admindrawer-open.jpg" width="225" /></a></span></li>
	<li><span>The blog is getting some attention this go 'round. Community feedback suggested a preview draft option, paging, option to display only blog titles in the main blog page, and a few other improvements. All of them, that I noticed anyway, made it into the core! Check out the <a href="http://demo.mojoportal.com">demo</a>, to get a better idea of what has changed with the blog.</span></li>
	<li><span>The Search facility will now provide a link to download items in ShareFiles modules. Previously, just a link to the Shared Files module was provided.</span></li>
</ol>

<p>Rather impressive what Joe Audette can get done in just a few weeks, isn't it?</p>

<p>What improvements or features are you waiting to see implemented? <a href="http://www.mojoportal.com/buy-joe-a-coffee-product.aspx">Why not buy Joe Audette a Coffee to show him your appreciation?</a>&nbsp;</p>
<br /><a href='https://i7media.com/oh-the-things-to-come'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/oh-the-things-to-come'>...</a>]]></description>
      <link>https://i7media.com/oh-the-things-to-come</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/oh-the-things-to-come</comments>
      <guid isPermaLink="true">https://i7media.com/oh-the-things-to-come</guid>
      <pubDate>Fri, 08 Jan 2010 20:56:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal content features inside UI Widget</title>
      <description><![CDATA[<p>With the release of mojoPortal 2.3.0.4 came the addition of Content Templates for FCKeditor and the examples included with mojoPortal for using the Content Templates were widgets like jQuery Accordian and Tabs. I like the Accordian and Tab widgets quite a bit because they allow me to easily include a very professional looking UI elements with very little work. Examples of the jQuery Accordian and Tabs are below:</p>

<p><a href="http://josephmdavis.com/image.axd?picture=jquery-accordion-clip.png"><img alt="jquery-accordion-clip" height="234" src="https://i7media.com/Data/Sites/1/blogdata/jquery-accordion-clip.png" style="border: 0px none ; display: inline;" title="jquery-accordion-clip" width="292" /></a><img alt="screenshot of jquery tabs" height="127" src="https://i7media.com/Data/Sites/1/blogdata/jquery-tabs-clip.png" width="255" /></p>

<p>The first idea I had for using the widgets was to include a couple different contact forms on one page, each with its own tab. So I set out creating the 3 different Contact Form instances that I needed. I was doing this for my church so I had one for the Pastor, Christian Ed. Director and the Secretary. I then created an HTML Content instance on the Contact Us page and added the Tabs UI widget to the HTML content. Now this is when I ran into a problem; there isn't any way to reference a mojoPortal module from within another module, so I had no way to put the Contact Form instances inside the UI widget.</p>

<p>I looked throught the documentation on the mojoPortal site but couldn't find anything that I thought would lead me in the right direction so I posted a question in the forum asking for help. Joe Audette, mojoPortal's founder and chief developer, responded with a very elegant solution. All I needed to do was create a my own module that included the Tab widget with the Contact Form instances wrapped up inside. Being the great guy he is, Joe provided me with the necessary code to make this work. The process is very simple:</p>

<ol>
	<li>Create a text file named whateveryoulike.ascx</li>
	<li>Paste this code into the text file:
	<pre class="language-aspnet linenums" data-rel="whateveryoulike.ascx">
<code>&lt;%@ Control Language="C#" ClassName="MultiModuleInTabsModule.ascx" Inherits="mojoPortal.Web.SiteModuleControl" %&gt;
&lt;%@ register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="portal" %&gt;
&lt;%@ Import Namespace="mojoPortal.Business" %&gt;
&lt;%@ Import Namespace="mojoPortal.Business.WebHelpers" %&gt;
&lt;%@ Import Namespace="mojoPortal.Web.Framework" %&gt;
&lt;%@ Import Namespace="mojoPortal.Web.Controls" %&gt;
&lt;%@ Import Namespace="mojoPortal.Web.Editor" %&gt;
&lt;%@ Import Namespace="mojoPortal.Net" %&gt;

&lt;script runat="server"&gt;
	protected void Page_Load(object sender, EventArgs e)
	{
	}
&lt;/script&gt;

&lt;div class="mojo-tabs"&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;a href="#tab1"&gt;Tab 1&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="#tab2"&gt;Tab 2&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="#tab3"&gt;Tab 3&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;div id="tab1"&gt;
		&lt;asp:Panel ID="pnlModuleWrapper1" runat="server"&gt;
			&lt;portal:ModuleWrapper ID="ModuleWrapper1" runat="server" ConfigureModuleID="15" /&gt;
		&lt;/asp:Panel&gt;
	&lt;/div&gt;
	&lt;div id="tab2"&gt;
		&lt;asp:Panel ID="pnlModuleWrapper2" runat="server"&gt;
			&lt;portal:ModuleWrapper ID="ModuleWrapper2" runat="server" ConfigureModuleID="16" /&gt;
		&lt;/asp:Panel&gt;
	&lt;/div&gt;
	&lt;div id="tab3"&gt;
		&lt;asp:Panel ID="pnlModuleWrapper3" runat="server"&gt;   
			&lt;portal:ModuleWrapper ID="ModuleWrapper3" runat="server" ConfigureModuleID="17" /&gt;
		&lt;/asp:Panel&gt;
	&lt;/div&gt;
&lt;/div&gt;</code></pre>
	</li>
	<li>Find the ModuleID for each Contact Form instance and modify the ModuleWrapper controls in the code above to match the correct ModuleIDs.
	<div class="alert alert-info"><strong>Note:</strong> To find the correct ModuleIDs all you need to do is hover over the Edit or Settings link for the Contact Form instances and then look in your browser's status bar. The ModuleID will show as mid=SomeNumber.</div>
	</li>
	<li>Save the file you created in the first step to the "~\data\sites\[sitenumber]\Modules" directory. (Note: you can save the file to any directory in the mojoPortal application but I think it is best that you save it to a directory under your actual site in the Data directory because this will prevent it from being overwritten or accidentally deleted during upgrades.</li>
	<li>Install your newly created module via the Administration &gt; Advanced Tools &gt; Feature Installation/Configuration screen inside of your mojoPortal site.
	<ol>
		<li>This is rather straight forward. All you have to do is give your Module a name, and input the correct path in the <em>Control Source</em> field. You may want to create your own GUID to make sure that it is unique.</li>
	</ol>
	</li>
	<li>Now you can add your new module to any page you like just as you would add any other module to a page.</li>
</ol>

<p>Here’s a screenshot of the end result:</p>

<p><img alt="screenshot of content module inside jquery tabs" height="273" src="https://i7media.com/Data/Sites/1/blogdata/contactforminsidetabs.png" width="300" /></p>

<p>Happy mojo-ing!</p>
<br /><a href='https://i7media.com/mojoportal-content-features-inside-ui-widget'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/mojoportal-content-features-inside-ui-widget'>...</a>]]></description>
      <link>https://i7media.com/mojoportal-content-features-inside-ui-widget</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/mojoportal-content-features-inside-ui-widget</comments>
      <guid isPermaLink="true">https://i7media.com/mojoportal-content-features-inside-ui-widget</guid>
      <pubDate>Mon, 23 Nov 2009 17:28:00 GMT</pubDate>
    </item>
    <item>
      <title>SlideShow Crazy!</title>
      <description><![CDATA[<p>The latest release of mojoPortal (v 2.3.1.7) added functionality to use a SilverLight&nbsp;SlideShow with the mojoPortal image gallery and a new feature for a slide show based on your Flickr account. Both of these features are very cool and I was excited to see them added to&nbsp;the mojoPortal core but when Joe Audette told me of another SlideShow feature he is adding to mojoPortal, I was jumping up and down and now I can't wait for the next release!</p>

<p>Joe is adding the ability to the HTML Feature of mojoPortal to display any element in a Slide Show. All the user has to do is type out their text, separating each "slide" with DIV or P elements and mojoPortal handles the rest! You can mix text with images within your SlideShow!</p>

<p>Here is a short video on it so you can see what I mean:</p>

<p><object classid="clsid:6bf52a52-394a-11d3-b153-00c04f79faa6" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701" height="500" style="width: 500px; height: 500px;" width="500"><param name="url" value="https://i7media.net/Data/Sites/1/00-i7MEDIA/mpslideshow.wmv" /><param name="src" value="https://i7media.net/Data/Sites/1/00-i7MEDIA/mpslideshow.wmv" /><embed height="500" src="https://i7media.net/Data/Sites/1/00-i7MEDIA/mpslideshow.wmv" style="width: 500px; height: 500px;" type="application/x-mplayer2" url="https://i7media.net/Data/Sites/1/00-i7MEDIA/mpslideshow.wmv" width="500"></embed></object></p>

<p>Try doing something like this with the built-in functionality of DNN!!! I can tell you now that you can't!!! This is a prime example of why mojoPortal is so far ahead of everyone else in the OpenSource .NET CMS game. One of the most important purposes of a CMS is supposed to be to allow users without a lot of web knowledge the ability to quickly and efficiently update/manage a website. This simple but very elegant feature will help those users keep their website up to date with a Web 2.0 feel.</p>

<p>I can't wait for the next release of mojo!!!!</p>
<br /><a href='https://i7media.com/slideshow-crazy'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/slideshow-crazy'>...</a>]]></description>
      <link>https://i7media.com/slideshow-crazy</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/slideshow-crazy</comments>
      <guid isPermaLink="true">https://i7media.com/slideshow-crazy</guid>
      <pubDate>Mon, 14 Sep 2009 20:34:00 GMT</pubDate>
    </item>
  </channel>
</rss>