[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