Writing a Big Application in Ext (Part 1)

12. April 2008 – 23:20

Preface

I have decided to write this article for those users of Ext 2.x that have already grown up from having one HTML page with embedded script that creates one simple window or form, for those who are already decided that Ext is the way and for those who are fighting with too long files hardly to search in and feeling that their applications need a structure.

The number of approaches to a problem and number of solutions of it is equal to number of people that tackle it. The way I am going to describe in the following text in not the only one and do not want to say that either an application is going to be written my way or it is not good. Nothing like that.

What I do want to say is that this approach is workable, neatly structured, easily maintable, simply stated: It works!

 

What is “A Big Application”?

If you have a Viewport with BorderLayout, a grid and a form all in one file it certainly is not the big application, right?. If you have tens of windows each with a grid, form or border layout in it in tens of files it certainly is the bit application, right?

(Germans have very nice word: Jein which is combination of Ja = Yes and Nein = No.)

The answer to both above statement is Jein. When the application becomes big, then? The answer is simple: It becomes big when you feel it is big. It is the point when you start to have troubles to orient yourself in number of files or in you have troubles to find a specific place in one file, when you cease to understand relations of components, etc. I am writing you here but imagine when a 2-3 grades less experienced programmer starts to have this feelings.

We can safely state that each application is big as also a small application deserves to be well written and it may likely become really big as we start to add new features, write new lines of code, new CSS rules, etc.

The best and the safest state of the mind at the start of a new application is: I’m starting the big application!

 

Files and Directories

These we need to organize first. There is always a ServerRoot directory configured in Apache or another HTTP server so all subdirectories I’ll describe later are relative to it.

Recommended directory structure:

./css (optionally link)
./ext (link)
./img (link)
./js
index.html

Link in the above structure means a soft link pointing to a real directory where files are stored. The advantage is that you, for example, download new Ext version to a real directory then you change the link above to point there and without changing a line in your application you can test if everything works also with this new version. If yes, keep it as it is, if no, you just change the link back.

  • css will hold all your stylesheets. If you have global stylesheets with company colors or fonts you can create css directory as link too.
  • ext link you your Ext JS Library tree as described above
  • img link to your images. It can contain icons subdirectory as well.
  • js will hold all javascript files the Application is composed of.
  • index.html HTML file that is an entry point of your application. You can name it as you want and you may need some more files for example for a login process. Anyway, there is one application entry point/file.
  • optionally you can create a directory or a link for your server side part of the application (I have ./classes). You can name it as you wish but consistently for all applications you write (./server, ./php are some good examples)

 

index.html

Minimal index.html file content is:

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <link rel="stylesheet" type="text/css" href="./ext/resources/css/ext-all.css">
  <link rel="stylesheet" type="text/css" href="./css/application.css">
  <script type="text/javascript" src="./ext/adapter/ext/ext-base.js"></script>
  <script type="text/javascript" src="./ext/ext-all-debug.js"></script>
  <script type="text/javascript" src="./application.js"></script>
  <title>A Big Application</title>
</head>
<body></body>
</html>

Although you can do with the above file I would recommend to add a descriptive header to not only this file but to all files you create. Also an “End of file” marker has its value. See File Patterns for example of such headers.

 

application.js

We need a file where the onReady function will be placed; let’s call it application.js. Minimum content is:

// vim: sw=4:ts=4:nu:nospell:fdc=4
/**
* An Application
*
* @author    Ing. Jozef Sakáloš
* @copyright (c) 2008, by Ing. Jozef Sakáloš
* @date      2. April 2008
* @version   $Id$
*
* @license application.js is licensed under the terms of the Open Source
* LGPL 3.0 license. Commercial use is permitted to the extent that the
* code/component(s) do NOT become part of another Open Source or Commercially
* licensed development library or toolkit without explicit permission.
*
* License details: http://www.gnu.org/licenses/lgpl.html
*/
 
/*global Ext, Application */
 
Ext.BLANK_IMAGE_URL = './ext/resources/images/default/s.gif';
Ext.ns('Application');
 
