Free – JQgrid PHP Grid Control

Download :: Screenshots :: Changelog :: Support :: Comments

php-ajax-datagrid-jqgrid

Download Latest Release
with usage example

For Live Support, Add in Gtalk
gridphp@gmail.com

For Community Support
Visit Support Forum

Generate fully functional PHP Grid in just 7 lines code. Enabling Add, Edit, Del, Search, Sort, Page, Themes etc. PHP Ajax Datagrid Control is based on JQGrid. Why do repetitive operations every time? Significantly reduce time and cost by using this jqgrid php component. Ideal for prototyping Admin interfaces. PHP Datagrid Control is very customizable using various parameters & custom events. Supports all major databases including Mysql, PGsql, SQL Server, Oracle, Sybase & ODBC driver etc.

UPDATE (1st March, 2012): Coming Next … Intergation with CakePHP, CodeIgnitor, Zend Framework & WordPress. CakePHP & Jqgrid integration is now easier than never before using our PHP Grid library. No need to go in complex JQgrid Javascripts. Just utilize this component and release quickly.

Italia: Genera pienamente funzionale griglia PHP in soli 7 linee di codice. Aggiungi abilitanti, Modifica, Del, Ricerca, Ordina, Page, temi ecc PHP Ajax DataGrid di controllo si basa sulla jqGrid.

This piece of code will result in fully functional JQuery Ajax-ified PHP Datagrid with:

  • Adding record
  • Editing record
  • Delete record
  • Auto-filter Search
  • Sorting the Data
  • Pagination (customizable)
  • Grouping Display By Column (with aggregate summary)
  • Date-picker Integration
  • Custom Display Formatter (dropdown/checkbox/image/password/link etc)
  • Multilingual Support (Italian, French, German, Arabic, Chinese etc)
  • RTL Support and UTF8 Support
  • Customizable Themes (using ThemeRoller)
  • No time limit in Free version
  • — Premium Features —
  • Integration with all Major Databases (mysql,pgsql,mssql,sybase … and odbc support)
  • Master-Detail Subgrid (multi-level hierarchy) *
  • Custom Events for own Add/Update/Delete implementations *
  • Inline Row Addition
  • Export to Excel *
  • Export to PDF (with Custom PDF formats) *
  • Source Code (neat clean with comments) *
  • Technical Support in Integration *
  • Free Upgrades (on request) *
  • Advance Search *
  • Excel like Navigation *

Here is the PHP Code …

include("jqgrid.php");

$g = new jqgrid();
$grid["caption"] = "My Sample Grid"; // set grid customizable params
$g->set_options($grid);
$g->table = "tags"; // db table for CRUD operations.

// You can also specify SQL query for displaying data (download code with examples)
// $g->select_command = "select f1,f2,f3 from tags";

$out = $g->render("my_grid_1"); // render grid

... and in HTML after including JS files ...

<div><?php echo $out?></div>

Need Customization or Full Source Code?

- Full source code is flexible and new custom features can be added easily
- Full source code can be given after payment of $50 of appreciation
- Technical Support for component integration (on need basis)
- Free Upgrades & Bug fixes (on request)
- If interested Contact Me

Free version has no time limitation, but source code is encrypted and some marked (*) features are not allowed.

Download Latest Release
with usage example

Roadmap:

- Bulk Updates
- Custom JS validation
- Excel view like google-docs (auto refresh, row/cell lock)


UPDATE: Version 1.4.5 is available  (February 12, 2012) – for paid members
- support for all major databases (mysql,pgsql,mssql,sybase … and odbc support) (db-layer.php)
- inline row addition (excel_view.php)
- pdf export custom template sample (export-pdf.php)
- export to pdf/excel in same grid
- fix for non integer primary key
- fix for mysql keyword based column name
- Fix for non-integer PK column
- multiselect fix in lib jqgrid 4.3.1

UPDATE: 21st December, 2011

Version 1.4 is available

Features:
- Datepicker integration
- Group by field
- Runtime change “group by” field
- Password mask formatter / edittype
- Excel export support for numeric columns

UPDATE: 21st July, 2011

Version 1.3 is available

Features:
- PDF export feature (export-pdf.php)
- Multiple fonts in pdf export
- External link with grid data (external-link.php)
- Export filtered/all data option
- Export specific columns (export-pdf.php, $col["export"] = false;)

