Articles by "JS"
Showing posts with label JS. Show all posts
Today we are looking at how to create calender in php using JQuery and Ajax,this tutorials is have a web calendar displaying on our web calendar automatically.The feature of this calendar is that it has a left and right arrow which can use to navigate to next and previous month and year.For those of us who may want to test it on a local server before installing it to their web page,you need to run it through a server like Xampp server,Wamp server etc.

 php.jpg

Before we proceed there are some basic things we need to know to make the feature more effectively.

•    We need to build a style for our our calendar
•    We need a JQuery script to run this feature,you can download your JQuery Script online
•    We need to build an Ajax page that will call our PHP class
•    We need to build a PHP class
•    Finally we also need to create an index page
Steps To Create Our Web Calendar
  1.  Create a page and name it style.css with the below codes
body {

    font-family: calibri;

}



#calendar-outer {

    width: 574px;

}



#calendar-outer ul {

    margin: 0px;

    padding: 0px;

}



#calendar-outer ul li {

    margin: 0px;

    padding: 0px;

    list-style-type: none;

}



.prev {

    display: inline-block;

    float: left;

    cursor: pointer

}



.next {

    display: inline-block;

    float: right;

    cursor: pointer

}



:focus {

    outline: none;

    background: #ff8e8e;

}



div.calendar-nav {

    background-color: #ff8e8e;

    border-radius: 4px;

    text-align: center;

    padding: 10px;

    color: #FFF;

    box-sizing: border-box;

    font-weight: bold;

}



#calendar-outer .week-name-title li {

    display: inline-block;

    padding: 10px 27px;

    color: #90918b;

    font-size: 0.95em;

    font-weight: 600;

}



.week-day-cell li {

    display: inline-block;

    width: 80px;

    height: 80px;

    text-align: center;

    line-height: 80px;

    vertical-align: middle;

    background-color: #f6ffc6;

    color: #ff8e8e;

    border: 1px solid #f1f0f0;

    border-radius: 4px;

    font-size: 1.2em;

}

#body-overlay {background-color: rgba(0, 0, 0, 0.6);z-index: 999;position: absolute;left: 0;top: 0;width: 100%;height: 100%;display: none;}

#body-overlay div {position:absolute;left:50%;top:50%;margin-top:-32px;margin-left:-32px;}

2.   Create a PHP Class and name it class.calender.php with the code given below.

<?php

class PHPCalendar {

    private $weekDayName = array ("MON","TUE","WED","THU","FRI","SAT","SUN");

    private $currentDay = 0;

    private $currentMonth = 0;

    private $currentYear = 0;

    private $currentMonthStart = null;

    private $currentMonthDaysLength = null;   

   

    function __construct() {

        $this->currentYear = date ( "Y", time () );

        $this->currentMonth = date ( "m", time () );

       

        if (! empty ( $_POST ['year'] )) {

            $this->currentYear = $_POST ['year'];

        }

        if (! empty ( $_POST ['month'] )) {

            $this->currentMonth = $_POST ['month'];

        }

        $this->currentMonthStart = $this->currentYear . '-' . $this->currentMonth . '-01';

        $this->currentMonthDaysLength = date ( 't', strtotime ( $this->currentMonthStart ) );

    }

   

    function getCalendarHTML() {

        $calendarHTML = '<div id="calendar-outer">';

        $calendarHTML .= '<div class="calendar-nav">' . $this->getCalendarNavigation() . '</div>';

        $calendarHTML .= '<ul class="week-name-title">' . $this->getWeekDayName () . '</ul>';

        $calendarHTML .= '<ul class="week-day-cell">' . $this->getWeekDays () . '</ul>';       

        $calendarHTML .= '</div>';

        return $calendarHTML;

    }

   

    function getCalendarNavigation() {

        $prevMonthYear = date ( 'm,Y', strtotime ( $this->currentMonthStart. ' -1 Month'  ) );

        $prevMonthYearArray = explode(",",$prevMonthYear);

       

        $nextMonthYear = date ( 'm,Y', strtotime ( $this->currentMonthStart . ' +1 Month'  ) );

        $nextMonthYearArray = explode(",",$nextMonthYear);

       

        $navigationHTML = '<div class="prev" data-prev-month="' . $prevMonthYearArray[0] . '" data-prev-year = "' . $prevMonthYearArray[1]. '"><</div>';

        $navigationHTML .= '<span id="currentMonth">' . date ( 'M', strtotime ( $this->currentMonthStart ) ) . '</span>';

        $navigationHTML .= '<span contenteditable="true" id="currentYear" style="margin-left:5px">'.    date ( 'Y', strtotime ( $this->currentMonthStart ) ) . '</span>';

        $navigationHTML .= '<div class="next" data-next-month="' . $nextMonthYearArray[0] . '" data-next-year = "' . $nextMonthYearArray[1]. '">></div>';

        return $navigationHTML;

    }

   

