Hybrids get a lift

0 comments

Posted on 7th March 2016 by Jeff Rogers in Technology

, ,

If you are looking to repair one of the newer cars and looking for parts like a Ignition Coil then check out BuyAutoParts.com. As the technology advances and fuel costs remain concern for many Americans and those globally the need to make these cars more affordable and comfortable will become a priority.

There is even a new Porsche Cheyenne Hybrid model that is out for all those with some extra cash and looking to do something good for the environment. As hybrids become more of a mainstream vehicle you will see advancements in battery cell life that is part of the energy savings feature with the incorporation of different types of fuel sources. If you are unsure of what to get that person on your Christmas list that has just invested in a new hybrid vehicle then you may want to consider a gift card from companies like buyautoparts.com where they offer a great selection of parts for your vehicle.

Global Templating revisted

0 comments

Posted on 6th March 2016 by Jeff Rogers in Mojavi Project

,

Global Templating – The Decorator Pattern

* Enter Decorator
* Insert Here: Slots
* Let’s Decorate!
o Creating a Global Template
o Putting the ornaments up

Ever since Mojavi 3 was released earlier this year, people have been looking to create a flexible global templating solution. From using post filters and various drivers and page controllers, people have been looking for a way to create simple and manageable global templates that will allow for a great deal of flexibility without compromising the need for larges amount of duplicated code.
Enter Decorator

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’s strength is it’s ability to serve as a wrapper for that particular object, while leaving objects like it in tact.

The Decorator pattern has been implemented in the View class, providing a number of new methods:

public function setSlot ($attributeName, $moduleName, $actionName)
public function setDecoratorDirectory ($directory)
public function isDecorator ()
protected function & getSlots ()
public function getDecoratorTemplate ()
public function getDecoratorDirectory ()
protected function & decorate (&$content)

Now a brief explanation of what each of these do:

* setSlot – Creates a slot entry based upon the results of a specially controlled controller->forward()
* setDecoratorTemplate – Sets the template that you’re going to use for your decorator. This method also automatically turns the decorator switch to true
* isDecorator – returns true is setDecoratorTemplate has been called, otherwise false.
* getSlots – Returns an array of the slots.
* getDecoratorTemplate – Returns the decorator template.
* getDecoratorDirectory – Returns the decorator directory.
* decorate – A method that must be implemented in derivate Views.

Note: these functions are in View, so all derivates of View (ie PHPView) have access.
Insert Here: Slots

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 $controller->foward($mod, $act) call. And, as you can see, the setSlot method takes three parameters:

public function setSlot ($attributeName, $moduleName, $actionName)

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 $slots memeber variable.
Let’s Decorate!

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).

Now let’s look at what you’re going to need to do implement the new, and NEW decorator features of Mojavi. Also a special note to make sure that your graphics ati drivers are up to date so that you are able to test and view the configurations with the latest version of PHP 4.0
Creating a Global Template

First off, we’re going to need a great big christma..ehh..template to decorate. While I won’t get into breaking down and factoring our global template, keep in mind that this is not the only way to do this.

Example 2: The Christmas Tree (myGlobalTemplate.php)

Side note: Sometimes you’ll have issues with that <?xml [….] ?> declaration, an easy
workaround is to disable short tags in your php.ini file, or to use ini_set() to disable
it.

<?xml version=”1.0″ encoding=”iso-8859-1″?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN” “http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en-us”>

<head>

<title><?php echo $template[‘title’]; ?></title>

<meta http-equiv=”Content-Type” content=”application/xhtml+xml; charset=utf-8″/>
<style type=”text/css” media=”all”>

<!–Css slot–>
<?php echo $template[‘css’]; ?>

</style>

</head>

<body>

<!–menu slot–>
<div id=”menu”>

<?php echo $template[‘menu’]; ?>

</div>

<!–main content slot–>
<div id=”main”>

<?php echo $template[‘content’]; ?>

</div>

</body>
</html>

Putting the ornaments up

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:

* Setting the decorator directory using setDecoratorDirectory() (Optional)
* Setting the decorator template using setDecoratorTemplate()
* Setting slots setSlot()

For example,

Example 3: In the View (IndexSuccessView.class.php)