Fixes:
- persist where filter in export option
- Jquery fix for IE
- utf8 encoding fix
- json fix for php 5.1
- slashes fix

UPDATE: 31st December, 2010

1. Version 1.2 is available

- Several bug fixes (with thanks to all reporters)
- Support for Subqueries
- Must review README.txt when migration from previous implementations
- Get latest version from above link

2. Image Formatter

Introduced image formatter to display image in grid, if URL is fetched from DB.

$col["formatter"] = “image”; // format as image — if data is image url e.g. http://<domain>/test.jpg
$col["formatoptions"] = array(“width”=>’20′,”height”=>’30′); // image width / height etc

3. Excel like Navigation

- Navigate through arrow keys
- Enter to Edit / Save
- Include Intrinsic Operations

—-

UPDATE: 2nd November, 2010

Several fixes and incorporated in latest version. Please get your latest copy.

* Support for formatters e.g.
$col["formatter"] = “date”; // format as date
$col["formatoptions"] = array(“srcformat”=>’Y-m-d’,”newformat”=>’d/m/Y’); // format as date

* Cell editing navigation support, like excel
* Table alias fields are fixed
* Enabled support for GROUP BY custom query
* Export excel fix for ? based url

—-

UPDATE: 5th October, 2010

Following features are now incorporated in free version …

1. Sub-Grid/ Master Detail support

And it is available with all main operations … like search/add/edit/delete/sort/paging etc. You can have multi-level subgrids.

JQGrid Subgrid & Master Detail Example
JQGrid Subgrid & Master Detail Example

2. Custom Events Support

Now you can write you own custom implementations on UPDATE / INSERT / DELETE.

E.g. code …

// params are array(<function-name>,<class-object> or <null-if-global-func>,<continue-default-operation>)

$e["on_insert"] = array(“add_client”, null, false);
$e["on_update"] = array(“update_client”, null, true);
$e["on_delete"] = array(“delete_client”, null, true);
$grid->set_events($e);

—-

Technical FAQs / issues available here

  • Custom Display Formatter (dropdown/checkbox/image/password etc)
  • RTL Support and UTF8 Support

Genera pienamente funzionale griglia PHP in soli 7 linee di codice. Aggiungi abilitanti, Modifica, Del, Ricerca, Ordina, Page, temi ecc PHP Ajax DataGrid di controllo si basa sulla jqGrid.

