merge bootstrap-4

This commit is contained in:
Rushabh Mehta
2018-06-06 11:51:46 +05:30
128 changed files with 2295 additions and 6403 deletions

View File

@@ -69,12 +69,12 @@ def get_list_context(context):
context.no_breadcrumbs = True context.no_breadcrumbs = True
context.order_by = 'creation desc' context.order_by = 'creation desc'
context.introduction = ''' context.introduction = '''
<div style="margin-bottom: 20px;"> <div class="mb-4" >
<a href="new-bounty" class="btn btn-primary"> <a href="new-bounty" class="btn btn-primary">
Start a new bounty</a> Start a new bounty</a>
</div>''' </div>'''
context.list_footer = ''' context.list_footer = '''
<p><a class='text-muted small' <p><a class='text-muted'
href="/bounties-faq">Bounty FAQ</a></p> href="/bounties-faq">Bounty FAQ</a></p>
''' '''
context.fmt_money = fmt_money context.fmt_money = fmt_money

View File

@@ -1,11 +1,12 @@
{% if doc.published %} {% if doc.published %}
<div style="margin-bottom: 30px; max-width: 600px" class="with-border clickable"> <div class="col-xs-12 col-sm-12 mb-4">
<a href={{ route }}> <div class="card">
<h3>{{ doc.feature_name }}</h3> <div class="card-body">
<h4 class="card-title">{{ doc.feature_name }}</h4>
{% set bounty_progress = ((doc.bounty_collected/doc.goal)*100) %} {% set bounty_progress = ((doc.bounty_collected/doc.goal)*100) %}
{% set comments = (json.loads(doc._comments or '[]'))|len %} {% set comments = (json.loads(doc._comments or '[]'))|len %}
<div class="progress" style="height: 6px;"> <div class="progress" style="height: 6px;">
<div class="progress-bar progress-bar-success" role="progressbar" <div class="progress-bar bg-success" role="progressbar"
aria-valuenow="{{bounty_progress}}" aria-valuemin="0" aria-valuemax="100" style="width: {{bounty_progress}}%"> aria-valuenow="{{bounty_progress}}" aria-valuemin="0" aria-valuemax="100" style="width: {{bounty_progress}}%">
<span class="sr-only">{{ doc.bounty_collected }} of {{ doc.goal }}</span> <span class="sr-only">{{ doc.bounty_collected }} of {{ doc.goal }}</span>
</div> </div>
@@ -27,7 +28,9 @@
</span> </span>
{% endif %} {% endif %}
</p> </p>
<p>{{ html2text(doc.description[:200]) }}{% if doc.description|len > 200 %}...{% endif %}</p> <p class="card-text">{{ html2text(doc.description[:200]) }}{% if doc.description|len > 200 %}...{% endif %}</p>
</a> <a href={{ route }}>Details</a>
</div>
</div>
</div> </div>
{% endif %} {% endif %}

View File

@@ -27,4 +27,3 @@ def get_list_context(context):
context.no_cache = True context.no_cache = True
context.no_breadcrumbs = True context.no_breadcrumbs = True
context.order_by = 'creation desc' context.order_by = 'creation desc'
context.introduction = '<p>Following are the Foundation Fellows</p>'

View File

@@ -1,18 +1,13 @@
{% extends "templates/web.html" %} {% extends "templates/web.html" %}
{% from "foundation/templates/includes/macros.html" import media %}
{% block page_content %} {% block page_content %}
<h1 class="media-heading">{{ title }}</h1> <h1 class="mb-4">{{ title }}</h1>
<section> <section>
<div class="media"> <div class="media">
<div class="media-left" style='min-width: 80px;'> <a href="#">
<a href="#"> <img class="mr-3 media-img"
<img class="media-object" src="{{ image }}">
src="{{ image }}" </a>
style="max-width: 80px; ">
</a>
</div>
<div class="media-body"> <div class="media-body">
{{ introduction }} {{ introduction }}
<table class='table table-bordered small' <table class='table table-bordered small'
@@ -53,11 +48,11 @@
</div> </div>
</div> </div>
</section> </section>
<section> <section class="mt-4">
{{ details }} {{ details }}
</section> </section>
<section> <section>
<p><a class='btn-primary btn' href="mailto:{{ email }}">Contact {{ title }}</a></p> <p><a class='mt-4 btn-primary btn' href="mailto:{{ email }}">Contact {{ title }}</a></p>
</section> </section>
{% endblock %} {% endblock %}

View File

@@ -1,16 +1,15 @@
<div class="media max-width-medium clickable" style="cursor: pointer;" onclick="location.href='{{ doc.route }}'"> <div class="col-xs-6 col-sm-3 p-4" style="cursor: pointer;" onclick="location.href='{{ doc.route }}'">
<div class="media-left"> <div class="card">
<a href="{{ link or "#" }}"> <a href="{{ link or "#" }}">
<img class="media-object" <img class="card-img-top" src="{% if image %}{% if not '/' in image %}/assets/foundation/img/{% endif %}{{ image }}{% else %}/assets/foundation/img/frappe-bird-grey.svg{% endif %}"
src="{% if image %}{% if not '/' in image %}/assets/foundation/img/{% endif %}{{ image }}{% else %}/assets/foundation/img/frappe-bird-grey.svg{% endif %}" style="{% if image and not '/' in image %}opacity: 0.4{% endif %}">
style="{% if image and not '/' in image %}opacity: 0.4{% endif %}"> </a>
</a> <div class="card-body mt-0">
</div> {% if title %}<h5>{{ doc.title }}</h5>{% endif %}
<div class="media-body">
{% if title %}<h4 class="media-heading">{{ doc.title }}</h4>{% endif %}
<p> <p>
<span class='label'>{{ frappe.format_date(doc.creation) }}</span> <span class='label'>{{ frappe.format_date(doc.creation) }}</span><br>
<span class='label'>{{ doc.country }}</span> <span class='label'>{{ doc.country }}</span>
</p> </p>
</div> </div>
</div>
</div> </div>

View File

@@ -1,11 +1,16 @@
<div class='with-border clickable' style='max-width: 600px;'> <div class='mb-4 col-xs-12 col-sm-12'>
<a href="/{{ doc.route }}"> <div class="card">
<h3 style='margin-top: 0px'>{{ doc.event_title }}</h3> <div class="card-body">
<p> <a href="/{{ doc.route }}">
<span class='label'>{{ doc.place }}</span> <h4 class="card-subtitle mb-2">{{ doc.event_title }}</h4>
<span class='label'>{{ frappe.format_date(event_date) }}</span> </a>
</p> <p class="card-text">
<p> <span class='label'>{{ doc.place }}</span>
{{ html2text(doc.details[:200]) }}{% if doc.details|len > 200 %}...{% endif %}</p> <span class='label'>{{ frappe.format_date(date) }}</span>
</a> </p>
<p>
{{ html2text(doc.details) | truncate(200) }}
</p>
</div>
</div>
</div> </div>

View File

@@ -299,7 +299,7 @@
"issingle": 0, "issingle": 0,
"istable": 0, "istable": 0,
"max_attachments": 0, "max_attachments": 0,
"modified": "2017-10-25 05:24:04.271224", "modified": "2018-10-25 05:24:04.271224",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "ERPNext Foundation", "module": "ERPNext Foundation",
"name": "Portal Job", "name": "Portal Job",
@@ -330,7 +330,7 @@
"quick_entry": 1, "quick_entry": 1,
"read_only": 0, "read_only": 0,
"read_only_onload": 0, "read_only_onload": 0,
"route": "/erpnext-jobs", "route": "/erpnext-jobs-1",
"show_name_in_global_search": 0, "show_name_in_global_search": 0,
"sort_field": "modified", "sort_field": "modified",
"sort_order": "DESC", "sort_order": "DESC",

View File

@@ -45,6 +45,6 @@
{% else %} {% else %}
<p><a href="/login">You must register and login to view contact details</a></p> <p><a href="/login">You must register and login to view contact details</a></p>
{% endif %} {% endif %}
<p><br><a href="/my-jobs?new=1" class='btn btn-primary'>Post a New Job</a></p> <p><br><a href="/my-jobs?new=1" class='btn btn-dark btn-sm'>Post a New Job</a></p>
{% endblock %} {% endblock %}

View File

@@ -1,13 +1,10 @@
<div style='margin-bottom: 30px; max-width: 600px;' <div class="mb-4 col-xs-12 col-sm-12">
class='with-border clickable'> <div class="card">
<a href="/{{ doc.route }}"> <div class="card-body">
<h3 style='margin-top: 0px;'>{{ doc.title }}</h3> <a href="/{{ doc.route }}"><h5 class="card-title">{{ doc.title }}</h5></a>
<p> <h6 class="card-subtitle mb-2 text-muted">{{ doc.country }}, {{ frappe.format_date(doc.creation) }} | {{ doc.job_type }}, {{ doc.status }}</h6>
<span class='label'>{{ frappe.format_date(doc.creation) }}</span> <p class="card-text">{{ html2text(doc.description)[:200] }}{% if doc.description|len > 200 %}...{% endif %}</p>
<span class='label'>{{ doc.country }}</span> <!-- <a href="/{{ doc.route }}" class="card-link">Details</a> -->
<span class='label'>{{ doc.job_type }}</span> </div>
<span class='label'>{{ doc.status }}</span> </div>
</p>
<p>{{ html2text(doc.description)[:200] }}{% if doc.description|len > 200 %}...{% endif %}</p>
</a>
</div> </div>

View File

@@ -16,9 +16,9 @@ class ServiceProvider(WebsiteGenerator):
self.route = 'service-providers/' + self.scrub(self.name) self.route = 'service-providers/' + self.scrub(self.name)
def get_context(self, context): def get_context(self, context):
context.parents = [dict(label='All Service Providers in {0}'.format(self.country), context.parents = [dict(label='All Service Providers',
route='service-providers?country={0}'.format(self.country), route='service-providers',
title='All Service Providers in {0}'.format(self.country))] title='All Service Providers')]
if self.member: if self.member:
context.membership_type = frappe.get_value('Member', self.member, 'membership_type') context.membership_type = frappe.get_value('Member', self.member, 'membership_type')
if context.website and not context.website.startswith('http'): if context.website and not context.website.startswith('http'):

