# [![GeoExt Logo](http://geoext.github.io/geoext2/website-resources/img/GeoExt-logo.png "GeoExt Logo")](http://geoext.github.io/geoext2/) [GeoExt 2](http://geoext.github.io/geoext2/)
JavaScript Toolkit for Rich Web Mapping Applications.
[![Build Status](https://travis-ci.org/geoext/geoext2.png)](https://travis-ci.org/geoext/geoext2)
## What is GeoExt?
GeoExt is Open Source and enables building desktop-like GIS applications through
the web. It is a JavaScript framework that combines the GIS functionality of
[OpenLayers](http://openlayers.org) with the user interface savvy of the
[ExtJS](http://www.sencha.com/products/extjs/) library provided by
[Sencha](http://www.sencha.com/).
Version 2 of GeoExt is the successor to the
[GeoExt 1.x-series](http://geoext.org) and is built atop the newest official
installments of its base libraries; OpenLayers 2.13.1 and ExtJS 4.2.1.
## More information on GeoExt 2
Have a look at the official homepage: http://geoext.github.io/geoext2/
You will find examples, API documentation (with and without inherited
functionality from ExtJS), links to mailinglists and more over there.
What you see on http://geoext.github.io/geoext2/ are the contents of the
`gh-pages`-branch. If you encounter anything that should be fixed, please issue
a pull request against that branch and we will merge it as soon as possible.
## Ok, I want to use GeoExt now...
Hey that's a good decision, and it is very easy to get started on a page that
already includes ExtJS and OpenLayers:
```html
Trying out GeoExt2
```
Next, we simply add a `
```
That's it. Now you can e.g. create a very basic mappanel and let it reign over
the whole browser window:
```javascript
var mappanel = Ext.create('GeoExt.panel.Map', {
title: 'A sample Map',
map: {
// ...
// optional, can be either
// - a valid OpenLayers.Map configuration or
// - an instance of OpenLayers.Map
},
center: '12.31,51.48',
zoom: 6
});
Ext.create('Ext.container.Viewport', {
layout: 'fit',
items: [
mappanel // our variable from above
]
});
```
More information to get started can be grabbed
[on the main website](http://geoext.github.io/geoext2).
## Want to contribute? Yes, please!
We definitely want you to help us making GeoExt. We will happily accept pull
requests of any kind; be it documentation improvement, code refactoring or new
functionality.
Please sign the [contributor agreement](http://trac.geoext.org/browser/docs/contributor_agreements/geoext_agreement.pdf?format=raw)
and email it to the GeoExt Project Steering Committee (`psc [at] geoext.org`)
prior to submitting your changes. Thanks.
## To generate the jsduck documentation
* Install jsduck: https://github.com/senchalabs/jsduck
* Run `jsduck --config jsduck.json` in the root of the repository
* Optional: If you want the documentation for ExtJS to be linked, edit
`jsduck.json` to point to the proper source location (URLs will not work)
* Optional: To refresh screenshots in the example page run
`~$ . tools/screenshots.sh http://geoext.github.io/geoext2/examples/`
* Open the generated file `/path/to/your/geoext/docs/index.html` in your
favorite browser
* Enjoy!
## To run the test suite
* Serve the contents of a GeoExt 2 clone on a webserver, e.g.:
`user@machine:/src/geoext2 $ python -m SimpleHTTPServer 2222`
* Open the main test suite HTML file in a browser:
`http://localhost:2222/tests/run-tests.html`
* Click the button "run all"
## Headless tests with casperjs
You can also run the above tests headlessly through casperjs:
```bash
# Run the suite in the root of the repository
./tests/headless/casperjs-1.1-beta.1/bin/casperjs \
test \
tests/headless/run-testsuite.js
```
These tests are also run though [travis](https://travis-ci.org/geoext/geoext2).