// application main entry point
Ext.onReady(function() {
 
    Ext.QuickTips.init();
 
    // code here
 
}); // eo function onReady
 
// eof

Your header and footer may vary but sure you need to set Ext.BLANK_IMAGE_URL to point to your server. This is path to 1×1px transparent image file that is used by Ext as an image placeholder and if it points to an invalid location you can get various rendering problems such as missing combo trigger images, missing icons or similar.

You may also need to create a new global object variable for your application (here it is Application).

What you need for sure is Ext.onReady that is the main application entry point – the place where you write your application.

 

css/application.css

You will put your css stylesheet to this file, if any. If you need only a couple of rules it may seem as unnecessary to create a separate file for them and it looks like the better idea to put them to <style> tags in the page head.

The reverse is true, remember you’re writing a big application, so everything has to have its place. If you put styles in the page head sooner or later you will solve some rendering problems and you won’t know where the styles are.

 

The wrong way

What normally follows when we have all basics in as we have at this point? Let’s begin writing. So we sit down and we start to write:

var vp = new Ext.Viewport({
layout:'border'
    ,items:[
        new Ext.grid.GridPanel({
            store:new Ext.data.Store({
                proxy:new Ext.data.HttpProxy({ ...

Wait a minute. This way we will have 10,000 lines in our application.js very soon and that is what we want last. Obviously, some step is missing as if we’re going to create such a big file why we couldn’t write it in index.html in the first place?

 

The right way: Break it apart

Even the most complex whole consists of smaller system which consist of smaller parts which consist of some elements. Your to-be-written big application is not an exception. Now it is the time to identify this parts, components and relationships between them.

So, sit down, think it over, draw a sketch, make a list, whatever but result has to be that you know the components, at least most important ones, your application will consist of.

 

Pre-configured classes

Now, that you are done with application analysis and identifying its components you can start to write the first one. But how? The best approach is to write extension classes of Ext components that have all configuration options, otherwise passed as the configuration object, built-in. I call such extensions pre-configured classes as they rarely add much functionality to base Ext ones but the main purpose of having them is to have them configured. For example, to have a “Personnel” grid with personnel specific column model, store, sorting options, editors, etc.

If we had such, our configuration of a Window could look like:

var win = new Ext.Window({
     title:'Personnel'
    ,widht:600
    ,height:400
    ,items:{xtype:'personnelgrid'}
});
win.show();

 

Writing a pre-configured class

Let’s take an example to discuss:

Application.PersonnelGrid = Ext.extend(Ext.grid.GridPanel, {
     border:false
    ,initComponent:function() {
        var config = {
           store:new Ext.data.Store({...})
          ,columns:[{...}, {...}]
          ,plugins:[...]
          ,viewConfig:{forceFit:true}
          ,tbar:[...]
          ,bbar:[...]
        }; // eo config object
 
        // apply config
        Ext.apply(this, Ext.apply(this.initialConfig, config));
 
        Application.PersonnelGrid.superclass.initComponent.apply(this, arguments);
    } // eo function initComponent
 
    ,onRender:function() {
        this.store.load();
 
        Application.PersonnelGrid.superclass.onRender.apply(this, arguments);
    } // eo function onRender
});
 
Ext.reg('personnelgrid', Application.PersonnelGrid);

What we’re doing here? We’re extending Ext.grid.GridPanel creating the new class (extension) Application.PersonnelGrid and we are registering it as the new xtype with name personnelgrid.

We are giving the general grid panel all the configuration options needed to become the specific personnel grid. From this point on we have a new component, a building block for our application that we can use everywhere (window, border panel region, standalone) where the list of personnel is needed. We can create it either as:

var pg = new Application.PersonnelGrid();
 
// or using it's xtype
var win = new Ext.Window({
     items:{xtype:'personnelgrid'}
    ,....
});

 

Organizing pre-configured classes

The code above does not need to and should not run within the onReady function because it has nothing to do with DOM structure; it only creates a new javascript object. Therefore it can and it should be written in a separate file (js/Application.PersonnelGrid.js) and it can and must be included in the index.html header as:

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

So far so good, we have almost everything in place and (almost) all we need to do more is to continue writing our pre-configured classes, put them in ./js; directory, include them in index.html and build your application from instances of them as puzzle is assembled from pieces.

Looks good, yeah?

Anyway, there is a bit more to it.

 

Inter component communication

Imagine that we need a border layout with a link list in the west and tab panel in the center region. Clicking a link in the west would create a new tab in the center. Now, where should we put the logic of it, event handler and creation routine? In the west, or in the center?

Neither of them. Why? If we have a pre-configured class that creates and displays the west link list and we put the above logic in it it can no longer exist without center region. We just cannot use it without center as then we have no component to create tabs in.

If we put it in center, the result is same: center cannot exist without west.

The only component that should be aware of the existence of both west and center panels is their container with the border layout and this is the only right place where to put inter-component communication.

What should we do then? The container (with border layout) should listen to events fired by the west and it should create tabs in the center as responses to these clicks. The example of the component communication written this way can be found here: Saki’s Ext Examples

 

Production Systems

As we keep on writing our application we happen to have large number of included javascript files very soon (I have around 80 includes in one application at present and this number grows every day). This can degrade performance of a production system.

The best way to solve it is to concatenate all javascript files in the right order to create one big and to minify it with some of the javascript minfying or compression tools. Also, you do not need debug version of Ext Library for production systems.

We would include:

  • ext-all.js
  • app-all.js and
  • application.js

on a production system.

 

Conclusion

It’s almost all there is to it… There are specific techniques for specific Ext classes, there is a lot of another server and client side know-how but the above is the overall concept.

Happy coding!

Do not forget to read Part 2 and Part 3 of this article.


StumbleUpon Toolbar
  1. 70 Responses to “Writing a Big Application in Ext (Part 1)”

  2. Very interesting post ! I was searching how to structure a big app since yesterday and you just posted this article. Thanks a lot.

    By kilgore on Apr 13, 2008

  3. Very nice introduction…

    By Lucian on Apr 13, 2008

  4. Wow, impressive tutorial! Thanks for sharing!

    By paolo on Apr 13, 2008

  5. Thank you Sooooooooooo much!!!

    been looking for this for over a 2 weeks

    no one would point me to any idea

    Your website is THE Learn Link from extjs.com

    it has everything i have been looking for.

    Thanks again for saving me tons of forums and IRC headaches.

    Greatly appreciate it
    Ami Mahloof

    By Ami on Apr 14, 2008

  6. All of you are welcome.

    I’m always glad if I can help to create understanding.

    Good luck with Ext.

    By jsakalos on Apr 14, 2008

  7. Thank you for this tutorial, it is really helpful for me. This was the tutorial i have had always searched in the Ext forums (for more than a year) and now you’ve made it!
    Great job

    By Fotios Kossyvas on Apr 14, 2008

  8. Really useful. I’ve been using Ext for about 4 months now and remember looking for a guide on how to lay out applications back then without much satisfaction.

    Have just spent the afternoon re factoring our small development app into this kind of structure and already am finding it easier to explain to our team where to look to do bug/code fixes or to copy stuff from to increase their understanding.

    I see your CAPTCHAs are almost as hard to read as Jacks :) I must be going blind

    By Michael Hodgson on Apr 14, 2008

  9. @Michael
    I also click “Request new image” several times until I get something readable… I’m new to wordpress – this plugin worked…

    To the matter: I’m glad you’re organizing your app this way and even more glad that it brings good results.

    By jsakalos on Apr 14, 2008

  10. Thanks for that!

    By TomSta on Apr 16, 2008

  11. Hi,

    I am new to EXTJS and JavaScript as well.
    I did exactly as you did in creating the Application namespace and render a pre-compiled class. But i am getting an error saying “Application.personnelgrid is not a constructor” in firebug. Can you help me regarding the error.

    By Ben on Apr 16, 2008

  12. @Ben,

    post please this query to Forums and send me the link via PM (I only handle Premium Help).

    By jsakalos on Apr 16, 2008

  13. Thanks for this great overview,

    I now use it in the Symfony-Extjs Generator. The edit/detailed-pages are now being constructed like this: http://fun4me.demon.nl/test/test_dev.php/js/city/editAjaxJs.pjs

    The demo can be seen here: http://fun4me.demon.nl/test/test_dev.php
    At the moment only clicking the add city (not country) button works, and you can click on the cities but the datastore is not setup yet, so nothing gets loaded/shown, nor can be saved.

    The formpanel-layout gets lazy-loaded by another script called using.js

    By Leon on Apr 24, 2008

  14. What a great write up, you have really cleared up some areas of Ext that i just didnt get how they worked!

    Thank you very much!

    By Phunky on Apr 25, 2008

  15. I love writing structured applications, love having things consistent and organized. It\’s been said but like to say it again, THANK YOU for taking the time to put this together along with all of the other code snippets, forum posts, tutorials, and extensions you\’ve done. It helps A LOT when diving into ext and trying to not reinvent the wheel or stray from the path set forth by the API designers.

    By cafebabe on May 8, 2008

  16. Thanks for this solution! It\’s going to be a great solution for us; we\’ll be developing lots of EditorGrids that\’ll be placed in tabs in a Layout.

    I have a question though. In the pre-configured grid, you\’ve got a toolbar. Let\’s say inside it the handler(s) call function(s). Where do you code for these associated functions?
    I\’ve coded this way and it works; my xtype grid displays in my layout… however! In my grid I\’ve got a toolbar button that deletes grid rows. I don\’ know where to put my delete functions; everywhere I try I get errors.
    Does my delete function go
    1.) inside the initComponent
    2.) outside it but before the onRender
    3.) Outside the grid function
    4.) or somewhere else?

    Thanks in advance?
    Bob

    By JoyfulBob on May 11, 2008

  17. The best would be if you’d take a look at http://recordform.extjs.eu. example. There is toolbar with add record button – delete is not implemented on purpose.

    Anyway, it could answer your question.

    Of course, if you have many grids with same toolbars you could consider creating grid-with-toolbar extension (pre-configured grid) and further extend that. You’d have one point to fix if there is anything wrong with toolbar.

    By Saki on May 11, 2008

  18. Great tutorial, thanks for that. It really helped me.

    Just one little thing: as a german i would say that “Jain” is spelled “Jein” :-D

    By TheHippo on May 13, 2008

  19. Thanks, I don’t really speak German, Jein is one of a few words I know…:) Correcting…

    By Saki on May 13, 2008

  20. Saki, I want to thank you again.
    Did it a few posts back, but since this information is this good I can do it again and again!

    It really improved my Symfony Theme Plugin a lot. It now generates new extjs-objects for both grids and edit-pages! Still lots of things to do, but the result now looks very impressive!

    At the demo site you can see an overview of cities in a citygridpanel linking to both edit-city and edit-country editfrompanels (which can also create new cities/countries from the toolbar)
    the panels are defined in the same way as you described and are lazy-loaded the first time they are needed.
    http://fun4me.demon.nl/test/test_dev.php

    By Leon on May 16, 2008

  21. @Leon,

    the site looks very well. I’m glad you’re achieving that results with the info from this article.

    Good luck and keep up doing the good work.

    By Saki on May 16, 2008

  22. Hi Saki,

    Thanks for sharing your knowledge with the rest of the world. :)

    Cheers!,
    Biju Kunnappada.
    Nortel Networks.

    By Biju Kunnappada on May 28, 2008

  23. Hi Saki,

    I\\\’ve got another demo for people who want to see what good you can do with all information you gave.

    Extending ext-objects is really nice. This together with the flexibility of the ext-objects (to which you can add all kind of properties even during instantiation) allows you to do great things very easily.

    The demo (work in progress) can be found here: http://tejohnston.dynora.eu/
    username: admin, pass: admin

    I am now also using a customised version of your accordion layout which I use as a menu (also work in progress) but things work out very nice. (you can find it in the collapsed west-panel, which also pops up when you edit an item)

    More info can be found at the symfony-extjstheme-plugin forum.

    By Leon on Jun 16, 2008

  24. Hi,

    thanks for your very interesting tutorial. I don\’t understand how can I communicate between the pre-configured classes.

    For instance I have an pre-configured classes called:
    Application.Main (viewport)
    Application.UsersGrid (User Grid)
    Application.UserWindow (User Window)

    Inside the UserGrid there is a grid component full of data. When I click on the row a UserWindow must appear.

    If I write:
    [code]
    this.on(\'rowdblclick\', function(grid, rowIndex, e){
    var record = grid.getStore().getAt(rowIndex);
    var userw = new Application.UsersWindow(record);
    userw.show();
    });
    [/code]

    an error occurred: Application.UsersWindow is not a constructor – [Break on this error] var userw = new Application.UsersWindow(record);

    Regards,
    Michelangelo

    By Michelangelo on Jun 19, 2008

  25. Here is example of component communication: http://examples.extjs.eu/?ex=compcomm

    Also, you can use Ext forums for questions – there is a lot of users, not only me, that are able and willing to help.

    By Saki on Jun 20, 2008

  26. Thanks a lot for sharing this. I once developed a big application with ExtJS but everything was not as organized as you explained earlier, though the aplication was written in the days of ExtJS 1.1. My implementation then was somehow becoming unwieldy with several javascript files and there was some confusion in knowing where a particular functionality was implemented. But I kind of like your method.

    By Babatunde Adeyemi on Jun 24, 2008

  27. Nice Article
    Very Helpful

    By Rahul Yadav on Jul 4, 2008

  28. Thank you very much for that! :)

    By Tisha on Jul 22, 2008

  29. Love the article, was a bit daunting at first but read it a few times and got to grips with it. I’m refactoring a pet project as I’ve got a lot of copy’n'paste / paterns which should be dealt to.

    So I’ve created a super object/form for all my forms. All of my apps forms will inherit from the super form to ensure code consistency across the App.

    Thanks for the article.

    By Jamie Nicholson on Jul 24, 2008

  30. Your example page link is not showing up properly in fire fox. I thought that something was amiss and immediately tried in ie and I was glad I did it. The examples are not showing up in fire fox.

    By pravidya on Aug 7, 2008

  31. Thanks, it is save my time .. very nice article and it’s works

    By Joungjuang on Aug 12, 2008

  32. Saki,
    this post is really outstanding. Helps nubies in Ext like me :) to start using Ext in a professional and structured way. If possible, going a little further, it would be nice if you provide info related to MVC pattern implementation.
    Hope it\\\’s possible.

    Many thanks.
    Paulo

    By plima on Aug 28, 2008

  33. Hi,
    I followed your tutorial and it seems pretty good. However, I am fairly new to Ext and what it would be nice to have is a tutorial that put\’s it all together, maybe even using some of the samples available in the ext package. Otherwise your article here is too \

    By Jose on Sep 6, 2008

  34. @Jose, majority of my examples at http://examples.extjs.eu is written following rules described in this article.

    By Saki on Sep 15, 2008

  35. Hi Saki

    I finished my thesis report about usable and adaptable business software, in which I mention your name, because of this great post.

    you can find it at http://www.symfony-project.org/forum/index.php/m/61844/

    Cheers

    By Leon on Sep 25, 2008

  36. Look at this: http://extjs.com/forum/showthread.php?p=258394#post258394

    By Ste on Dec 3, 2008

  37. This was a great post! Thanks!

    However, I am currently having trouble adapting
    it to my application.

    I currently get a javascript error:
    \’Application is not defined\’

    Can you provide the source code for
    this example. I am sure that I am
    just missing a very minor step.

    Here is my code:
    Directory Structure:
    /ext
    /img
    /js
    index.html

    index.html
    ——————

    <meta http-equiv=\

    By netmille on Dec 9, 2008

  38. Hi,
    interesting post! should be helpful!

    BUT i found following thread(Post) in the EXT forums.
    http://www.extjs.com/forum/showthread.php?p=246863#post246863

    what du you think about it, and why support is saying sth like this?

    By resTive on Jan 28, 2009

  39. Useful article!

    By rishikesh yadav on Mar 2, 2009

  40. Saki, you rock the house like a saki bomb

    By TAN on Apr 1, 2009

  41. Thanks for this articles.
    But I have some trubles. I extend Ext.form.FormPanel as you show here:
    Admin.ProductForm = Ext.extend(Ext.form.FormPanel, {
    initComponent: function () {
    var config = {…};
    Ext.apply(this, Ext.apply(this.initialConfig, config));
    Admin.ProductForm.superclass.initComponents.apply(this, arguments);
    },…});
    and I try to create:
    var productForm = new Admin.ProductForm();
    but Firebug show error: \\

    By BerdArt on Jul 14, 2009

  42. Take a look at http://examples.extjs.eu. I think there are some extended forms there.

    By Saki on Jul 14, 2009

  43. Thanks for this articles.
    But I have some trubles. I extend Ext.form.FormPanel as you show here:
    Admin.ProductForm = Ext.extend(Ext.form.FormPanel, {
    initComponent: function () {
    var config = {…};
    Ext.apply(this, Ext.apply(this.initialConfig, config));
    Admin.ProductForm.superclass.initComponents.apply(this, arguments);
    },…});
    and I try to create:
    var productForm = new Admin.ProductForm();
    but Firebug show error:
    “Admin.ProductForm is not a constructor
    var productForm = new Admin.ProductForm();”
    What is the problem? What am I doing wrong?

    By BerdArt on Jul 14, 2009

  44. Sorry, I have already found how to create constructor. In this article you didn’t say anything about the constructor, but you wrote that the object may be created by this way:
    var productForm = new Admin.ProductForm();

    By BerdArt on Jul 14, 2009

  45. Hello

    Sorry for my anglish … i m french…

    I tryed your tutorial but i always have the same errors in firebug :
    – Node was not found\

    By alinux on Dec 23, 2009

  46. Hello

    Sorry for my anglish … i m french…

    I tryed your tutorial but i always have the same errors in firebug :
    – Node was not found” code: “8
    – types[config.xtype || defaultType] is not a constructor

    Where is the problem ?

    thanks a lot

    By alinux on Dec 23, 2009

  47. Hello,
    this is actually the stuff I was looking for..i copied the code in my javascript file and put in under one of the tabs to display exactly the same things, but i can not see the output.

    By Asad on Apr 3, 2010

  48. Instead of:

    Ext.apply(this, Ext.apply(this.initialConfig, config));

    you should use:

    Ext.apply(this.initialConfig, config)
    Ext.apply(this, config);

    (otherwise initialConfig.listeners will copied into this)

    By Condor on May 21, 2010

  49. Hello Saki,

    great post! btw, I try your code but got error/bug with the original RowEditor.js (extjs 3.2.1.). please take a look this:

    http://www.extjs.com/forum/showthread.php?100566-f-is-undefined-in-RowEditor.js-line-169-when-add-row-using-RowEditor

    thx

    By evang on Jun 2, 2010

  50. Hi!

    I need a little help regarding \’Components Communication\’ example.

    How could I use many instances of Example.LinksPanel in an accordion layout into the west region with different arrays of \’links\’.

    Could be more abstractized the Example.LinksPanel for above mentioned reason?

    Thanks for your help.
    Gabriel

    By Gabriel on Oct 20, 2010

  51. @Gabriel, post your question to a Sencha forum please, there is plenty of people skilled enough to help you.

    Sorry, I don’t answer here but I don’t want to create a fork of Sencha Formus.

    By Saki on Nov 7, 2010

  52. Wow.. Its gr8 sweet n simple Helps me in understanding how big web application built!!!!!

    Thanks

    By Manjunath on Mar 13, 2011

  53. Very Nice,Helpful Article
    Thanks a lot

    By Rahul Mehta on Mar 18, 2011

  54. Thanks for the lovely tutorial!

    By Mihail on Jun 5, 2011

  55. thankx saki one question where do i need to put the class code of do i need to create a new class for it or in the application.js class and is this code is extjs 4 compatible , i am trying it but without success please do let me know sooner.

    By anand on Jul 8, 2011

  56. Please update for ExtJS4

    By db on Aug 10, 2011

  57. Please update for ExtJS 4.1

    By terryzou on Feb 5, 2012

  58. Great tutorial on how to manage Ext.js (and any big javascript) code.

    A few basic tips such as you describe goes a long way to maintainability!

    By Aaron Evans on Apr 3, 2012

  59. Please update for 4.1.3 :)

    By DB on Dec 3, 2012

  60. It’s 2014 and we are still learning from Saki in 2008 :)

    By DB on Dec 6, 2013

  61. Howdy! This article could not be written much better! Looking through this article reminds me of
    my previous roommate! He always kept preaching
    about this. I most certainly will send this post to
    him. Pretty sure he’s going to have a very good read.
    Thanks for sharing!

    By Alphonso on Feb 12, 2014

  62. If you have children or other family members that need
    your attention you want to do this exercise when things are quiet so that you can
    truly be still and relax. Michael Liu is living in China and continuously
    studies success and how people can improve their lives and have more happiness, wealth and success.
    One common mistake many people make is to do money affirmations, but not
    address the negative money beliefs they already have in their subconscious around money.

    By Manifestation on Feb 12, 2014

  63. It sounds great in theory, but there is no miracle cure
    for impotence and as far as the scientists are able to tell so far, there is not going to one
    in the near future. Omega 3 fatty acids found in this oil
    are also very beneficial to your cardiovascular system.
    619, “Protect Animal and Human Health by Ending the Excessive Use of Antibiotics in Agriculture,” Animal Welfare Institute.

    By Miracle Cure Reviews on Feb 13, 2014

  64. I’ve read some just right stuff here. Definitely value
    bookmarking for revisiting. I wonder how a lot effort you set to create this sort of excellent informative web site.

    By Patti on Mar 2, 2014

  65. s4Lf8Wz1X
    [url=http://www.griffithams.org.au/Michael-Kors-Michael-Handbags.html]Michael Kors Shopper[/url]
    examplev1MIm2Te0Sg3V[url=http://www.griffithams.org.au/Cheap-Michael-Kors-Purses.html]Cheap Michael Kors Purses[/url]
    collegen3Wengagingt2Rp2Og2J[url=http://www.learningplanet.com/inc/michael-kors-wallet-clutch.html]michael kors wallet clutch[/url]
    [url=http://www.learningplanet.com/inc/michael-kors-wallet-clutch.html]michael kors wallet for iphone 5[/url]

    By Williamhog on Mar 24, 2014

  66. Don’t let that discourage you because you can grow and extra couple of inches if
    you work your butt off. One more gain that shareware offers over commercially made software applications
    is its compatibility. A mob of fun-loving zombies is about to
    invade your home, and your only defense is an arsenal of 49 zombie-zapping plants.

    By grid 2 download on Mar 29, 2014

  67. Every entrepreneur must be confident about handling the everyday pressures and setbacks that are bound to happen in any business.
    Entrepreneurs are thought to be very important for any business entity because they are the sole reason for existence of any business project.

    I stopped participating in the writer’s group as I had to pick
    up a second job-and yes, ten years later,
    I have still not written that novel.

    By crear una empresa en peru on Mar 30, 2014

  1. 4 Trackback(s)

  2. Nov 19, 2011:   Библиотека ExtJS/Sencha / [Из песочницы] 20 правил, которым стоит следовать, когда начинаете работать с EXT JS & Sencha Touch by SOS Admin!
  3. Nov 19, 2011: Библиотека ExtJS/Sencha / [Из песочницы] 20 правил, которым стоит следовать, когда начинаете работать с EXT JS & Sencha Touch | What You See Is What You Get
  4. Jul 1, 2013: http blog extjs eu know how writing a… | Склад
  5. Feb 11, 2014: Ext Extension with Factory Functions File Pattern | Learn from Saki

Post a Comment