[Commits] r1974 - in core/trunk/docsrc: . _theme/geoext _theme/geoext/static _theme/geoext/static/img builder
commits at geoext.org
commits at geoext.org
Tue Mar 16 18:20:34 CET 2010
Author: tschaub
Date: 2010-03-16 18:20:34 +0100 (Tue, 16 Mar 2010)
New Revision: 1974
Added:
core/trunk/docsrc/_theme/geoext/static/builder.js
core/trunk/docsrc/_theme/geoext/static/img/blank.gif
core/trunk/docsrc/_theme/geoext/static/img/disk.png
core/trunk/docsrc/builder/
core/trunk/docsrc/builder/v0.6.rst
Modified:
core/trunk/docsrc/_theme/geoext/layout.html
core/trunk/docsrc/_theme/geoext/static/geoext.css
core/trunk/docsrc/downloads.rst
Log:
Adding custom build tool for 0.6.
Modified: core/trunk/docsrc/_theme/geoext/layout.html
===================================================================
--- core/trunk/docsrc/_theme/geoext/layout.html 2010-03-16 16:05:08 UTC (rev 1973)
+++ core/trunk/docsrc/_theme/geoext/layout.html 2010-03-16 17:20:34 UTC (rev 1974)
@@ -44,6 +44,15 @@
<script type="text/javascript" src="http://extjs.cachefly.net/builds/ext-cdn-771.js"></script>
<script src="{{ pathto('_static/examples.js', 1) }}"></script>
{% endif %}
+ {% if pagename == "builder/v0.6" %}
+ <script type="text/javascript" src="http://extjs.cachefly.net/builds/ext-cdn-771.js"></script>
+ <script src="{{ pathto('_static/builder.js', 1) }}"></script>
+ <script>
+ Ext.BLANK_IMAGE_URL = "{{ pathto('_static/img/blank.gif', 1) }}";
+ builder.url = "http://buildjs.opengeo.org/builder/geoext/0.6";
+ </script>
+ <script src="http://buildjs.opengeo.org/assets/geoext/0.6?callback=builder.setAssets"></script>
+ {% endif %}
{% endblock %}
{% block header %}
Added: core/trunk/docsrc/_theme/geoext/static/builder.js
===================================================================
--- core/trunk/docsrc/_theme/geoext/static/builder.js (rev 0)
+++ core/trunk/docsrc/_theme/geoext/static/builder.js 2010-03-16 17:20:34 UTC (rev 1974)
@@ -0,0 +1,207 @@
+var builder = {
+ url: null, // to be set elsewhere
+ assets: null, // to be set by callback
+ setAssets: function(assets) {
+ this.assets = assets;
+ }
+};
+
+Ext.onReady(function() {
+
+ var assets = builder.assets;
+
+ var modules = {
+ "GeoExt/widgets": {
+ title: "General",
+ description: "General widget components.",
+ prefix: "GeoExt"
+ },
+ "GeoExt/widgets/form": {
+ title: "Form",
+ description: "Components for assembling forms.",
+ prefix: "GeoExt.form"
+ },
+ "GeoExt/widgets/grid": {
+ title: "Grid",
+ description: "Components related to grid widgets.",
+ prefix: "GeoExt.grid"
+ },
+ "GeoExt/widgets/tips": {
+ title: "Tips",
+ description: "Custom tool tips.",
+ prefix: "GeoExt"
+ },
+ "GeoExt/widgets/tree": {
+ title: "Tree",
+ description: "Components related to tree nodes.",
+ prefix: "GeoExt.tree"
+ },
+ "GeoExt/data": {
+ title: "Data",
+ description: "Utilities for working with records and stores.",
+ prefix: "GeoExt.data"
+ },
+ "overrides": {
+ title: "Overrides",
+ description: "Independent overrides of Ext provided functionality.",
+ prefix: ""
+ }
+ };
+
+ var checks = {};
+ var prefs = {};
+
+ // uncheck components that have not been specifically checked by the user
+ var updateDeps = function() {
+ for (var path in assets) {
+ var check = checks[path];
+ if (check) {
+ var checked = check.getValue();
+ if (checked && !prefs[path]) {
+ // keep checked if required or included
+ var depended = false;
+ for (var p in assets) {
+ var c = checks[p];
+ if (c && c.getValue() && ((path in assets[p].require) || (path in assets[p].include))) {
+ depended = true;
+ break;
+ }
+ }
+ if (!depended) {
+ check.setValue(false);
+ check.enable();
+ }
+ }
+ }
+ }
+ };
+
+ // check additional requires and includes
+ var checkDeps = function(path) {
+ var check, asset = assets[path];
+ for (var include in asset.include) {
+ check = checks[include];
+ if (check && !check.getValue()) {
+ checks[include].setValue(true);
+ }
+ }
+ for (var require in asset.require) {
+ check = checks[require];
+ if (check && !check.getValue()) {
+ checks[require].setValue(true);
+ checks[require].disable();
+ }
+ }
+ };
+
+ // check form data before submitting
+ var validate = function() {
+ // for now, we just want to make sure something is checked
+ var valid = false;
+ for (var path in checks) {
+ if (checks[path].getValue()) {
+ valid = true;
+ break;
+ }
+ }
+ if (!valid) {
+ Ext.Msg.show({
+ msg: "You must select at least one component for your build.",
+ icon: Ext.MessageBox.WARNING
+ });
+ }
+ return valid;
+ };
+
+
+ var items = [];
+ var module, set, sets = {};
+ for (var path in modules) {
+ module = modules[path];
+ set = new Ext.form.FieldSet({
+ title: module.title,
+ autoHeight: true,
+ collapsible: true,
+ layout: "column",
+ autoWidth: true,
+ html: "<div class='module-desc'>" + module.description + "</div>",
+ defaults: {width: 300}
+ });
+ sets[path] = set;
+ items.push(set);
+ }
+
+ var checkbox, parts, prefix, base, name;
+ var updating = false;
+ for (var path in assets) {
+ parts = path.split("/");
+ name = parts.pop().replace(".js", "");
+ var base = parts.join("/");
+ var set = sets[base];
+ if (set) {
+ prefix = modules[base].prefix;
+ checkbox = new Ext.form.Checkbox({
+ boxLabel: prefix ? (prefix + "." + name) : name,
+ name: "include",
+ inputValue: path,
+ ctCls: "component",
+ handler: function(box, checked) {
+ var path = box.getRawValue();
+ var old = updating;
+ if (checked) {
+ updating = true;
+ checkDeps(path);
+ updating = old;
+ } else {
+ updating = true;
+ updateDeps();
+ updating = old;
+ }
+ if (!updating) {
+ // check represents user preferene
+ prefs[path] = checked;
+ }
+ }
+ });
+ checks[path] = checkbox;
+ set.add(checkbox);
+ }
+ }
+
+ var dh = Ext.DomHelper;
+
+ var formContainer = dh.insertAfter(
+ Ext.get(Ext.select(".builder-form-text").first()),
+ {tag: "div", cls: "builder-form"}
+ );
+
+ var form = new Ext.FormPanel({
+ method: "POST",
+ standardSubmit: true,
+ border: false,
+ bodyStyle: {padding: 10},
+ renderTo: formContainer,
+ labelWidth: 100,
+ autoWidth: true,
+ items: items
+ });
+
+ var buttonContainer = dh.insertAfter(
+ Ext.get(Ext.select(".download-button-text").first()),
+ {tag: "div", cls: "download-button"}
+ );
+
+ var download = new Ext.Button({
+ renderTo: buttonContainer,
+ text: "download",
+ iconCls: "download",
+ handler: function() {
+ if (validate()) {
+ var el = form.getForm().getEl().dom;
+ el.action = builder.url,
+ el.submit();
+ }
+ }
+ });
+
+});
Modified: core/trunk/docsrc/_theme/geoext/static/geoext.css
===================================================================
--- core/trunk/docsrc/_theme/geoext/static/geoext.css 2010-03-16 16:05:08 UTC (rev 1973)
+++ core/trunk/docsrc/_theme/geoext/static/geoext.css 2010-03-16 17:20:34 UTC (rev 1974)
@@ -220,3 +220,33 @@
border: 1px solid #E5EDD3;
background-color: #F5FDE3
}
+
+
+/* builder page style */
+div.builder-form {
+ margin-top: 1em;
+}
+.module-desc {
+ padding: 0 0 5px;
+ font-size: 12px;
+}
+.component label {
+ font-family: "Lucida Console", "Courier New", Courier, monospace;
+ font-size: 11px;
+}
+
+div.download-button {
+ margin: 0 1em 2em;
+}
+div.download-button>table {
+ float: right;
+}
+
+.x-btn .download {
+ background-image: url(img/disk.png);
+}
+
+p.credit {
+ font-size: smaller;
+ color: #666666;
+}
Added: core/trunk/docsrc/_theme/geoext/static/img/blank.gif
===================================================================
(Binary files differ)
Property changes on: core/trunk/docsrc/_theme/geoext/static/img/blank.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: core/trunk/docsrc/_theme/geoext/static/img/disk.png
===================================================================
(Binary files differ)
Property changes on: core/trunk/docsrc/_theme/geoext/static/img/disk.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: core/trunk/docsrc/builder/v0.6.rst
===================================================================
--- core/trunk/docsrc/builder/v0.6.rst (rev 0)
+++ core/trunk/docsrc/builder/v0.6.rst 2010-03-16 17:20:34 UTC (rev 1974)
@@ -0,0 +1,21 @@
+GeoExt 0.6 Builder
+==================
+
+Customize Your Build
+--------------------
+
+.. cssclass:: builder-form-text
+
+Choose the components used by your application from the form below.
+
+Download
+--------
+
+.. cssclass:: download-button-text
+
+When you are finished, click the "download" link to build a customized version
+of the library for your application.
+
+.. cssclass:: credit
+
+Custom build tool hosted by `OpenGeo <http://opengeo.org>`__.
Modified: core/trunk/docsrc/downloads.rst
===================================================================
--- core/trunk/docsrc/downloads.rst 2010-03-16 16:05:08 UTC (rev 1973)
+++ core/trunk/docsrc/downloads.rst 2010-03-16 17:20:34 UTC (rev 1974)
@@ -6,6 +6,7 @@
---------------
* GeoExt 0.6 (`Source <http://trac.geoext.org/attachment/wiki/Download/GeoExt-release-0.6.zip?format=raw>`__ | `Release Notes <http://trac.geoext.org/wiki/Release/0.6/Notes>`__)
+ * :doc:`Build your own download <./builder/v0.6>` (with just the components you need).
Previous Releases
-----------------
More information about the Commits
mailing list