# HG changeset patch # User Ludovic Chabant # Date 1391292200 28800 # Node ID 87d6922340d97634fb4849ece67173325ee3abc1 # Parent ca1a810a4811f898bb0b0fd95ae81417487a86b3 Page editing: - Fixed broken page editing. - Use the bundled Pagedown library. - Added ability to add new pages. Miscellaneous: - Better UI for subtitles and details. diff -r ca1a810a4811 -r 87d6922340d9 wikked/assets/css/wikked/page.less --- a/wikked/assets/css/wikked/page.less Sat Feb 01 14:01:27 2014 -0800 +++ b/wikked/assets/css/wikked/page.less Sat Feb 01 14:03:20 2014 -0800 @@ -74,6 +74,22 @@ }*/ } +// Page title decorator +.decorator, .decorator-sm { + text-transform: uppercase; + font-family: @font-family-sans-serif; + font-weight: 200; + font-size: 0.7em; + letter-spacing: 0.1em; + color: @color-footer; + .rev_id { + font-family: @font-family-monospace; + } +} +.decorator-sm { + font-size: 0.5em; +} + // Page info section.info { margin: @line-height-computed 0 0 0; @@ -124,16 +140,7 @@ .special>article footer { background: @colorGreen; } -.decorator { - text-transform: uppercase; - font-weight: lighter; - font-size: 0.7em; - letter-spacing: 0.1em; - color: @colorBlue; - .rev_id { - font-family: @font-family-monospace; - } -}*/ +*/ // Search ul#search-preview { @@ -227,6 +234,9 @@ article, .footer-wrapper { width: 700px; } + .wide { + width: 100%; + } } /* Medium devices (desktops, 992px and up) */ diff -r ca1a810a4811 -r 87d6922340d9 wikked/assets/js/wikked/app.js --- a/wikked/assets/js/wikked/app.js Sat Feb 01 14:01:27 2014 -0800 +++ b/wikked/assets/js/wikked/app.js Sat Feb 01 14:03:20 2014 -0800 @@ -64,6 +64,7 @@ routes: { 'read/*path': "readPage", '': "readMainPage", + 'create/*path': "createPage", 'edit/*path': "editPage", 'changes/*path': "showPageHistory", 'inlinks/*path': "showIncomingLinks", @@ -92,6 +93,13 @@ readMainPage: function() { this.readPage(''); }, + createPage: function(path) { + var view = new Views.PageEditView({ + model: new Models.PageEditModel({ is_new: true, create_in: path }) + }); + this.viewManager.switchView(view); + this.navigate('/create/' + path); + }, editPage: function(path) { var view = new Views.PageEditView({ model: new Models.PageEditModel({ path: path }) diff -r ca1a810a4811 -r 87d6922340d9 wikked/assets/js/wikked/models.js --- a/wikked/assets/js/wikked/models.js Sat Feb 01 14:01:27 2014 -0800 +++ b/wikked/assets/js/wikked/models.js Sat Feb 01 14:03:20 2014 -0800 @@ -55,7 +55,7 @@ this.navigate('/search/' + $(form.q).val(), { trigger: true }); }, doNewPage: function(form) { - this.navigate('/edit/', { trigger: true }); + this.navigate('/create/', { trigger: true }); }, _onChangePath: function(path) { this.set({ @@ -286,6 +286,10 @@ action: 'edit', urlRoot: '/api/edit/', doEdit: function(form) { + if (this.get('is_new')) { + this.set('path', $('input[name="title"]', form).val()); + } + var $model = this; $.post(this.url(), $(form).serialize(), null, 'json') .done(function(data) { diff -r ca1a810a4811 -r 87d6922340d9 wikked/assets/js/wikked/views.js --- a/wikked/assets/js/wikked/views.js Sat Feb 01 14:01:27 2014 -0800 +++ b/wikked/assets/js/wikked/views.js Sat Feb 01 14:03:20 2014 -0800 @@ -9,6 +9,9 @@ 'bootstrap_tooltip', 'bootstrap_alert', 'bootstrap_collapse', + 'pagedown_converter', + 'pagedown_editor', + 'pagedown_sanitizer', 'js/wikked/client', 'js/wikked/models', 'js/wikked/util', @@ -32,7 +35,10 @@ 'text!tpl/special-changes.html', 'text!tpl/special-orphans.html' ], - function($, _, Backbone, Handlebars, BootstrapTooltip, BootstrapAlert, BootstrapCollapse, Client, Models, Util, + function($, _, Backbone, Handlebars, + BootstrapTooltip, BootstrapAlert, BootstrapCollapse, + PageDownConverter, PageDownEditor, PageDownSanitizer, + Client, Models, Util, tplReadPage, tplMetaPage, tplEditPage, tplHistoryPage, tplRevisionPage, tplDiffPage, tplInLinksPage, tplNav, tplFooter, tplSearchResults, tplLogin, tplErrorNotAuthorized, tplErrorNotFound, tplErrorUnauthorizedEdit, tplStateWarning, @@ -336,17 +342,16 @@ // Cache some stuff. this._ctrlInput = $('#wmd-input'); this._ctrlPreview = $('#wmd-preview'); - this._originalInputHeight = this._ctrlInput.height(); // Create the Markdown editor. var formatter = new Client.PageFormatter(); formatter.baseUrl = this.model.get('path').match(/.*\//); - var converter = new Markdown.Converter(); + var converter = PageDownConverter.getSanitizingConverter(); converter.hooks.chain("preConversion", function(text) { return formatter.formatText(text); }); var $view = this; - var editor = new Markdown.Editor(converter); //TODO: pass options + var editor = new PageDownConverter.Editor(converter); //TODO: pass options editor.hooks.chain("onPreviewRefresh", function() { $view._updateUI(true); }); @@ -354,7 +359,7 @@ // Setup UI. this._updateUI(); - $('#wmd-preview-wrapper').hide(); + $('.preview').hide(); }, events: { "mousedown #wmd-input-grip": "_inputGripMouseDown", @@ -388,36 +393,23 @@ return false; }, _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'); + $('article').addClass('container-fluid').addClass('wide'); + $('.header-wrapper').addClass('row'); + $('.header-wrapper>header').addClass('col-md-12'); + $('.editing-wrapper').addClass('row'); + $('.editing-wrapper>.editing').addClass('col-md-6'); + $('.editing-wrapper>.preview').addClass('col-md-6').show(); 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'); - - this._ctrlInput.height(this._originalInputHeight); + $('article').removeClass('container-fluid').removeClass('wide'); + $('.header-wrapper').removeClass('row'); + $('.header-wrapper>header').removeClass('col-md-12'); + $('.editing-wrapper').removeClass('row'); + $('.editing-wrapper>.editing').removeClass('col-md-6'); + $('.editing-wrapper>.preview').removeClass('col-md-6').hide(); + this._updateUI(); }, _toggleFullPreview: function(e) { diff -r ca1a810a4811 -r 87d6922340d9 wikked/assets/tpl/diff-page.html --- a/wikked/assets/tpl/diff-page.html Sat Feb 01 14:01:27 2014 -0800 +++ b/wikked/assets/tpl/diff-page.html Sat Feb 01 14:03:20 2014 -0800 @@ -2,7 +2,8 @@