class IndexSuccessView extends PHPView
{

public function execute ()
{

// set our template
$this->setTemplate(’IndexSuccess.php’);

//setup our decorator template
$this->setDecoratorDirectory(MO_TEMPLATE_DIR);
$this->setDecoratorTemplate(’myGlobalTemplate.php’);

//setup our slots
//(SlotName, Module, Action)
$this->setSlot(’menu’, ‘Content’, ‘PopulateMenu’);
$this->setSlot(’css’, ‘Content’, ‘PopulateCss’);

// set the title
$this->setAttribute(’title’, ‘Default Action’);

}

}

Now you might be wondering where the content slot is being populated. Well, content is a reserved slot that is automatically populated with the output of the originally requested Action/View pair. If you have any issues please report them and check your intel drivers and other settings to make sure your server is running all the latest patches.

To be Continued….

Mojavi 3 Part 2

0 comments

Posted on 5th March 2016 by Jeff Rogers in Mojavi Project

This is a list of the methods you can use in an Action and an explanation of what they do
execute ()

Note: This method is required in your Action class. Also there are File Extension SVG which stand for scalable vector graphics

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.

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.
getCredential ()

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.
getDefaultView ()

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. Be sure to reset any variable in the graphic engine and search out the File Extension SVG portions by using a simple search.

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
getRequestMethods ()

You can also return a view from another module. You do this by passing an array with the view information instead 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 file extension Action name with the specific view.

Here’s an example:

class MyClass extends Action
{

function execute()
{

$returnView[0] = MyModule;
$returnView[1] = DoSomethingInput;
-or-
$returnView[1] = DoSomethingError;
-not-
$returnView[1] = DoSomething;

return $returnView
}
}

View

I’ll add more to this later, describing the View class.

Sonora is one of the top BC resorts that you should visit

1 comment

Posted on 4th March 2016 by Jeff Rogers in Marketing

Whether your idea of a great getaway is fly fishing, whale watching, or simply relaxing near the ocean then Sonora one of BC resorts top destination may be for you. Located in Western Canada about an hour flight north of Vancouver you will find a full service spa that features a hot mineral pool. Once your daytime activities you can wine and dine in their restaurant that overlooks the Pacific Ocean while their chef prepare one of several Pacific Northwest top cuisines. If you love to fish then you can tap into the fly fishing expert located on the property where you can charter a boat to take you to some of the best fishing in the Pacific Ocean. This part of the world is amazing and you will be hard pressed not to come back because there are so many different types of activities to do.

Found it!

0 comments

Posted on 3rd March 2016 by Jeff Rogers in Technology

Guest post of the week by Deangelo Spencer

I have really been hurting for home Internet and satellite ever since I moved to this new place, so last week I did some research on Clear Bundle systems and found a bundle package that has everything I need for my home. Since I work from home, I often keep the TV on in the background, so it’s important to me to have a lot of channels to choose from while I’m working. The TV noise definitely makes it seem less lonely around my house! I really feel like the characters on the TV are my coworkers, even though I know that’s silly, but either way, it keeps me from going crazy here by myself all day long. I had toyed with the idea of not getting cable or Internet at home, but in retrospect there’s just no way I can not be connected to the outside world, even if it would save me a little bit of money in the long run. Thankfully, there are some good deals out there and cable won’t bleed me dry.

Managing your business on the go

0 comments

Posted on 2nd March 2016 by Jeff Rogers in Technology

In order for businesses to compete in today’s fast paced world you need to be accessible at any point during the day. With the 24 hour access that customers want through websites, blogs, and social networking sites a company has to plan for these ways to interact with their customers. Your Business Phone Service should be able to accommodate your employees and customers the same way by allowing them to work and engage you from anywhere necessary. With solutions from Easy Office Phone you can now reduce your overall telecommunication costs while giving your employees and customers access 24/7. Imagine being able to conference with your team at the same time no matter where they are in the country through one simple solution. Using your smartphone to answer your business line even when you are away from the office. You can give your teams and your company a national presence to make your customers feel closer your company.

With simple solutions that can allow you to use your existing telephone equipment or simply using your PC you can have a number that interact no matter what medium you are using. Your sales people can have their extension ring out to their cell phone even if they are thousands of miles away while giving a local presence. Small to medium sized businesses can benefit from this solution while cutting their overall costs and helping to improve their customer interaction.

Visit one of the top BC resorts

0 comments

Posted on 1st March 2016 by Jeff Rogers in Marketing