173 Responses to “Free – JQgrid PHP Grid Control”

  1. Francisco José Says:

    Hello azghanvi
    I have a single table with two fields: name student and school name (simplifying).

    As there are several student for one school, I want to create a Grid type “grouping.php” to group students by school

    I have reviewed the file “grouping.php” but working with two tables.

    Is it possible to do what he does “grouping.php” but with a single table?

    If so, how should the “SELECT”?

    Thanks for the help.
    Francisco

    • azghanvi Says:

      It should work as expected by single table SQL. Test it and let me know the issue. Select both fields school,student and group on school from phpgrid code.

      • Francisco José Says:

        Thanks Afnan, I’ve got.

        Your jqGrid-full-source-v1.4.5 works great.

        I bought it and I advise everyone to do so.

  2. Rutvik Says:

    I can not include this code but i say following error. How can i include it in master page…??

    {“page”:”admin\/plan_grid.php”,”total”:1,”records”:”11″,”rows”:[{"planid":"2","pname":"uikj","pmsg":"jk","ptc":"kj","pcom":"kjlcvbnm,.\/"},{"planid":"3","pname":"dgfv","pmsg":"bv","ptc":"vcb","pcom":"cvb"},{"planid":"4","pname":"gb","pmsg":"hg","ptc":"hg","pcom":"hg"},{"planid":"5","pname":"dfg","pmsg":"g","ptc":"xcg","pcom":"cxg"},{"planid":"6","pname":"dscgb","pmsg":"vbn","ptc":"vbnvn","pcom":""},{"planid":"7","pname":"dg","pmsg":"fgh","ptc":"fh","pcom":"fh"},{"planid":"8","pname":"cvgc","pmsg":"vb","ptc":"v","pcom":"cb"},{"planid":"9","pname":"h","pmsg":"hjk","ptc":"k","pcom":"jh"},{"planid":"10","pname":"guhjg","pmsg":"gjgj","ptc":"hjvhnv","pcom":"jvhgf"},{"planid":"11","pname":"gughj","pmsg":"vhjbh","ptc":"bkjbgj","pcom":"bgkjghj\n"},{"planid":"12","pname":"hjy","pmsg":"gh","ptc":"jh","pcom":"j"}]}

  3. ouija Says:

    How do you update the initial value pulled by the script? I am using a 0/1 value for a checkbox, and initially it will display the value and not Yes or No — is there a way to mask or replace the text? (I’m certain there is) and if so, what is the function? :)

  4. Jose Says:

    I have the following error:

    Access forbidden!
    You don’t have permission to access the requested object. It is either read-protected or not readable by the server.
    If you think this is a server error, please contact the webmaster.
    Error 403
    localhost
    Thu Jan 5 22:09:39 2012
    Apache/2.2.14 (Unix) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l PHP/5.3.1 mod_perl/2.0.4 Perl/v5.10.1

    I create the database with the same name and the same password, root.

    Any idea?
    Thanks

  5. PHPGrid 1.4 Released - TurboLinux Blog Says:

    [...] PHPGrid 1.4 has been released. [...]

  6. Ray Says:

    Hi azghanvi,

    IF you own the source to version 1.3 is there and update to 1.4 or do we need to purchase the source code all over again?

    Thank you

  7. Francisco José Says:

    Hello Afnan,
    Congratulations on the new version 1.4
    I’ve tested so far works perfectly.
    I encourage you to pursue new implementations.

    • azghanvi Says:

      Thanks for the feedback … I just released the lite version for 1.4. Fellows can download from the link provided on top right

      • Aduol Says:

        The external link file is giving an errors. Kindly check on it
        Notice: Undefined variable: _SESSION in D:\xampp\htdocs\currentdev\gridtest\inc\jqgrid_dist.php on line 2

      • azghanvi Says:

        Thanks for updating … will be updateing a fix.

        For now … quick fix is

        put this on first line.
        error_reporting(E_ALL & ^E_NOTICE);

  8. JV Says:

    First of all I want to say thanks for this amazing tool.
    OK, so I just downloaded v1.2(latest version available for download) and I’ve been messing around with the example-all.php code to get familiarized with the management of this lib, and I found something weird when setting the grid actions.

    In the sample code everything is set to true, but when u set edit or delete to false, the options row is not displayed anymore on the grid, even with “rowactions” set to true, I don’t know if its only me, or if this happens to anyone else. And because of that issue, if you want to edit any record, the save option will not be displayed anymore and you cant save the changes.
    Here it is how it looks with edit or delete set to false: http://i42.tinypic.com/68exro.png

    Also is there any way to disable row resizing??

    Thanks in advance

  9. Chris Says:

    Hi, I try to download the latest version 1.4 or 1.3 but in your site don´t exist the link, only I found 1.2 version. Can you help me, I guess some people has the same problem. Thanks. :)

  10. Francisco José Says:

    First, say I bought your code: it is a wonder.
    Please answer three questions?
    1 .- When exporting to excel, mysql numeric fields appear as text in excel spreadsheet exported. Anything I can do?
    2 .- It is possible that users hide / display columns?
    3 .- I read that on your roadmap for newer features. When will Group Summary and Integration DatePicker.
    thanks

    • azghanvi Says:

      Hi, apologies for late reply …

      1. Probably … not possible now in current library

      2. add bold line with set_actions()

      $g->set_actions(array(
      “add”=>true, // allow/disallow add
      “edit”=>true, // allow/disallow edit
      “delete”=>true, // allow/disallow delete
      “rowactions”=>true, // show/hide row wise edit/del/save option
      “export”=>true, // show/hide export to excel option
      “autofilter” => true, // show/hide autofilter for search
      “search” => “advance” // show single/multi field search condition (e.g. simple or advance)
      “showhidecolumns” => true // show single/multi field search condition (e.g. simple or advance)
      )
      );

      3. Both datepicker and grouping feature is ready to be released. Just little more testing required. I’m working to add Tree view mode too (for drill down operations)
      If you say … i can send you the beta package.

      • Francisco José Says:

        Hello,
        Yeees, of course, I want to receive the beta package. I could help testing it.

        “showhidecolumns” works well.

        I think I’ve solved the problem of numerical colunmas when exporting to excel:

        in the “php-excel.class.php”

        replace the “private function AddRow ($ array) {…}

        for this:

        private function addRow ($array)
        {

        // initialize all cells for this row
        $cells = “”;

        // foreach key -> write value into cells
        foreach ($array as $k => $v):
        if (is_numeric($v)) {
        //if is numeric and starts with zero, and is not zero and is not zero-decimal:

        if (substr($v, 0, 1) == “0″ && $v != 0 && substr($v, 0, 2) !== “0.”) {
        $type = “String”;
        } else {
        $type = “Number”;
        }
        } else {
        $type = “String”;
        }

        $cells .= “” . utf8_encode($v) . “\n”;

        endforeach;

        // transform $cells content into one row
        $this->lines[] = “\n” . $cells . “\n”;

        }

        Also, if line 190 – header (“Content-Disposition: inline; filename = \” “. $ Filename.”. Xlsx \ “”) – you change the extension to xls, the file is compatible with Office 2007 and2010.

        I guess this information can serve you.
        a greeting
        Francisco

  11. barakha Says:

    Hi Mr. Azghanvi,

    I need sample program of Sub-Grid
    Waiting your answer.

    Sincerely,
    Barakha

  12. Berto Says:

    Hello, I love your grid is fantastic and I thank you in advance, but I have a doubt. As I can make a column is a select type field, and the data are those of another table?, Thank you very much for everything.

  13. Steve Says:

    when I customise the coloumns the add data fails to work, please advise I am using the free version.

  14. Steve Says:

    would like to purchase

  15. vjunior Says:

    hi,

    i just come to say: wonderful..
    easy and clear! just it. =)

    great job azghanvi .

  16. Ajesh Mahto Says:

    hey Azghanvi,
    I have downloaded the latest version of jqgrid .. when i setup the application with your default database (gridemodemo) , it worked fine. but when i changed the database , and table name . the table is populated but the action delete and edit is not working. The action action and delete is only shown in some random rows. Even it shows it doesn’t work. Please help with this.

  17. hakiss Says:

    Hello,
    This is a very useful and easy component.
    I would like to ask you if I can change the ‘Edit’, ‘Delete’ labels with small icons instead of text.
    Thank you for the time invested in this utility.

  18. Adam Says:

    Hello,

    If there is other php code on the page, it seems to interfere with the grid. is this a known bug or is there a way around it?

    • azghanvi Says:

      Grid code responses JSON for ajax calls, so it need to be done before echo’ing any other text.
      And must be placed on top of page (before render)

  19. julio Says:

    Hello, how can i display a image in a row or colum?

    • azghanvi Says:

      Here is the sample column definication.

      $col["formatter"] = “image”; // format as image — if data from db is image url e.g. http:///test.jpg
      $col["formatoptions"] = array(“width”=>’20′,”height”=>’30′); // image width / height etc

  20. Dimitri Backaert Says:

    Hi Mr. Azghanvi,
    I was wondering if it’s possible to ‘mask’ a value in the datagrid display mode.
    I’m currently showing a grid with username / password combinations, and I want the password to be masked.
    At this time, it’s shown in clear text…

    In edit mode it’s password masked…

    Hoping to get a response.
    Sincerely Yours

  21. NatxoCC Says:

    I tried to have excel and pdf export but I cound’t.
    Someone can help me with this?

    Thanks!

  22. Ray Says:

    It would really be nice if you had a PayPal button to purchase this!
    I see people on here waiting for you to emil them about payment.
    I also would like to purchase this.

  23. pulo Says:

    hi,
    How do I removed “act” columns(edit|delete) ?
    Thanks

    Pulo

    • azghanvi Says:

      You can do it by …

      $g->set_actions(array(
      …….
      “rowactions”=>false, // show/hide row wise edit/del/save option
      …….
      )
      );

  24. Dragan Says:

    Hello, does it work with PostgreSQL?

  25. Rick Weston Says:

    Hey, do you have a support forum yet? I would love to see a forum/wiki with all the functions listed out. I want to set the grid so tat it scrolls from left to right when the columns exceed the width of the grid keeping the column widths as set in the grid settings.

    Is this possible.

    • azghanvi Says:

      Currently, it’s not supported. May be there is a need to tweek container DIV with CSS to achive your need.

  26. KEVIN Says:

    When I try to edit nothing edits. It looks like it is working but changes or new records are not saved. Delete record does not work either.

  27. Foysal Says:

    HI
    I am new in jqGrid. I installed jqGrid successfully. But I could not install Single field searching option in jqGrid. Can you help me in this ragard??

    Foysal

  28. Ratko Says:

    selectedRow How?

    How do I get selected ID from the grid?

    example:

    When you select the desired row, i want to go to the page test.php?Id = [selected row]

    • azghanvi Says:

      Here is the sample code …. let me know incase of integration issues.

      $col = array();
      $col["title"] = “Id”; // caption of column
      $col["name"] = “id”;
      $col["width"] = “10″;

      $col["link"] = “http://localhost/?id={id}”; // e.g. http://domain.com?id={id} given that, there is a column with $col["name"] = “id” exist
      $col["linkoptions"] = “target=’_blank’”; // extra params with tag

      $cols[] = $col;

  29. Vivek Says:

    Hey
    I am using your scripts free version. I need to have a link to a separate screen for Editing the fields in the database. How can i have a link that will send the row id to the next page under the actions column. Please reply as soon as possible.

    Your script works great,

    Thanks

    • azghanvi Says:

      Here is the sample code …. let me know incase of integration issues.

      $col = array();
      $col["title"] = “Id”; // caption of column
      $col["name"] = “id”;
      $col["width"] = “10″;

      $col["link"] = “http://localhost/?id={id}”; // e.g. http://domain.com?id={id} given that, there is a column with $col["name"] = “id” exist
      $col["linkoptions"] = “target=’_blank’”; // extra params with tag

      $cols[] = $col;

  30. sean Says:

    a problem occured when updating the field if i double click and the text box appears and then select the icon for update at the bottom the php code is selected… i you then proceed and save the information part of the grid is lost… need to fix it have only a week to get this problem addressed

  31. Phil Says:

    I purchased the full version and am using v1.2.

    Having problems with in PHP 5.1.6 – Just give a blank screen.

    Works fine otherwise in PHP 5.2.x

    Any ideas why?

  32. vivekrose Says:

    Hi Mr. Azghanvi,
    Really it’s great work u did, i really thanks to god for did this work. But in this i have small doubt. how can we call a javascript function inside this..,
    I have tried, but nothing was worked, plz share ur idea to clear this issue..,

    Thank UUUUUUUUUUU very much..,
    Have a nice day..,
    Vivekrose

  33. Alan M. Maziero Says:

    My database charset is latin1, and when the records with accented words are rendered, i get truncated words (the rendering stops on first accented letter). What should i do to avoid this?
    I tried to define the charset at the top of php but it had no effect..

    • azghanvi Says:

      Hi,

      have you tried adding …
      mysql_query(“SET NAMES ‘latin1′”);

      please email me some sample code & screenshot, so some clue.

      Thanks.

  34. Vivekananda Says:

    Hi friend,
    I am using ur jqgrid, i need to know whether ur jqgrid will support single user or multiuser . So plz explain this, i am not understand this ..,

    Thanks & Regards
    vivek

    • azghanvi Says:

      It is not actually designed for multiuser. But yes, if we add auto refresh option & locked cell/row … we can have it.
      Really nice suggestion but not available now.

  35. Tprod Says:

    Hi,

    How can we add a button ? I try to integrate it in a CMS. I know there’s a chance with navButtonAdd. How can we declare it in PHP ?

    Thanks for your answer and congratulations for your script !

    • azghanvi Says:

      Yes, you are almost there but it easy in full code version, by changing library code.
      it’s not available as part of API now.

  36. robert Says:

    Excellent work
    fast, easy, and more !

    but.. what about UTF-8 words from mysql ?

    i’m using meta tag and nothing happend .. so any help here is very welcome?

    thank you

  37. Rick Says:

    I finally got this to display my data and while using my custom sql statement, apparently if you have other blocks of php code inthe file and have white space it causes issues… maybe everyone else that codes knows this already? I’m pretty new. Also I am using a dynamically created web page and had to use an iframe to include the grid file rather than using a php include statement to get it to all play nice.

    I would like to write a custom delete function so that when a file is selected to be deleted it actually just updates the row and changes a field to a different value so that the user no longer has the record assigned to them. Is this possible without purchasing a lic or do I need the full source code to do this? I just do not want to actually delete the info. I am not opposed to buying this script, I just want to use it more to make sure it is going to do everything that I need first.

    Thanks

  38. Strongbox Says:

    First of all, love the fact that you have created a PHP implementation which is free to use and if I can get this to work I will be buying a full license for additional development.

    When I create a grid linking to my database I am only getting the column headers and no rows of data. Currently this is the sql statement I am using:

    $g->select_command = “SELECT id,first_name,last_name,email_address,work_phone,home_phone FROM tb_leads”;

    My columns all match up as to the field id’s…

    Do I only need the files in your download for this to work or are there additional files that I will need for this to work?

    Thank you for all of your help!

    • Strongbox Says:

      Also, how about creating a user support forum, I would like to try and add to this community with full documentation on installation etc.

    • azghanvi Says:

      Hi,

      1. Best debugging could be done by checking the request/response data using firebug->net->ajax.
      It’ll show you exact response being returned, which actually didn’t rendered.

      2. Try adding
      ini_set(“display_errors”,”on”);
      before …
      error_reporting(E_ALL & ~E_NOTICE);
      in index.php or any sample file.

      3. There should be no white space rendered before lib’s ajax output.

      Please update me the results too.

      Thanks.

  39. soumer Says:

    hellow
    I am realy intersting for your Jqgrid PHP Grid Component …
    but when I try to export data filtred ….. i get all data it’s like i did no filtre

    tnx

  40. Lemaire Says:

    How to add a datepicker ?

  41. tester Says:

    Hello Azghanvi

    I am realy intersting for your Jqgrid PHP Grid Component …
    but when I try your examle I get

    

    at the first line…

    Can you please give me a tip, what I make wrong…
    (I have only change the database name)

    Thanks for Reply

    • azghanvi Says:

      Well,  is a Byte Order Mark (BOM) of the UTF-8 unicode standard, which on your system appears to be misinterpreted as ISO-8859-1 text instead of UTF-8.

      open file in notepad++ or other tool … and convert it to utf8 encoding.

  42. enyrix Says:

    How to get informations of the selected row in a button click and how to execute a personalised js function when I click to add button in de ui popup ?

    Thx

  43. Kristinn S. Says:

    I am setting up a grid which contains a list of customers. I would like to insert a dynamic url on each customer number, which links to a different page where I can show some more customer info. etc.

  44. Soni Achmad Says:

    how much for Sub-Grid/ Master Detail support ? n how to transfer the money?

  45. faried Says:

    how about with dropdown listbox with this Jqgrid PHP Grid

    • azghanvi Says:

      see example-all.php

      // can be switched to select (dropdown)
      $col["edittype"] = “select”; // render as select
      $col["editoptions"] = array(“value”=>’10:$10;20:$20;30:$30;40:$40;50:$50′); // with these values “key:value;key:value;key:value”

  46. Tito Says:

    Hello..
    give me example for Oracle

    Thx

    • azghanvi Says:

      ADODB library need to be incorporated, and can be done in full version.
      If you are willing for full version, we can add this feature for you.

  47. kumar Says:

    Hi, How do i remove insert/update/delete/search buttons.
    Thanks,

    • azghanvi Says:

      $g->set_actions(array(
      “add”=>false, // allow/disallow add
      “edit”=>false, // allow/disallow edit
      “delete”=>false, // allow/disallow delete
      “rowactions”=>false, // show/hide row wise edit/del/save option

  48. soni achmad Says:

    Hi Mr. Azghanvi,

    I realy intersting for your creation on Sub-Grid/ Master Detail support – Jqgrid PHP Grid Component, but I couldn’t find how to get free download that file/folders.
    Oya I’m still in a High Schoof and thank you for your kind attention.

    Waiting your answer ASAP.

    Sincerely,
    soni

  49. jormos2 Says:

    hello i need change the width in the form edit , please…..

    thanks


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 26 other followers