{{meta.title}} - Diff: + Diff
+ {{#if disp_rev2}} {{disp_rev1}} to {{disp_rev2}} {{else}} diff -r ca1a810a4811 -r 87d6922340d9 wikked/assets/tpl/edit-page.html --- a/wikked/assets/tpl/edit-page.html Sat Feb 01 14:01:27 2014 -0800 +++ b/wikked/assets/tpl/edit-page.html Sat Feb 01 14:03:20 2014 -0800 @@ -1,52 +1,57 @@
-
-

{{meta.title}} Editing

-
-
-
-
-
-
-
    -
  • -
-
-
- {{#if error}} -
-

Error: {{error.message}}

-
- {{/if}} -
- -
-
-
-
-
- - + +
+
+ {{#if is_new}} + + {{else}} +

{{meta.title}} Editing

+ {{/if}} +
+
+
+
+
+
+
+
    +
  • +
-
- - +
+ {{#if error}} +
+

Error: {{error.message}}

+
+ {{/if}} +
+ +
+
+
+
+
+ + +
+
+ + +
-
-
-
-
- - Cancel -
-
-
-
-

Preview

- -
+ +
+
+ + Cancel +
+
+
+
+

Preview

+ +
+
- - - diff -r ca1a810a4811 -r 87d6922340d9 wikked/views/edit.py --- a/wikked/views/edit.py Sat Feb 01 14:01:27 2014 -0800 +++ b/wikked/views/edit.py Sat Feb 01 14:03:20 2014 -0800 @@ -17,7 +17,7 @@ self._text = text def _loadData(self): - extension = self.wiki.config.get('wiki', 'default_extension') + extension = self.wiki.fs.default_extension data = PageData() data.path = '__preview__.' + extension data.filename = '__preview__' @@ -30,7 +30,8 @@ data.local_meta = ctx.meta data.local_links = ctx.out_links - data.title = make_page_title(self.url) + data.title = (data.local_meta.get('title') or + make_page_title(self.url)) return data