British Columbia is home to some of the best fishing and skiing in the world. Whistler Mountain and Vancouver, BC hosted the 2010 Winter Olympics and the world got to see the beauty of Canada. For those looking to vacation in the area you can visit one of the top BC resorts at Sonora. Located on the Inside pasage of the Pacific Ocean. You can take a helicopter to view glaciers one day, and then go fly fishing for salmon the other day. At the end of each day you can relax at their luxury spa and enjoy a full body wrap or soak in a hot mineral pool. No matter what you are looking for you are sure to find the perfect balance of nature and luxury in this all-inclusive resort.

Relax at Sonora Spa resorts BC

0 comments

Posted on 29th February 2016 by Jeff Rogers in Marketing

,

Imagine waking up with views of the Pacific ocean then getting ready to head out on fishing adventure for salmon to then return to a hot mineral pool to soak before heading off to a find dining experience. All of these adventures and pampering located at the Sonora Spa resorts BC. Situated about an hour north via plane from Vancouver, BC you will have access to trails, water rafting, world class fishing, and some of the best food in Canada. At Sonora resort and spa they pride themselves on pampering their guests and with the amenities like full body wraps, full indoor tennis courts, and an amazing view of the Pacific Ocean you are sure to find something that will take your mind off the daily grind. Whether you are celebrating an anniversary or just looking to get away there is so much to do you are sure to make a return visit.

Vacation at Spa resorts BC

0 comments

Posted on 28th February 2016 by Jeff Rogers in Marketing

If you have some vacation time that you are looking to take before the end of summer then I would look at Sonora Spa resorts BC. Located in the beautiful British Columbia province you will have access to majestic mountains, rivers, and natural forests. You can have the staff at Sonora recommend your days activities that can include outdoor hiking followed up by a relaxing day at their world class spa. There is no better way to spend your vacation than relaxing in a hydrotherapy tub with 252 programmable jets and then jumping in one of the outdoor warm mineral pools to take your mind off the demands at work and recharge your batteries. This is also a great place to consider for that upcoming anniversary to celebrate with the one that you love.

Victoria Condos a new place to live

0 comments

Posted on 27th February 2016 by Jeff Rogers in Marketing

Sometimes it is good to take a step back in time and this is true when it comes to housing. The Union victoria condos are creating that sense of nostalgia with the brick and upturned eaves with the comforts of today’s technology and convenience of being close to downtown. The housing market across the region has been slowing and people are looking to step into a property with lower upkeep and closer to work. These condos are offering a great way of life with many of the arts,restaurants, and local conveniences all within walking distance so that you can enjoy life. For those looking to live downtown and be a part of a neighborhood that is constantly buzzing with excitement then victoria condos might be your next place to call home.

Finding the right CRM for your business

0 comments

Posted on 26th February 2016 by Jeff Rogers in Technology

In today’s competitive business environment connecting with your customers is even more critical with all the channels they have to gain information and make purchases. Equipping your sales people with the latest data and marketing objectives so that when they are interfacing with their customers can make the difference between a losing or gaining a sale. This is why many small to medium sizes companies are turning to CRM tools like Salesforce.com, Act, or Sales Logix. There are so many different CRM Software solutions that knowing which one will work for your particular business needs can make or break your strategy. Teaming up with a partner who knows the top CRM software solutions like Quality Integrity can help save you time and money.
Experts in the field of CRM solutions can help you uncover needs that you may not have thought of and help provide recommendations that are more closely aligned with your business needs. With some of the top CRM solutions now available as a off the shelf solution it may seem simple just to go with the hottest product on the market. There are various benefits that each one offers and being able to test and understand which benefits are right for your company can cost valuable time and money. Let the experts at Quality Integrity help you and your teams make the right choice and beat your competition before they beat you.

Make international calls on your smartphone with Voxofon

0 comments

Posted on 25th February 2016 by Jeff Rogers in Technology

For many of us that own a smartphone and need to call abroad there is a new option that covers your phone and allows you to save money on international calls. Now international calling from iPhone devices is as simple as downloading Voxofon’s app and dialing the international number. The process is simple on any smarthpone and Voxofon now covers up to 98% of smartphone users. Android users get the added bonus of being able to call home while traveling abroad because you are able to take advantage of their VoIP services so every call becomes local. Either using 3G or wireless using your iphone, blackberry, or android phone for mobile international calls is now easier and less expensive. You will love the sound quality that you get and the great prices. You can check out Voxofon sites and you can see the current rates for calling abroad. So if you are planning that family vacation to Italy, or that all important business trip to Southeast Asia, download the app for your phone so that you can stay in touch with family and friends.

