 <?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~1" 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>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>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>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>Skinning the mojoPortal Admin Toolbar</title>
      <description><![CDATA[<p>When Joe Audette released mojoPortal 2.3.3.4 he wrote an article called "<a href="http://www.mojoportal.com/creating-an-admin-toolbar.aspx">Creating An Admin Toolbar</a>" in the <a href="http://www.mojoportal.com/creatingskins.aspx">mojoPortal Skinning Documentation</a>. The toolbar uses jQuery to easily show and hide itself and is skinned entirely by using CSS.&nbsp;</p>

<p>If you follow Joe's directions or you are using a skin that came with 2.3.3.4 with the toolbar enabled, you will have a toolbar that looks like this:</p>

<p><img alt="Admin Toolbar" src="http://www.mojoportal.com/Data/Sites/1/media/mojoadmintoolbar.gif" style="width: 640px; height: 36px" /></p>

<p>While this serves a perfectly good function, there are a few things about it I don't like. It is gray and there are no icons depicting the links. I happen to like icons and bright colors so, I came up with this:</p>

<p><img alt="admin toolbar" src="https://i7media.com/Data/Sites/1/blogdata/AdminToolbar.JPG" style="width: 640px; height: 31px" /></p>

<p>Skinning the toolbar was very easy because it is all controlled by CSS. This article is meant to help you understand how to skin the toolbar but if you like what I've done, you can just download it <a href="https://i7media.com/SharedFiles/Download.aspx?pageid=6&amp;fileid=26&amp;mid=9">here</a>.</p>

<h4>Create a copy of the jqtoolbar UI resources</h4>

<p>The CSS and images for the toolbar are located in the \Data\style\jqtoolbar directory. The CSS is in the style.css file so I created a copy of this file and named it style-7.css.</p>

<h4>Set site skin to use new CSS file</h4>

<p>For the skin to use the new css file (style-7.css), I had to change the line below in my style.config file located inside of my skin directory (\data\sites\1\skins\myskin). Notice I am referencing style-i7.css and not style.css.</p>

<pre class="language-markup">
<code>&lt;file cssvpath="/Data/style/jqtoolbar/style-i7.css" imagebasevpath="/Data/style/jqtoolbar/"&gt;none&lt;/file&gt;</code></pre>

<h4>Change the background color of the toolbar</h4>

<p>To change the color of the toolbar, I simply changed the background-image CSS rule on the div#toolbar and div#toolbarbut selectors to a background-color rule and set the color to #FFFF99.</p>

<h4>Add icons to the links</h4>

<p>To add the icons, I added an attribute to each of the controls for the links in the layout.master. To keep the markup valid, I used the <em>rel</em> attribute. I set the value of the rel attribute to a descriptor of the link itself (e.g.: rel="admin" for the admin link). I then used this new attribute to apply a different background image to each link.</p>

<p>It is important to note that this approach will not work with IE6 as it doesn't understand how to select an element based on it's attributes. The next release of mojo will allow you to use the CssClass attribute on the controls so that you can style them more easily. The value of the CssClass attribute will be added to the classes for the link.</p>

<h5 class="visuallyhidden">Link Controls in Layout.master file</h5>

<pre class="language-aspnet linenums" data-rel="Link Controls in Layout.master file">
<code>&lt;portal:AdminMenuLink id="lnkAdminMenu" runat="server" rel="admin"/&gt;
&lt;portal:FileManagerLink id="lnkFileManager" runat="server" rel="filemgr"/&gt;
&lt;portal:NewPageLink id="lnkNewPage" runat="server" rel="addpage" /&gt;
&lt;portal:PageEditFeaturesLink id="lnkPageContent" runat="server" rel="pageedit"/&gt;
&lt;portal:PageEditSettingsLink id="lnkPageSettings" runat="server" rel="pagesettings"/&gt;</code></pre>

<h5 class="visuallyhidden">CSS for icons</h5>

<pre class="language-css linenums" data-rel="CSS for icons">
<code>div#toolbar a[rel=admin]{
	background: transparent url('administration.png') no-repeat scroll left center;
	padding-left: 32px;
}

div#toolbar a[rel=addpage]{
	background: transparent url('newpage.png') no-repeat scroll left center;
	padding-left: 32px;}

div#toolbar a[rel=filemgr]{
	background: transparent url('filemgr.png') no-repeat scroll left center;
	padding-left: 32px;
}

div#toolbar a[rel=pageedit]{
	background: transparent url('editpage.png') no-repeat scroll left center;
	padding-left: 32px;
}