View File

@@ -1,54 +1,54 @@
{% extends "templates/web.html" %} {% extends "templates/web.html" %}
{% from "foundation/templates/includes/macros.html" import media %}
{% block page_content %} {% block page_content %}
<h1 class="media-heading">{{ title }}</h1> <h1 class="media-heading">{{ title }}</h1>
{% if membership_type %} {% if membership_type %}
<p><span class=label>{{ membership_type }} Member<span></p> <p><span class='badge badge-light'>{{ membership_type }} Member<span></p>
{% endif %} {% endif %}
<section> <section>
<div class="media"> <div class="media">
<div class="media-left"> <div class="media-left">
<a href="#"> <a href="#">
<img class="media-object" <img class="media-img media-object"
src="{{ image }}"> src="{{ image }}">
</a> </a>
</div> </div>
<div class="media-body"> <div class="media-body">
{{ introduction }} {{ introduction }}
<table class='table table-bordered small'>
<tr>
<td style='width: 38.2%'>Country</td>
<td>{{ country }}</td>
</tr>
<tr>
<td>Address</td>
<td>{{ (address or '').replace('\n', '<br>') }}</td>
</tr>
</tr>
<td>Phone</td>
<td>{{ phone }}</td>
</tr>
</tr>
<td>Email</td>
<td><a href="mailto:{{ email }}" target="_blank">
{{ email }}</a></td>
</tr>
{% if website_url %}
</tr>
<td>Website</td>
<td><a href="{{ website_url }}" target="_blank">{{ website_url }}</a></td>
</tr>
{% endif %}
</table>
</div> </div>
</div> </div>
</section> </section>
<section>
<table class='table table-bordered small'>
<tr>
<td style='width: 38.2%'>Country</td>
<td>{{ country }}</td>
</tr>
<tr>
<td>Address</td>
<td>{{ (address or '').replace('\n', '<br>') }}</td>
</tr>
</tr>
<td>Phone</td>
<td>{{ phone }}</td>
</tr>
</tr>
<td>Email</td>
<td><a href="mailto:{{ email }}" target="_blank">
{{ email }}</a></td>
</tr>
{% if website_url %}
</tr>
<td>Website</td>
<td><a href="{{ website_url }}" target="_blank">{{ website_url }}</a></td>
</tr>
{% endif %}
</table>
</section>
<section> <section>
{{ details }} {{ details }}
</section> </section>
<section> <section>
<p><a class='btn-primary btn' href="mailto:{{ email }}">Contact {{ title }}</a></p> <p><a class='mt-4 btn-dark btn' href="mailto:{{ email }}">Contact {{ title }}</a></p>
</section> </section>
{% endblock %} {% endblock %}

View File