Being Outside

0 comments

Posted on 24th February 2016 by Jeff Rogers in Blogging

,

Thanks to Roman May

Man it’s good to be outdoors again! I hate wintertime and how cooped up in the house I have to get – it’s so great to be able to be outside riding my bike or going for a walk or whatever…this is the way people were meant to live! I sort of have a house out in the country anyway so when it snows I get really stuck inside. I got internet last year from a satellite company that had an online ad saying Click HERE and it’s worked really well for my needs since I don’t do a whole lot online. I can’t believe what a terrible winter it was this year and how hard I had to work just to keep the snow from coming inside the house. It’s tough being up on the mountain sometimes but it’s nice to know I can stay connected even when the weather gets rough. Maybe I should move somewhere like California so I don’t have to deal with the terrible winters!

Finding your new laptop bag

0 comments

Posted on 23rd February 2016 by Jeff Rogers in Technology

,

I have to travel quite a bit for my work and I am always looking for a great laptop bag that can not only carry my laptop but also my iPad and important papers. My idea of the best laptop bag is made of a high grade leathers and offers at least three compartments to be able to separate files and papers while on the road. I have seen one that has a front panel in the front with compartments for keys, flash drives, and various other items. I love the look of the tan leather bag pictured here and feel this type of bag is current and will stay in style for a long time. You also need to have a comfortable shoulder strap so that you can easily carry the laptop bag and have your hands free to check out your phone while you are traveling to customers offices.

Small business blog and website Hosting

1 comment

Posted on 22nd February 2016 by Jeff Rogers in Technology

, , ,

If you are like many people that have created a blog online you are aware of the pains of selecting a reliable host. There are so many factors that go into selecting a host provider and basing your selection primarily on price can cost you more than your hard earned dollars. There are many providers that claim unlimited bandwidth with their web hosting accounts which can be deceiving. You have to keep in mind whether your customers are connecting via broadband or mobile smart phones so keeping in this mind when choosing a host and site design. Most of these claims are based on the assumption that most will only use about 5% of their actual bandwidth. So you can exceed your allotment and then in most cases they will close off access to your site and make it unavailable to your customers. This can be detrimental to most websites and blogs if your customers or readers are unable to access your site.

Finding a company that offers true managed hosting where they provide services to match your current traffic levels and then add resources when needed so that your site or blog is always available to your customers. There are several sites that provide a great insight into hosting and service providers so doing your home work beforehand will save you a lot of frustration in the end. Some companies offer managed hosting, colocation service and, Dedicated hosting for your blog to just name a few. So if you are looking to obtain a new hosting provider be careful to not just shop on price or promotional claims, but do your research and in the end you will be glad that you did.

Finding the best in Victoria Real Estate

0 comments

Posted on 21st February 2016 by Jeff Rogers in Marketing

Young working couples are leaving traditional suburban neighborhoods and heading to the city. The lure of living in a close vicinity to local eateries and night life makes for a great neighborhood. Most of these new condo living areas are located in unique parts of the city to offer a blend of culture and modern conveniences. The new model of building condos on top of boutique shops are now becoming the latest in living accommodations. If you are looking for a new type of environment to call home then look no further than the Union in Victoria,BC. The newest in condo living that offer boutique shopping and amenities to satisfy all your shopping needs. Victoria Real Estate is adding a new location in Chinatown called Union.

Global template

0 comments

Posted on 20th February 2016 by Jeff Rogers in Mojavi Project

,

Component Driven Global Template System

PLEASE NOTE: the approach explained below has a few drawbacks, mainly that the execute method of action always need to be executed for the output to appear in a template. I’ve decided to use a different solution to the problem. We will be incorporating online surveys as new versions are created in order to keep the development community engaged in the entire process.

Like many of us I’ve been struggling with a global template approach to Mojavi 2.0 site development for a while. Most of the suggested solutions in the forum still require a fair bit of code duplication, so I tried to come up with my own idea.

I wanted a template “system” which lets me define one or more global templates which integrate the output of multiple actions into one single html page. Mojavi already has the basic tools for this: the ActionChain and Filter classes.

Used Classes

Here is the code to all classes used by my system

