diff --git a/content/contents.lr b/content/contents.lr index 0eb3a6c426f..d440d93e491 100644 --- a/content/contents.lr +++ b/content/contents.lr @@ -56,81 +56,82 @@ is_block: body: #### text-block #### -title: ### One codebase. Multiple apps. +title: One codebase. Multiple apps. ---- text: BeeWare allows you to write your app in Python and release it on multiple platforms. No need to rewrite the app in multiple programming languages. It means **no issues** with build tools, environments, compatibility, etc. ----- -image: ----- -image_alignment: right + #### text-block #### -title: ### Python native tools... +title: Python native tools... ---- text: Python has proven itself as a highly capable language - approachable for newcomers, but powerful in the hands of experts. Why shouldn't you be able to **use Python everywhere** that you need to tell a computer to do something? And shouldn't your tools **exploit all the capabilities of Python** as a language, not just the bits that map nicely to a C binding? ---- image: python.png ---- image_alignment: right + #### text-block #### -title: ### ...on mobile & desktop... +title: ...on mobile & desktop... ---- text: Modern computing doesn't happen in an 80x25 console window. It happens on **phones, tablets, and desktop machines** with rich user interfaces. Shouldn't you be able to use Python in all those locations, and **exploit the unique capabilities of those platforms**? ---- image: cross-platform.png ---- image_alignment: left + #### text-block #### -title: ### ...behaving natively. +title: ...behaving natively. ---- text: End users shouldn't have to care what language their tools are written in. And that starts with looking and behaving **like completely native tools**. Native appearance, native behavior, delivered in the way a native app is delivered. Why shouldn't your Python tools fit in just as well as a native tool? ---- image: native.png ---- image_alignment: right + #### text-block #### -title: ## This is BeeWare. +title: This is BeeWare. ---- text: This is what BeeWare provides. Tools to help you write Python code with a rich, **native user interface**; and the libraries and support code necessary to get that code running on **iOS, Android, macOS, Linux, Windows, tvOS, and more**. ---- image: brutus-97.png ---- image_alignment: left + #### text-block #### -title: ### Open source +title: Open source ---- text: The Open Source development process has proven itself to be the most reliable way to develop robust and reliable software. That's why the entire BeeWare suite of tools are BSD licensed, and **available for all to use and modify**. ---- image: opensource.png ---- image_alignment: right + #### text-block #### -title: ### All contributions welcome +title: All contributions welcome ---- text: But it's not just about code. A successful software project requires documentation, design skills, feedback and bug reports. The BeeWare community acknowledges that **all contributions are important** — not just the ones that come as a pull request on GitHub. ---- image: labhr.png ---- image_alignment: left + #### text-block #### -title: ### From diversity comes strength +title: From diversity comes strength ---- text: A diverse community is a strong community. This means accepting people of all levels of experience, from all backgrounds, of all races, creeds, orientations and expressions. The BeeWare project is committed to **developing and maintaining a diverse, welcoming community**. We have an **open offer to mentor anyone** who wants to get involved as a contributor, backed up by a [Code of Conduct](community/behavior/code-of-conduct/) that is rigorously enforced. ---- image: diversity.png ---- image_alignment: right + #### text-block #### title: Contribute! ---- text: If all this sounds interesting, why not take a look at the [BeeWare projects](/project) and see how you can use them when developing Python applications? Or, if you'd like to contribute, and you've never contributed to open source before, start with our [guide for first time contributors](/contributing/first-time/). If you feel ready to dive straight in, check out the [project pages](/project/) or our guide on [what you can do to help](/contributing/). ----- -image: ----- -image_alignment: + #### button-block #### label: - Contribute to BeeWare +Contribute to BeeWare ---- link: /contributing/ ---- @@ -141,14 +142,12 @@ type: primary size: lg ---- is_block: yes + #### text-block #### -title: ### Stay in touch! +title: Stay in touch! ---- text: Follow [@beeware@fosstodon.org](https://fosstodon.org/@beeware) on Mastodon, or [join the BeeWare enthusiasts mailing list](/community/keep-informed/) for updates, hints, tips, and announcements related to the project. ----- -image: ----- -image_alignment: + #### button-block #### label: Keep in touch! ---- @@ -161,15 +160,12 @@ type: success size: lg ---- is_block: yes + #### text-block #### -title: ### Members ----- -text: BeeWare is supported by users like you! Every little bit helps: [click here to contribute](/membership/). ----- -image: +title: Members ---- -image_alignment: +text: BeeWare is supported by users like you! Every little bit helps: [click here to contribute](/membership/). --- gutter_top: --- -gutter_bottom: ### [... and many more](/project/) +gutter_bottom: [... and many more](/project/) diff --git a/databags/translate.ini b/databags/translate.ini index ead76f03d6f..3fcabeeef15 100644 --- a/databags/translate.ini +++ b/databags/translate.ini @@ -2,10 +2,7 @@ ; Breadcrumbs home = Home edit_on_github = Edit on GitHub -create_on_github = Translate on GitHub -translation_out_of_date = This translation of the original content is out of date! -see_original_content = See what changed in the original content -update_translation = Update translation on Github +edit_translation = Translate on Weblate ; Footer sitemap = Sitemap diff --git a/flowblocks/text-block.ini b/flowblocks/text-block.ini index 77a1ae7c851..35d90deffca 100644 --- a/flowblocks/text-block.ini +++ b/flowblocks/text-block.ini @@ -4,8 +4,7 @@ button_label = Rich Text [fields.title] label = Title -description = Markdown -type = markdown +type = text translate = True [fields.text] diff --git a/packages/lektor_beeware_plugin/lektor_beeware_plugin.py b/packages/lektor_beeware_plugin/lektor_beeware_plugin.py index 57138367028..eb21b008757 100644 --- a/packages/lektor_beeware_plugin/lektor_beeware_plugin.py +++ b/packages/lektor_beeware_plugin/lektor_beeware_plugin.py @@ -1,205 +1,14 @@ # -*- coding: utf-8 -*- -"""This is a custom local plugin to ad extra functionality to BeeWare site.""" +"""This is a custom local plugin to add extra functionality to BeeWare site.""" -# Standard library imports -from datetime import datetime, date -import os -import subprocess -import sys -from urllib.parse import quote_plus +from datetime import date -# Third party imports from lektor.pluginsystem import Plugin -from lektor.db import Record -from markupsafe import Markup -from pygments import highlight -from pygments import lexers -from pygments.formatters import HtmlFormatter -from pygments.styles import get_all_styles - - -PY3 = sys.version_info[0] == 3 class BeeWarePlugin(Plugin): name = 'BeeWare Custom Lektor Plugin' description = 'This is a custom local plugin to add extra functionality.' - DATE_FORMAT = "%Y-%m-%d %H:%M:%S" - EXECUTE_CACHE = {} - def on_setup_env(self, **extra): - - # --- Helper methods - # --------------------------------------------------------------------- - def execute(cmd): - """Execute a cmd (list) and return the stdout and stderr.""" - joined_cmd = ' '.join(cmd) - if joined_cmd in self.EXECUTE_CACHE: - stdout, stderr = self.EXECUTE_CACHE[joined_cmd] - else: - stdout, stderr = None, None - try: - p = subprocess.Popen(cmd, stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - stdout, stderr = p.communicate() - - if PY3: - if stdout: - stdout = stdout.decode() - if stderr: - stderr = stderr.decode() - - except OSError: - print('\nCommand not found!\n') - print(joined_cmd) - print('\n') - except Exception as e: - print(e) - print('\n') - - self.EXECUTE_CACHE[joined_cmd] = (stdout, stderr) - - return stdout, stderr - - def git_commits(filepath, since): - """Get git commit hashes for `filepath` `since` a given date.""" - cmd = ('git', 'log', '--since="'+since+'"', '--pretty=format:%H', - '--', filepath) - stdout, stderr = execute(cmd) - - commits = [] - if stdout: - commits = [c for c in stdout.split('\n') if c] - - return commits - - def git_diff(filepath, since): - """Get git diff for a given `filepath` `since` a given date.""" - html_diff = None - commits = git_commits(filepath, since) - if commits: - cmd = ('git', '--no-pager', 'diff', commits[-1]+'^', '--', - filepath) - stdout, stderr = execute(cmd) - - if stdout: - html_diff = highlight(stdout, lexers.DiffLexer(), - HtmlFormatter()) - - # print(' '.join(cmd)) - # print(diff) - # print('\n') - - return html_diff - - def git_modified_date(filepath): - """Get last modified date of `filepath` from git.""" - git_mod_date = None - - if os.path.isfile(filepath): - cmd = ('git', 'log', '-1', - '--date=format:"'+self.DATE_FORMAT+'"', - '--format="%ad"', filepath) - stdout, stderr = execute(cmd) - - if stdout: - stdout = stdout.split('\n')[0] - stdout = stdout.replace('"', '') - stdout = stdout.replace("'", '') - - if stdout: - git_mod_date = datetime.strptime(stdout, self.DATE_FORMAT) - - # print(' '.join(cmd)) - # print(git_mod_date) - # print('\n') - - return git_mod_date - - # --- Exposed methods - # --------------------------------------------------------------------- - def get_pygments_css_styles(style='default'): - """Get pygments CSS.""" - class_name = '.highlight' - css = None - if style in get_all_styles(): - cmd = ('pygmentize', '-S', style, '-f', 'html', '-a', - class_name) - stdout, stderr = execute(cmd) - css = ''.format(stdout) - - return css - - def is_alt_outdated(record): - """Check if record alternative is outdated.""" - return _alt_outdated_diff(record, return_diff=False) - - def alt_outdated_diff(record): - """Check if record alternative is outdated and returns the diff.""" - return _alt_outdated_diff(record, return_diff=True) - - def _alt_outdated_diff(record, return_diff=True): - """Check if record alternative is outdated and returns the diff.""" - if not isinstance(record, Record): - raise ValueError('Must provide a `Record` object') - - config = self.env.jinja_env.globals['config'] - site = self.env.jinja_env.globals['site'] - primary_path = site.get(record.path, alt="_primary").contents.filename - primary_path = primary_path.replace( - '+{0}.lr'.format(config.primary_alternative), '.lr') - try: - alt_path = record.contents.filename - alt_text = '+{0}.lr'.format(config.primary_alternative) - if alt_text in alt_path: - alt_path = alt_path.replace(alt_text, '.lr') - except IOError: - # This means the alt content file does not exist - alt_path = None - - primary_modtime = None - if os.path.isfile(primary_path): - # primary_modtime = os.path.getmtime(primary_path) - primary_modtime = git_modified_date(primary_path) - - alt_modtime = None - if os.path.isfile(alt_path): - # alt_modtime = os.path.getmtime(alt_path) - alt_modtime = git_modified_date(alt_path) - - diff = None - if alt_modtime and primary_modtime > alt_modtime and return_diff: - diff = git_diff(primary_path, - alt_modtime.strftime(self.DATE_FORMAT)) - - if not return_diff: - diff = alt_modtime and primary_modtime > alt_modtime - - return diff - - def urlencode_limit(string, limit=6000): - """Encodes url for uri but if over limit returns None.""" - if type(string) == 'Markup': - string = string.unescape() - - if len(string) <= limit: - string = string.encode('utf8') - string = quote_plus(string) - string = Markup(string) - else: - string = None - - return string - - # Add additional methods to the environment globlas - self.env.jinja_env.globals.update(is_alt_outdated=is_alt_outdated) - self.env.jinja_env.globals.update(alt_outdated_diff=alt_outdated_diff) - self.env.jinja_env.globals.update(urlencode_limit=urlencode_limit) - self.env.jinja_env.globals.update( - get_pygments_css_styles=get_pygments_css_styles) - self.env.jinja_env.globals['today'] = date.today() - - # Add some python builtins that are good for debugging - self.env.jinja_env.globals.update(dir=dir) diff --git a/packages/lektor_beeware_plugin/pyproject.toml b/packages/lektor_beeware_plugin/pyproject.toml index 2a097789201..1ba263af6e0 100644 --- a/packages/lektor_beeware_plugin/pyproject.toml +++ b/packages/lektor_beeware_plugin/pyproject.toml @@ -29,7 +29,7 @@ keywords = [ "plugin", "static-site", ] -dependencies = ["Lektor", "MarkupSafe", "Pygments"] +dependencies = ["Lektor"] [project.urls] Source = "https://github.com/beeware/beeware.github.io/tree/lektor/packages/lektor_beeware_plugin" diff --git a/templates/blocks/text-block.html b/templates/blocks/text-block.html index 8c6352f9841..5221821fb9f 100644 --- a/templates/blocks/text-block.html +++ b/templates/blocks/text-block.html @@ -1,2 +1,3 @@ {% if this.title %}
{% if this.image %}{% endif %} {{ this.text }}
{% if this.image %}{% endif %}
{{ this.description }}
+ {{ this.description }}