diff --git a/scm-webapp/src/main/webapp/index.html b/scm-webapp/src/main/webapp/index.html index 76656d8081..b1f82ef316 100644 --- a/scm-webapp/src/main/webapp/index.html +++ b/scm-webapp/src/main/webapp/index.html @@ -110,6 +110,7 @@ + diff --git a/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.changesetviewergrid.js b/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.changesetviewergrid.js index 061747fbd0..2ebb883630 100644 --- a/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.changesetviewergrid.js +++ b/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.changesetviewergrid.js @@ -140,13 +140,11 @@ Sonia.repository.ChangesetViewerGrid = Ext.extend(Ext.grid.GridPanel, { }, openDiffViewer: function(revision){ - var url = restUrl + 'repositories/' + this.repository.id + '/diff?revision=' + revision; main.addTab({ id: 'diff-' + this.repository.id + ':' + revision, - xtype: 'syntaxHighlighterPanel', - title: 'Diff ' + revision, - contentUrl: url, - syntax: 'diff', + xtype: 'diffPanel', + repository: this.repository, + revision: revision, closable: true }); }, diff --git a/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.diffpanel.js b/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.diffpanel.js new file mode 100644 index 0000000000..30c56a9c1a --- /dev/null +++ b/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.diffpanel.js @@ -0,0 +1,71 @@ +/* * + * 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.repository.DiffPanel = Ext.extend(Ext.Panel, { + + repository: null, + revision: null, + diffUrl: null, + + initComponent: function(){ + this.diffUrl = restUrl + 'repositories/' + this.repository.id; + this.diffUrl += '/diff?revision=' + this.revision; + + var config = { + title: 'Diff ' + this.revision, + autoScroll: true, + tbar: [{ + text: 'Raw', + handler: this.downlaodFile, + scope: this + }], + bbar: ['->', this.repository.name, ':', this.revision], + items: [{ + id: 'diff-' + this.repository.id + ':' + this.revision, + xtype: 'syntaxHighlighterPanel', + syntax: 'diff', + contentUrl: this.diffUrl + }] + } + + Ext.apply(this, Ext.apply(this.initialConfig, config)); + Sonia.repository.DiffPanel.superclass.initComponent.apply(this, arguments); + }, + + downlaodFile: function(){ + window.open(this.diffUrl); + } + +}); + + +Ext.reg('diffPanel', Sonia.repository.DiffPanel); \ No newline at end of file