@@ -36,18 +36,34 @@ app_license = "MIT"
# application home page (will override Website Settings) # application home page (will override Website Settings)
home_page = "index" home_page = "index"
template_apps = ['foundation', 'erpnext', 'frappe'] template_apps = ['foundation', 'frappe_theme', 'erpnext', 'frappe']
website_context = { website_context = {
# "navbar_search": 1, # "navbar_search": 1,
"brand_html": "<img class='navbar-icon' src='/assets/foundation/img/erpnext-logo.svg' alt='Oensource ERP Software'/>ERPNext.org", "brand_html": "<img class='mr-2 d-inline-block align-top' width='30px' height='30px' src='/assets/foundation/img/erpnext-logo-white.svg' alt='Oensource ERP Software'/>ERPNext.org",
"top_bar_items": [ "top_bar_items": [
{"label": "Foundation", "child_items":[ {"label": "ERPNext", "child_items":[
{"label": "Chapter", "url": "/chapters","right": 1}, {"label": "User Stories", "url": "/stories"},
{"label": "Foundation Fellow", "url": "/foundation-fellow","right": 1} {"label": "Get ERPNext", "url": "/get-started"},
{"label": "User Manual", "url": "/docs/user"},
{"label": "Free Trial", "url": "https://erpnext.com"},
{"label": "Open Source", "url": "/open-source"},
], "right":1},
{"label": "Community", "child_items":[
{"label": "Forum", "url": "https://discuss.erpnext.com", "target": "target='_blank'"},
{"label": "Conference 2018", "url": "/conf/2018"},
{"label": "Chapters", "url": "/chapter-list"},
{"label": "Fellows", "url": "/fellows"},
{"label": "Contribute", "url": "/contribute"}
], "right":1}, ], "right":1},
{"label": "Services", "child_items":[ {"label": "Services", "child_items":[
{"label": "Service Providers", "url": "/service-providers","right": 1}, {"label": "Service Providers", "url": "/service-providers"},
{"label": "Freelancer Jobs", "url": "/erpnext-jobs", "right": 1}, {"label": "Freelancer Jobs", "url": "/erpnext-jobs"},
{"label": "Become a Service Provider", "url": "/faq"}
], "right":1},
{"label": "Foundation", "child_items":[
{"label": "About", "url": "/about"},
{"label": "Blog", "url": "/blog"},
{"label": "Memberships", "url": "/members"},
], "right":1}, ], "right":1},
], ],
"hide_login": 0, "hide_login": 0,

View File

@@ -5,95 +5,4 @@ from markdown2 import markdown
from frappe.utils import validate_email_add from frappe.utils import validate_email_add
def migrate(): def migrate():
frappe.flags.mute_emails = True pass
source = Database(user='5a0a48926f6a52c6', password='ihUTM3eN3JgVoyGp')
users = source.sql('select * from tabUser', as_dict=1)
for u in users:
if validate_email_add(u.email.strip()) and not frappe.db.exists("User", u.email):
frappe.get_doc(dict(
doctype='User',
name=u.name,
first_name=u.first_name,
last_name=u.last_name,
email=u.email
)).insert(ignore_if_duplicate=True)
auth_details = source.sql('select * from __Auth where name = %s', u.email, as_dict=1)
if auth_details:
auth = auth_details[0]
if not frappe.db.sql("select doctype from __Auth where name = %s", auth.name):
frappe.db.sql("""insert into __Auth
(doctype, name, fieldname, password, salt, encrypted)
values (%s, %s, %s, %s, %s, %s)""",
(auth.doctype, auth.name, auth.fieldname, auth.password, auth.salt, auth.encrypted))
print (u.name)
frappe.db.sql('delete from `tabService Provider`')
partners = source.sql('select * from `tabFrappe Partner`', as_dict=True)
for p in partners:
d = frappe.get_doc(dict(
doctype='Service Provider',
title=p.partner_name,
country=p.country,
image=p.logo,
introduction=p.introduction,
details=markdown(p.description),
address=p.partner_address,
discuss_ids=p.community_members,
website=p.partner_website,
github_id=p.github_id,
owner=p.owner,
creation=p.creation,
email= p.email,
phone=p.phone,
route=p.route,
show_in_website=p.show_in_website
)).insert(ignore_if_duplicate=True, ignore_mandatory=True)
print (d.name)
jobs = source.sql('select * from `tabFrappe Job`', as_dict=True)
frappe.db.sql('delete from `tabPortal Job`')
for j in jobs:
if not frappe.db.exists('Country', j.country):
frappe.get_doc(dict(doctype='Country', country_name=j.country)).insert()
d = frappe.get_doc(dict(
doctype='Portal Job',
title=j.job_title,
company_name=j.company_name,
country=j.country,
status='Open' if j.status=='Assigned' else j.status,
job_type={
'ERP Implementation': 'Implementation',
'Core Development': 'Feature Development',
'Website Development': 'Website Development',
'Other': 'App Development'
}.get(j.job_type, None) or j.job_type,
description= markdown(j.job_detail),
owner=j.owner,
creation=j.creation,
route=j.route,
show_in_website=j.show_in_website
)).insert(ignore_if_duplicate=True, ignore_mandatory=True)
print (d.name)
apps = source.sql('select * from `tabFrappe App`', as_dict=True)
frappe.db.sql('delete from `tabFrappe App`')
for a in apps:
d = frappe.get_doc(dict(
doctype='Frappe App',
app_name = a.app_name,
badge = a.badge,
category = a.category,
route = a.route,
url = a.url,
repository_url = a.repository_url,
published = 1,
description = markdown(a.description),
owner=a.owner,
creation=a.creation,
)).insert(ignore_if_duplicate=True, ignore_mandatory=True)
print (d.name)

View File

@@ -0,0 +1,69 @@
{% extends "templates/web.html" %}
{% block page_content %}
<h1>{{ title }}</h1>
<h3>Details</h3>
<p>{{ introduction }}</p>
{% if meetup_embed_html %}
{{ meetup_embed_html }}
{% endif %}
<h3>List of Members</h3>
{% if members %}
<table class="table table-bordered small" style="max-width: 500px;">
<tr>
<th width="15%" ></th>
<th>Member Details</th>
</tr>
{% set index = [1] %}
{% for user in members %}
{% if user.enabled == 1 %}
<tr>
<td>{{ index|length }}</td>
<td>
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-6">{{ frappe.db.get_value('User', user.user, 'full_name') }}</div>
<div class="col-lg-6 col-md-6 col-sm-6 text-right">
{% if user.website_url %}
<a href="{{ user.website_url }}">{{ user.website_url or '' }}</a>
{% endif %}
</div>
<div class="col-lg-12">
{% if user.introduction %}
{{ user.introduction }}
{% endif %}
</div>
</div>
</td>
</tr>
{% set __ = index.append(1) %}
{% endif %}
{% endfor %}
</table>
{% else %}
<p>No member yet.</p>
{% endif %}
<h3>Chapter Head</h3>
<table class="table table-bordered small" style="max-width: 500px;">
{% set doc = frappe.get_doc('Member',chapter_head) %}
<tr>
<td style='width: 15%'>Name</td>
<td>{{ doc.member_name }}</td>
</tr>
<tr>
<td>Email</td>
<td>{{ frappe.db.get_value('User', doc.email, 'email') or '' }}</td>
</tr>
<tr>
<td>Phone</td>
<td>{{ frappe.db.get_value('User', doc.email, 'phone') or '' }}</td>
</tr>
</table>
<h3>Address</h3>
<p>{{ address }}</p>
<p style="margin: 20px 0 30px;"><a href="/non_profit/join-chapter?name={{ name }}" class='btn btn-primary'>Join this Chapter</a></p>
<p style="margin: 20px 0 30px;"><a href="/non_profit/leave-chapter?name={{ name }}" class=''>Leave this Chapter</a></p>
{% endblock %}

View File

@@ -0,0 +1,27 @@
{% if doc.published %}
<div class="mb-4 col-xs-12 col-sm-12">
<div class="card">
<div class="card-body">
<a class="dark-link" href={{ route }}><h5 class="card-title">{{ doc.name | capitalize }}</h5></a>
<h6 class="card-subtitle mb-2">Chapter Head : {{ frappe.db.get_value('User', chapter_head, 'full_name') }}</h6>
<p class="card-text">
{% if members %}
{% set index = [] %}
{% for user in members %}
{% if user.enabled == 1 %}
{% set __ = index.append(1) %}
{% endif %}
{% endfor %}
Members: {{ index|length }}
{% else %}
Members: 0
{% endif %}
</p>
<p class="card-text">{{ html2text(doc.introduction) | truncate (200) }}</p>
<!-- <a href="/{{ doc.route }}" class="card-link">Details</a> -->
</div>
</div>
</div>
{% endif %}

View File

@@ -3,4 +3,4 @@ import frappe
def execute(): def execute():
frappe.db.sql(''' frappe.db.sql('''
ALTER TABLE `tabFoundation Fellowship` CHANGE `website` `website_url` varchar(140); ALTER TABLE `tabFoundation Fellowship` CHANGE `website` `website_url` varchar(140);
''') ''', ignore_ddl = True)

View File

@@ -2,7 +2,6 @@ import frappe
def execute(): def execute():
for job in frappe.get_all("Portal Job"): for job in frappe.get_all("Portal Job"):
print (job.name)
frappe.db.set_value("Portal Job", job.name, "route", "erpnext-job/{0}".format(job.name.encode('utf-8')), frappe.db.set_value("Portal Job", job.name, "route", "erpnext-job/{0}".format(job.name.encode('utf-8')),
update_modified=False) update_modified=False)

View File

@@ -1,5 +0,0 @@
{
"foundation/css/erpnext-org-theme.css": [
"public/less/erpnext-org-theme.less"
]
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,367 +0,0 @@
/*!
* this reset is a copy of bootstrap's reboot.css which is inturn a fork of normalise*
*
*
* Bootstrap Reboot v4.0.0-beta.3 (https://getbootstrap.com)
* Copyright 2011-2017 The Bootstrap Authors
* Copyright 2011-2017 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
font-family: sans-serif;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
-ms-overflow-style: scrollbar;
-webkit-tap-highlight-color: transparent;
line-height: 1.62;
font-size: 14px;
}
@media screen and (min-width: 1199px) {
html {
font-size: 16px;
}
}
@-ms-viewport {
width: device-width;
}
article,
aside,
dialog,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section {
display: block;
}
body {
margin: 0;
font-weight: 400;
text-align: left;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica", "Arial", "Noto", "Oxygen-Sans", "Noto Sans", "Ubuntu", "Cantarell", sans-serif, "Apple Color Emoji", "Noto Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
color: #36414c;
font-feature-settings: "kern" 1;
font-kerning: normal;
text-rendering: optimizeLegibility;
}
[ tabindex = "-1" ]:focus {
outline: 0;
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin-bottom: 1rem;
margin-top: 0;
font-weight: 500;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[ title ],
abbr[ data-original-title ] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
dfn {
font-style: italic;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
text-decoration: none;
background-color: transparent;
-webkit-text-decoration-skip: objects;
}
a:hover {
text-decoration: underline;
}
a:not([ href ]):not([ tabindex ]) {
text-decoration: none;
}
a:not([ href ]):not([ tabindex ]):focus,
a:not([ href ]):not([ tabindex ]):hover {
text-decoration: none;
}
a:not([ href ]):not([ tabindex ]):focus {
outline: 0;
}
pre,
code,
kbd,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
-ms-overflow-style: scrollbar;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
border-style: none;
max-width: 100%;
border-radius: 0.25em;
}
svg:not(:root) {
overflow: hidden;
}
a,
area,
button,
[ role = "button" ],
input:not([ type = "range" ]),
label,
select,
summary,
textarea {
-ms-touch-action: manipulation;
touch-action: manipulation;
}
table {
border-collapse: collapse;
}
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
color: #6c757d;
text-align: left;
caption-side: bottom;
}
th {
text-align: inherit;
}
label {
display: inline-block;
margin-bottom: 0.5rem;
}
button {
border-radius: 0;
}
button:focus {
outline: none;
outline: 5px auto -webkit-focus-ring-color;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html [type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}
input[type="radio"],
input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
-webkit-appearance: listbox;
}
textarea {
overflow: auto;
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: 1.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}
progress {
vertical-align: baseline;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
outline-offset: -2px;
-webkit-appearance: none;
}
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
summary {
display: list-item;
cursor: pointer;
}
template {
display: none;
}
[hidden] {
display: none !important;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 870 B

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="88px" height="88px" viewBox="0 0 88 88" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 44.1 (41455) - http://www.bohemiancoding.com/sketch -->
<title>erpnext-logo</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="erpnext-logo" transform="translate(-2.000000, -2.000000)">
<g id="g1422-7-2" transform="translate(0.025630, 0.428785)" fill-rule="nonzero" fill="#FFFFFF">
<g id="g1418-4-6" transform="translate(0.268998, 0.867736)">
<g id="g1416-4-9" transform="translate(0.749997, 0.000000)">
<path d="M14.1845844,0.703479866 L75.0387175,0.703479866 C82.3677094,0.703479866 88.2679029,6.60367875 88.2679029,13.9326374 L88.2679029,74.7868158 C88.2679029,82.1157744 82.3677094,88.0159833 75.0387175,88.0159833 L14.1845844,88.0159833 C6.85569246,88.0159833 0.955398949,82.1157744 0.955398949,74.7868158 L0.955398949,13.9326374 C0.955398949,6.60367875 6.85569246,0.703479866 14.1845844,0.703479866 L14.1845844,0.703479866 Z M30.733047,22.5314454 C30.4581979,22.5314454 30.1903602,22.5593642 29.9315447,22.6120586 C29.6727028,22.664753 29.4228833,22.7423871 29.1853403,22.8425371 C29.0665424,22.8926122 28.9510782,22.9484948 28.8385774,23.0094522 C28.6136022,23.1313616 28.4019091,23.2742763 28.2060645,23.4357806 C27.3246845,24.1625567 26.7642969,25.2634324 26.7642969,26.5001955 L26.7642969,26.7420405 L26.7642969,61.977604 L26.7642969,62.2189569 C26.7642969,64.4176445 28.5343595,66.187707 30.733047,66.187707 L58.490009,66.187707 C60.6886965,66.187707 62.4587591,64.4176445 62.4587591,62.2189569 L62.4587591,61.977604 C62.4587591,59.7789165 60.6886965,58.0088539 58.490009,58.0088539 L34.9436263,58.0088539 L34.9436263,48.1236764 L52.4510795,48.1236764 C54.649767,48.1236764 56.4198296,46.3536138 56.4198296,44.1549263 L56.4198296,43.9135998 C56.4198296,41.7149123 54.649767,39.9448497 52.4510795,39.9448497 L34.9436263,39.9448497 L34.9436263,30.7107906 L58.490009,30.7107906 C60.6886965,30.7107906 62.4587591,28.9407281 62.4587591,26.7420405 L62.4587591,26.5001955 C62.4587591,24.3015079 60.6886965,22.5314454 58.490009,22.5314454 L30.733047,22.5314454 Z" id="Combined-Shape"></path>
</g>
</g>
</g>
<g id="g1444-6-7" transform="translate(27.708247, 23.320960)"></g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 718 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 862 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 572 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -1,219 +0,0 @@
/*utilities*/
.align-items-center {
align-items: center;
}
.hide,
.hidden {
display: none;
visibility: hidden;
}
.top-zero {
margin-top: 0;
}
.bottom-zero {
margin-bottom: 0;
}
.top-spacer {
margin-top: 2.5rem;
}
.bottom-spacer {
margin-bottom: 2.5rem;
}
.top-spacer-4 {
margin-top: 4rem;
}
.bottom-spacer-4 {
margin-bottom: 4rem;
}
.gray-bg {
background-color: @light-bg;
}
.dark-bg {
background-color: @text-dark;
}
.text-left {
text-align: left;
}
.text-right {
text-align: right;
}
.text-center {
text-align: center;
}
.text-muted {
color: @text-muted;
}
.text-light {
color: @text-light;
}
.text-white {
color: #fff;
}
.text-normal {
font-size: 1rem;
}
.text-medium {
font-size: 1.5rem;
}
.text-small {
font-size: 0.5rem;
}
.centered {
margin-left: auto;
margin-right: auto;
}
.bold {
font-weight: bold;
}
.list-unstyled {
padding: 0;
li {
list-style: none;
}
}
.list-circle {
list-style: circle;
}
.bullet {
&::before {
content: "\2022";
display: inline-block;
width: 1em;
font-size: 1.25rem;
}
}
.half-width {
max-width: 50%;
}
.border {
border: @border;
}
.border-top {
border-top: @border;
}
.border-top-light {
border-top: @border-light;
}
.saturate {
filter: grayscale(100%);
&:hover {
filter: grayscale(0%);
}
}
/* colors */
.green-bullet {
&::before {
color: @indicator-green;
}
}
/* components */
.grid-of-four,
.grid-of-three {
grid-gap: 2.5rem;
display: grid;
}
.grid-of-four {
grid-template-columns: repeat(1, 1fr);
@media screen and (min-width: @screen-palm) {
grid-template-columns: repeat(2, 1fr);
}
@media screen and (min-width: @screen-xs) {
grid-template-columns: repeat(3, 1fr);
}
@media screen and (min-width: @screen-sm) {
grid-template-columns: repeat(4, 1fr);
}
}
.grid-of-three {
grid-template-columns: repeat(1, 1fr);
@media screen and (min-width: @screen-palm) {
grid-template-columns: repeat(2, 1fr);
}
@media screen and (min-width: @screen-xs) {
grid-template-columns: repeat(3, 1fr);
}
}
.columns {
display: flex;
justify-content: space-between;
flex-direction: column;
@media screen and (min-width: @screen-xs) {
flex-direction: inherit;
}
}
.column {
margin-bottom: 1rem;
@media screen and (min-width: @screen-xs) {
margin: 0;
}
}
.three-column {
max-width: 100%;
@media screen and (min-width: @screen-xs) {
max-width: 33%;
}
}
.copyright {
font-size: 1rem;
@media screen and (min-width: @screen-xs) {
font-size: 0.75rem;
}
}
.flex-wrap {
flex-wrap: wrap;
justify-content: flex-start;
}
.grid-center {
justify-items: center;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,88 +0,0 @@
@import "../../../../frappe/frappe/public/less/variables.less";
.indicator,
.indicator-right {
background: none;
font-size: 12px;
vertical-align: middle;
font-weight: bold;
color: #6c7680;
}
.indicator::before,
.indicator-right::after {
content: "";
display: inline-block;
height: 8px;
width: 8px;
border-radius: 8px;
}
.indicator::before {
margin: 0 4px 0 0;
}
.indicator-right::after {
margin: 0 0 0 4px;
}
.indicator.grey::before,
.indicator-right.grey::after {
background: @btn-bg;
}
.indicator.blue::before,
.indicator-right.blue::after {
background: @indicator-blue;
}
.indicator.red::before,
.indicator-right.red::after {
background: @indicator-red;
}
.indicator.green::before,
.indicator-right.green::after {
background: @indicator-green;
}
.indicator.orange::before,
.indicator-right.orange::after {
background: @indicator-orange;
}
.indicator.purple::before,
.indicator-right.purple::after {
background: @indicator-purple;
}
.indicator.darkgrey::before,
.indicator-right.darkgrey::after {
background: @indicator-darkgrey;
}
.indicator.black::before,
.indicator-right.black::after {
background: @text-color;
}
.indicator.yellow::before,
.indicator-right.yellow::after {
background: @indicator-yellow;
}
.indicator.light-blue::before,
.indicator-right.light-blue::after {
background: @indicator-light-blue;
}
.indicator.lightblue::before,
.indicator-right.lightblue::after {
background: @indicator-light-blue;
}
.modal-header .indicator {
float: left;
margin-top: 7.5px;
margin-right: 3px;
}

View File

@@ -1,13 +0,0 @@
@import "../../../../frappe/frappe/public/less/variables.less";
@brand-primary: #7575ff;
@screen-sm-min: 768px;
@screen-xs-max: (@screen-sm-min - 1);
@button-primary-hover: darken(desaturate(@brand-primary, 50%), 15%);
@button-secondary-hover: lighten(@light-bg, 15%);
@primary-link-color: lighten(@brand-primary, 5%);
@border: 1px solid @border-color;
@border-light: 1px solid @light-border-color;
@transition: 0.3s ease-out;
@screen-palm: 500px;
@dark-border-color: darken(@border-color, 60%);

View File

@@ -1,71 +0,0 @@
<!DOCTYPE html>
<!-- Built on Frappe. https://frappe.io/ -->
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %} {{ title | striptags }} {% endblock %}</title>
<meta name="generator" content="frappe">
{% block favicon %}
<link rel="shortcut icon"
href="{{ (favicon or "/assets/frappe/images/favicon.png") | abs_url }}"
type="image/x-icon">
<link rel="icon"
href="{{ (favicon or "/assets/frappe/images/favicon.png") | abs_url }}"
type="image/x-icon">
{% endblock %}
{%- block head -%}
{% block meta_block %}{% endblock %}
<link href="/assets/foundation/css/erpnext-org-theme.css" rel="stylesheet">
{% if path != '' %}
<link type="text/css" rel="stylesheet" href="/assets/frappe/css/hljs.css">
<link type="text/css" rel="stylesheet" href="/assets/frappe/css/font-awesome.css">
<link type="text/css" rel="stylesheet" href="/assets/frappe/css/octicons/octicons.css">
{% endif %}
{% if path == 'contact' %}
<link type="text/css" rel="stylesheet" href="/assets/foundation/css/bootstrap-for-webform.css">
{% endif %}
{%- endblock -%}
{%- block head_include %}{{ head_include or "" }}{% endblock -%}
{%- block style %}{%- endblock -%}
<script>
window.frappe = {};
frappe.ready_events = [];
frappe.ready = function(fn) {
frappe.ready_events.push(fn);
}
window.dev_server = {{ dev_server }};
</script>
</head>
<body data-path="{{ path }}">
<div class="wrapper">
{%- block navbar -%}{% include "templates/includes/navbar/navbar.html" %}{%- endblock -%}
{% block content %}
{{ content }}
{% endblock %}
{%- block footer -%}{% include "templates/includes/footer/footer.html" %}{%- endblock -%}
</div>
{% block base_scripts %}
<!-- js should be loaded in body! -->
<script type="text/javascript"
src="/assets/frappe/js/lib/jquery/jquery.min.js"></script>
<script type="text/javascript"
src="/assets/js/frappe-web.min.js"></script>
<script type="text/javascript"
src="/assets/frappe/js/lib/bootstrap.min.js"></script>
{% endblock %}
{%- if js_globals is defined %}
<script>
{%- for key, value in js_globals.iteritems() %}
window.{{ key }} = "{{ value[0] }}";
{%- endfor -%}
</script>
{% endif -%}
{%- for link in web_include_js %}
<script type="text/javascript" src="{{ link|abs_url }}"></script>
{%- endfor -%}
{%- block script %}{%- endblock %}
<!-- csrf_token -->
{%- block body_include %}{{ body_include or "" }}{% endblock -%}
</body>
</html>

View File

@@ -1,5 +0,0 @@
<div class="feature text-center">
<form class="email-subcription">
<label class="email">Stay Updated<input class="email-input" type="email" placeholder="Email"></label>
</form>
</div>

View File

@@ -1,167 +1,153 @@
<footer class=" section-padding dark-bg"> <footer class="bg-dark pt-4">
<div class="container"> <div class="container">
<div class="columns text-left clearfix"> <div class="row my-5">
<div class="column footer-brand"> <div class="col-sm-3">
<div class="bottom-spacer"> <h6 class="text-light">Industries</h6>
<img class="footer-icon bottom-spacer" src="/assets/foundation/img/erpnext-logo.svg" alt="ERPnext Logo"> <ul class="list-unstyled">
<p class="copyright text-muted">&copy; <span id="year"></span> ERPNext Open Source Software Foundation.</br> <li class="mb-2">
Content licensed under <a class="footer-link" href="https://creativecommons.org/licenses/by-sa/3.0/" target="_blank"> CC-BY-SA 3.0</a> | <a href="/terms" class="footer-link">Terms of use</a>.</p> <a class="text-muted" href="/docs/user/manual/en/manufacturing">Manufacturing</a>
</div> </li>
<div class="bottom-spacer"> <li class="mb-2">
<div class="inline-block"> <a class="text-muted" href="/docs/user/manual/en/stock">Distribution</a>
<form class="js-subscribe-form"> </li>
<label class="footer-email"> <li class="mb-2">
<input class="footer-email-input dark-bg" <a class="text-muted" href="/docs/user/manual/en/projects">Services</a>
name="email" type="email" placeholder="Your email address"> </li>
</label> <li class="mb-2">
<button type="submit" class="button button-dark">Subscribe</button> <a class="text-muted" href="/docs/user/manual/en/accounts/point-of-sale-pos-invoice">Retail</a>
</form> </li>
</div> <li class="mb-2">
</div> <a class="text-muted" href="/docs/user/manual/en/education">Education</a>
</div> </li>
<div class="column"> <li class="mb-2">
<h3 class="footer-title text-white">Industries</h3> <a class="text-muted" href="/docs/user/manual/en/healthcare">Healthcare</a>
<ul class="list-unstyled footer-list"> </li>
<li> <li class="mb-2">
<a class="footer-link" href="/docs/user/manual/en/manufacturing">Manufacturing</a> <a class="text-muted" href="/docs/user/manual/en/agriculture">Agriculture</a>
</li>
<li class="mb-2">
<a class="text-muted" href="/docs/user/manual/en/non_profit">Non Profit</a>
</li>
</ul>
</div>
<div class="col-sm-3">
<h6 class="text-light">Foundation</h6>
<ul class="list-unstyled">
<li class="mb-2">
<a class="text-muted" href="/about">About</a>
</li>
<li class="mb-2">
<a class="text-muted" href="/blog">Blog</a>
</li>
<li class="mb-2">
<a class="text-muted" href="/members">Memberships</a>
</li>
<li class="mb-2">
<a class="text-muted" href="/service-providers">Service Providers</a>
</li>
<li class="mb-2">
<a class="text-muted" href="/fellows">Fellows</a>
</li>
<li class="mb-2">
<a class="text-muted" href="/contact">Contact</a>
</li>
<li class="mb-2">
<a class="text-muted" href="/login">Member Login</a>
</li>
</ul>
</div>
<div class="col-sm-3">
<h6 class="text-light">Community</h6>
<ul class="list-unstyled">
<li class="mb-2">
<a class="text-muted indicator blue" href="/conf/2018">Conference 2018</a>
</li>
<li class="mb-2">
<a class="text-muted" href="https://discuss.erpnext.com" target="_blank" >Forum</a>
</li>
<li class="mb-2">
<a class="text-muted" href="/stories">User Stories</a>
</li>
<li class="mb-2">
<a class="text-muted" href="/chapter-list">Chapters</a>
</li>
<li class="mb-2">
<a class="text-muted" href="/erpnext-jobs">ERPNext Jobs</a>
</li>
<li class="mb-2">
<a class="text-muted" href="https://gitter.im/frappe/erpnext" target="_blank" >Chat (Gitter)</a>
</li>
<li class="mb-2">
<a class="text-muted" href="https://github.com/frappe/erpnext" target="_blank" >GitHub</a>
</li>
<li class="mb-2">
<a class="text-muted" href="https://erpnext.com" target="_blank" >ERPNext.com</a>
</li>
</ul>
</div>
<div class="col-sm-3" style='display: flex; flex-direction: column; justify-content: space-between;'>
<div>
<h6 class="text-light">Documentation</h6>
<ul class="list-unstyled">
<li class="mb-2">
<a class="text-muted" href="/docs/user/manual">Manual</a>
</li> </li>
<li> <li class="mb-2">
<a class="footer-link" href="/docs/user/manual/en/stock">Distribution</a> <a class="text-muted" href="https://www.youtube.com/c/erpnext" target="_blank" >Video Tutorials</a>
</li> </li>
<li> <li class="mb-2">
<a class="footer-link" href="/docs/user/manual/en/projects">Services</a> <a class="text-muted" href="/docs/current">ERPNext Model & API</a>
</li>
<li>
<a class="footer-link" href="/docs/user/manual/en/accounts/point-of-sale-pos-invoice">Retail</a>
</li>
<li>
<a class="footer-link" href="/docs/user/manual/en/education">Education</a>
</li>
<li>
<a class="footer-link" href="/docs/user/manual/en/healthcare">Healthcare</a>
</li>
<li>
<a class="footer-link" href="/docs/user/manual/en/agriculture">Agriculture</a>
</li>
<li>
<a class="footer-link" href="/docs/user/manual/en/non_profit">Non Profit</a>
</li> </li>
</ul> </ul>
</div> </div>
<div class="column"> <div>
<h3 class="footer-title text-white">Foundation</h3> <h6 class="text-light">Social</h6>
<ul class="list-unstyled footer-list"> <ul class="list-unstyled">
<li> <li class="mb-2">
<a class="footer-link" href="/about">About</a> <a class="text-muted" href="https://twitter.com/erpnext" target="_blank">Twitter</a>
</li> </li>
<li> <li class="mb-2">
<a class="footer-link" href="/blog">Blog</a> <a class="text-muted" href="https://www.facebook.com/ERPNext/" target="_blank">Facebook</a>
</li> </li>
<li> <li class="mb-2">
<a class="footer-link" href="/members">Memberships</a> <a class="text-muted" href="https://medium.com/frappé-thoughts/" target="_blank">Medium</a>
</li>
<li>
<a class="footer-link" href="/foundation-fellow">Fellow</a>
</li>
<li>
<a class="footer-link" href="/bounties">Bounties</a>
</li>
<li>
<a class="footer-link" href="/conf">Conferences</a>
</li>
<li>
<a class="footer-link" href="/contact">Contact</a>
</li>
<li>
<a class="footer-link" href="/login">Member Login</a>
</li>
</ul>
</div>
<div class="column">
<h3 class="footer-title text-white">Community</h3>
<ul class="list-unstyled footer-list">
<li>
<a class="footer-link" href="/chapters">Chapters</a>
</li>
<li>
<a class="footer-link" href="https://discuss.erpnext.com" target="_blank" >Forum</a>
</li>
<li>
<a class="footer-link" href="/service-providers">Service Providers</a>
</li>
<li>
<a class="footer-link" href="/erpnext-jobs">ERPNext Jobs</a>
</li>
<li>
<a class="footer-link" href="/apps">Apps</a>
</li>
<li>
<a class="footer-link" href="https://gitter.im/frappe/erpnext" target="_blank" >Chat (Gitter)</a>
</li>
<li>
<a class="footer-link" href="https://github.com/frappe/erpnext" target="_blank" >GitHub</a>
</li>
<li>
<a class="footer-link" href="https://erpnext.com" target="_blank" >ERPNext.com</a>
</li>
</ul>
</div>
<div class="column">
<h3 class="footer-title text-white">Documentation</h3>
<ul class="list-unstyled footer-list">
<li>
<a class="footer-link" href="/docs/user/manual">Manual</a>
</li>
<li>
<a class="footer-link" href="https://www.youtube.com/c/erpnext" target="_blank" >Video Tutorials</a>
</li>
<li>
<a class="footer-link" href="/docs/current">ERPNext Model & API</a>
</li>
</ul>
<h3 class="footer-title text-white top-spacer">Find Us On</h3>
<ul class="list-unstyled footer-list">
<li>
<a class="footer-link" href="https://twitter.com/erpnext" target="_blank">Twitter</a>,
</li>
<li>
<a class="footer-link" href="https://www.facebook.com/ERPNext/" target="_blank">Facebook</a>
</li>
<li>
<a class="footer-link" href="https://medium.com/frappé-thoughts/" target="_blank">Medium</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<script type="text/javascript"> </div>
frappe.ready(function() { <div class="py-3 text-muted">
var d = new Date(); <span>&copy; <span id="year"></span> ERPNext Open Source Software Foundation. Content licensed under <a class="text-muted" href="https://creativecommons.org/licenses/by-sa/3.0/" target="_blank"> CC-BY-SA 3.0</a> Read the <a class="text-muted"href="/terms" >terms of use</a>.</span>
var currentYear = d.getFullYear(); </div>
$("#year").text(currentYear); <script type="text/javascript">
frappe.ready(function() {
var d = new Date();
var currentYear = d.getFullYear();
$("#year").text(currentYear);
$('.js-subscribe-form').on('submit', function(e) { $('.js-subscribe-form').on('submit', function(e) {
e.preventDefault(); e.preventDefault();
const form = this; const form = this;
const formdata = new FormData(this); const formdata = new FormData(this);
const email = formdata.get('email'); const email = formdata.get('email');
const input = $(form).find('input'); const input = $(form).find('input');
const button = $(form).find('button'); const button = $(form).find('button');
erpnext.subscribe_to_newsletter({ erpnext.subscribe_to_newsletter({
email, email,
callback(r) { callback(r) {
if (!r.exc) { if (!r.exc) {
form.reset(); form.reset();
button.text('Added'); button.text('Added');
setTimeout(() => { setTimeout(() => {
button.text('Subscribe'); button.text('Subscribe');
}, 3000); }, 3000);
}
} }
}) }
}); })
}); });
</script> });
</script>
</div> </div>
</footer> </footer>

View File

@@ -1,17 +0,0 @@
{% macro media(title, content, image, link) %}
<div class="media centered {% if link %}clickable{% endif %}"
{% if link %}style="cursor: pointer;"{% endif %}
{% if link %}onclick="location.href='{{ link }}'"{% endif %}>
<div class="media-left">
<a href="{{ link or "#" }}">
<img class="media-object"
src="{% if image %}{% if not '/' in image %}/assets/foundation/img/{% endif %}{{ image }}{% else %}/assets/foundation/img/frappe-bird-grey.svg{% endif %}"
style="{% if image and not '/' in image %}opacity: 0.4{% endif %}">
</a>
</div>
<div class="media-body">
{% if title %}<h4 class="media-heading">{{ title }}</h4>{% endif %}
{{ content }}
</div>
</div>
{% endmacro %}

View File

@@ -1,32 +0,0 @@
<nav class="navbar navbar-default navbar-main" role="navigation">
<div class="container">
<div class="navbar-header">
<div class="left">
<a class="navbar-brand" href="{{ url_prefix }}{{ home_page or "/"}}">
<span>{{ brand_html or (frappe.get_hooks("brand_html") or ["Home"])[0] }}</span>
</a>
</div>
<div class="right">
<ul class="menu list-unstyled">
<li class="menu-item">
<a href="/esoc" class="menu-links">ESOC</a>
</li>
<li class="menu-item">
<a href="/service-providers" class="menu-links">Services</a>
</li>
<li class="menu-item">
<a href="/blog" class="menu-links">Blog</a>
</li>
<li class="menu-item">
<a href="/about" class="menu-links">About</a>
</li>
<!--
<li class="menu-item">
<a class="button get-started button-primary-small" href="/get-started">Get Started</a>
</li>
-->
</ul>
</div>
</div>
</div>
</nav>

View File

@@ -1,42 +0,0 @@
<section class="sponsor">
<div class="grid-of-three">
<div class="box text-center top-spacer" >
<a href="https://frappe.io/" class="no-decoration" target="_blank">
<img src="/assets/foundation/img/frappe-bird-black.svg" alt="Frappe"/>
</a>
</div>
<div class="box text-center top-spacer" >
<a href="https://mntechnique.com/" class="no-decoration" target="_blank">
<img src="/assets/foundation/img/conf/sponsors/mnt-logo.png" alt="MNT"/>
</a>
</div>
<div class="box text-center top-spacer" >
<a href="http://fogliasana.com/" class="no-decoration" target="_blank">
<img src="/assets/foundation/img/conf/sponsors/shs-logo.png" alt="SHS"/>
</a>
</div>
<div class="box text-center top-spacer" >
<a href="https://www.cloude8.com/" class="no-decoration" target="_blank">
<img src="/assets/foundation/img/conf/sponsors/cloude8.png" alt="Cloude8"/>
</a>
</div>
<div class="box text-center top-spacer" >
<a href="https://digithinkit.com/" class="no-decoration" target="_blank">
<img src="/assets/foundation/img/conf/sponsors/digithinkit.png" alt="DigiThinkIT"/>
</a>
</div>
<div class="box text-center top-spacer" >
<a href="http://www.indictranstech.com/" class="no-decoration" target="_blank">
<img src="/assets/foundation/img/conf/sponsors/indictrans.png">
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div style="margin-top: 40px;">
<p>Become a patron for the conference and get associated with a global community<br>
of tens of thousands of users and developers. Sponsors also get 5 complimentary passes for the full conference!</p>
<a href="mailto:foundation@erpnext.org" style="color:white" class="btn btn-primary disabled">Become A Sponsor</a>
</div>
</div>
</div>
</section>

View File

@@ -1,55 +0,0 @@
{% extends base_template_path %}
{% block hero %}{% endblock %}
{% block content %}
<div class="page">
<div class="page-container" id="page-{{ name or route }}"
data-path="{{ pathname }}" {%- if page_or_generator=="Generator" %} data-doctype="{{ doctype }}"{% endif %}>
{% if show_sidebar %}
<div class="sidebar-block">
{% include "templates/includes/web_sidebar.html" %}
</div>
{% endif %}
<div class="{% if show_sidebar %}page-content with-sidebar{% elif doctype == 'Blog Post' %} blog-page {% else %}page-content without-sidebar{% endif %}">
<div class="page-content-wrapper">
<div class="row page-head">
<div class='col-sm-12'>
{% if not no_breadcrumbs and parents %}
<div class="page-breadcrumbs">
{% block breadcrumbs %}
{% include 'templates/includes/breadcrumbs.html' %}
{% endblock %}
</div>
{% endif %}
</div>
{% if doctype != 'Blog Post' %}
<div class="col-sm-8 col-xs-6">
{% block header %}{% endblock %}
</div>
{% endif %}
<div class="col-sm-4 col-xs-6">
{% if show_search %}
<div class="page-search-block">
{% block search %}
{% include
'templates/includes/search_box.html' %}
{% endblock %}
</div>
{% endif %}
{% if self.header_actions() %}
<div class="page-header-actions-block">
{% block header_actions %}{% endblock %}
</div>
{% endif %}
</div>
</div>
<div class="page_content">
{%- block page_content -%}{%- endblock -%}
</div>
</div>
<!-- sidebar ends -->
</div>
</div>
</div>
{% endblock %}

View File

@@ -1,52 +0,0 @@
.introduction {
border-bottom: 1px solid #e1e9f0;
padding: 15px;
padding-top: 0px;
margin-left: -15px;
margin-right: -15px;
margin-bottom: 15px;
}
.form-group label {
font-weight: normal;
}
input[type='checkbox'] {
margin-top: 3px;
}
.checkbox label {
font-size: 12px;
}
.web-form-page, .web-form-page .section {
padding: 20px 0px;
}
.web-form-grid-row input, .web-form-grid-row select {
border: 0px;
padding: 0px;
}
.web-form-grid-row input:focus, .web-form-grid-row select:focus {
box-shadow: none;
}
.web-form-grid-row .form-group {
margin: 0px;
}
.slide-progress {
/*border-top: 1px solid #d1d8dd;*/
margin-top: -10px;
}
.slide-progress .fa-fw {
vertical-align: middle;
margin-right: 9px;
padding-left: 2px;
cursor: pointer;
}
.slide-progress .icon-circle-blank {
font-size: 12px;
}
.slide-progress .icon-circle {
font-size: 14px;
}

View File

@@ -1,383 +0,0 @@
{% extends "templates/web.html" %}
{% block title %}{{ _(title) }}{% endblock %}
{% block header %}
<h1>{{ _(title) }}</h1>
{% endblock %}
{% block breadcrumbs %}
{% if has_header and login_required %}
{% include "templates/includes/breadcrumbs.html" %}
{% endif %}
{% endblock %}
{% block header_actions %}
{% if not read_only and has_header %}
<div style="padding-bottom: 15px;">
{% if login_required -%}
<a href="{{ cancel_url or pathname }}" class="btn btn-default btn-sm">
{{ _("Cancel") }}</a>
{%- endif %}
{% if not is_list %}
<button type="submit" class="btn btn-primary btn-sm btn-form-submit">
{{ _("Save") }}</button>
{% endif %}
</div>
{% endif %}
{% if is_list %}
<div style="padding-bottom: 15px;">
<a href="/{{ pathname }}{{ delimeter }}new=1{{ params_from_form_dict}}" class="btn btn-primary btn-new btn-sm">
{{ _("New") }}
</a>
</div>
{% endif %}
{%- if allow_print and not is_list and not _login_required -%}
<div class='text-right'>
<a class='text-muted small' href='/printview?doctype={{ doc.doctype}}&name={{ doc.name }}
{%- if print_format -%}&format={{ print_format }}{%- endif -%}' target="_blank" rel="noopener noreferrer">
<i class='fa fa-print'></i> {{ _("Print") }}</a>
</div>
{%- endif -%}
{% endblock %}
{% block page_content %}
<div class="introduction">
{% if introduction_text %}
<p class="text-muted">{{ _(introduction_text) }}</p>
{% endif %}
</div>
<div class="form-message hide"></div>
{% if _login_required %}
<div class="login-required">
<div class="text-muted">
{{ _("Please sign-up or login to begin") }}
</div>
<p>
<a href="/login?redirect-to=/{{ pathname }}" class="btn btn-primary">
{{ _("Login") }}
</a>
</p>
</div>
{% elif is_list %}
{% include "templates/includes/list/list.html" %}
<script>{% include "templates/includes/list/list.js" %}</script>
{% else %}
<br>
{%- macro properties(field) %}
name="{{ field.fieldname }}" data-fieldname="{{ field.fieldname }}"
{% if field.placeholder -%} placeholder="{{ _(field.placeholder) }}" {%- endif %}
data-label="{{ _(field.label) }}" data-fieldtype="{{ field.fieldtype }}"
data-doctype="{{ field.parent }}" data-default="{{ field.default or "" }}"
{{ field.reqd and "data-reqd=1" or "" }}
{{ (read_only or field.read_only) and "disabled" or "" }}
{% endmacro -%}
{%- macro value(field, _doc) -%}
{%- if _doc -%}
{%- set _value = _doc.get(field.fieldname) or frappe.form_dict.get(field.fieldname) -%}
{%- else -%}
{%- set _value = frappe.form_dict.get(field.fieldname) or field.default -%}
{%- endif -%}
{{ "" if _value==None else _value }}
{%- endmacro -%}
{%- macro help(field) -%}
{% if field.description -%}
<span class="help-block small text-muted">{{ _(field.description) }}</span>
{%- endif -%}
{%- endmacro %}
{% macro label(field) %}
<label for="{{ field.fieldname }}" class="control-label text-muted small">
{{ _(field.label) }}</label>
{% endmacro %}
{% macro render_field(field, _doc=None, with_label=True) %}
{% if field.hidden %}
<input type="hidden" data-doctype="{{ field.parent }}"
name="{{ field.fieldname }}" value="{{ value(field, _doc) }}">
{% elif field.fieldtype == "HTML" %}
<div class="form-group" data-label="{{ field.label }}">
{% if field.options %}{{ field.options }}{% endif %}
</div>
{% elif field.fieldtype in ("Data", "Date", "Datetime", "Int", "Float") %}
<div class="form-group{% if field.reqd %} has-error{% endif %}">
{% if with_label %}{{ label(field) }}{% endif %}
<input type={{ "number" if field.fieldtype in ("Int", "Float") else "text" }}
class="form-control" {{ properties(field) }}
value="{{ value(field, _doc) }}"
{%- if field.fieldtype=="Int" %} pattern="[0-9]*"{% endif %}
{%- if field.max_length %} maxlength={{ field.max_length }}{% endif %}>
{{ help(field) }}
</div>
{% elif field.fieldtype=="Link" %}
<div class="form-group{% if field.reqd %} has-error{% endif %}">
{% if with_label %}{{ label(field) }}{% endif %}
<select class="form-control" {{ properties(field) }}>
{% for option in ([{"name":""}] + frappe.get_all(field.options)) -%}
<option value="{{ option.name }}"
{{ 'selected="selected"' if value(field, _doc)==option.name else '' }}>
{{ option.name }}</option>
{%- endfor %}
</select>
{{ help(field) }}
</div>
{% elif field.fieldtype=="Select" %}
<div class="form-group{% if field.reqd %} has-error{% endif %}">
{% if with_label %}{{ label(field) }}{% endif %}
<select class="form-control" {{ properties(field) }}>
{% for option in field.options.split("\n") -%}
<option value="{{ option }}"
{{ 'selected="selected"' if value(field, _doc)==option else '' }}>
{{ _(option) }}</option>
{%- endfor %}
</select>
{{ help(field) }}
</div>
{% elif field.fieldtype in ("Text", "Small Text") %}
<div class="form-group{% if field.reqd %} has-error{% endif %}">
{% if with_label %}{{ label(field) }}{% endif %}
{{ help(field) }}
<textarea class="form-control" style="height: {% if field.fieldtype=="Small Text" %}150px{% else %}300px;{% endif %}"
{{ properties(field) }}>{{ value(field, _doc) }}</textarea>
</div>
{% elif field.fieldtype == "Text Editor" %}
<div class="form-group{% if field.reqd %} has-error{% endif %}">
{% if with_label %}{{ label(field) }}{% endif %}
{{ help(field) }}
<div {{ properties(field) }}>{{ value(field, _doc) }}</div>
</div>
{% elif field.fieldtype=="Attach" %}
<div class="form-group">
{% if with_label %}{{ label(field) }}{% endif %}
{% if value(field, _doc) -%}
<p class="small">
<a href="{{ doc.get(field.fieldname) }}" target="blank">
{{ _doc.get(field.fieldname) }}
</a>
<br><button class="btn btn-small btn-default btn-xs
change-attach" style="margin-top: 5px;">{{ _("Change") }}</button>
</p>
{%- endif %}
<p class="{{ value(field, _doc) and 'hide' or '' }} attach-input-wrap">
<input type="file" style="margin-top: 7px;"
{{ properties(field) }}
{%- if value(field, _doc) -%} data-value="{{ value(field, _doc) }}"{%- endif -%}>
<p class='text-muted small' style='margin-bottom: 20px;'>
{{ _("Max attachment size is {0}MB").format(max_attachment_size) }}
</p>
</p>
{{ help(field) }}
</div>
{% elif field.fieldtype=="Check" %}
<div class="form-group">
<div class="checkbox">
{% if with_label %}
<label class='text-muted'>
<input type="checkbox" id="{{ field.fieldname }}"
{{ properties(field) }}
name="{{ field.fieldname }}" data-doctype="{{ field.parent }}"
{{ _doc and _doc.get(field.fieldname) and 'checked' or '' }}>
{{ _(field.label) }}
</label>
{% endif %}
{{ help(field) }}
</div>
</div>
{% endif %}
{% endmacro %}
{% macro render_row(field, d=None, hidden=False) %}
<tr class="web-form-grid-row {% if hidden %}hidden{% endif %}"
{% if d != None %}data-name="{{ d.name or "" }}" data-child-row=1{% endif %}>
{% for df in frappe.get_meta(field.options).fields %}
{% if df.in_list_view %}
<{{ 'th' if d==None else 'td' }} style="width: {{ (df.columns or 2) * 8.3333 }}%;">
{% if d!=None %}
{{ render_field(df, d, False) }}
{% else %}
<span class='text-muted small'>{{ _(df.label) }}</span>
{% endif %}
</{{ 'th' if d.name==None else 'td' }}>
{% endif %}
{% endfor %}
<td style="width: 8.3333%">
{% if d!=None %}
<button class='btn btn-default btn-sm btn-remove'><i class='fa fa-remove'></i></button>
{% endif %}
</td>
</tr>
{% endmacro %}
{% macro render_table(field) %}
{{ label(field) }}
<div class='web-form-grid'
data-fieldname='{{ field.fieldname }}' data-doctype='{{ field.options }}'>
<table class='table table-bordered'>
<thead>
{{ render_row(field) }}
</thead>
<tbody>
{{ render_row(field, {}, True) }}
{% if doc and doc.get(field.fieldname) %}
{% for d in doc.get(field.fieldname) %}
{{ render_row(field, d) }}
{% endfor %}
{% endif %}
</tbody>
</table>
</div>
<p><button class='btn btn-default btn-sm btn-add-row'
data-fieldname='{{ field.fieldname }}'>{{ _("Add Row") }}</button></p>
{% endmacro %}
<!-- pagination -->
{% if not frappe.form_dict.new and layout|len > 1 %}
<div class="text-center slide-progress text-extra-muted">
{% for page in layout %}
<i data-idx="{{ loop.index }}" data-toggle="tooltip" data-placement="top"
title="{{ _(page.label) or _("Page {0}").format(loop.index) }}" class="fa-fw
{% if loop.index==1 %}fa fa-circle{% else %}fa fa-circle-o{% endif %}"></i>
{% endfor %}
</div>
{% endif %}
<form role="form"
data-web-form="{{ name }}" data-owner="{{ doc.owner }}">
{% if frappe.form_dict.name and web_page_link_text %}
<div class="row">
<div class="col-sm-9">
<p class="text-muted">
<a class="btn btn-default btn-sm" href="{{ doc.route }}" target="_blank" rel="noopener noreferrer">
{{ web_page_link_text }}</a>
</p>
</div>
</div>
{% endif %}
{% for page in layout %}
{% set last_page = True if loop.index == layout|len else False %}
<div class="web-form-page{% if loop.index > 1 %} hidden{% endif %}"
data-idx="{{ loop.index }}"
data-label="{{ page.label or _("Page {0}").format(loop.index) }}">
{% if page.label %}
<h2 class='text-center'>{{ _(page.label) }}</h2>
{% endif %}
{% if page.description %}
<p class='text-center text-muted small'>{{ _(page.description) }}</p>
<br>
{% endif %}
{% for section in page.sections %}
<div class="section">
{% if section.label %}
<h5 class='uppercase'>{{ _(section.label) }}</h5>
<span class="help-block small text-muted">{{ _(section.description) }}</span>
{% endif %}
<div class="row">
{% for column in section.columns %}
<div class="col-sm-{{ (12 / (section.columns|len))|int }}">
{% for field in column %}
{% if field.fieldtype=='Table' %}
{{ render_table(field) }}
{% else %}
{{ render_field(field, doc) }}
{% endif %}
{% endfor %}
</div>
{% endfor %}
</div>
</div>
{% endfor %}
{% if last_page and accept_payment %}
<div class="well payment-details">
{% if not doc.paid %}
{% if payment_button_help %}
<div class='text-muted' style='padding-bottom: 15px;'>
{{ payment_button_help }}</div>
{% endif %}
<a class="btn btn-primary btn-payment">
{{ payment_button_label or "Pay"}}</a>
{% else %}
<div>{{ _("Payment Complete") }}</div>
{% endif %}
</div>
{% endif %}
<!-- page footer buttons -->
<div>
{% if layout|len > 1 %}
<p class='text-muted small text-center'>
{{ _("Page {0} of {1}").format(loop.index, layout|len) }}</p>
{% endif %}
<br>
<p class='text-right'>
{%- if loop.index > 1 -%}
<button class='btn btn-sm btn-default btn-change-section'
data-idx="{{ loop.index - 1 }}">
{{ _("Previous") }}</button>
{%- endif -%}
<!-- save/next button -->
{% if (loop.index == layout|len or frappe.form_dict.new) %}
{% if not read_only %}
<button type="submit" class="btn btn-primary btn-sm btn-form-submit">
{{ _("Save") }}</button>
{% endif %}
{% elif layout|len > 1 %}
<button class="btn btn-primary btn-sm btn-change-section"
data-idx="{{ loop.index + 1 }}">
{{ _("Next") }}</button>
{% endif %}
</p>
</div>
</div>
{% endfor %}
</form>
{% if allow_comments and not frappe.form_dict.new -%}
<div class="comments">
<br><br>
<h3>{{ _("Comments") }}</h3>
{% include 'templates/includes/comments/comments.html' %}
</div>
{%- endif %}
{% endif %}
<div class="padding"></div>
{% endblock %}
{% block script %}
<script>
window.web_form_settings = {
allow_incomplete: {{ allow_incomplete or 0 }},
success_link: '<p>{{ success_message or _("Your information has been submitted") }}</p><p><a href="{{ success_url or "/" }}" class="btn btn-sm btn-default">{{ _("Continue") }}</a></p>',
datepicker_format: "{{ frappe.date_format }}",
web_form_doctype: "{{ doc_type }}",
web_form_name: "{{ name }}",
is_new: {{ 1 if frappe.form_dict.new else 0 }},
is_read_only: {{ 1 if read_only else 0 }},
doc_name: "{{ frappe.form_dict.name or "" }}",
login_required: {{ 1 if login_required else 0 }},
max_attachment_size:{{ max_attachment_size }},
moment_date_format: "{{ frappe.date_format.upper() }}"
}
{% if row_template %}web_form_settings.web_form_row_template = "{{ row_template }}";{% endif %}
</script>
<script type="text/javascript" src="/assets/js/web_form.min.js"></script>
<script>
{% if script is defined %}
{{ script }}
{% endif %}
</script>
{% endblock %}
{% block style %}
<link type="text/css" rel="stylesheet" href="/assets/css/web_form.css">
<link href="/assets/foundation/css/bootstrap-for-webform.css" rel="stylesheet">
<style>
{% if style is defined %}{{ style }}{% endif %}
</style>
{% endblock %}

View File

@@ -1,4 +0,0 @@
<div>
<a href={{ route }}>{{ title }}</a>
</div>
<!-- this is a sample default list template -->

View File

@@ -2,28 +2,129 @@
{% block title %}About ERPNext Foundation{% endblock %} {% block title %}About ERPNext Foundation{% endblock %}
{% from "foundation/templates/includes/macros.html" import media %}
{% block content%} {% block content%}
<div class="page"> {% set team = [
<section class='top-spacer hero text-center about'> {
<div class="container"> 'name': 'Basawaraj Savalagi',
<img class="about-img bottom-spacer" src="/assets/foundation/img/community-colored.jpg"> 'designation': 'CEO',
<h1 class="header-1">ERPNext Foundation</h1> 'bio': 'Basawaraj is a Computer Science Engineer and has previously worked in Deloitte consulting on SAP and SELCO Solar, a social enterprise in multiple roles. He is passionate about radically changing the way SMEs work by driving adoption of ERPNext.',
<p class="intro-copy text-medium">We are a Non Profit Foundation representing a community of ERPNext Users, Developers and Service Providers. Our goal is to provide a platform for the ERPNext Community to 'discuss': 'Basawaraj_Savalagi',
come together, join hands and build assets to help build and enhance ERPNext around the world.</p><p class="intro-copy text-medium"> ERPNext Foundation aims to be a community driven organization and run in a transparent manner. If you want to be more involved in the ERPNext Community, read the <a href="/faq" class="secondary-link" target="_blank">FAQ</a>. 'image': 'https://erpnext.org/files/basawaraj.png'
</div> },
</section> {
<div class="page-content"> 'name': 'Revant Nandgaonkar',
<section class="container"> 'designation': 'Director, Community Manager',
<hr> 'bio': 'Revant is a free and open source software enthusiast and founder of MN Technique. He began his journey by implementing ERPNext for his family business and now helps businesses onboard on to this true free and open source ERP.',
<h1>{{ doc.team_members_heading }}</h1> 'discuss': 'revant_one',
{% for member in doc.team_members %} 'image': 'https://erpnext.org/files/revant.jpg'
{{ media(member.full_name, member.bio, member.image_link) }} },
{% endfor %} {
<p><a href="/contact">Want to talk to someone in the foundation? Get in touch</a></p> 'name': 'Rushabh Mehta',
</section> 'designation': 'Director',
'bio': "Rushabh is the CEO of Frappe Technologies and the original creator of Frappé Framework and ERPNext. He built ERPNext for his family business and then later published it as an open source project. In his free time, he likes to read and spend time relaxing at home.",
'discuss': 'rmehta',
'image': '/assets/foundation/img/people/rushabh.jpg'
},
{
'name': 'Nabin Hait',
'designation': 'Director',
'bio': 'Nabin is the Chief Operating Officer of Frappe Technologies and the lead developer at ERPNext. Nabin is responsible for managing the ERPNext project and managing the team at Frappe. Nabin is a great cook and likes cooking and watching movies in his free time.',
'discuss': 'nabinhait',
'image': 'https://erpnext.org/files/nabin.jpg'
},
{
'name': 'Prakash Hodage',
'designation': 'Director, Accountant',
'bio': 'Prakash is the accountant and administrative officer of Frappe Technologies. Prakash has extensive experience in managing accounting and administration and is an expert ERPNext user, also handling user support from time to time. In his free time, Prakash loves to read and help people around him.',
'discuss': 'prakash',
'image': 'https://erpnext.org/files/prakash.jpg'
},
{
'name': 'You',
'designation': 'Apply for a position',
'bio': 'If you have a vision for working for an open source community and taking the foundation to new places, we would love to get in touch with you. <a href="/contact">Get in Touch</a>',
'discuss': '',
'image': '/assets/foundation/img/people/tux.png'
}
]%}
<section class='section-padding text-center'>
<h1>ERPNext Foundation</h1>
<p class="lead">We are a registered not-for-profit
entity representing a community of ERPNext
users, developers and service providers.<p>
<img class="rounded mw-100 my-5 greyscale"
src="/assets/foundation/img/community-colored.jpg">
<h4>Our Vision</h4>
<p class='lead'>Our vision is to provide high quality free software to organizations, enterprises and public institutions around the world, and enable to use it by spreading the knowledge and best practices of running organizations in the 21st Century.</p>
<h4 class='mt-5'>Our Approach</h4>
<p class='lead'>To enable this vision we will:<br>1. Create platforms to bring people together to share their knowledge. <br> 2. Create software and documentation so people can be self-reliant. <br>3. Work with public institutions and help them use tools like ERPNext.</p>
<a href="/members" class="mt-4 btn btn-dark">Support us by becoming a Member</a>
</section>
<hr class="featurette-divider">
<section class="section-padding">
<h2 class="text-center">People</h1>
<p class='lead text-center mb-5'>We are supported by a great team who have years of experience in ERPNext and a passion for Free and Open Source Software.</p>
<div class='card-deck'>
{% for item in team %}
<div class='card card-flip mb-4'>
<div class='card'>
<img class="card-img-top greyscale"
src="{{ item.image }}" alt="{{ item.name }}">
<div class="card-body">
<h5>{{ item.name }}</h5>
<div>{{ item.designation }}</div>
</div>
</div>
<div class='card'>
<div class='card-body'>
<h5>{{ item.name }}</h5>
<div class='small'>{{ item.bio }}</div>
<p class='mt-2'>
<a href='https://discuss.erpnext.com/u/{{ item.discuss }}'
class='btn btn-secondary btn-sm'>
<i class='fa fa-comments'></i> Forum</a>
</p>
</div>
</div>
</div>
{% if loop.index is divisibleby 3 %}
</div><div class='card-deck'>
{% endif %}
{% endfor %}
</div>
<hr class="featurette-divider">
<div class='card my-5'>
<div class='card-body'>
<div class="media">
<img class="mr-3 rounded-circle greyscale" src="/assets/foundation/img/people/dhananjay.jpg"
alt="Dhananjay Palishikar" style='max-width: 100px'>
<div class="media-body">
<h5 class="mt-0">Dhananjay Palishikar,
<a href='http://www.sapconinstruments.com/' target='_blank'>
Sapcon Instruments</a>
</h5>
"With significant investment made towards implementing ERPNext, Foundation’s commitment to open source will be key in securing our company’s future. The idea of a foundation membership helps users like me contribute in a small and meaningful way, while it also provides an opportunity to raise domain specific issues with the foundation team."
</div>
</div>
</div> </div>
</div> </div>
{% endblock %}
<p class="mt-4 text-center">
<a class="text-muted" href="/contact">Want to talk to someone in the foundation? Get in touch</a>
</p>
</section>
{% endblock %}

View File

@@ -1,7 +0,0 @@
# See license.txt
from __future__ import unicode_literals
import frappe
def get_context(context):
return { "doc": frappe.get_doc("About Us Settings", "About Us Settings") }

View File

@@ -0,0 +1,94 @@
{% extends "templates/web.html" %}
{% block page_content %}
{% set chapters = [
{
'city': 'Mumbai, India',
'meetup-link': 'https://www.meetup.com/ERPNext-Community-Meetup/',
'image': '/assets/foundation/img/meetups/mumbai.png',
'members': 720
},
{
'city': 'Bengaluru, India',
'meetup-link': 'https://www.meetup.com/ERPNext-Bangalore-Community/',
'image': '/assets/foundation/img/meetups/bengaluru.png',
'members': 590
},
{
'city': 'Bay Area, United States',
'meetup-link': 'https://www.meetup.com/ERPNext-Community-Bay-Area/',
'image': '/assets/foundation/img/meetups/bay-area.png',
'members': 15
},
{
'city': 'Pune, India',
'meetup-link': 'https://www.meetup.com/Pune-ERPNext-Meetup/',
'image': '/assets/foundation/img/meetups/pune.png',
'members': 540
},
{
'city': 'New England, United States',
'meetup-link': 'https://www.meetup.com/ERPNext-New-England/',
'image': '/assets/foundation/img/meetups/new-england.png',
'members': 10
},
{
'city': 'Dubai, UAE',
'meetup-link': 'https://www.meetup.com/UAE-ERPNext-Meetup/',
'image': '/assets/foundation/img/meetups/dubai.png',
'members': 53
},
{
'city': 'Frankfurt, Germany',
'meetup-link': 'https://www.meetup.com/ERPNext-Europe/',
'image': '/assets/foundation/img/meetups/frankfurt.png',
'members': 24
},
{
'city': 'Jakarta, Indonesia',
'meetup-link': 'https://www.meetup.com/ERPNext-Jakarta-Community-Meetup/',
'image': '/assets/foundation/img/meetups/jakarta.png',
'members': 55
},
{
'city': 'Paris, France',
'meetup-link': 'https://www.meetup.com/ERPNext-France/',
'image': '/assets/foundation/img/meetups/paris.png',
'members': 20
},
] %}
<section class='section-padding'>
<h1 class='text-center'>Chapters</h1>
<p class='lead text-center'>
Become a part of your local ERPNext Community by joining a chapter near you.
If you can't find one, start your own!
</p>
</section>
<section>
<div class='card-deck'>
{% for item in chapters %}
<a href='{{ item['meetup-link' ]}}' target='_blank' class='card mb-4'>
<img class="card-img-top greyscale" src="{{ item.image }}" alt="{{ item.city }}">
<div class="card-body">
<h5>{{ item.city }}</h5>
<div class='text-muted'>{{ item.members }} members</div>
</div>
</a>
{% if loop.index is divisibleby 3 %}
</div><div class='card-deck'>
{% endif %}
{% endfor %}
</div>
<div class='mt-4 text-center'>
<div class='text-muted'>
To start your own chapter, start a group on Meetup.com and get in touch with us.
</div>
<div>
<a class='mt-2 btn-dark btn-sm btn' href="/contact">Contact Us To Start a New Chapter</a>
</div>
</div>
<section>
{% endblock %}

View File

@@ -5,15 +5,15 @@
{% block page_content %} {% block page_content %}
<section class='conf-hero text-center' style='margin-top: -30px'> <section class='section-padding text-center'>
<div class='text-center'> <div class='text-center'>
<img src='/assets/foundation/img/conf/mumbai.png' style='width: 300px; margin-bottom: 50px;'> <img src='/assets/foundation/img/conf/mumbai.png' style='width: 300px; margin-bottom: 50px;'>
</div> </div>
<!--<h1>Better Together</h1>--> <!--<h1>Better Together</h1>-->
<h1>ERPNext Conference 2017, Mumbai</h1> <h1>ERPNext Conference 2017, Mumbai</h1>
<p class='lead'>October 12th to 14th</p> <p class='lead'>October 12th to 14th</p>
<p><a href="https://www.youtube.com/playlist?list=PL3lFfCEoMxvyes3I4n2bGo6JG8DM97vti" class='btn btn-primary'>Watch ERPNext Conference 2017 - Community Talks</a> <p><a href="https://www.youtube.com/playlist?list=PL3lFfCEoMxvyes3I4n2bGo6JG8DM97vti" class='btn btn-dark btn-sm'>Watch ERPNext Conference 2017 - Community Talks</a>
<p><a href="https://www.youtube.com/playlist?list=PL3lFfCEoMxvy3mCFxFASXrImOMVq2_EpC" class='btn btn-primary'>Watch ERPNext Conference 2017 - Developer Talks</a> <p><a href="https://www.youtube.com/playlist?list=PL3lFfCEoMxvy3mCFxFASXrImOMVq2_EpC" class='btn btn-dark btn-sm'>Watch ERPNext Conference 2017 - Developer Talks</a>
</p> </p>
<p><a href="/conf/2017/agenda">Three days of amazing talks and discussions. See the full agenda.</a> <p><a href="/conf/2017/agenda">Three days of amazing talks and discussions. See the full agenda.</a>
@@ -34,7 +34,7 @@
</section> </section>
<hr> <hr>
<h2>Sponsored By</h2> <h2>Sponsored By</h2>
{% include "foundation/templates/includes/sponsors.html" %} {% include "frappe_theme/templates/includes/sponsors.html" %}
<hr> <hr>
<section> <section>
<h3>Brought to you by the ERPNext Foundation</h3> <h3>Brought to you by the ERPNext Foundation</h3>

View File

@@ -3,4 +3,4 @@
<h1>Sponsors</h1> <h1>Sponsors</h1>
</section> </section>
{% include "foundation/templates/includes/sponsors.html" %} {% include "frappe_theme/templates/includes/sponsors.html" %}

Some files were not shown because too many files have changed in this diff Show More