diff --git a/scm-webapp/src/main/webapp/index.html b/scm-webapp/src/main/webapp/index.html index f25da55750..b5873c77a5 100644 --- a/scm-webapp/src/main/webapp/index.html +++ b/scm-webapp/src/main/webapp/index.html @@ -97,7 +97,14 @@ - + + + + + + + + diff --git a/scm-webapp/src/main/webapp/resources/js/config/sonia.config.configform.js b/scm-webapp/src/main/webapp/resources/js/config/sonia.config.configform.js new file mode 100644 index 0000000000..52330e32aa --- /dev/null +++ b/scm-webapp/src/main/webapp/resources/js/config/sonia.config.configform.js @@ -0,0 +1,119 @@ +/* * + * Copyright (c) 2010, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ + + +Sonia.config.ConfigForm = Ext.extend(Ext.form.FormPanel, { + + title: 'Config Form', + saveButtonText: 'Save', + resetButtontext: 'Reset', + + submitText: 'Submit ...', + loadingText: 'Loading ...', + failedText: 'Unknown Error occurred.', + + items: null, + onSubmit: null, + getValues: null, + + initComponent: function(){ + + var config = { + title: null, + style: 'margin: 10px', + trackResetOnLoad : true, + autoScroll : true, + border : false, + frame : false, + collapsible : false, + collapsed : false, + layoutConfig : { + labelSeparator : '' + }, + items : [{ + xtype : 'fieldset', + checkboxToggle : false, + title : this.title, + collapsible : true, + autoHeight : true, + labelWidth : 140, + buttonAlign: 'left', + layoutConfig : { + labelSeparator : '' + }, + defaults: { + width: 250 + }, + listeners: { + render: function(){ + if ( this.onLoad != null && Ext.isFunction( this.onLoad ) ){ + this.onLoad(this.el); + } + }, + scope: this + }, + items: this.items, + buttons: [{ + text: this.saveButtonText, + scope: this, + formBind: true, + handler: this.submitForm + },{ + text: this.resetButtontext, + scope: this, + handler: function(){ + this.getForm().reset(); + } + }] + }] + }; + + Ext.apply(this, Ext.apply(this.initialConfig, config)); + Sonia.config.ConfigForm.superclass.initComponent.apply(this, arguments); + }, + + load: function(values){ + this.getForm().loadRecord({ + success: true, + data: values + }); + }, + + submitForm: function(){ + var form = this.getForm(); + if ( this.onSubmit != null && Ext.isFunction( this.onSubmit ) ){ + this.onSubmit( form.getValues() ); + } + } + +}); + +Ext.reg("configForm", Sonia.config.ConfigForm); diff --git a/scm-webapp/src/main/webapp/resources/js/config/sonia.config.configpanel.js b/scm-webapp/src/main/webapp/resources/js/config/sonia.config.configpanel.js new file mode 100644 index 0000000000..6b21632de8 --- /dev/null +++ b/scm-webapp/src/main/webapp/resources/js/config/sonia.config.configpanel.js @@ -0,0 +1,58 @@ +/* * + * Copyright (c) 2010, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ + + +Sonia.config.ConfigPanel = Ext.extend(Ext.Panel, { + + panels: null, + + initComponent: function(){ + + var config = { + region: 'center', + bodyCssClass: 'x-panel-mc', + trackResetOnLoad: true, + autoScroll: true, + border: false, + frame: false, + collapsible: false, + collapsed: false, + items: this.panels + } + + Ext.apply(this, Ext.apply(this.initialConfig, config)); + Sonia.config.ConfigPanel.superclass.initComponent.apply(this, arguments); + } + +}); + +Ext.reg("configPanel", Sonia.config.ConfigPanel); + diff --git a/scm-webapp/src/main/webapp/resources/js/config/sonia.config.js b/scm-webapp/src/main/webapp/resources/js/config/sonia.config.js new file mode 100644 index 0000000000..fdeca14987 --- /dev/null +++ b/scm-webapp/src/main/webapp/resources/js/config/sonia.config.js @@ -0,0 +1,57 @@ +/* * + * Copyright (c) 2010, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ + +// config form panels +var repositoryConfigPanels = []; +var generalConfigPanels =[]; + +function registerConfigPanel(panel){ + repositoryConfigPanels.push( panel ); +} + +function registerGeneralConfigPanel(panel){ + generalConfigPanels.push(panel); +} + +Ext.ns("Sonia.config"); + + +// pluginurl validator +Ext.apply(Ext.form.VTypes, { + + pluginurl: function(val) { + return this.pluginurlRegex.test(val); + }, + + pluginurlRegex: /(((^https?)|(^ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!\{\}]*)(\.\w{2,})?)*\/?)/i, + pluginurlText: 'This field should be a URL in the format \n\ + "http://plugins.scm-manager.org/scm-plugin-backend/api/{version}/plugins?os={os}&arch={arch}&snapshot=false"' +}); diff --git a/scm-webapp/src/main/webapp/resources/js/config/sonia.config.repositoryconfig.js b/scm-webapp/src/main/webapp/resources/js/config/sonia.config.repositoryconfig.js new file mode 100644 index 0000000000..d025645346 --- /dev/null +++ b/scm-webapp/src/main/webapp/resources/js/config/sonia.config.repositoryconfig.js @@ -0,0 +1,47 @@ +/* * + * Copyright (c) 2010, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ + + +Sonia.config.RepositoryConfig = Ext.extend(Sonia.config.ConfigPanel,{ + + initComponent: function(){ + + var config = { + panels: repositoryConfigPanels + } + + Ext.apply(this, Ext.apply(this.initialConfig, config)); + Sonia.config.RepositoryConfig.superclass.initComponent.apply(this, arguments); + } + +}); + +Ext.reg("repositoryConfig", Sonia.config.RepositoryConfig); diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.config.js b/scm-webapp/src/main/webapp/resources/js/config/sonia.config.scmconfigpanel.js similarity index 64% rename from scm-webapp/src/main/webapp/resources/js/sonia.config.js rename to scm-webapp/src/main/webapp/resources/js/config/sonia.config.scmconfigpanel.js index 8c89017335..74d2a722a2 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.config.js +++ b/scm-webapp/src/main/webapp/resources/js/config/sonia.config.scmconfigpanel.js @@ -29,73 +29,7 @@ * */ -// config form panels -var repositoryConfigPanels = []; -var generalConfigPanels =[]; -function registerConfigPanel(panel){ - repositoryConfigPanels.push( panel ); -} - -function registerGeneralConfigPanel(panel){ - generalConfigPanels.push(panel); -} - -Ext.ns("Sonia.config"); - -Sonia.config.ConfigPanel = Ext.extend(Ext.Panel, { - - panels: null, - - initComponent: function(){ - - var config = { - region: 'center', - bodyCssClass: 'x-panel-mc', - trackResetOnLoad: true, - autoScroll: true, - border: false, - frame: false, - collapsible: false, - collapsed: false, - items: this.panels - } - - Ext.apply(this, Ext.apply(this.initialConfig, config)); - Sonia.config.ConfigPanel.superclass.initComponent.apply(this, arguments); - } - -}); - -Ext.reg("configPanel", Sonia.config.ConfigPanel); - -Sonia.config.RepositoryConfig = Ext.extend(Sonia.config.ConfigPanel,{ - - initComponent: function(){ - - var config = { - panels: repositoryConfigPanels - } - - Ext.apply(this, Ext.apply(this.initialConfig, config)); - Sonia.config.RepositoryConfig.superclass.initComponent.apply(this, arguments); - } - -}); - -Ext.reg("repositoryConfig", Sonia.config.RepositoryConfig); - -// pluginurl validator -Ext.apply(Ext.form.VTypes, { - - pluginurl: function(val) { - return this.pluginurlRegex.test(val); - }, - - pluginurlRegex: /(((^https?)|(^ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!\{\}]*)(\.\w{2,})?)*\/?)/i, - pluginurlText: 'This field should be a URL in the format \n\ - "http://plugins.scm-manager.org/scm-plugin-backend/api/{version}/plugins?os={os}&arch={arch}&snapshot=false"' -}); Sonia.config.ScmConfigPanel = Ext.extend(Sonia.config.ConfigPanel,{ @@ -325,154 +259,3 @@ Sonia.config.ScmConfigPanel = Ext.extend(Sonia.config.ConfigPanel,{ }); Ext.reg("scmConfig", Sonia.config.ScmConfigPanel); - -Sonia.config.ConfigForm = Ext.extend(Ext.form.FormPanel, { - - title: 'Config Form', - saveButtonText: 'Save', - resetButtontext: 'Reset', - - submitText: 'Submit ...', - loadingText: 'Loading ...', - failedText: 'Unknown Error occurred.', - - items: null, - onSubmit: null, - getValues: null, - - initComponent: function(){ - - var config = { - title: null, - style: 'margin: 10px', - trackResetOnLoad : true, - autoScroll : true, - border : false, - frame : false, - collapsible : false, - collapsed : false, - layoutConfig : { - labelSeparator : '' - }, - items : [{ - xtype : 'fieldset', - checkboxToggle : false, - title : this.title, - collapsible : true, - autoHeight : true, - labelWidth : 140, - buttonAlign: 'left', - layoutConfig : { - labelSeparator : '' - }, - defaults: { - width: 250 - }, - listeners: { - render: function(){ - if ( this.onLoad != null && Ext.isFunction( this.onLoad ) ){ - this.onLoad(this.el); - } - }, - scope: this - }, - items: this.items, - buttons: [{ - text: this.saveButtonText, - scope: this, - formBind: true, - handler: this.submitForm - },{ - text: this.resetButtontext, - scope: this, - handler: function(){ - this.getForm().reset(); - } - }] - }] - }; - - Ext.apply(this, Ext.apply(this.initialConfig, config)); - Sonia.config.ConfigForm.superclass.initComponent.apply(this, arguments); - }, - - load: function(values){ - this.getForm().loadRecord({ - success: true, - data: values - }); - }, - - submitForm: function(){ - var form = this.getForm(); - if ( this.onSubmit != null && Ext.isFunction( this.onSubmit ) ){ - this.onSubmit( form.getValues() ); - } - } - -}); - -Ext.reg("configForm", Sonia.config.ConfigForm); - - -Sonia.config.SimpleConfigForm = Ext.extend(Sonia.config.ConfigForm,{ - - configUrl: null, - loadMethod: 'GET', - submitMethod: 'POST', - - initComponent: function(){ - Ext.apply(this, Ext.apply(this.initialConfig)); - Sonia.config.SimpleConfigForm.superclass.initComponent.apply(this, arguments); - }, - - onSubmit: function(values){ - this.el.mask(this.submitText); - Ext.Ajax.request({ - url: this.configUrl, - method: this.submitMethod, - jsonData: values, - scope: this, - disableCaching: true, - success: function(response){ - this.el.unmask(); - }, - failure: function(result){ - this.el.unmask(); - main.handleFailure( - result.status, - null, - this.failedText - ); - } - }); - }, - - onLoad: function(el){ - var tid = setTimeout( function(){ el.mask(this.loadingText); }, 100); - Ext.Ajax.request({ - url: this.configUrl, - method: this.loadMethod, - scope: this, - disableCaching: true, - success: function(response){ - var obj = Ext.decode(response.responseText); - this.load(obj); - clearTimeout(tid); - el.unmask(); - }, - failure: function(result){ - el.unmask(); - clearTimeout(tid); - main.handleFailure( - result.status, - null, - this.failedText - ); - } - }); - } - -}); - -Ext.reg("simpleConfigForm", Sonia.config.SimpleConfigForm); \ No newline at end of file diff --git a/scm-webapp/src/main/webapp/resources/js/config/sonia.config.simpleconfigform.js b/scm-webapp/src/main/webapp/resources/js/config/sonia.config.simpleconfigform.js new file mode 100644 index 0000000000..63be934480 --- /dev/null +++ b/scm-webapp/src/main/webapp/resources/js/config/sonia.config.simpleconfigform.js @@ -0,0 +1,94 @@ +/* * + * Copyright (c) 2010, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ + + + +Sonia.config.SimpleConfigForm = Ext.extend(Sonia.config.ConfigForm,{ + + configUrl: null, + loadMethod: 'GET', + submitMethod: 'POST', + + initComponent: function(){ + Ext.apply(this, Ext.apply(this.initialConfig)); + Sonia.config.SimpleConfigForm.superclass.initComponent.apply(this, arguments); + }, + + onSubmit: function(values){ + this.el.mask(this.submitText); + Ext.Ajax.request({ + url: this.configUrl, + method: this.submitMethod, + jsonData: values, + scope: this, + disableCaching: true, + success: function(response){ + this.el.unmask(); + }, + failure: function(result){ + this.el.unmask(); + main.handleFailure( + result.status, + null, + this.failedText + ); + } + }); + }, + + onLoad: function(el){ + var tid = setTimeout( function(){ el.mask(this.loadingText); }, 100); + Ext.Ajax.request({ + url: this.configUrl, + method: this.loadMethod, + scope: this, + disableCaching: true, + success: function(response){ + var obj = Ext.decode(response.responseText); + this.load(obj); + clearTimeout(tid); + el.unmask(); + }, + failure: function(result){ + el.unmask(); + clearTimeout(tid); + main.handleFailure( + result.status, + null, + this.failedText + ); + } + }); + } + +}); + +Ext.reg("simpleConfigForm", Sonia.config.SimpleConfigForm);