TemplateFilter.class.php

/**
 * This filter implements global templates
 * Used in combination with the AggregateAction class
 */
class TemplateFilter extends Filter
{

    function execute (&$filterChain, &$controller, &$request, &$user)
    {
        static $loaded = false;

        if(!$loaded)  //only load once!
        {
            $loaded = true;

            //set up main renderer and store it in the request instance
            $mainRenderer =& new Renderer($controller, $request, $user);
            $request->setAttributeByRef('mainRenderer',$mainRenderer);

            //contuinue processing the filter chain and store the output
            //in $body
            ob_start();
            $filterChain->execute($controller, $request, $user);
            $body = ob_get_contents();
            ob_end_clean();

            //mainRendererTemplate will only be set if the execute method
            //of the AggregateAction class was executed and there were
            //additional actions to be rendererd
            if($request->hasAttribute('mainRendererTemplate'))
            {
                //if the mainRenderer was used, add body to the renderer
                //and output to client
                $mainRenderer->setTemplate($request->getAttribute('mainRendererTemplate'));
                $mainRenderer->setAttribute('body',$body);
                $mainRenderer->setMode(RENDER_CLIENT);
                $mainRenderer->execute($controller,$request,$user);
            }
            else //otherwise, just echo the html to the browser
            {
                echo $body;
            }
        }
        else
        {
            $filterChain->execute($controller, $request, $user);
        }
    }
}

AggregateAction.class.php

/**
 * An easier way to add action chains to Actions
 */
class AggregateAction extends Action
{
    var $actChain = null;
    var $actNames = null;

    /**
     * Adds an action to the aggregate action chain
     *
     * @note params like ActionChain::register()
     */
    function addAction($name,$module,$action,$params = null)
    {
        if($this->actChain === null)
        {
            $this->actChain =& new ActionChain();
            $this->actNames = array();
        }

        $this->actChain->register($name,$module,$action,$params);
        $this->actNames[] = $name;
    }

    /**
     * Default template name
     *
     * @return string the template name
     */
    function getMainRendererTemplate()
    {
        return 'main.php';
    }

    function execute(&$controller, &$request, &$user)
    {
        //only execute this if we render to client
        if($controller->getRenderMode() == RENDER_VAR)
            return;

        $renderer =& $request->getAttribute('mainRenderer');

        if(!($this->actChain === null))
        {
            $this->actChain->execute($controller, $request, $user); 

            foreach($this->actNames as $name)
            {
                $renderer->setAttribute($name, $this->actChain->fetchResult($name));
            }

            $request->setAttribute('mainRendererTemplate',$this->getMainRendererTemplate());
        }
    }
}

MainTemplateAction.class.php (Example template action)

class MainTemplateAction extends AggregateAction
{

    /**
     * Initialize is used to add actions to the action chain
     *
     * @note It has to return true, otherwise processing will not continue
     */
    function initialize(&$controller,&$request,&$user)
    {
        $this->addAction('login','Default','Login');
        $this->addAction('nav','Default','MainNavigation');
        $this->addAction('cart','Cart','Show');

        return true;
    }

}

That’s all there is to it. The TemplateFilter has to be registered in the global filter chain and all my actions that might at some point be used to output the “body” into the main template extend MainTemplateAction.

The views don’t have to be modified, all the work of getting the renderer output into a global template is handled by the AggregateAction and TemplateFilter.

Setting the global template name in an Action with the getMainRendererTemplate() method is probably not very clean, but it all works like a charm for me and takes away a lot of the hassle of global templating with Mojavi.

The global renderer templates have to go into the YOURAPP/templates directory.

Please feel free to give comments on my approach in this forum topic.

Enjoying Sonora a BC Resorts top choice

0 comments

Posted on 19th February 2016 by Jeff Rogers in Marketing

If you are looking for a luxurious getaway and can’t decide if you want to be near water or close to wildlife then look at one of BC resorts top destination locations. You can easily see bears on one adventure and then fish for world class salmon on the other. Sonora resorts offers amenities to fit your most ambitious vacation get away. They offer golf, deep sea fishing, hiking and much more. Then at night sit back and relax while their world class chef prepares a meal that you will never forget. Imagine starting your morning pampering yourself at their spa and then getting on a helicopter in the afternoon to view mountainous glaciers. You will want to plan for the next vacation as soon as you set foot at Sonora resorts.