Saturday, December 24, 2016

Important Update Pt 2

It's been a long long time since I last updated this website. I know many people are probably wondering what's been going on.

For the past year or so I have been unable to sell any of the following products and services, due to a situation beyond my control, however, that situation is almost completely resolved (there are still a few technical difficulties that we're trying to work through) and within the next few weeks I hope to announce the new product / service packages. The products and services affected are as follows:
  • Domain Registration
  • Webhosting
  • Email Hosting

I thank you for your patience.

Thursday, December 31, 2015

Important Update

Dear Customers,
Owing to a situation beyond my control, as of January 1st 2016, customers will temporarily not be able to purchase the following products / services until my partners and I are able to rectify the situation:
Web hosting packages
domain name registration
email hosting

This does not any affect existing web hosting, domain names or email hosting accounts.

You will be updated shortly when the situation gets rectified.

If you have any questions, please post them to the comments section of this blog post (http://katandesigns.blogspot.com/2015/12/important-update.html).

I do apologize in advance for any inconvenience caused by this.

Katan Website Designs

Wednesday, June 27, 2012

Joomla Authentication and member folders

So over at katan website designs, I have a new project to work on ... a website that does auctions and runs classified ads. To do this I decided to use Joomla 2.5 (as joomla 1.5 will no longer be supported from August this year) with wdc auction (still deciding on the classifieds component though). This component allows multiple members to auction their own stuff online. However, one small problem I have with the component was that it did not allow individual members to have their own images directory ... so right now all members have access to each other's files / images ... that's not good ... don't want any issues between members of someone "stealing" someone else's images. So I did three things (so far) ... 1. contact the developers about this issue; 2. installed some other components (JCE Editor and JFUploader) that do allow for the creation of user owned and restricted folders (wanted to see if they could influence the wdc image uploader - they did not, but they did influence the product details part of the add product form) and 3. (just incase) did some research into how to add this functionality - unfortunately I could not find anything directly related to joomla 2.5 or wdc auction ... I could only find two pages both related to authenticating users in joomla 1.5 and one relating to users uploading images to their own unique folders in joomla 1.5. Neither of them offers advice on what files to edit to add this functionality, however.

documentation on authenticating users in Joomla 1.5
Forum thread on how to edit TinyMCE to authenticate joomla 1.5 users and give them their own upload images folder

What's next you ask? Well I think my next step will be to compare joomla 2.5 default login authentication and JCE editor and JFUploader programing code to the code above to see what the differences are.

Saturday, May 26, 2012

HTML and Javascript Show / Hide form fields and make specific fields conditionally required

Another small project I have been working on lately is to modify / simplify the contact / request webhosting / domain name registration form found on Katan Website Designs. Eventually I plan to have it set up so that people can place orders directly and pay via credit card, but, for now, I'm just simplifying and making it so that people only submit the information required for a quotation.
Here is a screen shot of what that form currently looks like (when I'm done with it it should look a bit different):

Step 1: Finding the best way to show / hide form fields. 

I googled this and investigated any number of solutions some of which worked and some did not. Eventually I discovered Infopitcher and that seemed to work the best for me. I did not have to do much to make changes. My plan was to take the "Your Requirements" drop down list (from my original contact form) and turn them into radio buttons (I tried it first with check boxes, but I wanted something where people could choose only one option and radio buttons seemed best), then take the fields below that (except for the last one titled "Other") and apply them to the hide / show selections. I decided to try it first with some sample forms, making sure that it worked for all different types of fields and determining what variables I'd have to add / change.

I should note here that my original form was done with html in php for processing. For the purposes of testing these scripts, however, I decided to initially do them in straight html and then convert to php.

This script requires the following:
  1. place between the <head></head> tags:
  2.   <!-- Begining Javascript Code for show / hide form elements using Radio Buttons-->
    <script language="javascript" type="application/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <!--End Javascript Code for show / hide form elements using Radio Buttons-->
  3.  Place between the <body></body> tags:
  4.  <form name="formname1" action="" onSubmit="return validateFunction();">field1A
      <input type="radio" name="type" value="1" id="type_1"/><br/>
    field2
       <input type="radio" name="type" value="2" id="type_2"/><br/>
         field3
       <input type="radio" name="type" value="3" id="type_3"/><br /> 
              field4 <input type="radio" name="type" value="4" id="type_4"/><br />      field5 <input type="radio" name="type" value="5" id="type_5"/><br />   
         field6 <input type="radio" name="type" value="6" id="type_6"/><br />     field7 <input type="radio" name="type" value="7" id="type_7"/><br />   field8 <input type="radio" name="type" value="8" id="type_8"/><br />
       <div id="1_box">
         DropField1
         <select name="DropField1" id="DropField1">
           <option value="">Select #</option>
           <option value="1">1</option>
           <option value="2">2</option>
           <option value="3">3</option>
         </select>
         <br/><br/></div>
    <div id="2_box">
              DropField2
         <select name="DropField2" id="DropField2">
           <option value="">Select #</option>
           <option value="1">1</option>
           <option value="2">2</option>
           <option value="3">3</option>
         </select>
         <br/><br/></div>
       <div id="3_box">

         DropField3
         <select name="DropField3" id="DropField3">
           <option value="">Select #</option>
           <option value="1">1</option>
           <option value="2">2</option>
           <option value="3">3</option>
         </select>
         <br /><br /></div>
       <div id="4_box">

         DropField4
         <select name="DropField4" id="DropField4">
           <option value="">Select #</option>
           <option value="1">1</option>
           <option value="2">2</option>
           <option value="3">3</option>
         </select>
         <br /><br /></div><div id="5_box">
        

         DropField5
         <select name="DropField5" id="DropField5">
           <option value="">Select #</option>
           <option value="1">1</option>
           <option value="2">2</option>
           <option value="3">3</option>
         </select><br />
         DropField5A
         <select name="DFA5" id="DFA5">
           <option value="">Select #</option>
           <option value="1">1</option>
           <option value="2">2</option>
           <option value="3">3</option>
         </select><br />TextField5 <input type="text" name="DF5" id="DF5" />
         <br /><br /></div><div id="6_box">

         DropField6
         <select name="DropField6" id="DropField6">
           <option value="">Select #</option>
           <option value="1">1</option>
           <option value="2">2</option>
           <option value="3">3</option>
         </select>
         <br />TextField6 <input type="text" name="DF6" id="DF6" /><br /><br /></div><div id="7_box">

         DropField7
         <select name="DropField7" id="DropField7">
           <option value="">Select #</option>
           <option value="1">1</option>
           <option value="2">2</option>
           <option value="3">3</option>
         </select><br />     DropField7a
         <select name="DF7" id="DF7">
           <option value="">Select #</option>
           <option value="1">1</option>
           <option value="2">2</option>
           <option value="3">3</option>
         </select>
       </div><div id="8_box">

         Field8 <input type="text" name="DropField8" id="DropField8" />
         <br />
         <br /></div>
        
         <input type="submit" value="submit"/>
       </p>
     </form>
     <p>
       <!--Begining Javascript Code for Form Radio Button Show / Hide Elements-->
       <script type="text/javascript">

    $(document).ready(function(){
      $("input[name$='type']").click(function(){
      var value = $(this).val();
      if(value=='1') {
        $("#1_box").show();
         $("#2_box").hide();
         $("#3_box").hide();
         $("#4_box").hide();
         $("#5_box").hide();
         $("#6_box").hide();
         $("#7_box").hide();
         $("#8_box").hide();
      }
      else if(value=='2') {
       $("#2_box").show();
        $("#1_box").hide();
        $("#3_box").hide();
        $("#4_box").hide();
        $("#5_box").hide();
         $("#6_box").hide();
         $("#7_box").hide();
         $("#8_box").hide();
       }
       else if(value=='3') {
       $("#3_box").show();
        $("#1_box").hide();
        $("#2_box").hide();
        $("#4_box").hide();
        $("#5_box").hide();
         $("#6_box").hide();
         $("#7_box").hide();
         $("#8_box").hide();
       }
       else if(value=='4') {
       $("#4_box").show();
        $("#1_box").hide();
        $("#2_box").hide();
        $("#3_box").hide();
        $("#5_box").hide();
         $("#6_box").hide();
         $("#7_box").hide();
         $("#8_box").hide();
       }
          else if(value=='5') {
       $("#5_box").show();
        $("#1_box").hide();
        $("#2_box").hide();
        $("#3_box").hide();
        $("#4_box").hide();
         $("#6_box").hide();
         $("#7_box").hide();
         $("#8_box").hide();
       }
          else if(value=='6') {
       $("#6_box").show();
        $("#1_box").hide();
        $("#2_box").hide();
        $("#3_box").hide();
        $("#4_box").hide();
         $("#5_box").hide();
         $("#7_box").hide();
         $("#8_box").hide();
       }
          else if(value=='7') {
       $("#7_box").show();
        $("#1_box").hide();
        $("#2_box").hide();
        $("#3_box").hide();
        $("#4_box").hide();
         $("#5_box").hide();
         $("#6_box").hide();
         $("#8_box").hide();
       }
          else if(value=='8') {
       $("#8_box").show();
        $("#2_box").hide();
        $("#3_box").hide();
        $("#4_box").hide();
        $("#5_box").hide();
         $("#6_box").hide();
         $("#7_box").hide();
         $("#1_box").hide();
       }
      });
      $("#1_box").show();
      $("#2_box").hide();
      $("#3_box").hide();
      $("#4_box").hide();
      $("#5_box").hide();
         $("#6_box").hide();
         $("#7_box").hide();
         $("#8_box").hide();
    });

       </script>

       <!--End of Javascript Code for Form Radio Button Show / Hide Elements-->
What's important to note here is that for the radio buttons, they all have to have the same name but different values (<input type="radio" name="type" value="1" id="type_1"/><input type="radio" name="type" value="2" id="type_2"/>) and the elements that you wish to show / hide according to which radio button is selected must each be enclosed within div tags that have unique id's (eg. <div id="1_box">) and you must identify all of these things in the javascript code below the form (see the example code above).

Step 2: Finding a way to make the fields referred to in the above form validate / become required only when their respective radio button was / is selected.


Once again I experimented with a number of different alternatives. Some only worked with checkboxes and text areas, others only worked with radio buttons and single drop down lists. Finally I discovered on the webdeveloper.com forums, where someone had a similar problem and Suhas Dhoke had answered it in such a way that I could work with it. His solution works well (so far) with the hide / show coding I refer to above and with multiple drop down lists and other form fields. Please note: the page may not validate properly, but I'm sure that can be sorted out eventually by placing the javascript code in a separate javascript file, however, for our purposes right now (ensuring that it works at all) we're just leaving it as part of the html file.

To start:
Place the following code between the <head></head> tags:
<!-- Start Javascript Code to validate conditional form elements -->
<script type="text/javascript">
 function validateFunction() {
 var j = 1;
 for (var i = 0; i < document.formname1.elements.length; i++) {
 var elem = document.formname1.elements[i];
 if (elem.type == "radio") {
 var chk_field_name = 'type_'+j;
 var drop_field_name = 'DropField'+j;
  var drop_field_name_a = 'DF'+j;
    var drop_field_name_b = 'DFA'+j;
 if (document.getElementById(chk_field_name).checked && document.getElementById(drop_field_name).value == '') {
 alert("You must select at least one option from "+drop_field_name+" drop down.");
 return false;
 }if (document.getElementById(chk_field_name).checked && document.getElementById(drop_field_name_a).value == '') {
 alert("You must select one option from "+drop_field_name_a+" drop down.");
 return false;
 }if (document.getElementById(chk_field_name).checked && document.getElementById(drop_field_name_b).value == '') {
 alert("You must select one option from "+drop_field_name_b+" drop down b.");
 return false;
 }
 j++;
 }/*{
 var chk_field_name = 'type_'+j;
 var drop_field_name_a = 'DF'+j;
 if (document.getElementById(chk_field_name).checked && document.getElementById(drop_field_name_a).value == '') {
 alert("You must select at least one option from "+drop_field_name_a+" drop down.");
 return false;
 }
 j++;
 }*/
 }
 return true;
 }
 </script>
<!-- End Javascript Code to validate conditional form elements -->
Make sure you note the name of the form (if your form does not have a name, give it one eg. <form name="form1">) and in the code above find where it says formname1 and change that to your form's correct name, eg where it says:
 for (var i = 0; i < document.formname1.elements.length; i++) {
 var elem = document.formname1.elements[i];
change the bold type formname1 to your form name.

Next, locate where it says  if (elem.type == "radio") and where it says radio, change that to what ever selection field type you  wish to have the other conditionally required elements validate against (your options are radio, checkbox and dropdown).

Then, note where it says  var chk_field_name = 'type_'+j; - the "type_" is the beginning of the radio button's id title and in the actual radio button code it will end with a unique number, eg. <input type="radio" name="type" value="1" id="type_1"/>

Finally note where it says  var drop_field_name = 'DropField'+j; because that is where you must put the name and id of the fields that must be validated against their respectively selected radio buttons, eg.: <select name="DropField1" id="DropField1"> and <select name="DropField2" id="DropField2">

Please note here two things:
  1. just like the radio buttons id title('type') ending with unique numbers, the name and id's for the fields that must be validated against each radio button must also end in the same numbers that are associated with their radio buttons id. eg. if the radio button code is: <input type="radio" name="type" value="1" id="type_1"/>, then the respective conditionally required field must have the following name and id: <select name="DropField1" id="DropField1">
           <option value="">Select #</option>
           <option value="1">1</option>
           <option value="2">2</option>
           <option value="3">3</option>
         </select>
  2. whilst the drop down (and probably also check boxes and radio buttons) fields that are conditionally required, must have identical names and id's, text fields (and probably text areas) do not, the latter only require id's.

Step 3: Piecing it all together:

Here is the entire example code all together:
 <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <title>Radio Button validation</title>
  <!-- Begining Javascript Code for show / hide form elements using Radio Buttons-->
<script language="javascript" type="application/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<!--End Javascript Code for show / hide form elements using Radio Buttons--><!-- Start Javascript Code to validate conditional form elements -->
<script type="text/javascript">
 function validateFunction() {
 var j = 1;
 for (var i = 0; i < document.formname1.elements.length; i++) {
 var elem = document.formname1.elements[i];
 if (elem.type == "radio") {
 var chk_field_name = 'type_'+j;
 var drop_field_name = 'DropField'+j;
  var drop_field_name_a = 'DF'+j;
    var drop_field_name_b = 'DFA'+j;
 if (document.getElementById(chk_field_name).checked && document.getElementById(drop_field_name).value == '') {
 alert("You must select at least one option from "+drop_field_name+" drop down.");
 return false;
 }if (document.getElementById(chk_field_name).checked && document.getElementById(drop_field_name_a).value == '') {
 alert("You must select one option from "+drop_field_name_a+" drop down.");
 return false;
 }if (document.getElementById(chk_field_name).checked && document.getElementById(drop_field_name_b).value == '') {
 alert("You must select one option from "+drop_field_name_b+" drop down b.");
 return false;
 }
 j++;
 }/*{
 var chk_field_name = 'type_'+j;
 var drop_field_name_a = 'DF'+j;
 if (document.getElementById(chk_field_name).checked && document.getElementById(drop_field_name_a).value == '') {
 alert("You must select at least one option from "+drop_field_name_a+" drop down.");
 return false;
 }
 j++;
 }*/
 }
 return true;
 }
 </script>
<!-- End Javascript Code to validate conditional form elements -->
 </head>
 <body>


 <form name="formname1" action="" onSubmit="return validateFunction();">field1A
  <input type="radio" name="type" value="1" id="type_1"/><br/>
field2
   <input type="radio" name="type" value="2" id="type_2"/><br/>
     field3
   <input type="radio" name="type" value="3" id="type_3"/><br /> 
          field4 <input type="radio" name="type" value="4" id="type_4"/><br />      field5 <input type="radio" name="type" value="5" id="type_5"/><br />   
     field6 <input type="radio" name="type" value="6" id="type_6"/><br />     field7 <input type="radio" name="type" value="7" id="type_7"/><br />   field8 <input type="radio" name="type" value="8" id="type_8"/><br />
   <div id="1_box">
     DropField1
     <select name="DropField1" id="DropField1">
       <option value="">Select #</option>
       <option value="1">1</option>
       <option value="2">2</option>
       <option value="3">3</option>
     </select>
     <br/><br/></div>
<div id="2_box">
          DropField2
     <select name="DropField2" id="DropField2">
       <option value="">Select #</option>
       <option value="1">1</option>
       <option value="2">2</option>
       <option value="3">3</option>
     </select>
     <br/><br/></div>
   <div id="3_box">

     DropField3
     <select name="DropField3" id="DropField3">
       <option value="">Select #</option>
       <option value="1">1</option>
       <option value="2">2</option>
       <option value="3">3</option>
     </select>
     <br /><br /></div>
   <div id="4_box">

     DropField4
     <select name="DropField4" id="DropField4">
       <option value="">Select #</option>
       <option value="1">1</option>
       <option value="2">2</option>
       <option value="3">3</option>
     </select>
     <br /><br /></div><div id="5_box">
    

     DropField5
     <select name="DropField5" id="DropField5">
       <option value="">Select #</option>
       <option value="1">1</option>
       <option value="2">2</option>
       <option value="3">3</option>
     </select><br />
     DropField5A
     <select name="DFA5" id="DFA5">
       <option value="">Select #</option>
       <option value="1">1</option>
       <option value="2">2</option>
       <option value="3">3</option>
     </select><br />TextField5 <input type="text" name="DF5" id="DF5" />
     <br /><br /></div><div id="6_box">

     DropField6
     <select name="DropField6" id="DropField6">
       <option value="">Select #</option>
       <option value="1">1</option>
       <option value="2">2</option>
       <option value="3">3</option>
     </select>
     <br />TextField6 <input type="text" name="DF6" id="DF6" /><br /><br /></div><div id="7_box">

     DropField7
     <select name="DropField7" id="DropField7">
       <option value="">Select #</option>
       <option value="1">1</option>
       <option value="2">2</option>
       <option value="3">3</option>
     </select><br />     DropField7a
     <select name="DF7" id="DF7">
       <option value="">Select #</option>
       <option value="1">1</option>
       <option value="2">2</option>
       <option value="3">3</option>
     </select>
   </div><div id="8_box">

     Field8 <input type="text" name="DropField8" id="DropField8" />
     <br />
     <br /></div>
    
     <input type="submit" value="submit"/>
   </p>
 </form>
 <p>
   <!--Begining Javascript Code for Form Radio Button Show / Hide Elements-->
   <script type="text/javascript">

$(document).ready(function(){
  $("input[name$='type']").click(function(){
  var value = $(this).val();
  if(value=='1') {
    $("#1_box").show();
     $("#2_box").hide();
     $("#3_box").hide();
     $("#4_box").hide();
     $("#5_box").hide();
     $("#6_box").hide();
     $("#7_box").hide();
     $("#8_box").hide();
  }
  else if(value=='2') {
   $("#2_box").show();
    $("#1_box").hide();
    $("#3_box").hide();
    $("#4_box").hide();
    $("#5_box").hide();
     $("#6_box").hide();
     $("#7_box").hide();
     $("#8_box").hide();
   }
   else if(value=='3') {
   $("#3_box").show();
    $("#1_box").hide();
    $("#2_box").hide();
    $("#4_box").hide();
    $("#5_box").hide();
     $("#6_box").hide();
     $("#7_box").hide();
     $("#8_box").hide();
   }
   else if(value=='4') {
   $("#4_box").show();
    $("#1_box").hide();
    $("#2_box").hide();
    $("#3_box").hide();
    $("#5_box").hide();
     $("#6_box").hide();
     $("#7_box").hide();
     $("#8_box").hide();
   }
      else if(value=='5') {
   $("#5_box").show();
    $("#1_box").hide();
    $("#2_box").hide();
    $("#3_box").hide();
    $("#4_box").hide();
     $("#6_box").hide();
     $("#7_box").hide();
     $("#8_box").hide();
   }
      else if(value=='6') {
   $("#6_box").show();
    $("#1_box").hide();
    $("#2_box").hide();
    $("#3_box").hide();
    $("#4_box").hide();
     $("#5_box").hide();
     $("#7_box").hide();
     $("#8_box").hide();
   }
      else if(value=='7') {
   $("#7_box").show();
    $("#1_box").hide();
    $("#2_box").hide();
    $("#3_box").hide();
    $("#4_box").hide();
     $("#5_box").hide();
     $("#6_box").hide();
     $("#8_box").hide();
   }
      else if(value=='8') {
   $("#8_box").show();
    $("#2_box").hide();
    $("#3_box").hide();
    $("#4_box").hide();
    $("#5_box").hide();
     $("#6_box").hide();
     $("#7_box").hide();
     $("#1_box").hide();
   }
  });
  $("#1_box").show();
  $("#2_box").hide();
  $("#3_box").hide();
  $("#4_box").hide();
  $("#5_box").hide();
     $("#6_box").hide();
     $("#7_box").hide();
     $("#8_box").hide();
});

   </script>

   <!--End of Javascript Code for Form Radio Button Show / Hide Elements-->This form is a variation of the following:</p>
 <p>Show / Hide fields taken from: <a href="http://www.infopitcher.com/2011/10/showhide-form-elements-based-on-radio-button-selections-using-jquery/">Infopitcher</a></p>
 <p>Validate fields taken from: <a href="http://www.webdeveloper.com/forum/showthread.php?t=143955">Suhas Dhoke</a></p>
 <p>Where radio buttons must have the same name but can have different id's and must have different values and the different fields to validate must each have unique names which must be identical to their respective id's. In this example, drop down lists must also have a &quot;value&quot; in addition to the text contained in the list, whilst the text fields don't require this. Also to have multiple conditionally required fields required that each field type has a unique ID and some variations needed to be made to the javascript code provided by Suhas Doke in the link above.</p>
 </body>
 </html>

And that's it!

Next: make all these changes to my contact form, create and link to javascript file, convert html form to php (include security code at bottom), and check / recreate php file to process the inputs.

Developing Mobile Applications Part 1

Sorry it's been awhile! I've been busy trying to get a number of personal and not so personal projects out of the way!
Recently, however, my brother in law was talking to me about developing some mobile applications for the blackberry, iphone and android, so I began doing some research into this.
Amongst the things I have discovered:
  • the programming code required / used is mainly html, css, javascript, xml, flash and c# - most of which (except the c#) I already know as a website designer! The difference is that a mobile application is packaged differently
  • there are several programs that can be used to develop / package the applications, including some I was already familiar with: the adobe suite (specifically dreamweaver, flash builder, air, flash pro, etc. - although I do not have the version that can compile what I design as a mobile application), eclipse (either on it's own or with rhomobile or JBoss).
So I decided to start with developing an android application. I began with both eclipse on it's own (using this tutorial: youtube - Programming for Android, Part 1, Installing everything you need by TZCoder) and in combination with rhomobile (following this tutorial: rhostudio tutorial - installation and developing an application)

Look at the requirements for each below (this list is not complete and only goes as far as I understand it and will be updated as I learn more about each):
Eclipse stand alone Rhomobile & Eclipse JBoss & Eclipse
Opperating System (development) Windows, Linux and Macintosh (regular PC and server with desktop environment) Windows and Macintosh (regular PC and server with desktop environment) Windows, Linux and Macintosh (server with desktop environment only?)
Platforms & Software to install
  • Java Runtime Environment (JRE),
  • Java Development Kit (JDK),
  • Android SDK,
  • Eclipse,
  • Android Eclipse Plugin
  • Rhostudio,
  • Eclipse,
  • Java Development Kit (JDK),
  • SDK's (software development kits) for each mobile device you wish to develop for
  • Java 6.0 (Java SDK 1.6)
  • Maven 3
  • JBoss Application Server 7.1
  • Getting started with JBoss AS
  • JBoss Tools 3.3 (optional) JBoss Tools and JBoss AS Setup
Mobile Devices Supported
  • Android,
  • Blackberry
  • Android,
  • Blackberry,
  • Iphone,
  • Ipad,
  • Windows mobile,
  • Symbian,
  • etc.
Programming Language html, xml, css, javascript ruby, html, xml, css, javascript
Types of Applications each can develop static dynamic, content management
Server Side Software required for public use
ruby, cloud based

At the time of this original writing I had only done one mobile application (HelloWorld) in eclipse stand alone and two related ones had been begun in rhomobile and eclipse.

It is important to note here that after following the youtube tutorial linked above (for the HelloWorld eclipse stand alone mobile application for android), I now had to figure out how to export the HelloWorld project as an .apk file. To do this, I followed the instructions here and here, and to my surprise, I was successful on the first try although mind you I had not done anything outside of the tutorial script wise.

Monday, January 16, 2012

Ubuntu 11.10 - Managing your Ubuntu Server from terminal (as opposed to gui)

So recently I decided to upgrade my server from ubuntu 11.04 to 11.10 and as usual there were issues. This time around I was unable to install a gui (graphical user interface) without corrupting the operating system software. So I've had to learn how to do things from terminal.
So based on research online (and trial and error, to see what worked and what did not), I've come up with the following, which I plan to put all in one place (here) for future information. They are not complete, so information will be forthcoming as soon as I can find it:

  1. Logout, shutdown and reboot commands
  2. Detect your hardware
  3. Detect drivers / check device is switched on
  4. Software programs / packages:
    1. Load sudo aptitude interface
    2. Find out what programs are already installed
    3. Update / upgrade packages
      1. From terminal
      2. Via aptitude interface
    4. Install packages
    5. Remove packages
  5. Networking:
    1. Find out your servers ip address
    2. Download and install drivers for hardware / networking
    3. Edit network configuration file
    4. How to scan for wireless networks
1. to Logout / Shutdown / reboot:
to logout:
sudo exit
to shutdown:
sudo shutdown -h now
to reboot:
sudo reboot
2. to detect hardware:
sudo lspci
3. to detect drivers and check the device is switched on:
sudo lshw or sudo lshw -C network

4. Software Programs and Packages:
there are two ways within terminal to detect, update, install and remove software packages and programs. One way is to do so directly via terminal commands and the other is to open the aptitude interface and do so from there:
1. To open the aptitude interface:
sudo aptitude
2. To find out what programs / packages are installed already:
This can only be done from the aptitude interface (as far as I know), just use the arrow keys to select the "installed packages" option, then the "enter" key to open the list.
3. To update / upgrade packages:
first you need to update the package updates list, then you need to download and install the updates:
1. from terminal: sudo apt-get update or sudo apt-get upgrade
2. from aptitude interface: common "u" updates your package index in the "packages to be updated" group. Use arrow keys to highlight the specific group from the list, press the "enter" button to open up the list of packages, then for each package you want to update, press the capital U (shift+"u") to select the package and use arrow keys to highlight packages on the list (for each package you want to update, press capital "U" to select it). After you have selected all the packages you would like to update, press common "g". Then press common "g" a second time. Once all the packages are updated, the server may ask you to press the "enter" button to be taken back to the aptitude interface. To logout from aptitude, press common "q".

4. To install packages
There are two ways to install packages:
1. from terminal - sudo apt-get install [packagename] or sudo aptitude install [packagename] (where [packagename] is replaced by the package / file name you wish to install). for example, to make sure your server can zip & unzip files, you would enter sudo apt-get install zip unzip.
2. from the aptitude interface:
Coming Soon


5. to remove packages:
sudo apt-get purge remove [packagename]
sudo aptitude purge remove [packagename] where "[packagename]" is replaced by the package / file name you wish to remove.

5. Networking:
1. Find out your computer's/server's ip address:
1. for wired / cable / land line connection: sudo ifconfig - and where it says "inet addr:" the numbers immediately following are your ip address. This would look something like 123.456.7.89
2. for wireless devices: sudo iwconfig - and where it says "inet addr:" the numbers immediately following are your ip address. This would look something like 123.456.7.89
3. how to scan for wireless networks:
sudo iwlist wlan0 scan


Thursday, December 29, 2011

Has my website crashed?

A lot of the time when clients come to me to design a website, especially those who are not so familiar with the internet and information technology equipment and software, they expect that once the website is up and running on a webhost, it will always be up and running, and they don't want it to ever come down, not even temporarily. Recently I had a couple incidents with one client's website crashing and I've also had incidents with other clients websites being taken down because some fee or the other was not paid to the respective host in a timely fashion.

The reality is websites do crash from time to time and there is nothing a webhost or website designer can do to prevent it from crashing 100% of the time (sometimes it can be avoided, but not all the time). However, there are times when it may not have crashed, but it is just unavailable to you the viewer.

Websites may become unavailable for many reasons:

  1. You the individual user have lost your internet connection, or your internet cache needs to be deleted, or your firewall (or the company's firewall) is blocking you from viewing the website or the internet, or that specific website got blocked from your specific computer or the network on which your computer is located;
  2. There are so many people looking at your website (or another website that is located on your webhost's server) that the server timed out.
  3. You (or someone representing you) may have neglected to pay the webhosting or domain hosting fee on time.
  4. The amount and size of the files on your webhost (files required for your website to run) may have maxed out / used up the amount of disk space your webhost has allocated for you.
  5. The website or the webserver (your host is using) may be down for maintenance.
  6. Your website may be down due to a programming error either on the webserver or on the website.
  7. It may be that your website got hacked or blacklisted by an internet monitoring service.
Solutions:
  1. The first thing you should do is determine, whether or not you are the only one experiencing this problem. To do this, check http://www.downforeveryoneorjustme.com/google.com, type in the website in the space provided and click the text that says "or just me?". If it says it's just you, then check your internet connection, firewalls, internet cache, etc. or get your computer repairs technician to do that for you.
  2. Make sure you are familiar with your webhosting and domain hosting agreement and the features associated with your webhosting account. More specifically, be familiar with the cost of everything, how often you are required to pay, the amount of disk space and the amount of internet traffic your webhost allocated to you. Some webhosts will tell you that the disk space and / or the amount of traffic allocated is unlimited, please note this is not really the case, but, they usually say this, when the amount allocated is so high that it is unlikely you will ever need all of it, whilst others will be more specific. As for the fees, if they are not paid on time, your webhost and / or your domain host will suspend your account. In any of these cases (where the disk space or traffic is maxed out or webhosting or domain hosting fees are not paid), you should contact and consult your webhost to either pay off outstanding fees or to upgrade the account to get more traffic or disk space. 
  3. Your website may also go down for maintenance purposes. This may mean anything from a bug being discovered and repaired in the webhost's software, to an upgrade to the webhosting hardware or software, or a major update or upgrade to the website itself. Webhosts and website designers usually try their best to avoid taking down the website while doing these things, but this is not always possible, because sometimes you have to switch things off and then turn them back on again. Talk to your website designer and your webhost about the problem, get both of them to investigate it. If you know your website designer is currently doing some work on the website (for example if you asked them to make some changes) talk to them and determine if they had to take it down for some reason. If, however, this is not the case, go straight to the webhost and enquire.
  4. Programming errors can cause websites to go down, but first you have to determine what type of programming error, before you can find a solution:
    1. there's something wrong with the code for the website. Unless there were any major recent changes to the website, there should not be anything wrong with the code, except in #3 below. If there was some major changes to the website recently concluded or currently going on, talk to your current website designer, if not, see #3 below.
    2. There's a bug on your webhost's software or operating system. If this is the case, you need to report this to your webhost and have them deal with it.
    3. Your website might be so old (it may have been up for a very long time) that modern internet protocols may no longer support it. To resolve this you would need to consult your website designer about redesigning it.
  5. On occasion websites do get hacked. Your webhost is typically responsible for your website's basic security, and they provide free tools for your website designer to secure your website properly, so you should first have a chat with your webhost about the problem. In addition, there are other security measures you can pay for to add more protection to your website. One example is a secure sockets layer (ssl) certificate and others are website anti virus and anti hacker solutions. Discuss purchasing additional protection with your website designer before buying.
  6. My website or domain name got blacklisted. This does not happen very often except when various internet monitoring agencies determine that your website, webhost or domain registrar is responsible (whether intentionally or not) for transmitting spam, phishing, internet viruses and other malicious activity. Usually when this happens, when you attempt to view the website, you will be presented with a page telling you your website has been blacklisted and a link to provide more information. Very often, if it is your website, this may either be the result of someone with an infected computer visiting your website, or it may mean that your website or webhost was hacked. Take a look at the link provided (on the default "this website has been blacklisted) with your website designer and depending on the causes & reasons, your website designer will be able to advise you how to proceed.
You may read more about these issues at: 


How can I be on top of things?
Pay attention to the emails received from your webhost because if they plan any maintenance on your webserver, they typically will inform you about this via email (usually days) before they conduct the maintenance.

What about restoring the website after it has gone down?
Both your webhost and your website designer should be capable of restoring the website for you. They each may have terms and conditions under which they'll agree to restore the website, so discuss it with them.


Wednesday, December 21, 2011

Changes! New Products and Services Launched!

Dear Readers,
So it has been awhile since I last blogged. I apologize for that, I have been pretty busy trying to get some new products and services on track.

Some of you may or may not know that besides website design, recently I have partnered with a couple companies to provide my customers with the whole website package, from webdesign to webhosting and domain name registration and secure sockets layer (ssl) certificates. Some of these services were advertised on my website over the past few months, but I have only just been able to add the ssl certificates option / service.

For those who may not be aware, I currently offer shared windows and unix hosting, as well as linux virtual private servers and managed private servers. The webhosting and domain name registration both have 30 day money back guarantee's on them, while the ssl certificates have 15 days money back guarantee (you may read more about these services HERE).

Services that I expect to launch early in the new year include:
microsoft exchange
microsoft sharepoint
windows virtual private server
windows managed private server
as well as some more ssl certificates

In addition, I have also been busy designing some new products most of which are for sale at My Zazzle Online Store. These include such things as plates, laptop cases, jugs, mugs, shoes, mousepads, etc.

There are also a few new items at my CafePress Online Stores: Here and Here.

So please feel free to go ahead and check them all out!

I have several more posts in the process of being written, so please come back soon for more information.

Also feel free to ask questions in the comments below!

Sunday, October 30, 2011

New Merchandise for Christmas

So lately I've been designing a number of products on both Cafepress and Zazzle, for the upcoming christmas

Greeting Cards & Stationary:
Product: Greeting Card
Available 
Single: US$4.50 View / Buy Now
Ten (10) Pack: US$15.00 View / Buy Now
Twenty (20) Pack: US$25.00 View / Buy Now

Manufacturer: CafePress

Product: Greeting Card
Available 
Single: US$2.95 View / Buy Now
Ten (10) Pack: US$24.5 View / Buy Now
Twenty (20) Pack: US$35.00 View / Buy Now

Manufacturer: Zazzle
*Also has matching stamps
Product: Greeting Card
Available 
Single: US$6.00 View / Buy Now
Ten (10) Pack: US$24.5 View / Buy Now
Twenty (20) Pack: US$35.00 View / Buy Now

Manufacturer: CafePress

Product: Christmas Envelope
Available 
Single: US$0.80 View / Buy Now

Manufacturer: Zazzle

Product: Christmas Stamp
Available 
Single Sheet of 20: US$19.55 View / Buy Now
11 sheets of 20: US$17.55 each View / Buy Now
22 sheets of 20: US$16.55 each View / Buy Now

Manufacturer: Zazzle

Product: Caribbean Wall Calendar
Available 
Single: US$22.25 View / Buy Now
Fifty (50) Pack: US$17.80 each View / Buy Now
One Hundred (100) Pack: US$15.57 each View / Buy Now

Manufacturer: Zazzle

Product: Hibiscus 2012 Calendar Print
Available 
Single: US$4.58 View / Buy Now

Manufacturer: CafePress

Tuesday, September 13, 2011

Joomla 1.7, JoomShopping and Core Design Captcha

So I recently started designing a website for a new client using Joomla 1.7 with JoomShopping and Core Design Captcha.

The website is to sell jewelry and much to my surprise, joomla 1.7, with JoomShopping worked pretty much right out of the box. no bugs or errors ... I also installed Akeeba Backup and Xmap.

The only major issues I've come accross so far (not including redesigning the template) have been:
1. the JoomShopping plugin for xmap does not work for joomla 1.7 - I wish it would
2. It was not easy to find a captcha security that would work on the website.

For the first one I have yet to find a solution ... but then again I have not yet been able to take a close look at it.

However, the second one ... the only security captcha I could find that worked with Joomla 1.7 was Core Design Captcha, but although that worked with Joomla 1.7 right out of the box, it did not work with the login / register pages of JoomShopping.

To get it to work with JoomShopping I found this blog post (http://www.webdesigner-profi.de/joomla-webdesign/joomla-shop/forum/posts/11/817.html?lang=en#4) - which essentially requires a hack of the original CDCaptcha - and followed the instructions ... however, when looking at the version of Core Design Captcha for 1.7 I realized there are some important changes to make to some of the code provided in that link. So here's the modified version for Joomla 1.7 with JoomShopping:

1. In edit plugins/system/cdcaptcha.xml, insert the following code:
(Please Note: This code is different from the original hack mentioned in the above link)


(let's say after COM_ZOO field)

2. Create a new php file called cdcaptcha_com_jshopping.php and save it in plugins/system/cdcaptcha/extension/site

3. In the file you just created place the following code:
(Please Note: This code is the same as that mentioned in the above link)


4. In plugins/system/cdcaptcha/language/en-GB/en-GB.plg_system_cdcaptcha.ini and also in administrator/language/en-GB/en-GB.plg_system_cdcaptcha.ini, place the following code:
PLG_SYSTEM_CDCAPTCHA_LABEL_ENABLED_FOR_COM_JSHOPPING="JoomShopping"
PLG_SYSTEM_CDCAPTCHA_PARAM_ENABLED_FOR_COM_JSHOPPING_NO="No"
PLG_SYSTEM_CDCAPTCHA_PARAM_ENABLED_FOR_COM_JSHOPPING_YES="Yes"
PLG_SYSTEM_CDCAPTCHA_DESC_ENABLED_FOR_COM_JSHOPPING=""

5. save all of these files (and upload them to the server if necessary).

Tuesday, May 10, 2011

com-property customization

ok I'm back with a little information on how to customize / add new fields in the property description / features:

1. go to your_joomla_root_directory>language>en-gb(or what ever language you are using on your website)>en-GB.com_properties.ini and find the first line where it says HIDDE.
2. Note the "Extra" code number ... for example where it says EXTRA40=HIDDE, you would note the EXTRA40 part of it.
3. Then change the word HIDDE that is after that EXTRA40 to what ever you want the field name to be.
4. Save the file.
5. go to your_joomla_root_directory>administrator>language>en-gb(or what ever language you are using on your website)>en-GB.com_properties.ini and find the first line where it says HIDDE.
6. Follow steps 2-4 above.
7. If you are editing these files on your local machine & have to upload them to see the changes, do so now. If you are editing them directly on the server / webhost, skip this step and move on to step 8.
8. If after saving and uploading these files, check your website, both in the front and in the backend. Try adding a new property & look for the new changes / fields. If you see them you are finished customizing, but if you do not see them, move on to step 9.
9. If you do not see the above changes in your form, go to your com-properties component in your joomla backend and note Layout Properties Detail and whether or not you use tabs. Then move on to step 10.
10. your Layout Template Properties Detail template is called by one of the following files:
a) locate in your_joomla_root_directory>components>com_properties>views>templates:
i) for details templates using tabs:
- Default Template = details_tab.php
- Default 1 Template = details_tab1.php
- Default 2 Template = details_tab2.php
- Default 3 Template = details_tab3.php
ii) for details templates not using tabs:
- Default Template = details.php
- Default 1 Template = details1.php
- Default 2 Template = details2.php
- Default 3 Template = details3.php
11. After locating and opening (for editing purposes) the relevant file, locate, in the file, the code that calls the fields that you just added. For example, in the language files above you would have noted the "EXTRA" code ... so in the above details file, find where it says "EXTRA" and the number(s) that goes with that piece of code.
12. If, lets say, you entered your fields at EXTRA40 but in the code in the details file, you can only find EXTRA39, below that piece of code for EXTRA39, make a space (press your enter button on your keyboard) and then copy & paste the code from EXTRA39 into that space. Then change in that copied code, where it says EXTRA39 to EXTRA40.

Tuesday, April 26, 2011

Install Webmin via terminal

Ok so,
now you may have a problem because although LAMP is installed, webmin is not yet installed.To download and install webmin:

1. In terminal:
a) First download some needed perl related libraries & also (this is for webmin 1.5x) apt-show-versions
sudo apt-get install apt-show-versions perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl
b) Then download webmin either by visiting http://www.webmin.com/download.html and downloading the .deb version of the file or via terminal using the following code:
wget http://www.webmin.com/download/deb/webmin-current.deb
If you use the former method of downloading the debian package, please copy the download to your home folder or the folder that you are currently in (you can determine which folder that is from terminal, by typing the following code dir)
c) install webmin via terminal by one of the following two options:
sudo dpkg -i webmin-current.deb
or
sudo dpkg --install webmin_1.5xx_all.deb
(where the xx in the webmin package name stands for the webmin version you downloaded).

And that should be it ... it may take a few minutes to do the installation, but, after that you should be ready ... when you see a message something like the following, the installation will be complete:
Webmin install complete. You can now login to https://YourServerNameOrIpAddress:10000/
as root with your root password, or as any user who can use sudo
to run commands as root.

Please note that installing webmin via terminal does not mean you will automatically be able to sign in to webmin using your regular user name and password ... you might initially be required to sign into webmin using root as your user name and set a password for root via terminal ... using the method described in the previous post.

However, once logged in as root, you can add your regular user account to webmin, by:
1. clicking on the "Webmin" link on the top left column and then
2. selecting "Webmin Users"
3. Clicking on the link (on top) titled "Create New User"
4. Enter the user name and where it says password, select, from the drop down menu, change "set to" to "Unix authentication", enter the real name (as identified when you first registered for your server's user account);
5. Next, click on the "Available Webmin Modules" blue bar and from the drop down select the module options you would like this user to have access to, or click the "Select All" option and then click the Create button, down below.

That's it, your new webmin user is now created using your default linux user name and password.

Testing Ubuntu Lamp 11.04 Natty Narwhal Server edition

So several days ago, my development server (that was loading Ubuntu Server 10.10 Maverick Meerkat) began giving problems. It started with suddenly not being able to connect via wireless ... and then, while we were still trying to figure out the solution to that problem, it stopped booting up up. We could not figure out what the problem was, only that possibly there might have been a hardware problem (maybe power supply?). So we changed the power supply and still could not boot up because some of the boot files had become corrupted.

We then decided to try out the 11.04 version which was not yet released, but the release was / is only days away.

We were able to get the server up and running, however, still could not get the wireless working.

Then it crashed again, this time for no discernible reason ... we had just got things up & running & perhaps the only thing in common was server updates had been done and we discovered certain boot files had broken links ... specifically the initrd.img & vmlinuz.img links.

Through this entire process, we learned a few useful tips from a variety of sources (sorry I do not recall exactly who) and I thought I should post them here for reference:


1. Download and install the server version of the operating system ... while going through that process, provide (when asked) the server host name, the user name and password, ... also select what server software you would like installed on the computer (LAMP, Samba, etc.) & make sure to provide a user name and password for mysql also.


2. To get the desktop to install over the server, download the alternate desktop cd version and after booting the server:
type
sudo apt-cdrom add
sudo apt-get update
sudo apt-get install ubuntu-desktop
sudo dpkg-reconfigure xserver-xorg
sudo /etc/init.d/gdm start


3. Installing Additional Server Software
If there is any server software that perhaps you forgot to install initially, you can always install them using one of the following ways:
A. Open terminal (Programs > Accessories > Terminal or with your keyboard, simply type Ctrl+Alt+t); Then type the following commands:
i)To install Apache:
sudo apt-get install apache2
Now to confirm the installation of Apache2 open http://YourIpAddress in your web browser, you will see It Works! default page of Apache.
ii) To install Mysql:
sudo apt-get install mysql-server
At the installation you be will asked to provide a root password for Mysql.
iii)To install php:
sudo apt-get install php5 libapache2-mod-php5
After this installation restart Apache [sudo /etc /init.d/apache2 restart] don’t write brackets.
iv)To install phpmyadmin:
sudo apt-get install phpmyadmin
Two option window will open in installation one for web server reconfigure automatically[select apache2] and second for configure database for phpmyadmin with dbconfig-common [select No].
You will need to copy the apache.conf to /etc/apache2/conf.d/ from /etc/phpmyadmin/ or the page will return a 404 error.
To copy Run-
sudo cp /etc/phpmyadmin/apache.conf /etc/apache2/conf.d
Now you have to restart your apache server
sudo /etc/init.d/apache2 restart
Now open http://YourIpAddresss/phpmyadmin

B. Alternately, you can install LAMP by opening Linux Tasksel
i) If you do not have Linux Tasksel installed already (most server editions do not have to worry about this, so those users can skip to ii) below), in terminal type
sudo apt-get install tasksel
and that command will install the software for you;
ii) to open & use the software, in terminal, type
sudo tasksel
and the software application window will open up for you;
iii) In the Tasksel window select the server software that you would like to install (LAMP for example) and click the space bar to select it;
iv) do the same to add more of the server softwares available. Use your arrow keys to highlight each available software in turn and the space bar to select them for installation;
v) to install everything you've selected, click the enter button on your keyboard;
vi) please remember, during installation, you may be asked to provide user names and passwords, so it would be a good idea to stay close by during this process.