div#toolbar a[rel=pagesettings]{
	background: transparent url('pagesettings.png') no-repeat scroll left center;
	padding-left: 32px;
}</code></pre>

<p>The icons are from the <a href="http://www.everaldo.com/crystal/">Crystal Project</a> but you can use any you like.</p>

<h4>Hiding the menu by default</h4>

<p>Personally, I do not want the toolbar to be displayed all the time. I would rather have a link which opens the toolbar when I need it. To accomplish this, I moved the <strong>display:none;</strong> rule from the <em>div#toolbarbut</em> selector to the <em>div#toolbar</em> selector.</p>

<h4>Conclusion</h4>

<p>I hope this gives you a head-start on skinning the new admin toolbar. Keep in mind that all of this was accomplished easily with CSS.</p>

<p>Happy mojo-ing!</p>

<p><a alt="download" class="download-button-mojo" href="https://i7media.com/SharedFiles/Download.aspx?pageid=6&amp;fileid=25&amp;mid=9" title="Download This Admin Toolbar Skin">&nbsp;</a></p>
<br /><a href='https://i7media.com/skinning-the-mojoportal-admin-toolbar'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/skinning-the-mojoportal-admin-toolbar'>...</a>]]></description>
      <link>https://i7media.com/skinning-the-mojoportal-admin-toolbar</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/skinning-the-mojoportal-admin-toolbar</comments>
      <guid isPermaLink="true">https://i7media.com/skinning-the-mojoportal-admin-toolbar</guid>
      <pubDate>Thu, 21 Jan 2010 19:30: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>Adding You Are Here Message to mojoPortal Breadcrumbs</title>
      <description><![CDATA[<p>mojoPortal provides a nifty little BreadCrumb control which will show the path to the current page. We have used the control in several of our sites and from time to time, our customer ask us to put the "You Are Here"&nbsp;or some other text in front of the breadcrumbs.</p>

<p><img alt="Screenshot of You Are Here breadcrumbs" src="https://i7media.com/Data/Sites/1/blogdata/youarehere.jpg" style="margin: 5px; width: 365px; height: 74px;" /></p>

<p>So that's simple, right? Well, yes and no.&nbsp;The BreadCrumb control doesn't&nbsp;have the&nbsp;ability to add&nbsp;a message to the&nbsp;crumbs so we have to add the text in the layout.master of our skin. Okay, that's simple too but the&nbsp;difficulty comes with making the message invisible when the page settings have breadcrumbs turned off or there aren't any to display.</p>

<p><img alt="" src="https://i7media.com/Data/Sites/1/blogdata/youarehere_nologic.jpg" style="margin: 5px; width: 345px; height: 73px;" /></p>

<p>The solution is to create a User Control with all of the logic needed to display the Breadcrumb Message when needed.</p>

<h3>The User Control</h3>

<p>For simplicity of this article, we will create our user control in a folder named <em>CustomControls</em> which we placed inside the Controls folder (\Controls).</p>

<h4>The YouAreHere.ascx file</h4>

<pre class="linenums language-aspnet" data-rel="YouAreHere.ascx">
<code>&lt;%@ Control Language="C#" AutoEventWireup="true" CodeFile="YouAreHere.ascx.cs"
	ClassName="YouAreHere.ascx" Inherits="Controls_YouAreHere" %&gt;
&lt;asp:literal ID="lblYouAreHere" Text="You Are Here:" runat="server" Visible="false" /&gt;</code></pre>

<p>Not much magic here, just importing the necessary namespaces and creating our Label which will end up being the Message text. Notice the Label has the Text argument assigned and it is set to "You Are Here:". We will discuss this further later in the article.</p>

<h4>The YouAreHere.ascx.cs file (code behind)</h4>

<pre class="linenums language-csharp" data-rel="YouAreHere.ascx.cs">
<code>using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using mojoPortal.Web;
using mojoPortal.Web.UI;
using mojoPortal.Web.Framework;
using mojoPortal.Business;
using mojoPortal.Business.WebHelpers;


public partial class Controls_YouAreHere : System.Web.UI.UserControl
{
	private string sMessage;

	public string Message
	{
		get { return sMessage; }
		set { sMessage = value; }
	}

	protected void Page_Load(object sender, EventArgs e)
	{
		if (sMessage != null)
		{
			lblYouAreHere.Text = sMessage;
		}

		PageSettings currentPage = CacheHelper.GetCurrentPage();
		if (currentPage == null) { return; }
		if ((currentPage.ShowBreadcrumbs) || (currentPage.ShowChildPageBreadcrumbs))
		{
			lblYouAreHere.Visible = true;
		}
	}
}</code></pre>

<h4>Using the User Control (layout.Master file)</h4>

<pre class="language-aspnet">
<code>&lt;%@ Register Src="~/Controls/CustomControls/YouAreHere.ascx" TagName="YouAreHere" TagPrefix="i7" %&gt;</code></pre>

<pre class="language-aspnet">
<code>&lt;i7:YouAreHere id="YouAreHere1" Message="How You Got Here:" runat="server" /&gt;</code></pre>

<p>The first line should be placed after the <code class="language-markup">&lt;%@Register</code>... line. It registers the User Control on the page.</p>

<p>The second line should be placed directly before the <code class="language-markup">&lt;portal:Breadcrumbs</code>... line. This is the User Control Tag which will show the Message. Optionally, you can set a custom message using the <em>Message</em> argument.</p>

<p><img alt="" src="https://i7media.com/Data/Sites/1/blogdata/youarehere_custommessage.jpg" style="margin: 5px; width: 375px; height: 72px;" /></p>

<p><a alt="download" class="download-button-mojo" href="https://i7media.com/SharedFiles/Download.aspx?pageid=6&amp;fileid=26&amp;mid=9" title="Download the You Are Here control">&nbsp;</a></p>

<p class="txterror info"><strong>Note:</strong> i7MEDIA assumes no liability or responsibility for the use of this code. We do however want to help you if you need it so don't hesitate to <a href="https://i7media.com/contact">ask us</a>.</p>

<p>Happy mojo-ing!</p>
<br /><a href='https://i7media.com/adding-you-are-here-message-to-mojoportal-breadcrumbs'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/adding-you-are-here-message-to-mojoportal-breadcrumbs'>...</a>]]></description>
      <link>https://i7media.com/adding-you-are-here-message-to-mojoportal-breadcrumbs</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/adding-you-are-here-message-to-mojoportal-breadcrumbs</comments>
      <guid isPermaLink="true">https://i7media.com/adding-you-are-here-message-to-mojoportal-breadcrumbs</guid>
      <pubDate>Wed, 30 Dec 2009 20:20: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>
    <item>
      <title>What We Like Best About mojoPortal</title>
      <description><![CDATA[<p>In a recent article, "<a href="http://www.cmswire.com/cms/web-cms/alert-whats-coming-for-open-source-cms-in-september-2009-005403.php" target="_blank">Alert: What's Coming for Open Source CMS in September 2009</a>", on <a href="http://cmswire.com">CMSWire</a> I noticed that they did not mention mojoPortal (<a href="http://www.mojoportal.com">http://www.mojoportal.com</a>).</p>

<p>mojoPortal is my CMS of choice because of its usability, simple management and skinning. I have used many other CMS projects over the years and I have found mojoPortal the best for doing what a CMS is supposed to do which is save time and effort in the management of a website.</p>

<p>Some key feature of mojoPortal that I like are:</p>

<ul>
	<li><a href="http://www.mojoportal.com/muliplesites.aspx">Multi-site installation</a> allows you to host multiple sites with one installation of mojoPortal.</li>
	<li>Automatic resizing of images upon upload from within the TinyMCE and FCKeditor WYSIWYGs. <a href="http://www.mojoportal.com/mojoportal-2316-released.aspx">This feature is new as of 2.3.1.6</a> and it allows users to upload images for use in content and the image will be resized to a maximum height and width which can be set by the user in the same dialog as the upload. The feature can also be turned off for a single upload or for all uploads (requires an admin).</li>
	<li><a href="http://www.mojoportal.com/creating-content-templates.aspx">Content</a> and <a href="http://www.mojoportal.com/creating-content-style-templates.aspx">Content Style Templates</a> are built-in to both TinyMCE and FCKeditor. A site admin can create custom templates and they will be accessible to site authors and publishers. This feature saves my customers a lot of time because they have specific layouts for certain types of articles, all they have to do is select a template and add their content.</li>
	<li><a href="http://www.mojoportal.com/forums.aspx">VERY active forums</a> where questions are answered and no body gets flamed for asking a question, even if the answer is in the documentation.</li>
	<li><a href="http://www.mojoportal.com/using-the-chat-feature.aspx">Website Chat</a> using Windows Live Messenger enables users to communicate with company staff for support or sales questions.</li>
	<li><a href="http://www.mojoportal.com/site-search-overview.aspx">Search features galore</a>! mojoPortal's search functionality is very nice. The site search engine indexes all content on the site, regardless of which feature the content resides. Many other CMSs have separate a search for the forum, blog, site content, etc... The search engine also allows the user search by feature so if a user only wants to search the forum, all they have to do is select forum from a drop down menu.</li>
	<li>Core Features are core features. Joe Audette, the founder of mojoPortal, offers a few enhanced modules for sale through his company Source Tree Solutions. What Joe doesn't do is make core enhancements to the core and package them as licensed products. Some CMS projects have started doing this and it is not truly open source.</li>
	<li>Skinning in mojoPortal is very simple and can be learned by any web developer in just a matter of a few hours. I have attempted to create skins for DNN, Joomla, and others but I have never achieved the level of success that I have with mojo!</li>
</ul>

<p>This is just a short list of the reasons I use mojoPortal and recommend it over any other open source CMS. I hope sites like CMSWire start to take notice of mojoPortal and give it the press it deserves.</p>
<br /><a href='https://i7media.com/what-we-like-best-about-mojoportal'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/what-we-like-best-about-mojoportal'>...</a>]]></description>
      <link>https://i7media.com/what-we-like-best-about-mojoportal</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/what-we-like-best-about-mojoportal</comments>
      <guid isPermaLink="true">https://i7media.com/what-we-like-best-about-mojoportal</guid>
      <pubDate>Wed, 02 Sep 2009 19:52:00 GMT</pubDate>
    </item>
    <item>
      <title>Multiple Horizontal Menus in mojoPortal</title>
      <description><![CDATA[<p>mojoPortal comes with a lot of skins with different menu styles. One of these skins (andreasviklund-02) has two sets of horizontal menus allowing for a more compact menu system on 2nd tier pages. You can check out the above mentioned skin using the demo site for a working example. The mojoPortal site itself uses a similar menu system so you can use it as an example also.</p>

<p>I am currently working on my church's website (<a href="http://acckc.org/mojo">http://acckc.org/mojo</a>) and it uses this menu style.</p>

<p><a href="http://josephmdavis.com/image.axd?picture=accmenu.png"><img alt="accmenu" height="42" src="https://i7media.com/Data/Sites/1/blogdata/accmenu.jpg" style="display: inline; border: 0px;" title="accmenu" width="550" /></a>&nbsp;</p>

<p>To achieve this style of menu, you must add a few controls to your layout.master file.</p>

<p>Place this code under the HTML &lt;form&gt; tag with the other SiteMapDataSource controls.</p>

<pre class="language-aspnet">
<code>&lt;asp:SiteMapDataSource ID="level3datasource" runat="server" ShowStartingNode="true" /&gt;</code></pre>

<p>Change the PageMenu control to the following and then move it to the desired location within the layout.master file. This control will show 2nd tier pages.</p>

<pre class="language-aspnet">
<code>&lt;portal:PageMenu id="PageMenu1" runat="server" TopLevelOnly="true"
	UseTreeView="false" HideMenuOnSiteMap="false" UseSpanInLinks="true"
	Direction="Horizontal" DynamicDisplayLevels="0" /&gt;</code></pre>

<p>Finally, add a second PageMenu control. This control will show 3rd tier and lower pages.</p>

<pre class="language-aspnet">
<code>&lt;portal:PageMenu id="PageMenu2" runat="server"
	UseTreeView="true" TreeViewShowExpandCollapse="true"
	StartingNodeOffset="2"  SiteMapDataSource="level3datasource" /&gt;</code></pre>

<p>For skinning of the menu, please refer to the stylemenu.css file in the i7MEDIA-2horizontalmenus skin.</p>
<br /><a href='https://i7media.com/multiple-horizontal-menus-in-mojoportal'>Joe Davis</a>&nbsp;&nbsp;<a href='https://i7media.com/multiple-horizontal-menus-in-mojoportal'>...</a>]]></description>
      <link>https://i7media.com/multiple-horizontal-menus-in-mojoportal</link>
      <author>joe@i7media.net (Joe Davis)</author>
      <comments>https://i7media.com/multiple-horizontal-menus-in-mojoportal</comments>
      <guid isPermaLink="true">https://i7media.com/multiple-horizontal-menus-in-mojoportal</guid>
      <pubDate>Mon, 27 Jul 2009 17:38:00 GMT</pubDate>
    </item>
  </channel>
</rss>