From 7c8652fbf2433118fb298301a2547b6b6298287d Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 22 Nov 2016 10:55:32 +0530 Subject: [PATCH] [docs] added some style and some fixes (#2352) --- frappe/config/docs.py | 10 ++++-- frappe/docs/assets/img/frappe-bird-white.png | Bin 0 -> 2991 bytes .../paypal_settings/paypal_settings.py | 34 +++++++++--------- .../razorpay_settings/razorpay_settings.py | 14 ++++---- frappe/public/css/docs.css | 11 +++++- frappe/public/images/favicon.png | Bin 522 -> 4642 bytes frappe/public/less/docs.less | 18 +++++++--- frappe/templates/autodoc/base_template.html | 2 +- frappe/utils/setup_docs.py | 15 ++++---- 9 files changed, 65 insertions(+), 39 deletions(-) create mode 100644 frappe/docs/assets/img/frappe-bird-white.png diff --git a/frappe/config/docs.py b/frappe/config/docs.py index dd90839762..6ed99b4b01 100644 --- a/frappe/config/docs.py +++ b/frappe/config/docs.py @@ -1,3 +1,6 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals source_link = "https://github.com/frappe/frappe" docs_base_url = "https://frappe.github.io/frappe" @@ -25,7 +28,10 @@ ERP for managing small and medium sized businesses. docs_version = "7.x.x" def get_context(context): + context.brand_html = (' Frappé Framework') context.top_bar_items = [ - {"label": "Developer Tutorials", "url": context.docs_base_url + "/user", "right": 1}, - {"label": "API Documentation", "url": context.docs_base_url + "/current", "right": 1} + {"label": "Tutorials", "url": context.docs_base_url + "/user", "right": 1}, + {"label": "API", "url": context.docs_base_url + "/current", "right": 1}, + {"label": "Forum", "url": 'https://discuss.erpnext.com', "right": 1} ] diff --git a/frappe/docs/assets/img/frappe-bird-white.png b/frappe/docs/assets/img/frappe-bird-white.png new file mode 100644 index 0000000000000000000000000000000000000000..540a1d03983cbc4a6b8fae48290602928028ef4d GIT binary patch literal 2991 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 literal 0 HcmV?d00001 diff --git a/frappe/integrations/doctype/paypal_settings/paypal_settings.py b/frappe/integrations/doctype/paypal_settings/paypal_settings.py index 344cb43826..df6745ae9c 100644 --- a/frappe/integrations/doctype/paypal_settings/paypal_settings.py +++ b/frappe/integrations/doctype/paypal_settings/paypal_settings.py @@ -2,15 +2,6 @@ # Copyright (c) 2015, Frappe Technologies and contributors # For license information, please see license.txt -from __future__ import unicode_literals -import frappe -import json -from frappe import _ -from frappe.utils import get_url, call_hook_method -from urllib import urlencode -from frappe.integration_broker.doctype.integration_service.integration_service import IntegrationService -import urllib - """ # Integrating PayPal @@ -63,9 +54,18 @@ More Details: """ +from __future__ import unicode_literals +import frappe +import json +from frappe import _ +from frappe.utils import get_url, call_hook_method +from urllib import urlencode +from frappe.integration_broker.doctype.integration_service.integration_service import IntegrationService +import urllib + class PayPalSettings(IntegrationService): service_name = "PayPal" - + supported_currencies = ["AUD", "BRL", "CAD", "CZK", "DKK", "EUR", "HKD", "HUF", "ILS", "JPY", "MYR", "MXN", "TWD", "NZD", "NOK", "PHP", "PLN", "GBP", "RUB", "SGD", "SEK", "CHF", "THB", "TRY", "USD"] @@ -79,19 +79,19 @@ class PayPalSettings(IntegrationService): def validate(self): if not self.flags.ignore_mandatory: self.validate_paypal_credentails() - + def on_update(self): pass - + def enable(self): call_hook_method('payment_gateway_enabled', gateway=self.service_name) if not self.flags.ignore_mandatory: self.validate_paypal_credentails() - + def validate_transaction_currency(self, currency): if currency not in self.supported_currencies: frappe.throw(_("Please select another payment method. {0} does not support transactions in currency '{1}'").format(self.service_name, currency)) - + def get_paypal_params_and_url(self): params = { "USER": self.api_username, @@ -124,7 +124,7 @@ class PayPalSettings(IntegrationService): except Exception: frappe.throw(_("Invalid payment gateway credentials")) - + def get_payment_url(self, **kwargs): setattr(self, "use_sandbox", kwargs.get("use_sandbox", 0)) @@ -169,13 +169,13 @@ def get_service_details():

Steps to configure Service

    -
  1. Get PayPal api credentials from link: +
  2. Get PayPal api credentials from link: https://developer.paypal.com/docs/classic/api/apiCredentials/

  3. -
  4. Setup credentials on PayPal settings doctype. +
  5. Setup credentials on PayPal settings doctype. Click on top right corner diff --git a/frappe/integrations/doctype/razorpay_settings/razorpay_settings.py b/frappe/integrations/doctype/razorpay_settings/razorpay_settings.py index 51a843ab6d..d44db1d995 100644 --- a/frappe/integrations/doctype/razorpay_settings/razorpay_settings.py +++ b/frappe/integrations/doctype/razorpay_settings/razorpay_settings.py @@ -2,13 +2,6 @@ # Copyright (c) 2015, Frappe Technologies and contributors # For license information, please see license.txt -from __future__ import unicode_literals -import frappe -from frappe.utils import get_url, call_hook_method -from frappe import _ -import urllib, json -from frappe.integration_broker.doctype.integration_service.integration_service import IntegrationService - """ # Integrating RazorPay @@ -58,6 +51,13 @@ For razorpay payment status is Authorized """ +from __future__ import unicode_literals +import frappe +from frappe.utils import get_url, call_hook_method +from frappe import _ +import urllib, json +from frappe.integration_broker.doctype.integration_service.integration_service import IntegrationService + class RazorpaySettings(IntegrationService): service_name = "Razorpay" supported_currencies = ["INR"] diff --git a/frappe/public/css/docs.css b/frappe/public/css/docs.css index b143e3af85..5819bd6450 100644 --- a/frappe/public/css/docs.css +++ b/frappe/public/css/docs.css @@ -373,13 +373,22 @@ pre { color: #4f4fa4; } .navbar { - max-width: 870px; + background-color: #36414C !important; margin-left: auto; margin-right: auto; } +.navbar .container { + max-width: 870px; +} +.navbar .brand-logo { + width: 30px; + margin-top: -4px; + margin-right: 7px; +} .navbar a { font-size: 16px; font-weight: normal; + color: #fff !important; } .navbar a.navbar-brand { font-weight: bold; diff --git a/frappe/public/images/favicon.png b/frappe/public/images/favicon.png index 62ff240fb26b0a3a244c07ea2739b35d4ada9d2e..d66d3920f84a873a0673b65b78df9d255ece45e0 100644 GIT binary patch literal 4642 zcmb`L=QkS;*#46=h`q~~QllkeZ;F)IqxRlv)u>TL5UVI^l`5h(sTr$g6%o`PMX9|T zqeV;2lwW_(tLG1RUR?Ke?sM*Qt{2y<`;%y>uSre8Mgaf-sI|4!jQ@Gm{}+Vx-|U4u zjr=oUfUzb5P&%> zBnkqp8|$SY(`x)pF>i@&fm>s-X?&EB9X=rJiHsE$>|7(ky5HOsb(^x;8raW5`c5k- z;4nYpO`9LVhqFUF=*&lAKYf%Ka5(yK^=1`)af7~cKx`TCaM8bpXo2s67=VdUYRdly zt1&Au_sPnLV3i;%?_ANcTm0Ujjp2a`1ev*Qq$)2l<7|uqq zRq^Gy5ti%=&-aYO^-u2ihPLk^E#_j$e3t7~QoZa%vRBNU{jI=R79``CzHg4q@cYj_ zz^a*DJd>>K2r6tuW!-mvkdn%OaI?1;#8$?~V2Cq+bBa9*tc$)$1DTS9v7ey7D9`Rw z02FSXKi)BLUYU@QR2HyWfBw2-Osc?KV*35&#E9DiB3RW1Qr%rA0RY}RXmuO=V6`&L z26tV~XfxlO≥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 literal 522 zcmV+l0`>igP){)`lS3 zBAN>#{{)9}4p(Ui$C?xxsv&|<0*iDgXfR*%wUo!ZmR!o0=ZWX(5d4gHzq{|}?ta4& z0QiF;w@t8s5by#Rg|$=&6ww4f*x%Vml0O)7E1bmvI4utTNrAXB$83THB!mNilaqGD zzOP*hMDQ|L|K`1LFp1#+0OR@Qk}U&P}*oxVwKut^R49K%?2j%WJyhTqajE6#gfHa;1*5 z=(W*hU6I~|LxI5&;G6>hgb;EB;)xXA%T+w2o=p{?!{ZZkk7SU+=>aPR$`bQSj6hLY z=|qSyLF5xa|L?2$6u??Owzs|h#JDmq1Wxfk&rv2qm_}NQyIY&7FM||)rB~#Z;Q#;t M07*qoM6N<$f=12Uv;Y7A diff --git a/frappe/public/less/docs.less b/frappe/public/less/docs.less index a303f2b0f7..eef77ce552 100644 --- a/frappe/public/less/docs.less +++ b/frappe/public/less/docs.less @@ -143,8 +143,8 @@ pre { } .navbar { - //background-color: @navbar-bg !important; - //background-color: @text-color !important; + // background-color: @navbar-bg !important; + background-color: @text-color !important; // border-bottom: 3px solid @border-color !important; // position: absolute; // top:0; @@ -153,14 +153,24 @@ pre { // max-width:870px; // margin:0 auto; - max-width: 870px; margin-left: auto; margin-right: auto; + + .container { + max-width: 870px; + } + + .brand-logo { + width: 30px; + margin-top: -4px; + margin-right: 7px; + } } + .navbar a { font-size: 16px; font-weight: normal; - //color: #fff !important; + color: #fff !important; &.navbar-brand{ font-weight: bold; } diff --git a/frappe/templates/autodoc/base_template.html b/frappe/templates/autodoc/base_template.html index c04161dea6..1f39b13aa9 100644 --- a/frappe/templates/autodoc/base_template.html +++ b/frappe/templates/autodoc/base_template.html @@ -84,7 +84,7 @@ Forum
  6. - + Frappe Apps
  7. diff --git a/frappe/utils/setup_docs.py b/frappe/utils/setup_docs.py index 3992d30ea8..23b3a483fd 100644 --- a/frappe/utils/setup_docs.py +++ b/frappe/utils/setup_docs.py @@ -5,6 +5,7 @@ Call from command line: bench setup-docs app path """ +from __future__ import unicode_literals import os, json, frappe, shutil, re from frappe.website.context import get_context @@ -38,6 +39,7 @@ class setup_docs(object): "icon": self.hooks.get("app_icon")[0], "email": self.hooks.get("app_email")[0], "headline": self.docs_config.headline, + "brand_html": getattr(self.docs_config, 'brand_html', None), "sub_heading": self.docs_config.sub_heading, "source_link": self.docs_config.source_link, "hide_install": getattr(self.docs_config, "hide_install", False), @@ -316,7 +318,8 @@ class setup_docs(object): target_filename = os.path.join(self.target, target_path_fragment.strip('/')) - context.brand_html = context.top_bar_items = context.favicon = None + context.brand_html = context.app.brand_html + context.top_bar_items = context.favicon = None self.docs_config.get_context(context) @@ -341,9 +344,6 @@ class setup_docs(object): if pages[parent_route]: context.parents = [pages[parent_route]] - if not context.favicon: - context.favicon = "/assets/img/favicon.ico" - context.only_static = True context.base_template_path = "templates/autodoc/base_template.html" @@ -413,6 +413,7 @@ class setup_docs(object): # always overwrite octicons.css to fix the path "css/octicons/octicons.css": "css/octicons/octicons.css", "images/frappe-bird-grey.svg": "img/frappe-bird-grey.svg", + "images/favicon.png": "img/favicon.png", "images/background.png": "img/background.png", "images/smiley.png": "img/smiley.png", "images/up.png": "img/up.png" @@ -435,13 +436,13 @@ class setup_docs(object): for path in files: with open(path, "r") as css_file: - text = css_file.read() + text = unicode(css_file.read(), 'utf-8') with open(path, "w") as css_file: if "docs.css" in path: css_file.write(text.replace("/assets/img/", - self.docs_base_url + '/assets/img/')) + self.docs_base_url + '/assets/img/').encode('utf-8')) else: - css_file.write(text.replace("/assets/frappe/", self.docs_base_url + '/assets/')) + css_file.write(text.replace("/assets/frappe/", self.docs_base_url + '/assets/').encode('utf-8')) edit_link = '''