4. Setting root password (just incase you can not sign in to your webmin account using your regular user name and password):
Launch the Terminal by going to Applications > Accessories > Terminal
Type or copy and paste the following command
sudo passwd root
Enter your user password
Enter the password you wish to use for the root user.
Enter the password one more time.
To test out the changes you can switch to the root user and try login in.
su
Enter your new root password.
You will now notice that it says root@YourSystemName.
You could also enter the following command:
whoami
Now to logout as the root user use the exit command
exit
You can easily change the password at any time for root by just following these steps again.

Friday, January 14, 2011

I'm back!

Today I'm going to document my experiences in designing a website with joomla 1.5.2 & phoca gallery.

I know I promised more blogs on the previous website I designed and have not yet posted them (due to time constraints), but I thought I should document this before I go much further.

Let me be honest, this is my first time working with phocagallery and so far it is one joomla extension that I have had no problems with whatsoever.

My major issue has been getting rid of the Powered by text at the bottom of the page on the front end. Now, don't get me wrong, I have no problem with giving credit where it is due, but, as a designer, who often uses multiple components and modules on websites, it looks untidy (to say the least) to have "powered by" or "designed by" text all over the place on the front end of the website.

Anyways, so on to the methods I discovered to remove this from the front end (without removing it completely.

for my work I used Joomla 1.5.2 with Phocagallery 2.7.5

to remove the powered by text, I basically edited two files:

1. Root Folder>components>com_phocagallery>views>categories>view.html.php
2. Root Folder>administrator>components>com_phocagallery>libraries>phocagallery>render>renderfront.php

In the first one I located the following code:
$tmpl['phoac'] = '
Power'.'ed by Phoc'.'a Gal'.'lery
';

now highlight, cut and replace that code with this:

//$tmpl['phoac'] = '
Power'.'ed by Phoc'.'a Gal'.'lery
';

then click save.

This will remove the powered by text from the main categories page, but not the other pages

to remove the powered by text from other pages go to the second file and locate the following code:

function getString() {
return '<'.'d'.'i'.'v'.' '.'s'.'t'.'y'.'l'.'e'.'='.'"'.'t'.'e'.'x'.'t'.'-'.'a'.'l'.'i'.'g'.'n'.':'.' '.'c'.'e'.'n'.'t'.'e'.'r'.';'.' '.'c'.'o'.'l'.'o'.'r'.':'.' '.'r'.'g'.'b'.'('.'2'.'1'.'1'.','.' '.'2'.'1'.'1'.','.' '.'2'.'1'.'1'.')'.';'.'"'.'>'.'P'.'o'.'w'.'e'.'r'.'e'.'d'.' '.'b'.'y'.' '.'<'.'a'.' '.'h'.'r'.'e'.'f'.'='.'"'.'h'.'t'.'t'.'p'.':'.'/'.'/'.'w'.'w'.'w'.'.'.'p'.'h'.'o'.'c'.'a'.'.'.'c'.'z'.'"'.' '.'s'.'t'.'y'.'l'.'e'.'='.'"'.'t'.'e'.'x'.'t'.'-'.'d'.'e'.'c'.'o'.'r'.'a'.'t'.'i'.'o'.'n'.':'.' '.'n'.'o'.'n'.'e'.';'.'"'.' '.'t'.'a'.'r'.'g'.'e'.'t'.'='.'"'.'_'.'b'.'l'.'a'.'n'.'k'.'"'.' '.'t'.'i'.'t'.'l'.'e'.'='.'"'.'P'.'h'.'o'.'c'.'a'.'.'.'c'.'z'.'"'.'>'.'P'.'h'.'o'.'c'.'a'.'<'.'/'.'a'.'>'.' '.'<'.'a'.' '.'h'.'r'.'e'.'f'.'='.'"'.'h'.'t'.'t'.'p'.':'.'/'.'/'.'w'.'w'.'w'.'.'.'p'.'h'.'o'.'c'.'a'.'.'.'c'.'z'.'/'.'p'.'h'.'o'.'c'.'a'.'g'.'a'.'l'.'l'.'e'.'r'.'y'.'"'.' '.'s'.'t'.'y'.'l'.'e'.'='.'"'.'t'.'e'.'x'.'t'.'-'.'d'.'e'.'c'.'o'.'r'.'a'.'t'.'i'.'o'.'n'.':'.' '.'n'.'o'.'n'.'e'.';'.'"'.' '.'t'.'a'.'r'.'g'.'e'.'t'.'='.'"'.'_'.'b'.'l'.'a'.'n'.'k'.'"'.' '.'t'.'i'.'t'.'l'.'e'.'='.'"'.'P'.'h'.'o'.'c'.'a'.' '.'G'.'a'.'l'.'l'.'e'.'r'.'y'.'"'.'>'.'G'.'a'.'l'.'l'.'e'.'r'.'y'.'<'.'/'.'a'.'>'.'<'.'/'.'d'.'i'.'v'.'>';
}

Replace it with the following:
function getString() {
//return '<'.'d'.'i'.'v'.' '.'s'.'t'.'y'.'l'.'e'.'='.'"'.'t'.'e'.'x'.'t'.'-'.'a'.'l'.'i'.'g'.'n'.':'.' '.'c'.'e'.'n'.'t'.'e'.'r'.';'.' '.'c'.'o'.'l'.'o'.'r'.':'.' '.'r'.'g'.'b'.'('.'2'.'1'.'1'.','.' '.'2'.'1'.'1'.','.' '.'2'.'1'.'1'.')'.';'.'"'.'>'.'P'.'o'.'w'.'e'.'r'.'e'.'d'.' '.'b'.'y'.' '.'<'.'a'.' '.'h'.'r'.'e'.'f'.'='.'"'.'h'.'t'.'t'.'p'.':'.'/'.'/'.'w'.'w'.'w'.'.'.'p'.'h'.'o'.'c'.'a'.'.'.'c'.'z'.'"'.' '.'s'.'t'.'y'.'l'.'e'.'='.'"'.'t'.'e'.'x'.'t'.'-'.'d'.'e'.'c'.'o'.'r'.'a'.'t'.'i'.'o'.'n'.':'.' '.'n'.'o'.'n'.'e'.';'.'"'.' '.'t'.'a'.'r'.'g'.'e'.'t'.'='.'"'.'_'.'b'.'l'.'a'.'n'.'k'.'"'.' '.'t'.'i'.'t'.'l'.'e'.'='.'"'.'P'.'h'.'o'.'c'.'a'.'.'.'c'.'z'.'"'.'>'.'P'.'h'.'o'.'c'.'a'.'<'.'/'.'a'.'>'.' '.'<'.'a'.' '.'h'.'r'.'e'.'f'.'='.'"'.'h'.'t'.'t'.'p'.':'.'/'.'/'.'w'.'w'.'w'.'.'.'p'.'h'.'o'.'c'.'a'.'.'.'c'.'z'.'/'.'p'.'h'.'o'.'c'.'a'.'g'.'a'.'l'.'l'.'e'.'r'.'y'.'"'.' '.'s'.'t'.'y'.'l'.'e'.'='.'"'.'t'.'e'.'x'.'t'.'-'.'d'.'e'.'c'.'o'.'r'.'a'.'t'.'i'.'o'.'n'.':'.' '.'n'.'o'.'n'.'e'.';'.'"'.' '.'t'.'a'.'r'.'g'.'e'.'t'.'='.'"'.'_'.'b'.'l'.'a'.'n'.'k'.'"'.' '.'t'.'i'.'t'.'l'.'e'.'='.'"'.'P'.'h'.'o'.'c'.'a'.' '.'G'.'a'.'l'.'l'.'e'.'r'.'y'.'"'.'>'.'G'.'a'.'l'.'l'.'e'.'r'.'y'.'<'.'/'.'a'.'>'.'<'.'/'.'d'.'i'.'v'.'>';
}

This last one will remove all other traces of the powered by text on the front end of your website, without actually removing the code itself.

Tuesday, December 14, 2010

Custom Baha'i Merchandise pt2 - clock, pillow, cushion, journal, keepsake box, apron, mugs, thermos, water bottles, can cooler, stein, travel mug, mouse pad, tile coaster,

Modern Wall Clock Information/Buy: Click Here Large Wall Clock Information/Buy: Click Here Wall Clock
Information/Buy: Click Here
Unity the Key to Peace Throw Pillow 
Information/Buy: Click Here
Unity the Key to Peace Journal
Information/Buy: Click Here
Keepsake Box
Colors: Black & Mahogany Information/Buy: Click Here
Unity the Key to Peace BBQ Apron
Colors: Khaki, Lemon
Information/Buy: Click Here
Unity the Key to Peace Apron (dark)
Information/Buy: Click Here
Unity the Key to Peace Tile Coaster
Colors: White
Information/Buy: Click Here
Unity the Key to Peace Mousepad
Colors: White
Information/Buy: Click Here
Unity the Key to Peace Framed Tile
Information/Buy: Click Here
Unity the Key to Peace Ceramic Travel Mug
Information/Buy: Click Here
Unity the Key to Peace Stein Information/Buy: Click Here Unity the Key to Peace Large Mug
Information/Buy: Click Here
Unity the Key to Peace Mug Information/Buy: Click Here
Unity the Key to Peace Stackable Mug Set (4 mugs) Information/Buy: Click Here Unity the Key to Peace Sigg Water Bottle 0.6L Information/Buy: Click Here Unity the Key to Peace Thermos Can Cooler 
Information/Buy: Click Here
Unity the Key to Peace Thermos (12 oz) 
Information/Buy: Click Here
Unity the Key to Peace Thermos Food Jar
Information/Buy: Click Here
Unity the Key to Peace Thermos Bottle
Information/Buy: Click Here
Unity the Key to Peace Stainless Water Bottle 1.0L Information/Buy: Click Here Unity the Key to Peace Stainless Water Bottle 0.6L Information/Buy: Click Here Unity the Key to Peace Trek Water Bottle
Information/Buy: Click Here
Unity the Key to Peace Sigg Water Bottle 1.0L
Information/Buy: Click Here