Mercurial > wikked
changeset 136:546a71fb2e37
Process wiki links in the edit page preview too.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 08 Dec 2013 12:45:38 -0800 |
parents | 1030a6e8d416 |
children | d29007463b70 |
files | static/js/wikked/views.js |
diffstat | 1 files changed, 50 insertions(+), 43 deletions(-) [+] |
line wrap: on
line diff
--- a/static/js/wikked/views.js Thu Dec 05 08:23:12 2013 -0800 +++ b/static/js/wikked/views.js Sun Dec 08 12:45:38 2013 -0800 @@ -57,12 +57,34 @@ ); }); }; - jQuery.fn.unwatch = function( id ) { + jQuery.fn.unwatch = function(id) { return this.each(function() { clearInterval($(this).data('watch_timer')); }); }; + // Utility function to make wiki links into usable links for + // this UI frontend. + var processWikiLinks = function(el) { + $('a.wiki-link', el).each(function(i) { + var jel = $(this); + var wiki_url = jel.attr('data-wiki-url').replace(/^\//, ''); + if (jel.hasClass('missing') || jel.attr('data-action') == 'edit') + jel.attr('href', '/#/edit/' + wiki_url); + else + jel.attr('href', '/#/read/' + wiki_url); + }); + $('a.wiki-meta-link', el).each(function(i) { + var jel = $(this); + var meta_name = jel.attr('data-wiki-meta'); + var meta_value = jel.attr('data-wiki-value'); + if (jel.hasClass('missing') || jel.attr('data-action') == 'edit') + jel.attr('href', '/#/edit/' + meta_name + ':' + meta_value); + else + jel.attr('href', '/#/read/' + meta_name + ':' + meta_value); + }); + }; + var PageView = exports.PageView = Backbone.View.extend({ tagName: 'div', className: 'wrapper', @@ -242,25 +264,8 @@ return; } - // Replace all wiki links with proper hyperlinks using the JS app's - // URL scheme. - this.$('a.wiki-link').each(function(i) { - var jel = $(this); - var wiki_url = jel.attr('data-wiki-url').replace(/^\//, ''); - if (jel.hasClass('missing') || jel.attr('data-action') == 'edit') - jel.attr('href', '/#/edit/' + wiki_url); - else - jel.attr('href', '/#/read/' + wiki_url); - }); - this.$('a.wiki-meta-link').each(function(i) { - var jel = $(this); - var meta_name = jel.attr('data-wiki-meta'); - var meta_value = jel.attr('data-wiki-value'); - if (jel.hasClass('missing') || jel.attr('data-action') == 'edit') - jel.attr('href', '/#/edit/' + meta_name + ':' + meta_value); - else - jel.attr('href', '/#/read/' + meta_name + ':' + meta_value); - }); + processWikiLinks(this.$el); + // If we've already rendered the content, see if we need to display a // warning about the page's state. if (this.model.get('content')) { @@ -379,33 +384,33 @@ }, _addPreview: function() { $('#app') - .removeClass('container') - .addClass('container-fluid'); - $('#page-edit') - .removeClass('row') - .addClass('row-fluid'); - $('#wmd-form-wrapper') - .removeClass('span12') - .addClass('span6'); - $('#wmd-preview-wrapper') - .show() - .addClass('span6'); + .removeClass('container') + .addClass('container-fluid'); + $('#page-edit') + .removeClass('row') + .addClass('row-fluid'); + $('#wmd-form-wrapper') + .removeClass('span12') + .addClass('span6'); + $('#wmd-preview-wrapper') + .show() + .addClass('span6'); this._updateUI(true); }, _removePreview: function() { $('#wmd-form-wrapper') - .removeClass('span6') - .addClass('span12'); - $('#wmd-preview-wrapper') - .hide() - .removeClass('span6'); - $('#page-edit') - .removeClass('row-fluid') - .addClass('row'); - $('#app') - .removeClass('container-fluid') - .addClass('container'); + .removeClass('span6') + .addClass('span12'); + $('#wmd-preview-wrapper') + .hide() + .removeClass('span6'); + $('#page-edit') + .removeClass('row-fluid') + .addClass('row'); + $('#app') + .removeClass('container-fluid') + .addClass('container'); this._ctrlInput.height(this._originalInputHeight); this._updateUI(); @@ -418,7 +423,9 @@ }; $.post('/api/preview', previewData) .success(function(data) { - $('#wmd-preview').html(data.text); + var previewEl = $('#wmd-preview'); + previewEl.html(data.text); + processWikiLinks(previewEl); $view._updateUI(true); }) .error(function() {