From b2ee616bb41d9b2390330e13b7c559b05999d06a Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 25 May 2015 18:29:39 +0530 Subject: [PATCH] [help] helpers for youtube videos added in list, form sidebar, modules --- frappe/build.py | 4 +-- frappe/core/doctype/user/user_list.js | 2 ++ .../page/data_import_tool/data_import_tool.js | 3 ++ frappe/desk/moduleview.py | 3 +- .../email_account/email_account_list.js | 2 ++ frappe/public/build.json | 1 + .../public/js/frappe/form/form_sidebar.html | 3 ++ .../public/js/frappe/list/list_sidebar.html | 3 ++ frappe/public/js/frappe/misc/help.js | 31 +++++++++++++++++++ frappe/public/js/frappe/misc/user.js | 2 +- frappe/public/js/frappe/ui/page.js | 7 +++++ frappe/public/js/frappe/views/container.js | 2 ++ .../js/frappe/views/module/moduleview.js | 8 ++++- frappe/public/js/legacy/form.js | 7 ++--- frappe/public/js/lib/microtemplate.js | 1 + .../doctype/workflow/workflow_list.js | 2 ++ 16 files changed, 71 insertions(+), 10 deletions(-) create mode 100644 frappe/public/js/frappe/misc/help.js diff --git a/frappe/build.py b/frappe/build.py index 0d27d75f53..42136f59fa 100644 --- a/frappe/build.py +++ b/frappe/build.py @@ -153,13 +153,13 @@ def pack(target, sources, no_compress, verbose): def html_to_js_template(path, content): # remove whitespace to a single space - content = re.sub("\s+", " ", content).replace("'", "\'") + content = re.sub("\s+", " ", content) # strip comments content = re.sub("()", "", content) return """frappe.templates["{key}"] = '{content}';\n""".format(\ - key=path.rsplit("/", 1)[-1][:-5], content=content) + key=path.rsplit("/", 1)[-1][:-5], content=content.replace("'", "\'")) def files_dirty(): for target, sources in get_build_maps().iteritems(): diff --git a/frappe/core/doctype/user/user_list.js b/frappe/core/doctype/user/user_list.js index 6256a52b24..227f84ee70 100644 --- a/frappe/core/doctype/user/user_list.js +++ b/frappe/core/doctype/user/user_list.js @@ -15,3 +15,5 @@ frappe.listview_settings['User'] = { } } }; + +frappe.help.youtube_id["User"] = "fnBoRhBrwR4"; diff --git a/frappe/core/page/data_import_tool/data_import_tool.js b/frappe/core/page/data_import_tool/data_import_tool.js index 142299d6e6..8810d0a5d6 100644 --- a/frappe/core/page/data_import_tool/data_import_tool.js +++ b/frappe/core/page/data_import_tool/data_import_tool.js @@ -7,6 +7,9 @@ frappe.DataImportTool = Class.extend({ title: __("Data Import Tool"), single_column: true }); + this.page.add_inner_button(__("Help"), function() { + frappe.help.show_video("6wiriRKPhmg"); + }); this.make(); this.make_upload(); }, diff --git a/frappe/desk/moduleview.py b/frappe/desk/moduleview.py index 97785b305d..7c6e83c164 100644 --- a/frappe/desk/moduleview.py +++ b/frappe/desk/moduleview.py @@ -137,7 +137,8 @@ def apply_permissions(data): if ((item.type=="doctype" and item.name in user.can_read) or (item.type=="page" and item.name in allowed_pages) - or (item.type=="report" and item.doctype in user.can_get_report)): + or (item.type=="report" and item.doctype in user.can_get_report) + or item.type=="help"): new_items.append(item) diff --git a/frappe/email/doctype/email_account/email_account_list.js b/frappe/email/doctype/email_account/email_account_list.js index 2eb5cbe550..f3bbd99e9b 100644 --- a/frappe/email/doctype/email_account/email_account_list.js +++ b/frappe/email/doctype/email_account/email_account_list.js @@ -19,3 +19,5 @@ frappe.listview_settings["Email Account"] = { } } } + +frappe.help.youtube_id["Email Account"] = "YFYe0DrB95o"; diff --git a/frappe/public/build.json b/frappe/public/build.json index 8da0dd58bd..82849f6a16 100644 --- a/frappe/public/build.json +++ b/frappe/public/build.json @@ -95,6 +95,7 @@ "public/js/frappe/misc/tools.js", "public/js/frappe/misc/datetime.js", "public/js/frappe/misc/number_format.js", + "public/js/frappe/misc/help.js", "public/js/frappe/ui/upload.html", "public/js/frappe/upload.js", diff --git a/frappe/public/js/frappe/form/form_sidebar.html b/frappe/public/js/frappe/form/form_sidebar.html index b77400f0fb..5a4a02c5d0 100644 --- a/frappe/public/js/frappe/form/form_sidebar.html +++ b/frappe/public/js/frappe/form/form_sidebar.html @@ -9,6 +9,9 @@ 0 + {% if(frappe.help.has_help(doctype)) { %} +
  • {{ __("Help") }}
  • + {% } %} diff --git a/frappe/public/js/frappe/misc/help.js b/frappe/public/js/frappe/misc/help.js new file mode 100644 index 0000000000..12df8ba674 --- /dev/null +++ b/frappe/public/js/frappe/misc/help.js @@ -0,0 +1,31 @@ +// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors +// MIT License. See license.txt + +frappe.provide("frappe.help"); + +frappe.help.youtube_id = {}; + +frappe.help.has_help = function(doctype) { + return frappe.help.youtube_id[doctype]; +} + +frappe.help.show_link = function() { + +} + +frappe.help.show = function(doctype) { + if(frappe.help.youtube_id[doctype]) { + frappe.help.show_video(frappe.help.youtube_id[doctype]); + } +} + +frappe.help.show_video = function(youtube_id, title) { + frappe.msgprint('', title || __("Help")); +} + +$("body").on("click", "a.help-link", function() { + var doctype = $(this).attr("data-doctype"); + doctype && frappe.help.show(doctype); +}); diff --git a/frappe/public/js/frappe/misc/user.js b/frappe/public/js/frappe/misc/user.js index 641b8296e5..f9d9d66f7f 100644 --- a/frappe/public/js/frappe/misc/user.js +++ b/frappe/public/js/frappe/misc/user.js @@ -132,7 +132,7 @@ $.extend(frappe.user, { var ret = null; switch(type) { case "module": - if(frappe.boot.user.allow_modules.indexOf(m)!=-1) + if(frappe.boot.user.allow_modules.indexOf(m)!=-1 || frappe.modules[m].is_help) ret = m; break; case "page": diff --git a/frappe/public/js/frappe/ui/page.js b/frappe/public/js/frappe/ui/page.js index 1df246f0ff..1d5ba89247 100644 --- a/frappe/public/js/frappe/ui/page.js +++ b/frappe/public/js/frappe/ui/page.js @@ -85,7 +85,9 @@ frappe.ui.Page = Class.extend({ this.actions_btn_group = this.page_actions.find(".actions-btn-group"); this.page_form = $('
    ').prependTo(this.main); + this.inner_toolbar = $('
    ').prependTo(this.main); this.icon_group = this.page_actions.find(".page-icon-group"); + }, set_indicator: function(label, color) { @@ -225,6 +227,11 @@ frappe.ui.Page = Class.extend({ return $('
  • ').appendTo(this.menu); }, + add_inner_button: function(label, action) { + return $('