split sonia.config.js into smaller pieces

This commit is contained in:
Sebastian Sdorra
2011-06-08 17:26:56 +02:00
parent 272f16363a
commit bccc36577a
7 changed files with 383 additions and 218 deletions

View File

@@ -97,7 +97,14 @@
<script type="text/javascript" src="resources/js/group/sonia.group.memberformpanel.js"></script>
<script type="text/javascript" src="resources/js/group/sonia.group.panel.js"></script>
<script type="text/javascript" src="resources/js/sonia.config.js"></script>
<!-- sonia.config -->
<script type="text/javascript" src="resources/js/config/sonia.config.js"></script>
<script type="text/javascript" src="resources/js/config/sonia.config.configpanel.js"></script>
<script type="text/javascript" src="resources/js/config/sonia.config.repositoryconfig.js"></script>
<script type="text/javascript" src="resources/js/config/sonia.config.scmconfigpanel.js"></script>
<script type="text/javascript" src="resources/js/config/sonia.config.configform.js"></script>
<script type="text/javascript" src="resources/js/config/sonia.config.simpleconfigform.js"></script>
<script type="text/javascript" src="resources/js/sonia.action.js"></script>
<script type="text/javascript" src="resources/js/sonia.plugin.js"></script>
<script type="text/javascript" src="resources/js/sonia.scm.js"></script>

View File

@@ -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);

View File

@@ -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);

View File

@@ -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"'
});

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);