    function getWeekDayName() {

        $WeekDayName= '';       

        foreach ( $this->weekDayName as $dayname ) {           

            $WeekDayName.= '<li>' . $dayname . '</li>';

        }       

        return $WeekDayName;

    }

   

    function getWeekDays() {

        $weekLength = $this->getWeekLengthByMonth ();

        $firstDayOfTheWeek = date ( 'N', strtotime ( $this->currentMonthStart ) );

        $weekDays = "";

        for($i = 0; $i < $weekLength; $i ++) {

            for($j = 1; $j <= 7; $j ++) {

                $cellIndex = $i * 7 + $j;

                $cellValue = null;

                if ($cellIndex == $firstDayOfTheWeek) {

                    $this->currentDay = 1;

                }

                if (! empty ( $this->currentDay ) && $this->currentDay <= $this->currentMonthDaysLength) {

                    $cellValue = $this->currentDay;

                    $this->currentDay ++;

                }

                $weekDays .= '<li>' . $cellValue . '</li>';

            }

        }

        return $weekDays;

    }

   

    function getWeekLengthByMonth() {

        $weekLength =  intval ( $this->currentMonthDaysLength / 7 );   

        if($this->currentMonthDaysLength % 7 > 0) {

            $weekLength++;

        }

        $monthStartDay= date ( 'N', strtotime ( $this->currentMonthStart) );       

        $monthEndingDay= date ( 'N', strtotime ( $this->currentYear . '-' . $this->currentMonth . '-' . $this->currentMonthDaysLength) );

        if ($monthEndingDay < $monthStartDay) {           

            $weekLength++;

        }

       

        return $weekLength;

    }

}

?>

3. Next proceed by creating PHP Ajax page and name it calendar-ajax.php with the below code
<?php

require_once 'class.calendar.php';

$phpCalendar = new PHPCalendar ();



$calendarHTML = $phpCalendar->getCalendarHTML();

echo $calendarHTML;

?>

4.    Finally create an index.php page with the given code below
<?php

require_once 'class.calendar.php';

$phpCalendar = new PHPCalendar ();

?>

<html>

<head>

<link href="style.css" type="text/css" rel="stylesheet" />

<title>PHP Calendar</title>

</head>

<body>

<div id="body-overlay"><div><img src="loading.gif" width="64px" height="64px"/></div></div>

<div id="calendar-html-output">

<?php

$calendarHTML = $phpCalendar->getCalendarHTML();

echo $calendarHTML;

?>

</div>

<script src="jquery-1.11.2.min.js" type="text/javascript"></script>

<script>

$(document).ready(function(){

    $(document).on("click", '.prev', function(event) {

        var month =  $(this).data("prev-month");

        var year =  $(this).data("prev-year");

        getCalendar(month,year);

    });

    $(document).on("click", '.next', function(event) {

        var month =  $(this).data("next-month");

        var year =  $(this).data("next-year");

        getCalendar(month,year);

    });

    $(document).on("blur", '#currentYear', function(event) {

        var month =  $('#currentMonth').text();

        var year = $('#currentYear').text();

        getCalendar(month,year);

    });

});

function getCalendar(month,year){

    $("#body-overlay").show();

    $.ajax({

        url: "calendar-ajax.php",

        type: "POST",

        data:'month='+month+'&year='+year,

        success: function(response){

            setInterval(function() {$("#body-overlay").hide(); },500);

            $("#calendar-html-output").html(response);   

        },

        error: function(){}

    });

   

}

</script>

</body>

</html>


Note:You have to put all this code in the same folder,also note that the line (35,36,37) which is highlighted is calling the JQuery script I ask you to download earlier before we proceeded to this tutorial.



For most programmers who like writing articles on different type of programs related tutorials,In one way or the other will want their code to highlighter just like the one written on a well known code editor like sublime text, brackets etc. Today we are going to be looking at how to highlight your code on blogger with just a simple code highlighter known as PrismJs.
Are still wondering what's PrismJs ? Check it's official page(website) for more information http://prismjs.com/, it's the second generation of syntax highlighting, it is more lightweight and that doesn't affect your page load time at all.


The overall adding procedure is the same as mentioned on the PrismJS official page but there are yet some modifications need to be made if you want it to work properly on Blogger blogs. In this tutorial i will provide the links to minified version of the codes, once you get the idea about adding it, you can use whatever version you want.

How To Add PrismJs on Your Blogger

