Open editor inside main view when creating and editing pages (known bug: when page creation requires multiple steps, the resulting page will be opened without the page tree)
- // ==UserScript==
- // @name Confluence - Open editor inside main view (keep sidebar)
- // @namespace http://netresearch.de/
- // @version 0.2
- // @description Open editor inside main view when creating and editing pages (known bug: when page creation requires multiple steps, the resulting page will be opened without the page tree)
- // @author Christian Opitz
- // @include *.atlassian.net/wiki/*
- // @grant none
- // @run-at document-body
- // ==/UserScript==
- (function() {
- 'use strict';
- AJS.toInit(function(){
- var $ = AJS.$;
- //AJS.whenIType("c").execute(function(e) { // Don't know how to stop further execution/propagation with that
- $(document).bind('keydown', 'c', function(e) {
- var quickLink = $('#quick-create-page-button');
- if (quickLink.is(':visible')) {
- quickLink.click();
- e.preventDefault();
- e.stopImmediatePropagation();
- return false;
- }
- });
- var origConfluenceDialogWizard = Confluence.DialogWizard;
- Confluence.DialogWizard = function(dialog, finalAction) {
- var res = origConfluenceDialogWizard(dialog, finalAction);
- // Unfortunately we can not override the doFinalAction via prototype - so, the res.newPage-Action will still use the old one :(
- var doFinalAction = res.doFinalAction;
- res.doFinalAction = function(ev, state, wizardData, finalAction, wizard) {
- if (state.finalUrl && state.spaceKey == AJS.Meta.get('space-key')) {
- runInMain(state.finalUrl);
- AJS.$(".button-panel-cancel-link").click();
- } else {
- doFinalAction(ev, state, wizardData, finalAction, wizard);
- }
- };
- return res;
- };
- function runInMain(src) {
- var $main = $('#main'), headerHeight = $('#header').height();
- $main.children().detach();
- $('body').css('overflow', 'hidden');
- $main.parent().css('height', 'calc(100% - ' + headerHeight + 'px)');
- $main.parents().css('overflow', 'hidden');
- $main.css({
- height: '100%',
- padding: 0,
- borderBottom: 'none',
- minHeight: 0
- });
- $('#footer').hide();
- var iframe = $('<iframe>', {
- src: src,
- frameborder: 0,
- scrolling: 'no',
- }).css({
- marginTop: -1 * headerHeight,
- marginBottom: -1,
- height: 'calc(100% + ' + (headerHeight + 1) + 'px)',
- width: '100%'
- }).appendTo($main).one('load', function(e) {
- iframe.contents().find('head').append('<base target="_parent">');
- $(iframe.prop('contentWindow')).bind('unload', function() {
- window.setInterval(function() {
- var doc = iframe.prop('contentWindow').document;
- if (doc.readyState === 'loading') {
- document.location.href = doc.location.href;
- iframe.css('visibility', 'hidden');
- }
- }, 10);
- });
- $(this).one('load', function(e) {
- //document.location.href = $(this).prop('contentWindow').document.location.href;
- });
- });
- }
- $('#editPageLink, #quick-create-page-button').off('click').click(function(e) {
- e.preventDefault();
- e.stopImmediatePropagation();
- runInMain($(this).attr('href'));
- });
- });
- })();