Added routing system to open a section in help

This commit is contained in:
Augier 2015-02-09 23:48:31 +01:00 committed by Steffen van Bergerem
parent f980eba0a3
commit aa62266376
4 changed files with 67 additions and 11 deletions

View file

@ -2,6 +2,8 @@
app.Router = Backbone.Router.extend({
routes: {
"help/:topic": "help",
"help/": "help",
"help": "help",
"contacts": "contacts",
"conversations": "conversations",
@ -36,10 +38,10 @@ app.Router = Backbone.Router.extend({
this.route(/^bookmarklet(?:\?(.*))?/, "bookmarklet");
},
help: function() {
help: function(topic) {
app.help = new app.views.Help();
$("#help").prepend(app.help.el);
app.help.render();
app.help.render(topic);
},
contacts: function() {

View file

@ -9,7 +9,7 @@ app.views.Help = app.views.StaticContentView.extend({
"click .faq-link-sharing" : "sharing",
"click .faq-link-posts-and-posting" : "postsAndPosting",
"click .faq-link-tags": "tags",
"click .faq-link-keyboard-shortcuts" : "keyboardShortcuts",
"click .faq-link-keyboard-shortcuts" : "keyboardShortcuts"
},
initialize : function() {
@ -19,19 +19,19 @@ app.views.Help = app.views.StaticContentView.extend({
get_support_a_tutorials: { tutorials: this.linkHtml("https://diasporafoundation.org/tutorials", Diaspora.I18n.t( 'tutorials' ))},
get_support_a_wiki: { link: this.linkHtml("https://wiki.diasporafoundation.org/Special:Search", Diaspora.I18n.t( 'wiki' ))},
get_support_a_irc: { irc: this.linkHtml("https://wiki.diasporafoundation.org/How_We_Communicate#IRC", Diaspora.I18n.t( 'irc' ))},
get_support_a_hashtag: { question: this.linkHtml("/tags/question", "#question")},
get_support_a_hashtag: { question: this.linkHtml("/tags/question", "#question")}
};
this.POSTS_AND_POSTING_SUBS = {
format_text_a: {
markdown: this.linkHtml("http://diasporafoundation.org/formatting", Diaspora.I18n.t( 'markdown' )),
here: this.linkHtml("http://daringfireball.net/projects/markdown/syntax", Diaspora.I18n.t( 'here' )),
here: this.linkHtml("http://daringfireball.net/projects/markdown/syntax", Diaspora.I18n.t( 'here' ))
}
};
this.TAGS_SUBS = {
filter_tags_a: {
third_party_tools: this.linkHtml("https://wiki.diasporafoundation.org/Tools_to_use_with_Diaspora", Diaspora.I18n.t( 'third_party_tools' )),
third_party_tools: this.linkHtml("https://wiki.diasporafoundation.org/Tools_to_use_with_Diaspora", Diaspora.I18n.t( 'third_party_tools' ))
}
};
@ -51,19 +51,22 @@ app.views.Help = app.views.StaticContentView.extend({
title_sharing: Diaspora.I18n.t( 'sharing.title' ),
title_tags: Diaspora.I18n.t( 'tags.title' ),
title_keyboard_shortcuts: Diaspora.I18n.t( 'keyboard_shortcuts.title' ),
title_miscellaneous: Diaspora.I18n.t( 'miscellaneous.title' ),
title_miscellaneous: Diaspora.I18n.t( 'miscellaneous.title' )
};
return this;
},
render: function(){
render: function(topic){
var section = app.views.Base.prototype.render.apply(this, arguments);
// After render actions
this.resetMenu(true);
this.renderStaticSection("getting_help", "faq_getting_help", this.GETTING_HELP_SUBS);
var elTarget = this.findTopic(topic);
if(elTarget != null){ $(elTarget).click(); }
return section;
},
@ -107,8 +110,12 @@ app.views.Help = app.views.StaticContentView.extend({
menuClicked: function(e) {
this.resetMenu();
$(e.target).hide();
$(e.target).next().show();
var data = $(e.target).data('section');
app.router.navigate('help/' + data);
},
clearItems: function() {
@ -133,6 +140,18 @@ app.views.Help = app.views.StaticContentView.extend({
this.$('#faq').append(help_section.render().el);
},
/**
* Returns The section title whose data-section property equals the given query
* Returns null if nothing found
* @param dataValue Value for the data-section to find
* @returns {jQuery}
*/
findTopic: function(dataValue){
var res = this.$('a[data-section=' + dataValue + ']');
if(res.length == 0){ return null; }
return res;
},
gettingHelp: function(e) {
this.renderStaticSection("getting_help", "faq_getting_help", this.GETTING_HELP_SUBS);
this.menuClicked(e);
@ -170,6 +189,6 @@ app.views.Help = app.views.StaticContentView.extend({
linkHtml: function(url, text) {
return "<a href=\"" + url + "\" target=\"_blank\">" + text + "</a>";
},
}
});
// @license-end
// @license-end

View file

@ -223,6 +223,7 @@ Diaspora::Application.routes.draw do
# Help
get 'help' => 'help#faq', :as => 'help'
get 'help/:topic' => 'help#faq'
#Protocol Url
get 'protocol' => redirect("http://wiki.diasporafoundation.org/Federation_Protocol_Overview")

View file

@ -86,5 +86,39 @@ describe("app.views.Help", function(){
this.view.$el.find('a[data-section=miscellaneous]').trigger('click');
expect(this.view.$el.find('#faq').children().first().hasClass('faq_question_miscellaneous')).toBeTruthy();
});
it('should not find any topic', function(){
expect(this.view.findTopic('you_shall_not_pass')).toBeNull();
});
it('should find the miscellaneous topic', function(){
var topic = this.view.$el.find('a[data-section=miscellaneous]');
expect(this.view.findTopic('miscellaneous').html()).toBe(topic.html());
});
it('should find the keyboard_shortcuts topic', function(){
var topic = this.view.$el.find('a[data-section=keyboard_shortcuts]');
expect(this.view.findTopic('keyboard_shortcuts').html()).toBe(topic.html());
});
it('should find the miscellaneous topic', function(){
var topic = this.view.$el.find('a[data-section=tags]');
expect(this.view.findTopic('tags').html()).toBe(topic.html());
});
it('should rewrite route to help/tags', function(){
this.view.$el.find('a[data-section=tags]').trigger('click');
expect(window.location.href.toString().endsWith("help/tags")).toBeTruthy();
});
it('should rewrite route to help/keyboard_shortcuts', function(){
this.view.$el.find('a[data-section=keyboard_shortcuts]').trigger('click');
expect(window.location.href.toString().endsWith("help/keyboard_shortcuts")).toBeTruthy();
});
it('should rewrite route to help/sharing', function(){
this.view.$el.find('a[data-section=sharing]').trigger('click');
expect(window.location.href.toString().endsWith("help/sharing")).toBeTruthy();
});
});
});
});