diff --git a/scm-webapp/src/main/webapp/index.html b/scm-webapp/src/main/webapp/index.html
index 6fcc131a77..aa6ef78fe1 100644
--- a/scm-webapp/src/main/webapp/index.html
+++ b/scm-webapp/src/main/webapp/index.html
@@ -53,7 +53,9 @@
+
+
SCM-WebAPP
diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.config.js b/scm-webapp/src/main/webapp/resources/js/sonia.config.js
new file mode 100644
index 0000000000..f22d2548eb
--- /dev/null
+++ b/scm-webapp/src/main/webapp/resources/js/sonia.config.js
@@ -0,0 +1,142 @@
+/* *
+ * 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 = [];
+
+function registerConfigPanel(panel){
+ repositoryConfigPanels.push( panel );
+}
+
+
+Ext.ns("Sonia.config");
+
+Sonia.config.ConfigPanel = Ext.extend(Ext.Panel, {
+
+ initComponent: function(){
+
+ var config = {
+ region: 'center',
+ bodyCssClass: 'x-panel-mc',
+ trackResetOnLoad: true,
+ autoScroll: true,
+ border: false,
+ frame: false,
+ collapsible: false,
+ collapsed: false,
+ items: repositoryConfigPanels
+ }
+
+ Ext.apply(this, Ext.apply(this.initialConfig, config));
+ Sonia.config.ConfigPanel.superclass.initComponent.apply(this, arguments);
+ }
+
+});
+
+Ext.reg("configPanel", Sonia.config.ConfigPanel);
+
+Sonia.config.ConfigForm = Ext.extend(Ext.form.FormPanel, {
+
+ title: 'Config Form',
+ 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 : ''
+ },
+ listeners: {
+ render: function(){
+ if ( this.onLoad != null && Ext.isFunction( this.onLoad ) ){
+ this.onLoad(this.el);
+ }
+ },
+ scope: this
+ },
+ items: this.items,
+ buttons: [{
+ text: 'Save',
+ scope: this,
+ formBind: true,
+ handler: this.submitForm
+ },{
+ text: 'Reset',
+ 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/sonia.scm.js b/scm-webapp/src/main/webapp/resources/js/sonia.scm.js
index 81465c3c89..22e6ada62f 100644
--- a/scm-webapp/src/main/webapp/resources/js/sonia.scm.js
+++ b/scm-webapp/src/main/webapp/resources/js/sonia.scm.js
@@ -124,7 +124,9 @@ Ext.onReady(function(){
fn: function(){console.debug( 'General Config' );}
},{
label: 'Repository Types',
- fn: function(){console.debug( 'RepositoryType Config' );}
+ fn: function(){
+ addTabPanel('repositoryConfig', 'configPanel', 'Repository Config');
+ }
},{
label: 'Server',
fn: function(){console.debug( 'Server Config' );}