annotate static/js/wikked/views.js @ 99:58a1a7baca25

Added preliminary UI support for categories.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 21 Apr 2013 08:12:18 -0700
parents 3282a3e39fb4
children 827e236aa7c6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 /**
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 * Wikked views.
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3 */
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4 define([
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5 'jquery',
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6 'underscore',
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 'backbone',
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 'handlebars',
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
9 'bootstrap_tooltip',
63
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
10 'js/wikked/client',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
11 'js/wikked/models',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
12 'js/wikked/util',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
13 'text!tpl/read-page.html',
99
58a1a7baca25 Added preliminary UI support for categories.
Ludovic Chabant <ludovic@chabant.com>
parents: 94
diff changeset
14 'text!tpl/category.html',
63
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
15 'text!tpl/edit-page.html',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
16 'text!tpl/history-page.html',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
17 'text!tpl/revision-page.html',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
18 'text!tpl/diff-page.html',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
19 'text!tpl/inlinks-page.html',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
20 'text!tpl/nav.html',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
21 'text!tpl/footer.html',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
22 'text!tpl/search-results.html',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
23 'text!tpl/login.html',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
24 'text!tpl/error-unauthorized.html',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
25 'text!tpl/error-not-found.html',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
26 'text!tpl/error-unauthorized-edit.html',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
27 'text!tpl/state-warning.html',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
28 'text!tpl/special-nav.html',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
29 'text!tpl/special-pages.html',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
30 'text!tpl/special-changes.html',
97efd73f2158 Changed RequireJS paths to make it usable with the optimizer.
Ludovic Chabant <ludovic@chabant.com>
parents: 62
diff changeset
31 'text!tpl/special-orphans.html'
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 ],
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
33 function($, _, Backbone, Handlebars, BootstrapTooltip, Client, Models, Util,
99
58a1a7baca25 Added preliminary UI support for categories.
Ludovic Chabant <ludovic@chabant.com>
parents: 94
diff changeset
34 tplReadPage, tplCategory, tplEditPage, tplHistoryPage, tplRevisionPage, tplDiffPage, tplInLinksPage,
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
35 tplNav, tplFooter, tplSearchResults, tplLogin,
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
36 tplErrorNotAuthorized, tplErrorNotFound, tplErrorUnauthorizedEdit, tplStateWarning,
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
37 tplSpecialNav, tplSpecialPages, tplSpecialChanges, tplSpecialOrphans) {
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
38
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
39 var exports = {};
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
40
93
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
41 // JQuery feature for watching size changes in a DOM element.
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
42 jQuery.fn.watch = function(id, fn) {
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
43 return this.each(function() {
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
44 var self = this;
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
45 var oldVal = self[id];
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
46 $(self).data(
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
47 'watch_timer',
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
48 setInterval(
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
49 function() {
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
50 if (self[id] !== oldVal) {
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
51 fn.call(self, id, oldVal, self[id]);
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
52 oldVal = self[id];
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
53 }
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
54 },
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
55 100
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
56 )
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
57 );
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
58 });
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
59 };
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
60 jQuery.fn.unwatch = function( id ) {
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
61 return this.each(function() {
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
62 clearInterval($(this).data('watch_timer'));
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
63 });
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
64 };
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
65
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
66 var PageView = exports.PageView = Backbone.View.extend({
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
67 tagName: 'div',
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
68 className: 'wrapper',
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
69 isMainPage: true,
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
70 initialize: function() {
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
71 PageView.__super__.initialize.apply(this, arguments);
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
72 if (this.model !== undefined) {
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
73 var $view = this;
19
884eb6c8edf0 Added "wiki history" special page:
Ludovic Chabant <ludovic@chabant.com>
parents: 17
diff changeset
74 this.model.on("change", function() { $view._onModelChange(); });
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
75 }
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
76 return this;
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
77 },
69
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
78 dispose: function() {
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
79 this.remove();
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
80 this.unbind();
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
81 if (this.model) {
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
82 this.model.unbind();
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
83 }
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
84 if (this._onDispose) {
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
85 this._onDispose();
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
86 }
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
87 },
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
88 render: function(view) {
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
89 if (this.template === undefined && this.templateSource !== undefined) {
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
90 this.template = Handlebars.compile(_.result(this, 'templateSource'));
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
91 }
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
92 if (this.template !== undefined) {
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
93 this.renderTemplate(this.template);
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
94 if (this.renderCallback !== undefined) {
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
95 this.renderCallback();
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
96 }
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
97 }
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
98 if (this.isMainPage) {
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
99 this.renderTitle(this.titleFormat);
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
100 }
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
101 return this;
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
102 },
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
103 renderTemplate: function(tpl) {
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
104 this.$el.html(tpl(this.model.toJSON()));
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
105 },
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
106 renderTitle: function(formatter) {
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
107 var title = this.model.title();
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
108 if (formatter !== undefined) {
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
109 title = formatter.call(this, title);
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
110 }
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
111 document.title = title;
19
884eb6c8edf0 Added "wiki history" special page:
Ludovic Chabant <ludovic@chabant.com>
parents: 17
diff changeset
112 },
884eb6c8edf0 Added "wiki history" special page:
Ludovic Chabant <ludovic@chabant.com>
parents: 17
diff changeset
113 _onModelChange: function() {
884eb6c8edf0 Added "wiki history" special page:
Ludovic Chabant <ludovic@chabant.com>
parents: 17
diff changeset
114 this.render();
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
115 }
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
116 });
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
117 _.extend(PageView, Backbone.Events);
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
118
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
119 var NavigationView = exports.NavigationView = PageView.extend({
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
120 templateSource: tplNav,
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
121 isMainPage: false,
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
122 initialize: function() {
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
123 NavigationView.__super__.initialize.apply(this, arguments);
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
124 return this;
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
125 },
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
126 render: function() {
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
127 NavigationView.__super__.render.apply(this, arguments);
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
128 this.origPageEl = $('.wrapper>article');
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
129 return this;
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
130 },
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
131 events: {
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
132 "submit #search": "_submitSearch",
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
133 "input #search>.search-query": "_previewSearch",
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
134 "keyup #search>.search-query": "_searchQueryChanged"
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
135 },
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
136 _submitSearch: function(e) {
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
137 e.preventDefault();
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
138 this.model.doSearch(e.currentTarget);
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
139 return false;
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
140 },
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
141 _previewSearch: function(e) {
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
142 // Restore the original content if the query is now
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
143 // empty. Otherwise, run a search and render only the
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
144 // `article` portion of the results page.
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
145 var origPageEl = this.origPageEl;
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
146 var curPreviewEl = $('.wrapper>article[class~="preview-search-results"]');
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
147 var query = $(e.currentTarget).val();
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
148 if (query && query.length > 0) {
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
149 var template = Handlebars.compile(tplSearchResults);
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
150 this.model.doPreviewSearch(query, function(data) {
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
151 data.is_instant = true;
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
152 var resultList = $(template(data));
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
153 var inner = $(resultList)
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
154 .addClass('preview-search-results');
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
155 if (origPageEl.is(':visible')) {
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
156 inner.insertAfter(origPageEl);
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
157 origPageEl.hide();
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
158 } else {
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
159 curPreviewEl.replaceWith(inner);
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
160 }
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
161 });
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
162 } else {
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
163 curPreviewEl.remove();
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
164 origPageEl.show();
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
165 }
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
166 },
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
167 _searchQueryChanged: function(e) {
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
168 if (e.keyCode == 27) {
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
169 // Clear search on `Esc`.
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
170 $(e.currentTarget).val('').trigger('input');
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
171 }
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
172 }
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
173 });
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
174
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
175 var FooterView = exports.FooterView = PageView.extend({
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
176 templateSource: tplFooter,
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
177 isMainPage: false,
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
178 initialize: function() {
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
179 FooterView.__super__.initialize.apply(this, arguments);
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
180 return this;
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
181 },
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
182 render: function() {
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
183 FooterView.__super__.render.apply(this, arguments);
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
184 return this;
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
185 }
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
186 });
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
187
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
188 var LoginView = exports.LoginView = PageView.extend({
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
189 templateSource: tplLogin,
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
190 events: {
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
191 "submit #login": "_submitLogin"
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
192 },
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
193 _submitLogin: function(e) {
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
194 e.preventDefault();
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
195 this.model.doLogin(e.currentTarget);
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
196 return false;
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
197 }
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
198 });
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
199
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
200 var MasterPageView = exports.MasterPageView = PageView.extend({
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
201 initialize: function() {
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
202 MasterPageView.__super__.initialize.apply(this, arguments);
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
203 this.nav = this._createNavigation(this.model.nav);
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
204 this.footer = this._createFooter(this.model.footer);
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
205 return this;
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
206 },
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
207 renderCallback: function() {
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
208 this.$el.prepend('<nav></nav>');
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
209 this.$el.append('<footer></footer>');
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
210 this.nav.setElement(this.$('>nav')).render();
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
211 this.footer.setElement(this.$('>footer')).render();
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
212 this.isError = (this.model.get('error_code') !== undefined);
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
213 },
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
214 templateSource: function() {
34
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
215 switch (this.model.get('error_code')) {
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
216 case 401:
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
217 return tplErrorNotAuthorized;
34
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
218 case 404:
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
219 return tplErrorNotFound;
34
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
220 default:
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
221 return _.result(this, 'defaultTemplateSource');
34
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
222 }
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
223 },
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
224 _createNavigation: function(model) {
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
225 return new NavigationView({ model: model });
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
226 },
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
227 _createFooter: function(model) {
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
228 return new FooterView({ model: model });
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
229 }
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
230 });
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
231
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
232 var PageReadView = exports.PageReadView = MasterPageView.extend({
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
233 defaultTemplateSource: tplReadPage,
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
234 initialize: function() {
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
235 PageReadView.__super__.initialize.apply(this, arguments);
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
236 this.warningTemplate = Handlebars.compile(tplStateWarning);
34
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
237 return this;
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
238 },
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
239 renderCallback: function() {
34
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
240 PageReadView.__super__.renderCallback.apply(this, arguments);
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
241 if (this.isError) {
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
242 return;
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
243 }
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
244
34
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
245 // Replace all wiki links with proper hyperlinks using the JS app's
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
246 // URL scheme.
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
247 this.$('a.wiki-link[data-wiki-url]').each(function(i) {
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
248 var jel = $(this);
87
c0cf67362fb1 Render edit links when `data-action` is set to `edit`.
Ludovic Chabant <ludovic@chabant.com>
parents: 80
diff changeset
249 if (jel.hasClass('missing') || jel.attr('data-action') == 'edit')
34
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
250 jel.attr('href', '/#/edit/' + jel.attr('data-wiki-url'));
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
251 else
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
252 jel.attr('href', '/#/read/' + jel.attr('data-wiki-url'));
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
253 });
69
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
254 // If we've already rendered the content, and we need to display
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
255 // a warning, do so now.
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
256 if (this.model.get('content')) {
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
257 this._showPageStateWarning();
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
258 }
34
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
259 },
69
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
260 _showPageStateWarning: function() {
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
261 if (this._pageState === undefined)
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
262 return;
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
263
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
264 var state = this._pageState.get('state');
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
265 if (state == 'new' || state == 'modified') {
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
266 var warning = $(this.warningTemplate(this._pageState.toJSON()));
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
267 $('[rel="tooltip"]', warning).tooltip({container:'body'});
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
268 //warning.css('display', 'none');
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
269 warning.prependTo($('.wrapper>article'));
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
270 //warning.slideDown();
69
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
271 $('.dismiss', warning).click(function() {
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
272 //warning.slideUp();
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
273 warning.remove();
69
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
274 return false;
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
275 });
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
276 }
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
277 },
62
a73a3c0b6d4a Fixed some bugs with the page state warning.
Ludovic Chabant <ludovic@chabant.com>
parents: 60
diff changeset
278 _checkPageState: function() {
69
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
279 var $view = this;
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
280 var stateModel = new Models.PageStateModel({ path: this.model.get('path') });
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
281 stateModel.fetch({
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
282 success: function(model, response, options) {
69
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
283 $view._pageState = model;
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
284 // If we've already rendered the content, display
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
285 // the warning, if any, now.
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
286 if ($view.model && $view.model.get('content')) {
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
287 $view._showPageStateWarning();
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
288 }
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
289 }
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
290 });
62
a73a3c0b6d4a Fixed some bugs with the page state warning.
Ludovic Chabant <ludovic@chabant.com>
parents: 60
diff changeset
291 },
a73a3c0b6d4a Fixed some bugs with the page state warning.
Ludovic Chabant <ludovic@chabant.com>
parents: 60
diff changeset
292 _firstRender: true,
a73a3c0b6d4a Fixed some bugs with the page state warning.
Ludovic Chabant <ludovic@chabant.com>
parents: 60
diff changeset
293 _onModelChange: function() {
a73a3c0b6d4a Fixed some bugs with the page state warning.
Ludovic Chabant <ludovic@chabant.com>
parents: 60
diff changeset
294 PageReadView.__super__._onModelChange.apply(this, arguments);
a73a3c0b6d4a Fixed some bugs with the page state warning.
Ludovic Chabant <ludovic@chabant.com>
parents: 60
diff changeset
295
a73a3c0b6d4a Fixed some bugs with the page state warning.
Ludovic Chabant <ludovic@chabant.com>
parents: 60
diff changeset
296 // Fetch the state if the current page changed.
94
3282a3e39fb4 Server is returning 404 errors correctly again.
Ludovic Chabant <ludovic@chabant.com>
parents: 93
diff changeset
297 if (!this.isError && (this.model.hasChanged('path') || this._firstRender)) {
62
a73a3c0b6d4a Fixed some bugs with the page state warning.
Ludovic Chabant <ludovic@chabant.com>
parents: 60
diff changeset
298 this._checkPageState();
a73a3c0b6d4a Fixed some bugs with the page state warning.
Ludovic Chabant <ludovic@chabant.com>
parents: 60
diff changeset
299 this._firstRender = false;
a73a3c0b6d4a Fixed some bugs with the page state warning.
Ludovic Chabant <ludovic@chabant.com>
parents: 60
diff changeset
300 }
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
301 }
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
302 });
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
303
99
58a1a7baca25 Added preliminary UI support for categories.
Ludovic Chabant <ludovic@chabant.com>
parents: 94
diff changeset
304 var CategoryView = exports.CategoryView = MasterPageView.extend({
58a1a7baca25 Added preliminary UI support for categories.
Ludovic Chabant <ludovic@chabant.com>
parents: 94
diff changeset
305 defaultTemplateSource: tplCategory
58a1a7baca25 Added preliminary UI support for categories.
Ludovic Chabant <ludovic@chabant.com>
parents: 94
diff changeset
306 });
58a1a7baca25 Added preliminary UI support for categories.
Ludovic Chabant <ludovic@chabant.com>
parents: 94
diff changeset
307
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
308 var PageEditView = exports.PageEditView = MasterPageView.extend({
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
309 defaultTemplateSource: tplEditPage,
93
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
310 dispose: function() {
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
311 PageEditView.__super__.dispose.apply(this, arguments);
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
312 this._removePreview();
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
313 },
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
314 renderCallback: function() {
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
315 PageEditView.__super__.renderCallback.apply(this, arguments);
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
316 if (this.isError) {
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
317 return;
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
318 }
40
81333391792d Moved client code from HTML template to `views.js`.
Ludovic Chabant <ludovic@chabant.com>
parents: 37
diff changeset
319
93
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
320 // Cache some stuff.
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
321 this._ctrlInput = $('#wmd-input');
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
322 this._ctrlPreview = $('#wmd-preview');
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
323 this._originalInputHeight = this._ctrlInput.height();
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
324
40
81333391792d Moved client code from HTML template to `views.js`.
Ludovic Chabant <ludovic@chabant.com>
parents: 37
diff changeset
325 // Create the Markdown editor.
81333391792d Moved client code from HTML template to `views.js`.
Ludovic Chabant <ludovic@chabant.com>
parents: 37
diff changeset
326 var formatter = new Client.PageFormatter();
81333391792d Moved client code from HTML template to `views.js`.
Ludovic Chabant <ludovic@chabant.com>
parents: 37
diff changeset
327 formatter.baseUrl = this.model.get('path').match(/.*\//);
81333391792d Moved client code from HTML template to `views.js`.
Ludovic Chabant <ludovic@chabant.com>
parents: 37
diff changeset
328 var converter = new Markdown.Converter();
81333391792d Moved client code from HTML template to `views.js`.
Ludovic Chabant <ludovic@chabant.com>
parents: 37
diff changeset
329 converter.hooks.chain("preConversion", function(text) {
81333391792d Moved client code from HTML template to `views.js`.
Ludovic Chabant <ludovic@chabant.com>
parents: 37
diff changeset
330 return formatter.formatText(text);
81333391792d Moved client code from HTML template to `views.js`.
Ludovic Chabant <ludovic@chabant.com>
parents: 37
diff changeset
331 });
93
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
332 var $view = this;
40
81333391792d Moved client code from HTML template to `views.js`.
Ludovic Chabant <ludovic@chabant.com>
parents: 37
diff changeset
333 var editor = new Markdown.Editor(converter); //TODO: pass options
93
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
334 editor.hooks.chain("onPreviewRefresh", function() {
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
335 $view._updateUI(true);
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
336 });
40
81333391792d Moved client code from HTML template to `views.js`.
Ludovic Chabant <ludovic@chabant.com>
parents: 37
diff changeset
337 editor.run();
91
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
338
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
339 // Setup UI.
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
340 this._updateUI();
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
341 $('#wmd-preview-wrapper').hide();
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
342 },
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
343 events: {
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
344 "mousedown #wmd-input-grip": "_inputGripMouseDown",
91
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
345 "click #wmd-preview-button": "_togglePreview",
93
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
346 "click #wmd-full-preview-button": "_toggleFullPreview",
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
347 "submit #page-edit": "_submitEditedPage"
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
348 },
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
349 _inputGripMouseDown: function(e) {
40
81333391792d Moved client code from HTML template to `views.js`.
Ludovic Chabant <ludovic@chabant.com>
parents: 37
diff changeset
350 // Input area resizing with the grip.
81333391792d Moved client code from HTML template to `views.js`.
Ludovic Chabant <ludovic@chabant.com>
parents: 37
diff changeset
351 var last_pageY;
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
352 last_pageY = e.pageY;
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
353 $('body')
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
354 .on('mousemove.wikked.editor_resize', function(e) {
91
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
355 var editor_control = $('#wmd-input');
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
356 editor_control.height(editor_control.height() + e.pageY - last_pageY);
40
81333391792d Moved client code from HTML template to `views.js`.
Ludovic Chabant <ludovic@chabant.com>
parents: 37
diff changeset
357 last_pageY = e.pageY;
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
358 })
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
359 .on('mouseup.wikked.editor_resize mouseleave.wikked.editor_resize', function(e) {
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
360 $('body').off('.wikked.editor_resize');
40
81333391792d Moved client code from HTML template to `views.js`.
Ludovic Chabant <ludovic@chabant.com>
parents: 37
diff changeset
361 });
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
362 },
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
363 _togglePreview: function(e) {
40
81333391792d Moved client code from HTML template to `views.js`.
Ludovic Chabant <ludovic@chabant.com>
parents: 37
diff changeset
364 // Show/hide live preview.
91
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
365 var w = $('body').width() - 40;
93
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
366 if (this._ctrlPreview.is(":visible")) {
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
367 this._removePreview();
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
368 } else {
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
369 this._addPreview();
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
370 }
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
371 e.preventDefault();
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
372 return false;
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
373 },
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
374 _addPreview: function() {
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
375 $('#app')
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
376 .removeClass('container')
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
377 .addClass('container-fluid');
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
378 $('#page-edit')
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
379 .removeClass('row')
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
380 .addClass('row-fluid');
91
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
381 $('#wmd-form-wrapper')
93
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
382 .removeClass('span12')
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
383 .addClass('span6');
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
384 $('#wmd-preview-wrapper')
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
385 .show()
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
386 .addClass('span6');
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
387
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
388 this._updateUI(true);
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
389 },
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
390 _removePreview: function() {
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
391 $('#wmd-form-wrapper')
91
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
392 .removeClass('span6')
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
393 .addClass('span12');
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
394 $('#wmd-preview-wrapper')
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
395 .hide()
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
396 .removeClass('span6');
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
397 $('#page-edit')
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
398 .removeClass('row-fluid')
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
399 .addClass('row');
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
400 $('#app')
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
401 .removeClass('container-fluid')
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
402 .addClass('container');
93
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
403
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
404 this._ctrlInput.height(this._originalInputHeight);
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
405 this._updateUI();
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
406 },
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
407 _toggleFullPreview: function(e) {
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
408 var $view = this;
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
409 var previewData = {
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
410 url: this.model.get('path'),
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
411 text: $('#wmd-input').val()
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
412 };
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
413 $.post('/api/preview', previewData)
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
414 .success(function(data) {
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
415 $('#wmd-preview').html(data.text);
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
416 $view._updateUI(true);
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
417 })
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
418 .error(function() {
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
419 $('#wmd-preview').html("Error running preview.");
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
420 });
91
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
421 e.preventDefault();
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
422 return false;
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
423 },
93
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
424 _updateUI: function(setHeight) {
91
315c32a4ce58 Modified edit page to support side-by-side preview.
Ludovic Chabant <ludovic@chabant.com>
parents: 89
diff changeset
425 var inputWidth = $('#wmd-input-wrapper').innerWidth();
93
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
426 this._ctrlInput.outerWidth(inputWidth);
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
427
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
428 if (setHeight === true) {
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
429 var maxHeight = Math.max(
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
430 this._ctrlPreview.height(),
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
431 this._ctrlInput.height());
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
432 this._ctrlInput.height(maxHeight);
6d962a238c03 Added full preview button for page editing.
Ludovic Chabant <ludovic@chabant.com>
parents: 91
diff changeset
433 }
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
434 },
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
435 _submitEditedPage: function(e) {
40
81333391792d Moved client code from HTML template to `views.js`.
Ludovic Chabant <ludovic@chabant.com>
parents: 37
diff changeset
436 // Make the model submit the form.
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
437 e.preventDefault();
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
438 this.model.doEdit(e.currentTarget);
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
439 return false;
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
440 },
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
441 titleFormat: function(title) {
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
442 return 'Editing: ' + title;
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
443 }
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
444 });
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
445
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
446 var PageHistoryView = exports.PageHistoryView = MasterPageView.extend({
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
447 defaultTemplateSource: tplHistoryPage,
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
448 events: {
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
449 "submit #diff-page": "_submitDiffPage"
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
450 },
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
451 _submitDiffPage: function(e) {
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
452 e.preventDefault();
69
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
453 this.model.doDiff(e.currentTarget);
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
454 return false;
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
455 },
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
456 titleFormat: function(title) {
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
457 return 'History: ' + title;
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
458 }
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
459 });
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
460
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
461 var PageRevisionView = exports.PageRevisionView = MasterPageView.extend({
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
462 defaultTemplateSource: tplRevisionPage,
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
463 titleFormat: function(title) {
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
464 return title + ' [' + this.model.get('rev') + ']';
69
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
465 },
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
466 events: {
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
467 "submit #page-revert": "_submitPageRevert"
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
468 },
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
469 _submitPageRevert: function(e) {
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
470 e.preventDefault();
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
471 this.model.doRevert(e.currentTarget);
0adac3bc079e Client refactoring:
Ludovic Chabant <ludovic@chabant.com>
parents: 63
diff changeset
472 return false;
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
473 }
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
474 });
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
475
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
476 var PageDiffView = exports.PageDiffView = MasterPageView.extend({
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
477 defaultTemplateSource: tplDiffPage,
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
478 titleFormat: function(title) {
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
479 return title + ' [' + this.model.get('rev1') + '-' + this.model.get('rev2') + ']';
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
480 }
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
481 });
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
482
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
483 var IncomingLinksView = exports.IncomingLinksView = MasterPageView.extend({
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
484 defaultTemplateSource: tplInLinksPage,
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
485 titleFormat: function(title) {
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
486 return 'Incoming Links: ' + title;
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
487 }
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
488 });
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
489
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
490 var WikiSearchView = exports.WikiSearchView = MasterPageView.extend({
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
491 defaultTemplateSource: tplSearchResults
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
492 });
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
493
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
494 var SpecialNavigationView = exports.SpecialNavigationView = NavigationView.extend({
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
495 templateSource: tplSpecialNav
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
496 });
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
497
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
498 var SpecialMasterPageView = exports.SpecialMasterPageView = MasterPageView.extend({
89
b03f083c3a29 Lots of HTML/JS/Less changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 87
diff changeset
499 className: 'wrapper special',
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
500 _createNavigation: function(model) {
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
501 model.set('show_root_link', true);
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
502 return new SpecialNavigationView({ model: model });
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
503 }
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
504 });
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
505
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
506 var SpecialPagesView = exports.SpecialPagesView = SpecialMasterPageView.extend({
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
507 defaultTemplateSource: tplSpecialPages
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
508 });
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
509
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
510 var SpecialChangesView = exports.SpecialChangesView = SpecialMasterPageView.extend({
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
511 defaultTemplateSource: tplSpecialChanges,
19
884eb6c8edf0 Added "wiki history" special page:
Ludovic Chabant <ludovic@chabant.com>
parents: 17
diff changeset
512 _onModelChange: function() {
884eb6c8edf0 Added "wiki history" special page:
Ludovic Chabant <ludovic@chabant.com>
parents: 17
diff changeset
513 var history = this.model.get('history');
34
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
514 if (history) {
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
515 for (var i = 0; i < history.length; ++i) {
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
516 var rev = history[i];
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
517 rev.changes = [];
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
518 for (var j = 0; j < rev.pages.length; ++j) {
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
519 var page = rev.pages[j];
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
520 switch (page.action) {
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
521 case 'edit':
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
522 rev.changes.push({ is_edit: true, url: page.url });
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
523 break;
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
524 case 'add':
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
525 rev.changes.push({ is_add: true, url: page.url });
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
526 break;
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
527 case 'delete':
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
528 rev.changes.push({ is_delete: true, url: page.url });
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
529 break;
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
530 }
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
531 rev.pages[j] = page;
19
884eb6c8edf0 Added "wiki history" special page:
Ludovic Chabant <ludovic@chabant.com>
parents: 17
diff changeset
532 }
34
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
533 history[i] = rev;
19
884eb6c8edf0 Added "wiki history" special page:
Ludovic Chabant <ludovic@chabant.com>
parents: 17
diff changeset
534 }
34
bbc7f7cca5cf Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents: 22
diff changeset
535 this.model.set('history', history);
19
884eb6c8edf0 Added "wiki history" special page:
Ludovic Chabant <ludovic@chabant.com>
parents: 17
diff changeset
536 }
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
537 SpecialChangesView.__super__._onModelChange.apply(this, arguments);
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
538 }
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
539 });
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
540
48
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
541 var SpecialOrphansView = exports.SpecialOrphansView = SpecialMasterPageView.extend({
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
542 defaultTemplateSource: tplSpecialOrphans
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
543 });
9658edea3121 Now using RequireJS' "text" extension to load all HTML templates.
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
544
17
8a4e0fe2c689 Added "Special Pages" section:
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
545 return exports;
15
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
546 });
238299b93f4c Made all Javascript code use RequireJS.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
547