•    Firstly login into your blogger site.
•    After you have logged in go to your Dashboard and click on theme
•    Proceed by clicking Edit HTML
•    After the Edit HTML has loaded press CTRL + F  and search for </head>
•    Copy and paste the code given below just before </head>


<link rel="stylesheet" href="http://prismjs.com/themes/prism.css"/>
 

<script type="text/javascript" src="http://prismjs.com/prism.js">

•    Finally Click on save
Tips:Make sure you backup your template before you carry out the procedure given above.

Tips : The links in the script and link tag is only for demo of the code, if you want to use different theme on your hosted website then you can download the version of your choice on PrismJS Download page, upload it to your hosting service and replace the links (prismjs.com/theme/prism.css and prismjs.com/prism.js) with your hosted file's links .

How To Display Code on Your Blogger Using PrismJs

The following example is for displaying HTML codes in your pages, to define any languages you have to edit language-xxx

<pre class='language-markup'>

<code>

// Your HTML Code here

</code>

</pre>

Tip: You can add the class for a language to any parent element and the children elements will inherit the defined language. It is very useful when you just want to display codes of the same language in a page also xxx refer to the language you are writing on eg php.

How To Implement Different Languages

To define languages you just have to change the language-xxxx in the class you can find in <pre> and <code> tags.

    For HTML we will use this tags to wrap the display codes
       
   
<pre class='language-markup'>

    <code>

    // Your HTML Code here

    </code>

    </pre>


    language-markup is used for HTML markups. You may use this for XML codes too.
    CSS will be wrapped into this tags
       

 <pre class='language-css'>

    <code>

    // Your CSS Code here

    </code>

    </pre>

    JavaScript can be wrapped into this

       
   
<pre class='language-javascript'>

    <code>

    // Your JS Code here

    </pre>

    </code>

    JQuery can also be displayed with this.
    Want to learn more than check out the PrismJS homepage

Read also: How to Use Google Prettify Syntax Highlighter With Blogger


How To Implement  Different Themes

The great thing about PrismJS syntax highlighter is that you can make the code blend with your site's overall theme by using different themes provided by PrismJS. There are the following themes available by default for it : default, dark, funky, okaidia, twilight, coy and solarized light

With a single addition of a CSS file you can change the theme for all PrismJS syntax highlighter instances on your blog.
In the first step we added the default theme,
  
<link rel="stylesheet" href="http://prismjs.com/themes/prism.css"/>

<script type='text/javascript' src="http://prismjs.com/prism.js"></script>

   

The http://prismjs.com/themes/prism.css in the first line of code sets the theme to default, while the following sets it to its corresponding theme.

Dark
 
 <link rel="stylesheet" href="http://prismjs.com/themes/prism-dark.css"/>

Funky

<link rel="stylesheet" href="http://prismjs.com/themes/prism-funky.css"/>

Okaidia

<link rel="stylesheet" href="http://prismjs.com/themes/prism-okaidia.css"/>
 

Twilight

<link rel="stylesheet" href="http://prismjs.com/themes/prism-twilight.css"/>

Coy

<link rel="stylesheet" href="http://prismjs.com/themes/prism-coy.css"/>

Solarized Light
  
<link rel="stylesheet" href="http://prismjs.com/themes/prism-solarizedlight.css"/>

   
     
Are you a blogger that do write articles  on programming and want to beautify the code to look like the code written on IDE google prettify will do that perfect for you without writing bunch of codes just to achieve that particular aim. This tutorial explains how to add Prettify syntax highlighter to your blogger blog.


What Does Prettify Code Highlighter Do?

It adds styles to code snippets so that token boundaries stand out and your
readers can get the gist of your code without having to mentally perform a
left-to-right parse. The prettyprinter looks for `<pre>`, `<code>`, or `<xmp>` elements with the
*prettyprint* class, and adds `<span>`s to colorize keywords, strings,
comments, and other token types.

How To Setup Google Prettifier

Step 1. Login to your Blogger account and go to "Theme"--> "Edit HTML" of your blog.

Step 2. You can load the JavaScript and CSS for prettify via one URL. Press CTRL + F and search for </body> Add this code just before </body> tag:
<script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js">
</script>


Above code will load the entire system  and schedule the prettifier to run on page load.

Step 3. Save your theme. You have now successfully added Prettify auto-loader to your Blogger blog.

Step 4. Now when you want to display a source code snippet in your blogger post, go to blogger post editor and select "HTML" mode.

Step 5. Use <pre>  or  <code> tag with "prettyprint" class as below.
 <pre class="prettyprint">source code here</pre>
<pre class="prettyprint"><code class"prettyprint">source code here</code></pre>


 Code Example:

