Beginning of gollum redesign
This commit is contained in:
@@ -1,244 +1,61 @@
|
||||
Gollum = {
|
||||
encloseStrategy: function(prefix, content, suffix) {
|
||||
return {
|
||||
type: 'enclose',
|
||||
content: content,
|
||||
prefix: prefix,
|
||||
suffix: suffix
|
||||
}
|
||||
},
|
||||
|
||||
prefixStrategy: function(prefix, content, newline) {
|
||||
return {
|
||||
type: 'prefixLine',
|
||||
prefix: prefix,
|
||||
content: content,
|
||||
newline: newline
|
||||
}
|
||||
},
|
||||
|
||||
enclose: function(el, format, kind) {
|
||||
var cfg = Gollum.Formats[format][kind]
|
||||
var sel = el.getSelectionRange()
|
||||
if (sel.start == sel.end) {
|
||||
el.insertText(cfg.prefix + cfg.content + cfg.suffix, sel.start, sel.start, false)
|
||||
el.setSelectionRange(sel.start + cfg.prefix.length, sel.start + cfg.prefix.length + cfg.content.length)
|
||||
} else {
|
||||
el.insertText(cfg.prefix + el.getSelectedText() + cfg.suffix, sel.start, sel.end, false)
|
||||
}
|
||||
},
|
||||
|
||||
prefix: function(el, format, kind) {
|
||||
var cfg = Gollum.Formats[format][kind]
|
||||
var sel = el.getSelectionRange()
|
||||
var cnt = el.getSelectedText()
|
||||
var prefix = cfg.prefix
|
||||
if (cfg.newline) {
|
||||
el.setSelectionRange(sel.start - 1, sel.start)
|
||||
var before = el.getSelectedText()
|
||||
if (before != '\n') {
|
||||
prefix = '\n' + prefix
|
||||
}
|
||||
}
|
||||
if (sel.start == sel.end) {
|
||||
el.insertText(prefix + cfg.content, sel.start, sel.start, false)
|
||||
el.setSelectionRange(sel.start + prefix.length, sel.start + prefix.length + cfg.content.length)
|
||||
} else {
|
||||
el.insertText(prefix + cnt + '\n', sel.start, sel.end, false)
|
||||
// ua
|
||||
$(document).ready(function() {
|
||||
|
||||
// ua detection
|
||||
if ($.browser.mozilla) {
|
||||
$('body').addClass('ff');
|
||||
} else if ($.browser.webkit) {
|
||||
$('body').addClass('webkit');
|
||||
} else if ($.browser.msie) {
|
||||
$('body').addClass('ie');
|
||||
if ($.browser.version == "7.0") {
|
||||
$('body').addClass('ie7');
|
||||
} else if ($.browser.version == "8.0") {
|
||||
$('body').addClass('ie8');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Gollum.Formats = {
|
||||
asciidoc: {
|
||||
bold: Gollum.encloseStrategy('*', 'bold text', '*'),
|
||||
italic: Gollum.encloseStrategy('_', 'italic text', '_'),
|
||||
ul: Gollum.prefixStrategy('* ', 'Bullet list item', true),
|
||||
ol: Gollum.prefixStrategy('. ', 'Numbered list item', true)
|
||||
},
|
||||
creole: {
|
||||
bold: Gollum.encloseStrategy('**', 'bold text', '**'),
|
||||
italic: Gollum.encloseStrategy('//', 'italic text', '//'),
|
||||
ul: Gollum.prefixStrategy('* ', 'Bullet list item', true),
|
||||
ol: Gollum.prefixStrategy('# ', 'Numbered list item', true)
|
||||
},
|
||||
gollum: {
|
||||
link: Gollum.encloseStrategy('[[', 'Page Name', ']]'),
|
||||
image: Gollum.encloseStrategy('[[', '/path/to/image.png', ']]')
|
||||
},
|
||||
markdown: {
|
||||
bold: Gollum.encloseStrategy('**', 'bold text', '**'),
|
||||
italic: Gollum.encloseStrategy('*', 'italic text', '*'),
|
||||
ul: Gollum.prefixStrategy('* ', 'Bullet list item', true),
|
||||
ol: Gollum.prefixStrategy('1. ', 'Numbered list item', true)
|
||||
},
|
||||
org: {
|
||||
bold: Gollum.encloseStrategy('*', 'bold text', '*'),
|
||||
italic: Gollum.encloseStrategy('/', 'italic text', '/'),
|
||||
ul: Gollum.prefixStrategy('- ', 'Bullet list item', true),
|
||||
ol: Gollum.prefixStrategy('1. ', 'Numbered list item', true)
|
||||
},
|
||||
pod: {
|
||||
bold: Gollum.encloseStrategy('B<', 'bold text', '>'),
|
||||
italic: Gollum.encloseStrategy('I<', 'italic text', '>'),
|
||||
ul: Gollum.prefixStrategy('=item * ', 'Bullet list item', true),
|
||||
ol: Gollum.prefixStrategy('=item 1. ', 'Numbered list item', true)
|
||||
},
|
||||
rest: {
|
||||
bold: Gollum.encloseStrategy('**', 'bold text', '**'),
|
||||
italic: Gollum.encloseStrategy('*', 'italic text', '*'),
|
||||
ul: Gollum.prefixStrategy('* ', 'Bullet list item', true),
|
||||
ol: Gollum.prefixStrategy('1. ', 'Numbered list item', true)
|
||||
},
|
||||
rdoc: {
|
||||
bold: Gollum.encloseStrategy('*', 'bold text', '*'),
|
||||
italic: Gollum.encloseStrategy('_', 'italic text', '_'),
|
||||
ul: Gollum.prefixStrategy('* ', 'Bullet list item', true),
|
||||
ol: Gollum.prefixStrategy('1. ', 'Numbered list item', true)
|
||||
},
|
||||
textile: {
|
||||
bold: Gollum.encloseStrategy('*', 'bold text', '*'),
|
||||
italic: Gollum.encloseStrategy('_', 'italic text', '_'),
|
||||
ul: Gollum.prefixStrategy('* ', 'Bullet list item', true),
|
||||
ol: Gollum.prefixStrategy('# ', 'Numbered list item', true)
|
||||
}
|
||||
}
|
||||
|
||||
$(function(){
|
||||
/* Version selector */
|
||||
|
||||
$('#versions_select').change(function() {
|
||||
location.href = this.value
|
||||
})
|
||||
|
||||
/* EditBar */
|
||||
|
||||
$('#editbar .link').click(function() {
|
||||
var el = $('#guides .write textarea')
|
||||
var format = $('#guides .write select[name=format] option:selected').attr('value')
|
||||
Gollum.enclose(el, 'gollum', 'link')
|
||||
})
|
||||
|
||||
$('#editbar .image').click(function() {
|
||||
var el = $('#guides .write textarea')
|
||||
var format = $('#guides .write select[name=format] option:selected').attr('value')
|
||||
Gollum.enclose(el, 'gollum', 'image')
|
||||
})
|
||||
|
||||
$('#editbar .bold').click(function() {
|
||||
var el = $('#guides .write textarea')
|
||||
var format = $('#guides .write select[name=format] option:selected').attr('value')
|
||||
Gollum.enclose(el, format, 'bold')
|
||||
})
|
||||
|
||||
$('#editbar .italic').click(function() {
|
||||
var el = $('#guides .write textarea')
|
||||
var format = $('#guides .write select[name=format] option:selected').attr('value')
|
||||
Gollum.enclose(el, format, 'italic')
|
||||
})
|
||||
|
||||
$('#editbar .ul').click(function() {
|
||||
var el = $('#guides .write textarea')
|
||||
var format = $('#guides .write select[name=format] option:selected').attr('value')
|
||||
Gollum.prefix(el, format, 'ul')
|
||||
})
|
||||
|
||||
$('#editbar .ol').click(function() {
|
||||
var el = $('#guides .write textarea')
|
||||
var format = $('#guides .write select[name=format] option:selected').attr('value')
|
||||
Gollum.prefix(el, format, 'ol')
|
||||
})
|
||||
|
||||
$('#editbar .tab.help a').click(function() {
|
||||
if ($(this).hasClass("open")) {
|
||||
$(this).removeClass("open")
|
||||
$('#editbar .sections').slideUp()
|
||||
} else {
|
||||
$(this).addClass("open")
|
||||
if (!$('#editbar .sections .toc .current').get(0)) {
|
||||
var target = $('#editbar .sections .toc .headers').get(0)
|
||||
sectionItemClick.call(target)
|
||||
}
|
||||
$('#editbar .sections').slideDown()
|
||||
}
|
||||
})
|
||||
|
||||
$('#wiki_format').change(function() {
|
||||
var target = $('#editbar .sections .toc div.current').get(0)
|
||||
if (target != undefined) {
|
||||
sectionItemClick.call(target)
|
||||
}
|
||||
})
|
||||
|
||||
var sectionItemClick = function() {
|
||||
$('#editbar .sections .toc div').removeClass('current')
|
||||
$(this).addClass('current')
|
||||
$('#editbar .sections .page').removeClass('current')
|
||||
var classes = $(this).attr('class').split(' ')
|
||||
var name = classes[0]
|
||||
var format = $('#wiki_format option:selected').attr('value')
|
||||
if (classes.indexOf('gollum') == -1) {
|
||||
$('#editbar .sections .page.' + name + '.' + format).addClass('current')
|
||||
} else {
|
||||
$('#editbar .sections .page.' + name).addClass('current')
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
$('#editbar .sections .toc div').click(sectionItemClick)
|
||||
|
||||
var whichType = function(){
|
||||
return $('#wiki_format').val()
|
||||
}
|
||||
|
||||
$('#wiki-form').previewableCommentForm({
|
||||
previewUrl: "/preview",
|
||||
previewOptions: {'wiki_format': whichType},
|
||||
onSuccess: function() {
|
||||
MathJax.Hub.Typeset(this[0])
|
||||
$('#wiki_format option').each(function() {
|
||||
$('#preview_bucket').removeClass($(this).val())
|
||||
})
|
||||
$('#preview_bucket').addClass(whichType)
|
||||
}
|
||||
})
|
||||
|
||||
$('ul.inline-tabs').tabs();
|
||||
|
||||
var selectedRevisions = [];
|
||||
|
||||
// disable submit button js for accessiblity
|
||||
$('form#history input[type=submit]').attr('disabled', true);
|
||||
|
||||
$('form#history input[type=checkbox]').change(function() {
|
||||
var id = $(this).val()
|
||||
var i = selectedRevisions.indexOf(id)
|
||||
|
||||
if (i > -1) {
|
||||
selectedRevisions.splice(i, 1)
|
||||
} else {
|
||||
selectedRevisions.push(id)
|
||||
if (selectedRevisions.length > 2) {
|
||||
var shiftedId = selectedRevisions.shift()
|
||||
$('input[value=' + shiftedId + ']').attr('checked', false)
|
||||
}
|
||||
}
|
||||
|
||||
$('form#history tr.commit').removeClass("selected")
|
||||
$('form#history input[type=submit]').attr('disabled', true)
|
||||
|
||||
if (selectedRevisions.length == 2) {
|
||||
$('form#history input[type=submit]').attr('disabled', false)
|
||||
var on = false
|
||||
$('form#history tr.commit').each(function() {
|
||||
if (on) { $(this).addClass("selected") }
|
||||
|
||||
if ($(this).find('input:checked').length > 0) {
|
||||
on = !on
|
||||
|
||||
// no widows in wiki body
|
||||
if ($('#wiki-wrapper').hasClass('page')) {
|
||||
$('#template h1, #template h2, #template h3, #template h4, #template h5, #template h6, #template li, #template p').each(
|
||||
function(){
|
||||
$(this).html($(this).html().replace(/\s([^\s<]+)\s*$/,' $1'));
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
if ($('#wiki-wrapper').hasClass('history')) {
|
||||
$('#wiki-history td.checkbox input').each(highlightChecked);
|
||||
$('#wiki-history td.checkbox input').click(highlightChecked);
|
||||
|
||||
$('#wiki-history td.revert-action a').mouseenter(highlightOn);
|
||||
$('#wiki-history td.revert-action a').mouseleave(highlightOff);
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
if (on) { $(this).addClass("selected") }
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
function highlightOn() {
|
||||
$(this).parent().parent().animate({
|
||||
backgroundColor: '#ffffea',
|
||||
duration: 400
|
||||
});
|
||||
}
|
||||
|
||||
function highlightOff() {
|
||||
var color = '#ebf2f6';
|
||||
if ($(this).parent().parent().hasClass('alt-row')) {
|
||||
color = '#f3f7fa';
|
||||
}
|
||||
$(this).parent().parent().animate({
|
||||
backgroundColor: color,
|
||||
duration: 400
|
||||
});
|
||||
}
|
||||
|
||||
function highlightChecked() {
|
||||
if ($(this).is(':checked')) {
|
||||
$(this).parent().parent().addClass('selected');
|
||||
} else {
|
||||
$(this).parent().parent().removeClass('selected');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user