<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Developing  New Paths</title>
	<atom:link href="http://www.mojavi.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mojavi.org</link>
	<description>The Mojavi Project</description>
	<lastBuildDate>Mon, 20 Feb 2012 18:28:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Preserve your photos with GoPhoto</title>
		<link>http://www.mojavi.org/preserve-your-photos-with-gophoto/</link>
		<comments>http://www.mojavi.org/preserve-your-photos-with-gophoto/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 18:28:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Marketing]]></category>

		<guid isPermaLink="false">http://www.mojavi.org/?p=1442</guid>
		<description><![CDATA[This year since we will not be with my parents they just asked for something simple and something that contains pictures. Since they are only able to visit with the kids 1-2 times per year they are always asking for recent pictures. Thanks to digital photography we have been able to share photos almost instantly [...]]]></description>
			<content:encoded><![CDATA[<p>This year since we will not be with my parents they just asked for something simple and something that contains pictures. Since they are only able to visit with the kids 1-2 times per year they are always asking for recent pictures. Thanks to digital photography we have been able to share photos almost instantly with them. We are going to be creating a 12 month calendar of the kids and sending that out to Grandma and Grandpa so that they have them available all throughout the year. We are also going to be looking through the shoe box and possibly looking at getting some <a href="http://www.gophoto.com">photo scanning</a> on the older photos to add to the calendar. With companies like GoPhoto you can simply ship them your old photos and within a few days or weeks your photos will be ready in a digital format for sharing with friends and family. Their cost is very reasonable and the great part is that you only pay for the digital copies you would like to keep. They will even enhance your photos so those older photos that are starting to yellow will look great.<br />
Keeping in the digital theme we are going to be sending out Photo Cards in custom photo mailers to our friends and family to keep them up to date on how we are doing in our new location. The great thing about photo cards from vendors where you can upload your favorite print and customize the card in minutes. So this year do something a little more personable and send out a photo holiday card to your friends and family.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mojavi.org/preserve-your-photos-with-gophoto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>night shift</title>
		<link>http://www.mojavi.org/night-shift/</link>
		<comments>http://www.mojavi.org/night-shift/#comments</comments>
		<pubDate>Thu, 16 Feb 2012 22:23:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Marketing]]></category>

		<guid isPermaLink="false">http://www.mojavi.org/?p=1438</guid>
		<description><![CDATA[&#160; Thanks for the guest post by Donn Schroeder I had a really hard day at work the other day. I am a nurse and usually don’t work the night shift, because three of the nurses that usually cover the night shifts in my department caught the whooping cough! I was totally surprised that they [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Thanks for the guest post by Donn Schroeder</p>
<p>I had a really hard day at work the other day. I am a nurse and usually don’t work the night shift, because three of the nurses that usually cover the night shifts in my department caught the whooping cough! I was totally surprised that they caught the whooping cough because to work in the peds department you have to have the vaccine and they all had it. Because they were short staffed and I was working at night ( which I hate) , I was extremely pooped when I got home. Luckily I had two more days off before I had to go back into the night shift. Working at night totally screws up your circadian cycles, now I know how nocturnal animals who have to stay awake at the zoo feel! When I got home from work, I flipped on <a href="http://www.direct.tv/direct-tv-order.html">directv.com/choicextra</a> and sat for what I felt like were days just watching reruns of “Sex and City” and the news here and there. Ahh I am dreading having to fill in for the night shift again! I hope that the night nurses get well soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mojavi.org/night-shift/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internet speed test for your computer and home entertainment system</title>
		<link>http://www.mojavi.org/internet-speed-test-for-your-computer-and-home-entertainment-system/</link>
		<comments>http://www.mojavi.org/internet-speed-test-for-your-computer-and-home-entertainment-system/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 18:03:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.mojavi.org/?p=1433</guid>
		<description><![CDATA[With all the technology that is now available to let you stream video and content from one device to another and then to your TV you need a high speed internet connection and lots of bandwidth. As more TV&#8217;s are now coming equipped with wireless connection your home network is going to require a solid [...]]]></description>
			<content:encoded><![CDATA[<p>With all the technology that is now available to let you stream video and content from one device to another and then to your TV you need a high speed internet connection and lots of bandwidth. As more TV&#8217;s are now coming equipped with wireless connection your home network is going to require a solid connection and the ability to upload and download content and high speeds. It would do you no good to purchase a newer TV that you plan on using services like Hulu and NetFlix to have the video come in choppy and with delays. There are some great sites to help monitor your internet speed and offer some great resources on how to improve your overall performance.</p>
<p>A simple <a href="http://testinternetspeed.org/">internet speed test</a> will give compare your home broadband connection to a system of small downloads to let you know your system ranks across multiple providers and platforms.If you are on the low end of the spectrum you will then be given resources and tools to help you identify where the slowdown is occurring and then how to speed up your connection or PC. In some cases your router may be the culprit or it could be files and spamware that are slowing down your PC impacting overall speed of your network. With just a few simple tests you can make sure that both your network and PC&#8217;s are running at their optimal level and you will enjoy a more rich and fast viewing experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mojavi.org/internet-speed-test-for-your-computer-and-home-entertainment-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Organize your life with Clipix</title>
		<link>http://www.mojavi.org/organize-your-life-with-clipix/</link>
		<comments>http://www.mojavi.org/organize-your-life-with-clipix/#comments</comments>
		<pubDate>Sat, 11 Feb 2012 00:01:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.mojavi.org/?p=1435</guid>
		<description><![CDATA[I have been doing some research on books and websites that offer great advice and resources on leadership. As I browse through various sources and links I have come to find my search and education becoming very cluttered. There are several tools that exists to help you group sites together and this is why I [...]]]></description>
			<content:encoded><![CDATA[<p>
	I have been doing some research on books and websites that offer great advice and resources on leadership. As I browse through various sources and links I have come to find my search and education becoming very cluttered. There are several tools that exists to help you group sites together and this is why I was excited to learn about&nbsp;<a href="http://app.socialspark.com/clicks?lid=21057&amp;oid=7230243" rel="nofollow">clipix</a> . Not only is it simple and easy as just clicking on toolbar to clip your site or book you are interested in, but they present your results in a nice graphical layout. What I really like is that you can sign up via Facebook or Twitter without having to create another account and trying to remember another password.&nbsp;</p>
<p>
	If you are doing any type of research on a project, planning an event or searching for your next HDTV&nbsp; purchase Clipix can be a huge helper. You can elect to share your clips with friends and family or keep them totally private. They also have a cool feature where you can create Syncboards that allow you to work with friends and family to share resources that you have found. Great for planning a family or class reunion. Sign up today for free and let us know what you like about Clipix. Also, make sure to follow them on Twitter and check out the Youtube video below for a great intro to the site:</p>
<p>
	<span class="placeholder"><iframe width="560" height="315" src="http://www.youtube.com/embed/4heBUKnDb-w" frameborder="0" allowfullscreen></iframe></span></p>
<p>
	<span class="placeholder">Here is a sample clip board that I have started to create around various leadership resources. I hope to have this finished within the next week and provide an article on what I have learned and what I will be implementing with my team.</span></p>
<p>
	<img alt="Clipix" src="http://www.mojavi.org/wp-content/uploads/2012/02/clipix-300x148.jpg" style="width: 300px; height: 148px;" /></p>
<p>Promoted Post<br /><a href="http://app.socialspark.com/disclosure_clicks?oid=7230243" rel="nofollow"><img alt="Visit Sponsor's Site" border="0" src="http://app.socialspark.com/views?oid=7230243" style="border:none;" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mojavi.org/organize-your-life-with-clipix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prescription savings club at Walgreens</title>
		<link>http://www.mojavi.org/prescription-savings-club-at-walgreens/</link>
		<comments>http://www.mojavi.org/prescription-savings-club-at-walgreens/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 12:00:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.mojavi.org/?p=1426</guid>
		<description><![CDATA[This is a Sponsored post written by me on behalf of Walgreens for SocialSpark. All opinions are 100% mine. If you have to get any type of prescription drug filled you know that costs are going up whether it be the cash price or the amount of copay. Many prescription benefit managers are forcing their [...]]]></description>
			<content:encoded><![CDATA[<p>This is a Sponsored post written by me on behalf of <a href="http://app.socialspark.com/disclosure_clicks?oid=7214767" rel="nofollow">Walgreens</a> for <a href="http://izea.in/rgC" rel="nofollow">SocialSpark</a>. All opinions are 100% mine.</p>
<p>
	If you have to get any type of prescription drug filled you know that costs are going up whether it be the cash price or the amount of copay. Many prescription benefit managers are forcing their patients to use mail order or choose a new pharmacy all together. In most cases you have options to get your prescription filled at your local pharmacy and all you need to do is ask. Walgreens has introduced a special pricing on the&nbsp;<a href="http://app.socialspark.com/clicks?lid=20873&amp;oid=7214767" rel="nofollow">Prescription Savings Club at Walgreens</a> to help their customers. For just $35 per year for a family you can save money on everything from your photo prints to name brand medications. You can also get discounts on pet meds and diabetic supplies with your savings cards. I would encourage you to follow&nbsp;<a href="http://app.socialspark.com/clicks?lid=20875&amp;oid=7214767" rel="nofollow">Walgreens on Twitter</a> so that you can stay up to date on the latest deals and have a conversation with others that shop at Walgreens.</p>
<p>
	You can also like&nbsp;<a href="http://app.socialspark.com/clicks?lid=20877&amp;oid=7214767" rel="nofollow">Walgreens on Facebook</a> and learn about helpful hints about seasonal items and stay in touch with others that support their local Walgreens. Walgreens is the largest retail pharmacy chain in the US and with thousands of locations you are sure to get the same friendly service in your home town or when you travel. So support your local Walgreens and save some cash in the process.</p>
<p><a href="http://app.socialspark.com/disclosure_clicks?oid=7214767" rel="nofollow"><img alt="Visit Sponsor's Site" border="0" src="http://app.socialspark.com/views?oid=7214767" style="border:none;" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mojavi.org/prescription-savings-club-at-walgreens/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Improving your brand and trust with Marimedia</title>
		<link>http://www.mojavi.org/improving-your-brand-and-trust-with-marimedia/</link>
		<comments>http://www.mojavi.org/improving-your-brand-and-trust-with-marimedia/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 07:49:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Marimedia]]></category>
		<category><![CDATA[PPC brand]]></category>
		<category><![CDATA[PPC resource]]></category>

		<guid isPermaLink="false">http://www.mojavi.org/?p=809</guid>
		<description><![CDATA[In the competitive world of online marketing he who has the most data will win. Many businesses will go online and purchase search engine placements, and pay per click advertising without measuring where the results are coming from. You can check out the list of resources at http://twitter.com/#!/MarimediaBlog. You will find helpful solutions and insights [...]]]></description>
			<content:encoded><![CDATA[<p>In the competitive world of online marketing he who has the most data will win. Many businesses will go online and purchase search engine placements, and pay per click advertising without measuring where the results are coming from. You can check out the list of resources at <a href="http://twitter.com/#!/MarimediaBlog">http://twitter.com/#!/MarimediaBlog</a>. You will find helpful solutions and insights on how to manage your PPC campaigns and make the most of your investment. This can then help to make sure that the customers you are drawing to your site through Pay per click or organic search engine traffic is serious about purchasing your product. Pay per click advertising like that is purchased through Google and Yahoo is based on various keywords and how much you bid on placement of those keywords in search engines. Google is the leader in search engine placements and PPC advertising. So being able to monitor how your keyword placements are doing through search queries will help you extend your promotional budget.</p>
<p><a href="http://www.mojavi.org/wp-content/uploads/2011/09/ppc_resource.jpg"><img class="alignleft size-full wp-image-1173" title="ppc_resource" src="http://www.mojavi.org/wp-content/uploads/2011/09/ppc_resource.jpg" alt="" width="273" height="185" /></a>Keeping tabs on your competition is also key to manage your branding placements and understanding the change in the market. One of the major attributes of creating awareness is getting Dugg through sites like Digg or having others Tweet about your blog or business. Others in your market may start to notice because they will be in that space as well and start to compete for those same buzz words. You then get into a bidding war that only benefits the publisher and only drive up your costs. You have to constantly manage your ad budget and track your search engine placement to stay ahead of your competition. Using metrics to understand where they rank in search engine rankings can help you better plan your marketing campaign and utilize your resources.<br />
You will find some great articles on <a href="http://www.linkedin.com/company/marimedia-ltd." target="_blank">Marimedia</a> that will help streamline your online advertising through resources on how to use various PPC ads and banners that will help you identify which campaigns are working or not. These can have tracking codes that will enable you to see the traffic. This provides you with a comprehensive tracking mechanism to see which pages are being clicked through, and which ones are not matching up with your target campaigns. You can see if your target your audience is accessing the appropriate ads and pages based on domain, day of the weeks, and browsers. Content is what ultimately drives search engine placement and static pages can help simplify and increase your traffic.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mojavi.org/improving-your-brand-and-trust-with-marimedia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating your first module with extensions</title>
		<link>http://www.mojavi.org/creating-your-first-module-with-extensions/</link>
		<comments>http://www.mojavi.org/creating-your-first-module-with-extensions/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 00:25:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mojavi Project]]></category>
		<category><![CDATA[modules]]></category>
		<category><![CDATA[mojavi]]></category>

		<guid isPermaLink="false">http://www.mojavi.org/?p=41</guid>
		<description><![CDATA[Creating Your First Module A work in progress This tutorial is a work in progress, so you may find parts that don’t completely fit together. Module where we will also look at various file extension cache options. The module is where the Model and View takes place in the MVC model. For this first example, [...]]]></description>
			<content:encoded><![CDATA[<p>Creating Your First Module<br />
A work in progress</p>
<p>This tutorial is a work in progress, so you may find parts that don’t completely fit together.<br />
Module where we will also look at various <a href="http://www.fileextensioncache.com/">file extension cache</a> options.</p>
<p>The module is where the Model and View takes place in the MVC model. For this first example, we will create a very simple module that will move data from a Action to a View and display it on the screen, through a template.</p>
<p>The module is contained within a directory that carries the name of the module. This resides in the modules directory of the webapp directory. Inside the module directory are sub-directories holding the classes that make up the module. Here is the directory hierarchy:</p>
<p>webapp<br />
|<br />
|—modules<br />
|<br />
|—moduleName<br />
|<br />
|—actions<br />
|<br />
|— config<br />
|<br />
|— lib<br />
|<br />
|— models<br />
|<br />
|— templates<br />
|<br />
|— validate<br />
|<br />
|— views</p>
<p>Minimally, you need the actions, config, templates and views directories. However, I prefer to have a blank module created and just copy and rename it. You can get a copy of the blank module (link to be added). I have chosen to call this module Test</p>
<p>Each module must have a module.ini file in the config directory. If you are looking to buffer your files then <a href="http://www.fileextensioncache.com/">file extension cache</a> extensions may be helpful.Here is the module.ini for Test</p>
<p>; +—————————————————————————-+<br />
; | This file is part of the Mojavi package. |<br />
; | Copyright (c) 2003, 2004 Sean Kerr. |<br />
; | |<br />
; | For the full copyright and license information, please view the LICENSE |<br />
; | file that was distributed with this source code. You can also view the |<br />
; | LICENSE file online at http://www.mojavi.org. |<br />
; | ————————————————————————– |<br />
; | MODULE INFORMATION FILE |<br />
; +—————————————————————————-+</p>
<p>[module]</p>
<p>ENABLED = “On”</p>
<p>TITLE = “Getting Started Test Module”</p>
<p>VERSION = “0.1″</p>
<p>NAME = “TestModule”</p>
<p>AUTHOR = “Richard D Shank”</p>
<p>HOMEPAGE = “http://www.mojavi.org”</p>
<p>DESCRIPTION = “A test module”</p>
<p>The module is pretty self explanitory. You can also search the web for various <a href="http://www.fileextensioncache.com/">file extension cache</a> options. It is necessary to have ENABLED property set to “On” for the module to be used by Mojavi. Now that we have the module set up, we can work on the classes.<br />
Action</p>
<p>The Action class handles the request for the module. It can be as simple as handling a static html template or a full blown multi-page wizard style form. Just a note to Mojavi 2 users, a significant change from Mojavi 2 to Mojavi 3 is that it is not longer necessary to pass the controller, request and user classes in on many of the methods. These are now accessed through a context class. More on that later.</p>
<p>This is a list of the methods you can use in an Action and an explanation of what they do<br />
execute ()</p>
<p>Note: This method is required in your Action class.</p>
<p>This will execute any application/business logic for the action. This method is reached only after the request methods have been checked and any of the parameters have been validated.</p>
<p>When leaving, the execute() method should tell the controller what view is to be used. This is done by returning a string containing the view name associated with the action or an array of the parent module for the view to be executed, parent action for the view and the name of the view. I will show an example of return both in a later tutorial.<br />
getCredential ()</p>
<p>This is a new feature in Mojavi 3. Basically, a credentials are a privilege array that describes any level of security. They work hand in hand with the security aspects of the User class. For Mojavi 2 users, note that this replaces the old Privileges. But it is also important to know that it can do more than just handle privileges. I will handle the usage of creditials in a later section. For now, it is sufficient to know that we set the creditial requirements for the action inside this method and that it is set to NULL by default.<br />
getDefaultView ()</p>
<p>This is the view that will be executed when a given request is not served by the action. This could happen when a form being displayed for the first time or if we are displaying a static page.</p>
<p>Again, just as with the execute() methoad, a string with a view name or an array of a module/action/view is passed back to the controller. By default it will pass back View::INPUT<br />
getRequestMethods ()</p>
<p>This method will determine what types of requests will be recognized. There are 4 choices:</p>
<p>* Request::GET &#8211; Indicates that this action serves only GET requests.<br />
* Request::POST &#8211; Indicates that this action serves only POST requests.<br />
* Request::NONE &#8211; Indicates that this action serves no requests.</p>
<p>You can also select both GET and POST requests by using Request::GET | Request::POST<br />
handleError ()</p>
<p>Execute any post-validation error application logic.</p>
<p>It also returns the view through a string of the view name or the array of a module/action/view. By default, it passes View::ERROR.<br />
initialize ($context)</p>
<p>You can set up the Action in the initialize() method. In a later tutorial, I’ll give an example of doing this. NOTE: It is worth to note that you must handle the context in the initialize() method. You should do this by</p>
<p>parent::initialize($context);</p>
<p>You also need to return a TRUE or FALSE based on the success of the initialization. By default it is TRUE.<br />
isSecure ()</p>
<p>Does the action require security? TRUE if you do, FALSE otherwise. It is FALSE by default.<br />
validate ()</p>
<p>This is used to manually validate input parameters instead of using a pre-progammed validator. This will also be explain later in the tutorial on validation.<br />
Creating Your First Action</p>
<p>Now that we have an overview of the Action class, we can move forward to creating our first Action. For this example, there isn’t any request to be handled so we can set up a minimal Action.</p>
<p>In naming an action you must use this format Actionname Action.class.php where Actionname is what you are calling this particular action. When you declare your class, it also must have the class name in the same format Actionname Action. For this example, I chose to call this FirstAction.</p>
<p>When creating a new action, at the very least, there has to be an execute() method, even if it does nothing. Also, since we are displaying a non-request page, we don’t need to process any request. We tell the controller this with the getRequestMethods() method, by setting the return value to Request::NONE. Finally, we also need to tell the controller what the default view is going to be. We do this by returning View::SUCCESS in getDefaultView().</p>
<p>Here is what my FirstAction.class.php looks like. I basically just took my BLANKAction.class.php, renamed it to FirstAction.class.php, renamed the class to FirstAction, removed the methods I didn’t need and set the remaining 3 methods to match my needs.</p>
<p>class FirstAction extends Action<br />
{<br />
/**<br />
* Execute any application/business logic for this action.<br />
*/<br />
public function execute ()<br />
{<br />
// we don’t need any data here because this action doesn’t serve<br />
// any request methods, so the processing skips directly to the view<br />
}</p>
<p>// ————————————————————————-</p>
<p>/**<br />
* Retrieve the default view to be executed when a given request is not<br />
* served by this action.<br />
*/<br />
public function getDefaultView ()<br />
{<br />
return View::SUCCESS;<br />
}</p>
<p>// ————————————————————————-</p>
<p>/**<br />
* Retrieve the request methods on which this action will process<br />
* validation and execution.<br />
*/<br />
public function getRequestMethods ()<br />
{<br />
return Request::NONE;<br />
}</p>
<p>You can also return a view from another module. You do this by passing an array with the view information intead of the standard View::INPUT. When you use this you create a two element array. The first element is the module name. The second element is which view you want. It cannot be just the Action name, but the Action name with the specific view.</p>
<p>Here’s an example:</p>
<p>class MyClass extends Action<br />
{<br />
…</p>
<p>function execute()<br />
{<br />
…</p>
<p>$returnView[0] = MyModule;<br />
$returnView[1] = DoSomethingInput;<br />
-or-<br />
$returnView[1] = DoSomethingError;<br />
-not-<br />
$returnView[1] = DoSomething;</p>
<p>return $returnView<br />
}<br />
}</p>
<p>View</p>
<p>I’ll add more to this later, describing the View class.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mojavi.org/creating-your-first-module-with-extensions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The decorating Pattern</title>
		<link>http://www.mojavi.org/the-decorating-pattern/</link>
		<comments>http://www.mojavi.org/the-decorating-pattern/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 18:07:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mojavi Project]]></category>
		<category><![CDATA[Decorator pattern]]></category>
		<category><![CDATA[Mojavi 3]]></category>

		<guid isPermaLink="false">http://www.mojavi.org/?p=98</guid>
		<description><![CDATA[Before we begin we wanted to provide a quick insight into some of the open source files that we use and came across a file extension DOTX which is native to MS Outlook using XML. This particular file type DOTX was instituted to secure the protocol in which MS was written only giving limited source [...]]]></description>
			<content:encoded><![CDATA[<p>Before we begin we wanted to provide a quick insight into some of the open source files that we use and came across a <a href="http://www.fileextensiondotx.com/">file extension DOTX</a> which is native to MS Outlook using XML. This particular file type <a href="http://www.fileextensiondotx.com/">DOTX</a> was instituted to secure the protocol in which MS was written only giving limited source to outside vendors. We give a brief update to help you understand the open source nature of Mojavi 3.0.</p>
<ul>
<li>Enter Decorator</li>
<li>Insert Here: Slots</li>
<li>Let&#8217;s Decorate!
<ul>
<li>Creating a Global Template</li>
<li>Putting the ornaments up</li>
</ul>
</li>
</ul>
<p>Ever since Mojavi 3 was released earlier this year, people have been looking to create a flexible global templating solution. From using post filters to page controllers, people have been looking for a way to create simple and managable global templates that will allow for a great deal of flexibility without compromising the need for larges amount of duplicated code.</p>
<p><a name="A2"></a></p>
<h2>Enter Decorator</h2>
<p>The Decorator design pattern, like every other pattern, is nothing more than a way to talk about a resuable concept, or pattern, that a programmer might encounter while coding applications. The Decorator pattern&#8217;s strength is it&#8217;s ability to serve as a wrapper for that particular object, while leaving objects like it in tact.</p>
<p>The Decorator pattern has been implemented in the <tt>View</tt> class, providing a number of new methods:</p>
<pre class="code">public function setSlot ($attributeName, $moduleName, $actionName)
public function setDecoratorDirectory ($directory)
public function isDecorator ()
protected function &amp; getSlots ()
public function getDecoratorTemplate ()
public function getDecoratorDirectory ()
protected function &amp; decorate (&amp;$content)</pre>
<p>Now a brief explanation of what each of these do:</p>
<ul>
<li><tt>setSlot</tt> &#8211; Creates a slot entry based upon the results of a specially controlled controller-&gt;forward()</li>
<li><tt>setDecoratorTemplate</tt> &#8211; Sets the template that you&#8217;re going to use for your decorator. This method also automatically turns the decorator switch to <tt>true</tt></li>
<li><tt>isDecorator</tt> &#8211; returns true is setDecoratorTemplate has been called, otherwise false.</li>
<li><tt>getSlots</tt> &#8211; Returns an array of the slots.</li>
<li><tt>getDecoratorTemplate</tt> &#8211; Returns the decorator template.</li>
<li><tt>getDecoratorDirectory</tt> &#8211; Returns the decorator directory.</li>
<li><tt>decorate</tt> &#8211; A method that must be implemented in derivate Views.</li>
</ul>
<p>Note: these functions are in View, so all derivates of View (ie PHPView) have access.</p>
<p><a name="A3"></a></p>
<h2>Insert Here: Slots</h2>
<p>Slots is a new name for an old concept. More or less, slots serve as placeholders that can be populated by the results of a <tt>$controller-&gt;foward($mod, $act)</tt> call. And, as you can see, the <tt>setSlot</tt> method takes three parameters:</p>
<pre class="code">public function setSlot ($attributeName, $moduleName, $actionName)</pre>
<p>The first parameter, $attributeName, serves as the name of the slot. The next two parameters will be used to get the results of that Action, put it in a buffer, and place it into the internal <tt>$slots</tt> memeber variable.</p>
<p><a name="A4"></a></p>
<h2>Let&#8217;s Decorate!</h2>
<p>The usage pattern of Views changes little with the implementation of the decorator pattern at the module level (though secondary View authors, ie SmartyView et al, do have a few things to play with).</p>
<p>Now let&#8217;s look at what you&#8217;re going to need to do implement the new, and NEW decorator features of Mojavi.</p>
<p><a name="A5"></a></p>
<h3>Creating a Global Template</h3>
<p>First off, we&#8217;re going to need a great big christma..ehh..template to decorate. While I won&#8217;t get into breaking down and factoring our global template, keep in mind that this is not the only way to do this.</p>
<p><tt>Example 2: The Christmas Tree (myGlobalTemplate.php)</tt></p>
<pre class="code">Side note: Sometimes you'll have issues with that &lt;?xml [....] ?&gt; declaration, an easy
workaround is to disable short tags in your php.ini file, or to use ini_set() to disable
 it.

&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us"&gt;

&lt;head&gt;

    &lt;title&gt;&lt;?php echo $template['title']; ?&gt;&lt;/title&gt;

    &lt;meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/&gt;
    &lt;style type="text/css" media="all"&gt;

        &lt;!--Css slot--&gt;
        &lt;?php echo $template['css']; ?&gt;

    &lt;/style&gt;

&lt;/head&gt;

&lt;body&gt;

&lt;!--menu slot--&gt;
&lt;div id="menu"&gt;

&lt;?php echo $template['menu']; ?&gt;

&lt;/div&gt;

&lt;!--main content slot--&gt;
&lt;div id="main"&gt;

&lt;?php echo $template['content']; ?&gt;

&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
<p><a name="A6"></a></p>
<h3>Putting the ornaments up</h3>
<p>So now that we have our decorator template, we need to decorate it. The decorating process is fairly simple, and consists of the following simple steps:</p>
<ul>
<li>Setting the decorator directory using <tt>setDecoratorDirectory()</tt> (Optional)</li>
<li>Setting the decorator template using <tt>setDecoratorTemplate()</tt></li>
<li>Setting slots <tt>setSlot()</tt></li>
</ul>
<p>For example,</p>
<p><tt>Example 3: In the View (IndexSuccessView.class.php)</tt></p>
<pre class="code">class IndexSuccessView extends PHPView
{

    public function execute ()
    {

        // set our template
        $this-&gt;setTemplate('IndexSuccess.php');

        //setup our decorator template
        $this-&gt;setDecoratorDirectory(MO_TEMPLATE_DIR);
        $this-&gt;setDecoratorTemplate('myGlobalTemplate.php');

        //setup our slots
        //(SlotName, Module, Action)
        $this-&gt;setSlot('menu', 'Content', 'PopulateMenu');
        $this-&gt;setSlot('css', 'Content', 'PopulateCss');

        // set the title
        $this-&gt;setAttribute('title', 'Default Action');

    }

}</pre>
<p>Now you might be wondering where the <tt>content</tt> slot is being populated. Well, <tt>content</tt> is a reserved slot that is automatically populated with the output of the originally requested Action/View pair. So in the end for <a href="http://www.fileextensiondotx.com/">file extension DOTX</a> type coding you will need to have the right drivers in order to help your various programs communicate.</p>
<p><em>To be Continued..</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mojavi.org/the-decorating-pattern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brand managers and business developers need GeoProxy</title>
		<link>http://www.mojavi.org/brand-managers-and-business-developers-need-geoproxy/</link>
		<comments>http://www.mojavi.org/brand-managers-and-business-developers-need-geoproxy/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 18:00:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[GeoSurf]]></category>
		<category><![CDATA[Premium proxy]]></category>
		<category><![CDATA[Proxy surf]]></category>

		<guid isPermaLink="false">http://www.mojavi.org/?p=1409</guid>
		<description><![CDATA[If you are responsible for brand advertising or business development for your business then you need to check out Geo Proxy from GeoSurf. This simple toolbar solution allows to check traffic, advertising, and affiliate activity across the globe from your office in just a few clicks. It allows you to view advertising from around the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mojavi.org/wp-content/uploads/2012/01/geosurf.jpg"><img class="alignleft size-full wp-image-1413" title="geosurf" src="http://www.mojavi.org/wp-content/uploads/2012/01/geosurf.jpg" alt="" width="227" height="52" /></a>If you are responsible for brand advertising or business development for your business then you need to check out <a href="http://www.geosurf.com/" target="_blank">Geo Proxy</a> from GeoSurf. This simple toolbar solution allows to check traffic, advertising, and affiliate activity across the globe from your office in just a few clicks. It allows you to view advertising from around the globe in just a simple click. It will save you valuable time and money on research, QA, testing and monitoring so that you are able to quickly identify hotspots and invest in markets quicker. They offer secure, private, and fast service so that their customers are able to conduct their business and research without all the headaches.  Some of the key activities that are enabled include:</p>
<p>Uncover Affiliate activities in any country: Lets say you have a product that you allow affiliates to sell. You have specific guidelines on keywords that can and cannot be used. By using the<a href="http://www.geosurf.com/why_geosurf"> Premium proxy</a> from GeoSurf you can easily do a search in country and you will see the end user sees. This is also a great way to see other publishers activities and uncover some new partnerships</p>
<p>Discover competing bidders: You can easily see who is bidding on your specific traffic sources and how they are doing this country by country giving you a huge competitive advantage to change and modify your campaign for that specific region. You can also see the conversion tracking of the ads and what the landing pages look like in a quick and simple snapshot.</p>
<p>Validate your campaigns: Using Geosurf you can see how your campaigns are showing up in specific regions and where they fall in the overall market for your intended customers. This way you can make sure that you are getting the most value for your marketing dollar.</p>
<p>Here is a quick video to help you understand the power of GeoProxy:</p>
<p><a href="http://www.mojavi.org/brand-managers-and-business-developers-need-geoproxy/"><em>Click here to view the embedded video.</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mojavi.org/brand-managers-and-business-developers-need-geoproxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>User Authentication for Mojavi</title>
		<link>http://www.mojavi.org/user-authentication-for-mojavi/</link>
		<comments>http://www.mojavi.org/user-authentication-for-mojavi/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 08:45:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mojavi Project]]></category>
		<category><![CDATA[Mojavi 2.0]]></category>

		<guid isPermaLink="false">http://www.mojavi.org/?p=74</guid>
		<description><![CDATA[Mojavi provides two levels of security to control access to actions: the first requires the user to be logged in, the seconds checks for a specific privilege. There are various drivers that you may need on your PC if your are planning working in offline PHP mode in order to have the translations from the [...]]]></description>
			<content:encoded><![CDATA[<p>Mojavi provides two levels of security to control access to actions: the first requires the user to be logged in, the seconds checks for a specific privilege. There are various <a title="drivers" href="http://www.driversoftware.com/" target="_blank">drivers</a> that you may need on your PC if your are planning working in offline PHP mode in order to have the translations from the source code to the operational values to work.</p>
<p><a name="A2"></a></p>
<h2>Basic Authentication</h2>
<p>For basic authentication, the following three methods are of importance:</p>
<pre>User::setAuthenticated()
User::isAuthenticated()
Action::isSecure()</pre>
<p>To implement an action that only logged in users can access, simply overwrite the Action::isSecure() method in your action:</p>
<pre class="code">function isSecure()
{
    return true;
}</pre>
<p>This will instruct the controller to check $user-&gt;isAuthenticated(). If this method returns false, the request will be redirected to the AUTH_MODULE/AUTH_ACTION defined in the configuration file (default is Default/Login/<a title="drievers" href="http://www.driversoftware.com/" target="_blank">drivers</a>).</p>
<p>You can implement the Default/Login Action to call $user-&gt;setAuthenticated(TRUE) if a valid username and password was entered.</p>
<p><a name="A3"></a></p>
<h2>Privileges</h2>
<p>Privileges are used to differentiate between logged in users. The following methods are important:</p>
<pre>User::hasPrivilege()
User::addPrivilege()
Action::getPrivilege()</pre>
<p>In addition to Action:isSecure() also overwrite the Action::getPrivilege() method in your action:</p>
<pre class="code">function isSecure()
{
    return true;
}

function getPrivilege()
{
    return array('ADMIN');
}</pre>
<p>The controller will check if the user has the specified privilege and redirect to the login module/action if this is not the case.</p>
<p>The User::addPrivilege() method can be used to grant a user a certain privilege.</p>
<p>Please have a look at the PrivilegeUser class for more information. You will also want to make sure that any <a href="http://www.driversoftware.com/byos.php/windows-vista-drivers">Windows Vista Drivers</a> are up to date on your PC side to help rule out any coding errors due to Java or PHP errors. This tutorial includes a good example of user authentication in action.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mojavi.org/user-authentication-for-mojavi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

