Mercurial > wikked
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 |
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 | 78 dispose: function() { |
79 this.remove(); | |
80 this.unbind(); | |
81 if (this.model) { | |
82 this.model.unbind(); | |
83 } | |
84 if (this._onDispose) { | |
85 this._onDispose(); | |
86 } | |
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 | 254 // If we've already rendered the content, and we need to display |
255 // a warning, do so now. | |
256 if (this.model.get('content')) { | |
257 this._showPageStateWarning(); | |
258 } | |
34
bbc7f7cca5cf
Use error pages when models return an error.
Ludovic Chabant <ludovic@chabant.com>
parents:
22
diff
changeset
|
259 }, |
69 | 260 _showPageStateWarning: function() { |
261 if (this._pageState === undefined) | |
262 return; | |
263 | |
264 var state = this._pageState.get('state'); | |
265 if (state == 'new' || state == 'modified') { | |
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 | 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 | 274 return false; |
275 }); | |
276 } | |
277 }, | |
62
a73a3c0b6d4a
Fixed some bugs with the page state warning.
Ludovic Chabant <ludovic@chabant.com>
parents:
60
diff
changeset
|
278 _checkPageState: function() { |
69 | 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 | 283 $view._pageState = model; |
284 // If we've already rendered the content, display | |
285 // the warning, if any, now. | |
286 if ($view.model && $view.model.get('content')) { | |
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 | 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 | 465 }, |
466 events: { | |
467 "submit #page-revert": "_submitPageRevert" | |
468 }, | |
469 _submitPageRevert: function(e) { | |
470 e.preventDefault(); | |
471 this.model.doRevert(e.currentTarget); | |
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 |