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