<pre class="prettyprint">

<script type="text/javascript">

// Say hello world until the user starts questioning

// the meaningfulness of their existence.

function helloWorld(world) {

  for (var i = 42; --i &gt;= 0;) {

    alert('Hello ' + String(world));

  }

}

</script>

<style>

p { color: pink }

b { color: blue }

u { color: &quot;umber&quot; }

</style>

</pre>


Step 6. Publish/Update your post and view your post. It will look like this:
Result:
<script type="text/javascript">

// Say hello world until the user starts questioning

// the meaningfulness of their existence.

function helloWorld(world) {

for (var i = 42; --i >= 0;) {

alert('Hello ' + String(world));

}

}

</script>

<style>

p { color: pink }

b { color: blue }

u { color: "umber" }

</style>


How to Add Different Code Styles

Only you need to do is, replace "Step 2" code with below codes and that does the magic that with print your code beautifully and more attractive.

Desert Skin:
<script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js?skin=desert">
</script>



Sunburst Skin:
<script src="https://google-code-prettify.googlecode.com/svn/loade/run_prettify.js?skin=sunburst">
</script>



Sons-Of-Obsidian Skin:
<script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js?skin=sons-of-obsidian">
</script>


Doxy Skin:
<script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js?skin=doxy">
</script>



How to Specify the Language of Your Code

File extensions supported by default include: "bsh", "c", "cc", "cpp", "cs", "csh", "cyc", "cv", "htm", "html", "java", "js", "m", "mxml", "perl", "pl", "pm", "py", "rb", "sh", "xhtml", "xml", "xsl"
The lang-* class specifies the language file extensions.
You can specify other languages by specifying the language extension along with the prettyprint class.
For example, The syntax-highlighting functions contained in lang-css.js will not be called without adding the class "lang-css" to the <pre> tag. So you can add your CSS codes like this:
<pre class="prettyprint lang-css">
CSS code here
</pre>

Read also:How To Implement PrismJs Syntax Highlighting to your Blogger/BlogSpot For Better Formatting
Example:
How to Display Codes with Line Numbers

To display line numbers, use "linenums" class like this:
<pre class="prettyprint linenums">

source code here

</pre>


Code Example:
<pre class="prettyprint  linenums">



<script type="text/javascript">

// Say hello world until the user starts questioning

// the meaningfulness of their existence.

function helloWorld(world) {

  for (var i = 42; --i &gt;= 0;) {

    alert('Hello ' + String(world));

  }

}

</script>

<style>

p { color: pink }

b { color: blue }

u { color: &quot;umber&quot; }

</style>



</pre>

Result:
<script type="text/javascript">

// Say hello world until the user starts questioning

// the meaningfulness of their existence.

function helloWorld(world) {

for (var i = 42; --i >= 0;) {

alert('Hello ' + String(world));

}

}

</script>

<style>

p { color: pink }

b { color: blue }

u { color: "umber" }

</style>



Below code will display a CSS code with line numbers:

<pre class="prettyprint lang-css linenums">

body{background:#000000 url(http://3.bp.blogspot.com/-vB6rbTuTh34/UEw9OyUKQJI/AAAAAAAAIoQ/A3dwg6dKC_g/s1600/background.jpg) center top no-repeat;color:#555555;font-family: Arial, Helvetica, Sans-serif;font-size: 13px;margin:0px;padding:0px;}

a:link,a:visited{color:#C11112;text-decoration:underline;outline:none;}

a:hover{color:#FE3D36;text-decoration:none;outline:none;}

a img{border-width:0}

#body-wrapper{margin:0px;padding:0px;}

</pre>



Result:
body{background:#000000 url(http://3.bp.blogspot.com/-vB6rbTuTh34/UEw9OyUKQJI/AAAAAAAAIoQ/A3dwg6dKC_g/s1600/background.jpg) center top no-repeat;color:#555555;font-family: Arial, Helvetica, Sans-serif;font-size: 13px;margin:0px;padding:0px;}
a:link,a:visited{color:#C11112;text-decoration:underline;outline:none;}
a:hover{color:#FE3D36;text-decoration:none;outline:none;}
a img{border-width:0}
#body-wrapper{margin:0px;padding:0px;}

 Serving your own JS & CSS

You can download the script here
the scripts and styles and serve them yourself.  Make sure to include both the
script and a stylesheet Below are the syntax to include both the JS and CSS on your own website:



<link rel="stylesheet" type="text/css" href="prettify.css">




<script type="text/javascript" src="prettify.js">
</script>




Then run the `PR.prettyPrint()` function once your page has finished loading.
One way to do this is via the `onload` handler thus:
<body onload="PR.prettyPrint()">