[ADD] Dependant modules
|
|
@ -0,0 +1,2 @@
|
||||||
|
from . import controllers
|
||||||
|
from . import models
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
'name': "Login via Github",
|
||||||
|
'summary': """
|
||||||
|
Login via Github logs user into odoo using their github credentials.
|
||||||
|
""",
|
||||||
|
'description': """
|
||||||
|
Github
|
||||||
|
Odoo github
|
||||||
|
Github login
|
||||||
|
Odoo Github integration
|
||||||
|
Github Odoo integration
|
||||||
|
Odoo+Github
|
||||||
|
Github Odoo login
|
||||||
|
Odoo Github authentication
|
||||||
|
Github login on Odoo
|
||||||
|
""",
|
||||||
|
|
||||||
|
'author': "Tortecs India",
|
||||||
|
'website': "",
|
||||||
|
'category': 'Sales',
|
||||||
|
'version': '15.0.1.0.0',
|
||||||
|
'application': True,
|
||||||
|
'license': 'LGPL-3',
|
||||||
|
'currency': 'EUR',
|
||||||
|
'price': 0.0,
|
||||||
|
'maintainer': 'Tortecs India',
|
||||||
|
'support': 'tortecs.in@gmail.com',
|
||||||
|
'images': ['static/description/banner.gif'],
|
||||||
|
'depends': ['auth_oauth'],
|
||||||
|
'data': [
|
||||||
|
'data/tt_github_auth.xml',
|
||||||
|
'views/tt_github_oauth_providers_views.xml',
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
from . import tt_github_controller
|
||||||
|
|
@ -0,0 +1,195 @@
|
||||||
|
import json
|
||||||
|
import logging
|
||||||
|
|
||||||
|
import requests
|
||||||
|
import werkzeug
|
||||||
|
from odoo import http, api, SUPERUSER_ID, _
|
||||||
|
from odoo import registry as registry_get
|
||||||
|
from odoo.addons.auth_oauth.controllers.main import OAuthLogin, OAuthController, fragment_to_query_string
|
||||||
|
from odoo.addons.auth_signup.controllers.main import AuthSignupHome as Home
|
||||||
|
from odoo.addons.web.controllers.main import set_cookie_and_redirect, login_and_redirect, ensure_db
|
||||||
|
from odoo.exceptions import AccessDenied
|
||||||
|
from odoo.http import request
|
||||||
|
from werkzeug.exceptions import BadRequest
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class TTAuthLoginHome(Home):
|
||||||
|
@http.route()
|
||||||
|
def web_login(self, *args, **kw):
|
||||||
|
ensure_db()
|
||||||
|
if request.httprequest.method == 'GET' and request.session.uid and request.params.get('redirect'):
|
||||||
|
return request.redirect(request.params.get('redirect'))
|
||||||
|
tt_providers = self.list_providers()
|
||||||
|
|
||||||
|
response = super(OAuthLogin, self).web_login(*args, **kw)
|
||||||
|
if response.is_qweb:
|
||||||
|
error = request.params.get('oauth_error')
|
||||||
|
if error == '1':
|
||||||
|
error = _("You are not allowed to signup on this database.")
|
||||||
|
elif error == '2':
|
||||||
|
error = _("Access Denied")
|
||||||
|
elif error == '3':
|
||||||
|
error = _("Email Already Exist.\nPlease contact your Administrator.")
|
||||||
|
elif error == '4':
|
||||||
|
error = _("Validation End Point either Not present or invalid.\nPlease contact your Administrator")
|
||||||
|
elif error == '5':
|
||||||
|
error = _("Github Oauth Api Failed, For more information please contact Administrator")
|
||||||
|
elif error == '6':
|
||||||
|
error = _("Github Oauth Api Failed,\nClient ID or Client Secret Not present or has been compromised\n"
|
||||||
|
"For more information please contact Administrator")
|
||||||
|
else:
|
||||||
|
error = None
|
||||||
|
response.qcontext['providers'] = tt_providers
|
||||||
|
if error:
|
||||||
|
response.qcontext['error'] = error
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
class TTGitHubOAuthController(OAuthController):
|
||||||
|
|
||||||
|
@http.route('/tt/auth_oauth/signin', type='http', auth='none')
|
||||||
|
@fragment_to_query_string
|
||||||
|
def tt_signin(self, **kw):
|
||||||
|
tt_state = json.loads(kw['state'])
|
||||||
|
tt_user_data = json.loads((kw['user_data']))
|
||||||
|
tt_dbname = tt_state['d']
|
||||||
|
if not http.db_filter([tt_dbname]):
|
||||||
|
return BadRequest()
|
||||||
|
tt_provider = tt_state['p']
|
||||||
|
tt_context = tt_state.get('c', {})
|
||||||
|
tt_registry = registry_get(tt_dbname)
|
||||||
|
with tt_registry.cursor() as cr:
|
||||||
|
try:
|
||||||
|
env = api.Environment(cr, SUPERUSER_ID, tt_context)
|
||||||
|
validation = {
|
||||||
|
'user_id': tt_user_data.get('github_id'),
|
||||||
|
'email': tt_user_data.get('email') or tt_user_data.get('username'),
|
||||||
|
'name': tt_user_data.get('github_name') or tt_user_data.get("username"),
|
||||||
|
}
|
||||||
|
tt_login = env['res.users'].sudo()._auth_oauth_signin(tt_provider, validation, kw)
|
||||||
|
tt_user = env['res.users'].sudo().search([('login', '=', tt_login)])
|
||||||
|
tt_user.write({'git_username': tt_user_data.get('username'),
|
||||||
|
'git_email': tt_user_data.get("email")})
|
||||||
|
tt_credentials = (request.env.cr.dbname, tt_login, kw.get('access_token'))
|
||||||
|
cr.commit()
|
||||||
|
tt_action = tt_state.get('a')
|
||||||
|
tt_menu = tt_state.get('m')
|
||||||
|
redirect = werkzeug.urls.url_unquote_plus(tt_state['r']) if tt_state.get('r') else False
|
||||||
|
url = '/web'
|
||||||
|
# Since /web is hardcoded, verify user has right to land on it
|
||||||
|
if redirect:
|
||||||
|
url = redirect
|
||||||
|
elif tt_action:
|
||||||
|
url = '/web#action=%s' % tt_action
|
||||||
|
elif tt_menu:
|
||||||
|
url = '/web#menu_id=%s' % tt_menu
|
||||||
|
resp = login_and_redirect(*tt_credentials, redirect_url=url)
|
||||||
|
return resp
|
||||||
|
except AttributeError:
|
||||||
|
# auth_signup is not installed
|
||||||
|
_logger.error("auth_signup not installed on database %s: oauth sign up cancelled." % (tt_dbname,))
|
||||||
|
url = "/web/login?oauth_error=1"
|
||||||
|
except AccessDenied:
|
||||||
|
# oauth credentials not valid, user could be on a temporary session
|
||||||
|
_logger.info('OAuth2: access denied, redirect to main page in case a valid session exists,\n'
|
||||||
|
'without setting cookies')
|
||||||
|
url = "/web/login?oauth_error=3"
|
||||||
|
redirect = werkzeug.utils.redirect(url, 303)
|
||||||
|
redirect.autocorrect_location_header = False
|
||||||
|
return redirect
|
||||||
|
except Exception as e:
|
||||||
|
# signup error
|
||||||
|
_logger.exception("OAuth2: %s" % str(e))
|
||||||
|
url = "/web/login?oauth_error=2"
|
||||||
|
return set_cookie_and_redirect(url)
|
||||||
|
|
||||||
|
|
||||||
|
class TTOAuthLogin(OAuthLogin):
|
||||||
|
|
||||||
|
def list_providers(self):
|
||||||
|
try:
|
||||||
|
tt_providers = request.env['auth.oauth.provider'].sudo().search_read([('enabled', '=', True)])
|
||||||
|
except Exception:
|
||||||
|
tt_providers = []
|
||||||
|
for tt_provider in tt_providers:
|
||||||
|
tt_state = self.get_state(tt_provider)
|
||||||
|
if tt_provider.get('name') in ['GitHub', 'github']:
|
||||||
|
params = dict(
|
||||||
|
client_id=tt_provider['client_id'],
|
||||||
|
scope=tt_provider['scope'],
|
||||||
|
state=json.dumps(tt_state),
|
||||||
|
)
|
||||||
|
tt_provider['auth_link'] = "%s?%s" % (tt_provider['auth_endpoint'], werkzeug.urls.url_encode(params))
|
||||||
|
else:
|
||||||
|
return_url = request.httprequest.url_root + 'auth_oauth/signin'
|
||||||
|
params = dict(
|
||||||
|
response_type='token',
|
||||||
|
client_id=tt_provider['client_id'],
|
||||||
|
redirect_uri=return_url,
|
||||||
|
scope=tt_provider['scope'],
|
||||||
|
state=json.dumps(tt_state),
|
||||||
|
)
|
||||||
|
tt_provider['auth_link'] = "%s?%s" % (tt_provider['auth_endpoint'], werkzeug.urls.url_encode(params))
|
||||||
|
return tt_providers
|
||||||
|
|
||||||
|
|
||||||
|
class TTCallbackHandler(http.Controller):
|
||||||
|
|
||||||
|
@http.route(['/oauth/callback'], auth='public', csrf=False, methods=['GET', 'POST'], type='http')
|
||||||
|
def get_oauth_token(self, **post):
|
||||||
|
if post.get('state'):
|
||||||
|
provider = request.env['auth.oauth.provider'].sudo().browse(json.loads(post.get('state')).get('p'))
|
||||||
|
else:
|
||||||
|
provider = request.env.ref('tt_github_oauth_app.tt_provider_github')
|
||||||
|
provider = request.env[provider._name].sudo().browse(provider.id)
|
||||||
|
tt_redirect_url = request.httprequest.url_root + "tt/auth_oauth/signin"
|
||||||
|
if post.get("code"):
|
||||||
|
client_id = provider.client_id
|
||||||
|
client_secret = provider.tt_client_secret
|
||||||
|
if not client_id or not client_secret:
|
||||||
|
r_url = "/web/login?oauth_error=6"
|
||||||
|
_logger.info(
|
||||||
|
'OAuth2: Either of Client ID or Client Secret not present, access denied, redirect to main page in case a valid session exists, without setting cookies')
|
||||||
|
redirect = werkzeug.utils.redirect(r_url, 303)
|
||||||
|
redirect.autocorrect_location_header = False
|
||||||
|
return redirect
|
||||||
|
data = {
|
||||||
|
"client_id": client_id,
|
||||||
|
"client_secret": client_secret,
|
||||||
|
"code": post.get("code")
|
||||||
|
}
|
||||||
|
url = provider.validation_endpoint # "https://github.com/login/oauth/access_token"
|
||||||
|
if "oauth" not in url:
|
||||||
|
r_url = "/web/login?oauth_error=4"
|
||||||
|
_logger.info(
|
||||||
|
'OAuth2: Validation Endpoint not presesnt, access denied, redirect to main page in case a valid session exists, without setting cookies')
|
||||||
|
redirect = werkzeug.utils.redirect(r_url, 303)
|
||||||
|
redirect.autocorrect_location_header = False
|
||||||
|
return redirect
|
||||||
|
response = requests.post(url, json=data)
|
||||||
|
if response.status_code in [200, 201] and response.reason == 'OK':
|
||||||
|
response_data = response.content.decode("UTF-8").split('&')
|
||||||
|
if 'error=' in response_data or 'error=' in response_data[0]:
|
||||||
|
r_url = "/web/login?oauth_error=5"
|
||||||
|
_logger.info(
|
||||||
|
'OAuth2: access denied, redirect to main page in case a valid session exists, without setting cookies. REASON :- %s' % str(
|
||||||
|
response_data[0]))
|
||||||
|
redirect = werkzeug.utils.redirect(r_url, 303)
|
||||||
|
redirect.autocorrect_location_header = False
|
||||||
|
return redirect
|
||||||
|
auth_token = response_data[0].split('=')[1]
|
||||||
|
tt_user_data = requests.get('https://api.github.com/user', auth=('', auth_token)).json()
|
||||||
|
# Todo: update the image of user in odoo
|
||||||
|
params = {
|
||||||
|
'username': tt_user_data.get('login'),
|
||||||
|
'github_id': tt_user_data.get('id'),
|
||||||
|
'github_name': tt_user_data.get('name'),
|
||||||
|
'email': tt_user_data.get('email'),
|
||||||
|
}
|
||||||
|
tt_post_url = 'access_token=%s&state=%s&user_data=%s&provider=%s' % (
|
||||||
|
auth_token, post.get('state'), json.dumps(params), provider.id)
|
||||||
|
tt_redirect_url = "%s?%s" % (tt_redirect_url, tt_post_url)
|
||||||
|
return werkzeug.utils.redirect(tt_redirect_url)
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<data noupdate="0">
|
||||||
|
<record id="tt_provider_github" model="auth.oauth.provider">
|
||||||
|
<field name="name">GitHub</field>
|
||||||
|
<field name="auth_endpoint">https://github.com/login/oauth/authorize</field>
|
||||||
|
<field name="scope">repo,user</field>
|
||||||
|
<field name="enabled">True</field>
|
||||||
|
<field name="validation_endpoint">https://github.com/login/oauth/access_token</field>
|
||||||
|
<field name="css_class">fa fa-fw fa-github</field>
|
||||||
|
<field name="body">Log in with GitHub</field>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
from . import tt_github_oauth_providers
|
||||||
|
from . import tt_users_git_authorisation
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from odoo import models, fields
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class TTAuthProviderInherit(models.Model):
|
||||||
|
_inherit = "auth.oauth.provider"
|
||||||
|
|
||||||
|
tt_client_secret = fields.Char(string="Client Secret")
|
||||||
|
tt_is_github = fields.Boolean(compute='_compute_is_secret_required')
|
||||||
|
tt_user_type = fields.Selection([('internal', 'Internal User'),
|
||||||
|
('portal', 'Portal User')], default="portal", string='User Type')
|
||||||
|
|
||||||
|
def _compute_is_secret_required(self):
|
||||||
|
for rec in self:
|
||||||
|
if rec.auth_endpoint:
|
||||||
|
if 'github' in rec.auth_endpoint:
|
||||||
|
rec.tt_is_github = True
|
||||||
|
else:
|
||||||
|
rec.tt_is_github = False
|
||||||
|
else:
|
||||||
|
rec.tt_is_github = False
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
import logging
|
||||||
|
|
||||||
|
import requests
|
||||||
|
import werkzeug
|
||||||
|
from odoo import models, fields, api, _
|
||||||
|
from odoo.addons.auth_signup.models.res_partner import SignupError
|
||||||
|
from odoo.tools.misc import ustr
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class TTResUsersInherit(models.Model):
|
||||||
|
_inherit = 'res.users'
|
||||||
|
|
||||||
|
oauth_token = fields.Char(string="Oauth Token", readonly=True)
|
||||||
|
git_username = fields.Char(string="Git Username", default="No username")
|
||||||
|
git_email = fields.Char(string="Github Email")
|
||||||
|
|
||||||
|
def tt_github_api_hit(self):
|
||||||
|
tt_provider = self.env.ref('tt_github_oauth_app.tt_provider_github')
|
||||||
|
tt_provider = self.env[tt_provider._name].sudo().browse(tt_provider.id)
|
||||||
|
if tt_provider:
|
||||||
|
if not tt_provider.client_id:
|
||||||
|
r_url = "/web/login?oauth_error=6"
|
||||||
|
_logger.info(
|
||||||
|
'OAuth2: Either of Client ID or Client Secret not present, access denied, redirect to main page in case a valid session exists, without setting cookies')
|
||||||
|
redirect = werkzeug.utils.redirect(r_url, 303)
|
||||||
|
redirect.autocorrect_location_header = False
|
||||||
|
return redirect
|
||||||
|
url = "https://github.com/login/oauth/authorize?client_id=%s&scope=repo,user" % tt_provider.client_id
|
||||||
|
response = requests.get(url)
|
||||||
|
if response.status_code in [200, 201]:
|
||||||
|
return response.url
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _signup_create_user(self, values):
|
||||||
|
""" signup a new user using the template user """
|
||||||
|
|
||||||
|
# check that uninvited users may sign up
|
||||||
|
provider = self.env.ref('tt_github_oauth_app.tt_provider_github')
|
||||||
|
if provider.id == values.get('oauth_provider_id') and provider.tt_user_type == 'internal':
|
||||||
|
if 'partner_id' not in values:
|
||||||
|
if self._get_signup_invitation_scope() != 'b2c':
|
||||||
|
raise SignupError(_('Signup is not allowed for uninvited users'))
|
||||||
|
return self._tt_create_user_from_default_template(values)
|
||||||
|
else:
|
||||||
|
return super(TTResUsersInherit, self)._signup_create_user(values)
|
||||||
|
|
||||||
|
def _tt_create_user_from_default_template(self, values):
|
||||||
|
template_user = self.env.ref('base.default_user')
|
||||||
|
if not template_user.exists():
|
||||||
|
raise ValueError(_('Signup: invalid template user'))
|
||||||
|
if not values.get('login'):
|
||||||
|
raise ValueError(_('Signup: no login given for new user'))
|
||||||
|
if not values.get('partner_id') and not values.get('name'):
|
||||||
|
raise ValueError(_('Signup: no name or partner given for new user'))
|
||||||
|
|
||||||
|
values['active'] = True
|
||||||
|
try:
|
||||||
|
with self.env.cr.savepoint():
|
||||||
|
return template_user.with_context(no_reset_password=True).copy(values)
|
||||||
|
except Exception as e:
|
||||||
|
# copy may fail if asked login is not available.
|
||||||
|
raise SignupError(ustr(e))
|
||||||
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 48 KiB |
|
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 963.43 888.71"><defs><style>.cls-1{fill:none;stroke-width:34.06px;}.cls-1,.cls-2{stroke:#231f20;stroke-miterlimit:10;}.cls-2{fill:#e32235;stroke-width:0.97px;}</style></defs><title>Asset 5</title><g id="Layer_2" data-name="Layer 2"><g id="FAQ"><path class="cls-1" d="M229.72,639.2c-30.22,0-59.2.22-88.18-.08-17.59-.18-35.48.74-52.68-2.13C46.93,630,17,592.89,17,550.41q0-222,.06-444.07c0-49.54,39.38-89.26,88.61-89.27q374.49-.08,749,0c53.24,0,91.64,38.31,91.67,91.39q.1,220.49,0,441c0,50.28-39.09,89.64-89.28,89.7q-164.42.23-328.84-.14c-9.32,0-16,2.41-22.72,9q-107.73,105.75-216,210.92c-9.77,9.55-20.61,15.17-34.5,11.71-16.31-4.06-25.38-16.83-25.39-35.72q0-86.11.09-172.23C229.72,655.17,229.72,647.64,229.72,639.2Z"/><path class="cls-2" d="M756.17,407.55c6.44,6.15,12.46,11.34,17.83,17.13,13.64,14.72,9.36,34.26-9,42.37s-37.27,4.93-51-10.2c-9.31-10.28-18.16-14.58-33.4-13.49-73.92,5.3-123.92-43-124.16-117.19-.07-22.14,3.76-43.29,13.82-63.08,23.53-46.25,73.94-69.38,127.77-58.8,48,9.44,82.65,50.51,86.76,101.92C787.71,343,781.14,377,756.17,407.55ZM720.5,326.19c-2.29-12.71-3.18-23.85-6.41-34.27-6.37-20.62-19.75-30.7-40.14-31.5-20-.78-34.94,7.89-43.21,26.15-11.3,25-11.24,50.42.58,75.16,8,16.81,22.23,25.15,41,24.54,18.6-.6,32.93-8.89,39.68-26.5C716.28,348.69,718,336.63,720.5,326.19Z"/><path class="cls-2" d="M429.86,205.87c4.49,0,9,0,13.48,0,12.86.07,21.8,6.1,26.15,18.14q32.7,90.53,65,181.18c5.35,15.1-2.83,29.75-18.16,34.22-17.69,5.14-41.51-.67-47.45-24.25-6.28-24.93-7.6-24.58-33.9-24.42-9.68.05-19.41.6-29-.18-8.25-.67-11.83,2.74-13.58,10.26-1.48,6.36-4.4,12.39-5.84,18.76-5.48,24.24-44.68,27.69-58.3,11.7-6.67-7.81-8.37-16.69-4.93-26.14q33-90.94,66.46-181.76c4.26-11.58,13.06-17.45,25.53-17.47h14.52Zm14.28,130.46-15-45.64-2.24.17c-4.82,14.84-9.64,29.68-14.78,45.47Z"/><path class="cls-2" d="M242.81,262.82v36.49c13.84,0,27.21-.07,40.58,0,18.69.11,30,10.84,29.92,28.17C313.2,344.34,302,354.86,283.9,355c-13.4.08-26.8,0-41.54,0,0,18.12.17,35.27,0,52.42-.26,21.23-13,33.52-33.87,33-18-.46-30.32-11.54-30.46-29.8q-.7-89.16,0-178.33c.11-16.06,11.43-26.23,27.36-26.31q42.49-.22,85,0c17.91.09,29.17,11.05,29.14,27.89s-11.22,27.59-29.21,27.74c-14.85.12-29.71.13-44.57.23C245.08,261.81,244.46,262.23,242.81,262.82Z"/></g></g></svg>
|
||||||
|
After Width: | Height: | Size: 2.2 KiB |
|
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><defs><style>.cls-1{fill:#010101;}.cls-2{fill:#e32235;}</style></defs><title>Hot-Features-icon</title><g id="Hot-Features-icon"><g id="surface1"><path class="cls-1" d="M78.35,829.47h32.43V797H78.35A32.44,32.44,0,0,1,45.91,764.6V115.91A32.44,32.44,0,0,1,78.35,83.47H791.91a32.44,32.44,0,0,1,32.44,32.44v32.43h32.43V115.91A64.87,64.87,0,0,0,791.91,51H78.35a64.87,64.87,0,0,0-64.87,64.87V764.6A64.87,64.87,0,0,0,78.35,829.47Z"/><path class="cls-1" d="M78.35,115.91h32.43v32.43H78.35Z"/><path class="cls-1" d="M143.22,115.91h32.43v32.43H143.22Z"/><path class="cls-1" d="M208.09,115.91h32.43v32.43H208.09Z"/><path class="cls-1" d="M143.22,894.34a64.87,64.87,0,0,0,64.87,64.87H921.65a64.87,64.87,0,0,0,64.87-64.87V245.65a64.87,64.87,0,0,0-64.87-64.87H208.09a64.87,64.87,0,0,0-64.87,64.87Zm32.43-648.69a32.44,32.44,0,0,1,32.44-32.44H921.65a32.44,32.44,0,0,1,32.44,32.44V894.34a32.44,32.44,0,0,1-32.44,32.44H208.09a32.44,32.44,0,0,1-32.44-32.44Z"/><path class="cls-1" d="M208.09,245.65h32.43v32.43H208.09Z"/><path class="cls-1" d="M273,245.65h32.43v32.43H273Z"/><path class="cls-1" d="M337.83,245.65h32.43v32.43H337.83Z"/><path class="cls-1" d="M208.09,310.52H921.65V343H208.09Z"/><path class="cls-1" d="M208.09,391.6H337.83V424H208.09Z"/><path class="cls-1" d="M208.09,456.47h97.3v32.44h-97.3Z"/><path class="cls-2" d="M564.87,521.34A113.53,113.53,0,1,0,678.39,634.86,113.51,113.51,0,0,0,564.87,521.34Zm0,194.61A81.09,81.09,0,1,1,646,634.86,81.09,81.09,0,0,1,564.87,716Z"/><path class="cls-2" d="M824.35,586.21A16.21,16.21,0,0,0,808.13,570H765.27a206.88,206.88,0,0,0-12.83-31l30.31-30.29a16.25,16.25,0,0,0,0-22.94L713.94,417A16.25,16.25,0,0,0,691,417l-30.29,30.3a209.05,209.05,0,0,0-31-12.81V391.6a16.21,16.21,0,0,0-16.22-16.21h-97.3A16.21,16.21,0,0,0,500,391.6v42.87a209.17,209.17,0,0,0-31,12.81L438.73,417a16.24,16.24,0,0,0-22.93,0L347,485.79a16.23,16.23,0,0,0,0,22.94L377.28,539c-1.35,2.66-2.66,5.32-3.89,8a209.77,209.77,0,0,0-8.92,23H321.61a16.21,16.21,0,0,0-16.22,16.21v97.31a16.21,16.21,0,0,0,16.22,16.21h42.86a206.88,206.88,0,0,0,12.83,31L347,761a16.22,16.22,0,0,0,0,22.93l68.81,68.82a16.24,16.24,0,0,0,22.93,0L469,822.45a210.25,210.25,0,0,0,31,12.81v42.87a16.21,16.21,0,0,0,16.22,16.21h97.3a16.21,16.21,0,0,0,16.22-16.21V835.26a210.13,210.13,0,0,0,31-12.81L691,852.75a16.25,16.25,0,0,0,22.94,0l68.81-68.82a16.24,16.24,0,0,0,0-22.93l-30.31-30.29a206.88,206.88,0,0,0,12.83-31h42.86a16.21,16.21,0,0,0,16.22-16.21ZM791.91,667.3H753.09a16.22,16.22,0,0,0-15.7,12.16,177.35,177.35,0,0,1-19,45.87,16.22,16.22,0,0,0,2.49,19.7l27.42,27.44-45.86,45.88L675,790.91a16.22,16.22,0,0,0-19.71-2.5,177,177,0,0,1-45.85,19,16.21,16.21,0,0,0-12.17,15.69v38.83H532.43V823.08a16.2,16.2,0,0,0-12.16-15.69,177,177,0,0,1-45.85-19,16.24,16.24,0,0,0-19.72,2.5l-27.43,27.44-45.86-45.88L408.83,745a16.22,16.22,0,0,0,2.49-19.7,177.35,177.35,0,0,1-19-45.87,16.22,16.22,0,0,0-15.7-12.16H337.83V602.43h38.82a16.22,16.22,0,0,0,15.7-12.16,176.88,176.88,0,0,1,10.54-29.73,180.32,180.32,0,0,1,8.43-16.21,16.23,16.23,0,0,0-2.49-19.69L381.41,497.2l45.86-45.88,27.43,27.44a16.22,16.22,0,0,0,19.72,2.49,177,177,0,0,1,45.85-19,16.21,16.21,0,0,0,12.16-15.69V407.82H597.3v38.83a16.21,16.21,0,0,0,12.17,15.69,177,177,0,0,1,45.85,19,16.22,16.22,0,0,0,19.71-2.5l27.44-27.44,45.86,45.88L720.91,524.7a16.22,16.22,0,0,0-2.49,19.7,177.35,177.35,0,0,1,19,45.87,16.22,16.22,0,0,0,15.7,12.16h38.82Z"/><path class="cls-1" d="M824.35,861.91h97.3v32.43h-97.3Z"/></g></g></svg>
|
||||||
|
After Width: | Height: | Size: 3.4 KiB |
|
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><defs><style>.cls-1{fill:#010101;}.cls-2{fill:#e32235;}</style></defs><title>Odoo-Community-Apps</title><g id="Layer_3" data-name="Layer 3"><path class="cls-1" d="M60.63,299.32V143.88a24.55,24.55,0,0,1,24.55-24.55H916.12a24.56,24.56,0,0,1,24.55,24.55V737.41A24.55,24.55,0,0,1,916.12,762H619.35a24.55,24.55,0,0,1,0-49.1H891.57V168.43H109.73v130.9a24.55,24.55,0,0,1-49.1,0ZM975.45,831.57H25.84a24.55,24.55,0,0,0,0,49.1H975.45a24.55,24.55,0,0,0,0-49.1ZM85.18,441.42A24.55,24.55,0,0,0,60.63,466V737.41A24.55,24.55,0,0,0,85.18,762H381.94a24.55,24.55,0,0,0,0-49.1H109.73V466A24.55,24.55,0,0,0,85.18,441.42ZM500.65,710.27a27.14,27.14,0,1,1-27.15,27.14,27.14,27.14,0,0,1,27.15-27.14Z"/><rect class="cls-2" x="238.61" y="271.8" width="205.89" height="56.76"/><rect class="cls-2" x="238.61" y="421.81" width="205.89" height="56.76"/><rect class="cls-2" x="238.61" y="571.82" width="205.89" height="56.76"/><rect class="cls-2" x="558.61" y="231.8" width="205.89" height="56.76"/><rect class="cls-2" x="558.61" y="341.81" width="205.89" height="56.76"/><rect class="cls-2" x="558.61" y="461.82" width="205.89" height="56.76"/><rect class="cls-2" x="558.61" y="581.8" width="205.89" height="56.76"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
|
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><defs><style>.cls-1{fill:#010101;}.cls-2{fill:#e32235;}</style></defs><title>Odoo-Customization</title><g id="Layer_2" data-name="Layer 2"><g id="surface1"><path class="cls-1" d="M79.67,839.4h32.44V807H79.67a32.43,32.43,0,0,1-32.43-32.44V125.84A32.43,32.43,0,0,1,79.67,93.4H793.24a32.43,32.43,0,0,1,32.43,32.44v32.43h32.44V125.84A64.88,64.88,0,0,0,793.24,61H79.67A64.88,64.88,0,0,0,14.8,125.84V774.53A64.87,64.87,0,0,0,79.67,839.4Z"/><path class="cls-1" d="M79.67,125.84h32.44v32.43H79.67Z"/><path class="cls-1" d="M144.54,125.84H177v32.43H144.54Z"/><path class="cls-1" d="M209.41,125.84h32.44v32.43H209.41Z"/><path class="cls-1" d="M144.54,904.27a64.87,64.87,0,0,0,64.87,64.87H923a64.87,64.87,0,0,0,64.87-64.87V255.58A64.87,64.87,0,0,0,923,190.71H209.41a64.87,64.87,0,0,0-64.87,64.87ZM177,255.58a32.43,32.43,0,0,1,32.43-32.44H923a32.43,32.43,0,0,1,32.43,32.44V904.27A32.43,32.43,0,0,1,923,936.71H209.41A32.43,32.43,0,0,1,177,904.27Z"/><path class="cls-1" d="M209.41,255.58h32.44V288H209.41Z"/><path class="cls-1" d="M274.28,255.58h32.44V288H274.28Z"/><path class="cls-1" d="M339.15,255.58h32.43V288H339.15Z"/><path class="cls-1" d="M209.41,320.45H923v32.43H209.41Z"/><path class="cls-1" d="M209.41,401.53H339.15V434H209.41Z"/><path class="cls-1" d="M209.41,466.4h97.31v32.44H209.41Z"/><path class="cls-2" d="M566.19,531.27A113.53,113.53,0,1,0,679.72,644.8,113.52,113.52,0,0,0,566.19,531.27Zm0,194.61a81.09,81.09,0,1,1,81.09-81.08A81.08,81.08,0,0,1,566.19,725.88Z"/><path class="cls-2" d="M825.67,596.14a16.21,16.21,0,0,0-16.22-16.21H766.59a204.8,204.8,0,0,0-12.83-31l30.31-30.29a16.22,16.22,0,0,0,0-22.93l-68.81-68.82a16.24,16.24,0,0,0-22.93,0L662,457.21a210.25,210.25,0,0,0-31-12.81V401.53a16.2,16.2,0,0,0-16.21-16.21H517.54a16.21,16.21,0,0,0-16.22,16.21V444.4a210.58,210.58,0,0,0-31,12.81l-30.29-30.3a16.25,16.25,0,0,0-22.94,0l-68.81,68.82a16.24,16.24,0,0,0,0,22.93L378.61,549c-1.36,2.66-2.66,5.32-3.9,8a209.71,209.71,0,0,0-8.91,23H322.93a16.2,16.2,0,0,0-16.21,16.21v97.31a16.2,16.2,0,0,0,16.21,16.21H365.8a205.79,205.79,0,0,0,12.82,31l-30.31,30.29a16.25,16.25,0,0,0,0,22.94l68.81,68.81a16.25,16.25,0,0,0,22.94,0l30.29-30.3a209.5,209.5,0,0,0,31,12.81v42.87a16.21,16.21,0,0,0,16.22,16.21h97.31a16.2,16.2,0,0,0,16.21-16.21V845.19a209.17,209.17,0,0,0,31-12.81l30.29,30.3a16.24,16.24,0,0,0,22.93,0l68.81-68.81a16.23,16.23,0,0,0,0-22.94l-30.31-30.29a204.8,204.8,0,0,0,12.83-31h42.86a16.21,16.21,0,0,0,16.22-16.21Zm-32.43,81.09H754.41a16.23,16.23,0,0,0-15.7,12.16,177.35,177.35,0,0,1-19,45.87,16.21,16.21,0,0,0,2.5,19.7l27.42,27.44-45.87,45.88-27.43-27.44a16.22,16.22,0,0,0-19.71-2.5,177,177,0,0,1-45.86,19A16.21,16.21,0,0,0,598.63,833v38.83H533.76V833a16.21,16.21,0,0,0-12.16-15.69,177,177,0,0,1-45.86-19,16.22,16.22,0,0,0-19.71,2.5l-27.44,27.44L382.73,782.4,410.15,755a16.22,16.22,0,0,0,2.5-19.7,177.38,177.38,0,0,1-19-45.87A16.22,16.22,0,0,0,378,677.23H339.15V612.36H378a16.22,16.22,0,0,0,15.7-12.16,180.41,180.41,0,0,1,19-45.94,16.23,16.23,0,0,0-2.5-19.69l-27.42-27.44,45.86-45.88L456,488.7a16.2,16.2,0,0,0,19.71,2.48,177.29,177.29,0,0,1,45.86-19,16.23,16.23,0,0,0,12.16-15.69V417.75h64.87v38.83a16.21,16.21,0,0,0,12.16,15.69,177,177,0,0,1,45.86,19,16.22,16.22,0,0,0,19.71-2.5l27.43-27.44,45.87,45.88-27.42,27.44a16.21,16.21,0,0,0-2.5,19.7,177.35,177.35,0,0,1,19,45.87,16.23,16.23,0,0,0,15.7,12.16h38.83Z"/><path class="cls-1" d="M825.67,871.84H923v32.43H825.67Z"/></g></g></svg>
|
||||||
|
After Width: | Height: | Size: 3.4 KiB |
|
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><defs><style>.cls-1{fill:#010101;}.cls-2{fill:#e42135;}</style></defs><title>Odoo-Developer-Outsourcing</title><g id="Layer_6" data-name="Layer 6"><path class="cls-1" d="M870.11,554.82H854.48a98.15,98.15,0,0,0,20.36-59.94V467.54a98.69,98.69,0,1,0-197.37,0v21.25L531.73,343.05a29.2,29.2,0,0,0-30.66-6.83,29.2,29.2,0,0,0-30.66,6.83L324.67,488.79V467.54a98.69,98.69,0,0,0-197.38,0v27.34a98.15,98.15,0,0,0,20.37,59.94H132A127,127,0,0,0,5.13,681.71V938.39a19.38,19.38,0,0,0,19.38,19.38h81.84a19.64,19.64,0,0,0,5.57-.82,19.75,19.75,0,0,0,5.57.82h217a19.38,19.38,0,0,0,19.38-19.38V872.53a19.38,19.38,0,0,0-38.75,0V919H136.87V698.28a19.38,19.38,0,0,0-38.75,0V919H43.88V681.71A88.24,88.24,0,0,1,132,593.57H266.66a19.32,19.32,0,0,0,13.66-5.64l0,0L481.58,386.67a213.28,213.28,0,0,1-36.39,112.49L318.4,687.46a19.34,19.34,0,0,0-3.31,10.82v21.21a19.38,19.38,0,0,0,38.75,0v-15.3L477.32,520.8a253.1,253.1,0,0,0,23.75-44.18,253.72,253.72,0,0,0,23.74,44.18L648.3,704.19v234.2a19.38,19.38,0,0,0,19.37,19.38h217a19.69,19.69,0,0,0,5.57-.82,19.64,19.64,0,0,0,5.57.82h81.85A19.38,19.38,0,0,0,997,938.39V681.71A127,127,0,0,0,870.11,554.82ZM285.92,494.88a59.94,59.94,0,0,1-119.88,0V467.54a59.94,59.94,0,1,1,119.88,0Zm430.29-27.34a59.95,59.95,0,1,1,119.89,0v27.34a59.95,59.95,0,0,1-119.89,0ZM958.26,919H904V775.67a19.37,19.37,0,1,0-38.74,0V919H687V698.28a19.39,19.39,0,0,0-3.3-10.82L557,499.17a213.25,213.25,0,0,1-36.39-112.5L721.77,587.89c.26.26.5.47.73.67a19.32,19.32,0,0,0,13,5H870.11a88.25,88.25,0,0,1,88.15,88.14V919Z"/><path class="cls-1" d="M898.33,684.58A19.35,19.35,0,1,0,904,698.27,19.46,19.46,0,0,0,898.33,684.58Z"/><path class="cls-1" d="M348.16,787.15a19.36,19.36,0,1,0,5.68,13.7A19.52,19.52,0,0,0,348.16,787.15Z"/><path class="cls-2" d="M747.66,147.87a19.21,19.21,0,0,0-27.13-1.2L590.38,265.73l-83.11-72a19.19,19.19,0,0,0-25.15,0L338.71,317.91a19.21,19.21,0,1,0,25.14,29L494.69,233.63,578.15,306a19.2,19.2,0,0,0,25.54-.35L746.46,175A19.22,19.22,0,0,0,747.66,147.87Z"/><path class="cls-2" d="M814.35,84.57a19.23,19.23,0,0,0-17.18-5.34L688.33,99.72a19.21,19.21,0,0,0-10,32.46L766,219.89A19.21,19.21,0,0,0,798.44,210l21.13-108.2A19.22,19.22,0,0,0,814.35,84.57ZM767.64,167.2l-36.46-36.46,45.25-8.52Z"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 2.2 KiB |
|
|
@ -0,0 +1 @@
|
||||||
|
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><defs><style>.cls-1{fill:#010101;}.cls-2{fill:#e32235;}</style></defs><title>Odoo-Implementation</title><path class="cls-1" d="M335.81,5.77C199,5.77,88.06,116.69,88.06,253.52V435.19A115.77,115.77,0,0,0,203.68,550.81h16.51v-33H203.68a82.67,82.67,0,0,1-82.58-82.58V253.52c0-118.59,96.12-214.71,214.71-214.71s214.71,96.12,214.71,214.71V435.19a82.68,82.68,0,0,1-82.58,82.58H451.42v33h16.52A115.75,115.75,0,0,0,583.55,435.19V253.52C583.55,116.69,472.63,5.77,335.81,5.77Z"/><path class="cls-1" d="M141.59,784.16l12.08-19-27.9-17.7-12.07,19a164.63,164.63,0,0,0,6.82,186.36v43.91h33V947.19a16.49,16.49,0,0,0-3.62-10.32A131.6,131.6,0,0,1,141.59,784.16Z"/><path class="cls-2" d="M913.87,5.77H699.16a82.69,82.69,0,0,0-82.58,82.58V253.52a82.69,82.69,0,0,0,82.58,82.58h33v66.06a16.52,16.52,0,0,0,28.2,11.68l77.74-77.74h75.74a82.68,82.68,0,0,0,82.58-82.58V88.35A82.68,82.68,0,0,0,913.87,5.77Zm49.55,247.75a49.54,49.54,0,0,1-49.55,49.54H831.29a16.56,16.56,0,0,0-11.68,4.84l-54.38,54.39V319.58a16.52,16.52,0,0,0-16.52-16.52H699.16a49.55,49.55,0,0,1-49.55-49.54V88.35a49.55,49.55,0,0,1,49.55-49.54H913.87a49.54,49.54,0,0,1,49.55,49.54Z"/><rect class="cls-2" x="699.16" y="88.35" width="115.61" height="33.03"/><rect class="cls-2" x="847.81" y="88.35" width="66.06" height="33.03"/><rect class="cls-2" x="699.16" y="154.42" width="214.71" height="33.03"/><rect class="cls-2" x="699.16" y="220.48" width="115.61" height="33.03"/><path class="cls-1" d="M557.92,766.47l-12.08-19L518,765.15l12.07,19a131.55,131.55,0,0,1-8.34,152.69,16.54,16.54,0,0,0-3.62,10.32v49.55h33V952.83A164.65,164.65,0,0,0,557.92,766.47Z"/><path class="cls-1" d="M979.94,567.32H831.29A115.61,115.61,0,0,0,715.91,678.23l-49.78,89.61V699.45A115.74,115.74,0,0,0,550.52,583.84H490.15l-.45-.35-.29.35h-38a33,33,0,0,1-33-33V511.94A165.16,165.16,0,0,0,501,369.13V237a165.64,165.64,0,0,0-19.82-78.39,16.52,16.52,0,0,0-21.47-7.1L180.13,283.05A16.49,16.49,0,0,0,170.65,298v71.14a165.11,165.11,0,0,0,82.58,142.81v38.87a33,33,0,0,1-33,33H121.1A115.75,115.75,0,0,0,5.48,699.45V996.74h33V699.45a82.67,82.67,0,0,1,82.58-82.58h52.55L322.38,824.68a16.5,16.5,0,0,0,13.21,6.9h.22A16.52,16.52,0,0,0,349,825l156.9-208.1h44.6a82.69,82.69,0,0,1,82.58,82.58V831.58a16.52,16.52,0,0,0,30.95,8l77.86-140.14h94.68l-161,297.29h37.57l161.1-297.29h6.61A115.74,115.74,0,0,0,996.45,583.84,16.52,16.52,0,0,0,979.94,567.32ZM203.68,369.13V308.48l255-120A132.13,132.13,0,0,1,467.94,237V369.13a132.13,132.13,0,0,1-264.26,0ZM336.15,787.19l-51-71.22H389.83Zm78.67-104.25H261.48L214.2,616.87h6a66.07,66.07,0,0,0,66.07-66.06V526.68a165,165,0,0,0,99.09,0v24.13a66.07,66.07,0,0,0,66.07,66.06h13.21Zm466-16.52H750.36a82.73,82.73,0,0,1,80.93-66.07H961.77A82.72,82.72,0,0,1,880.84,666.42Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 2.7 KiB |
|
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><defs><style>.cls-1{fill:#040305;}.cls-2{fill:#e32235;}</style></defs><title>Odoo-Integration-Services</title><g id="Layer_5" data-name="Layer 5"><path class="cls-1" d="M864.29,359.32V323.43L997,317.26V250.68l-132.71-6.17V216.89H760.52V95.1A50.13,50.13,0,0,0,710.5,45H290.87A50.14,50.14,0,0,0,240.81,95.1V216.89H137.08v27.62L4.41,250.68v66.58l132.67,6.17v35.89H240.82V436.7H137.08v27.56L4.41,470.44V537l132.67,6.2v35.9H240.82v85.67H137.08v27.62L4.41,698.56v66.57l132.67,6.18V807.2H240.82V912.45a50.08,50.08,0,0,0,50.06,50H710.5a50.07,50.07,0,0,0,50-50V807.2H864.29V771.31L997,765.13V698.56l-132.71-6.18V664.76H760.52V579.09H864.29v-35.9L997,537V470.44l-132.71-6.18V436.7H760.52V359.32ZM970.68,723.65V740L838,746.15v34.69h-73.3V691.06H838v26.42ZM838,518.16v34.63h-73.3V463H838v26.44l132.71,6.18V512ZM970.68,275.81v16.35L838,298.34V333h-73.3V243.19H838v26.42ZM710.5,936.13H290.87a23.76,23.76,0,0,1-23.74-23.71V95.1a23.78,23.78,0,0,1,23.74-23.78H710.49A23.77,23.77,0,0,1,734.2,95.1V912.42A23.74,23.74,0,0,1,710.5,936.13ZM30.69,740V723.65l132.71-6.19V691h73.32v89.78H163.4V746.14Zm0-228V495.58L163.4,489.4V463h73.32v89.79H163.4V518.13Zm0-219.8V275.81l132.71-6.18V243.21h73.32V333H163.4V298.36Z"/><circle class="cls-2" cx="332.82" cy="142.97" r="32.5"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
|
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><defs><style>.cls-1{fill:#010101;}.cls-2{fill:#e32235;}</style></defs><title>Odoo-Support-Maintenance</title><g id="Layer_4" data-name="Layer 4"><path class="cls-1" d="M435.7,320.68A49.37,49.37,0,0,0,386.39,370h32.88a16.44,16.44,0,1,1,32.87,0H485A49.37,49.37,0,0,0,435.7,320.68Z"/><path class="cls-1" d="M567.2,320.68A49.37,49.37,0,0,0,517.89,370h32.87a16.44,16.44,0,1,1,32.87,0h32.88A49.37,49.37,0,0,0,567.2,320.68Z"/><path class="cls-2" d="M501.45,764.46a65.75,65.75,0,1,0,65.75,65.75A65.82,65.82,0,0,0,501.45,764.46Zm0,98.62a32.87,32.87,0,1,1,32.87-32.87A32.9,32.9,0,0,1,501.45,863.08Z"/><path class="cls-1" d="M895.93,961.7V748c0-135.95-110.6-246.55-246.55-246.55h-17.9A199.27,199.27,0,0,0,648.05,485h17.77A82.28,82.28,0,0,0,748,402.86v-29a73.84,73.84,0,0,0-.2-123C745.62,116.83,636.05,8.38,501.45,8.38S257.28,116.83,255.1,250.9A73.92,73.92,0,0,0,296,386.42h11.2a196.85,196.85,0,0,0,64.25,115.06H353.52C217.57,501.48,107,612.08,107,748V961.7H8.35v32.88h986.2V961.7ZM715.13,402.86a49.23,49.23,0,0,1-42.72,48.64,195.55,195.55,0,0,0,23.31-65.08h11.19a69.77,69.77,0,0,0,8.22-.84ZM748,312.46a41.14,41.14,0,0,1-41.09,41.09h-8.22V271.37h8.22A41.14,41.14,0,0,1,748,312.46ZM304.21,353.55H296a41.09,41.09,0,0,1,0-82.18h8.22ZM296,238.49a70.55,70.55,0,0,0-7.43.76c8.09-110.5,100.37-198,212.89-198s204.8,87.5,212.89,198a70,70,0,0,0-7.43-.76H695.72C680,145.36,599,74.13,501.45,74.13S322.9,145.36,307.19,238.49ZM665.8,271c-118.62-4.18-197.22-52.68-197.22-98.21a16.44,16.44,0,0,0-32.88,0c0,41.07-42.47,75.11-97.66,81.14C346.8,171.45,416.74,107,501.45,107,591.93,107,665.57,180.52,665.8,271ZM337.08,353.55V286.88C388.42,282.43,432,257.67,453.72,223c34.38,45.56,114.74,77.63,212.1,80.9v49.64a163.34,163.34,0,0,1-33.19,98.62H501.45V485h98.19a163.49,163.49,0,0,1-166,18.08C376.81,477.25,337.08,420,337.08,353.55ZM450.65,543.92a191.29,191.29,0,0,0,101.61,0L501.45,645.53Zm24.21,121.93h-29l-65.74-131.5h29Zm118.93-131.5h29L557,665.85h-29ZM189.15,748V961.7h-49.3V748c0-114.48,90.56-207.94,203.76-213.17l65.5,131H271.34A82.27,82.27,0,0,0,189.15,748ZM780.87,961.7H222V748a49.37,49.37,0,0,1,49.31-49.31H731.56A49.37,49.37,0,0,1,780.87,748Zm82.19,0H813.75V748a82.27,82.27,0,0,0-82.19-82.18H593.79l65.5-131c113.2,5.23,203.77,98.69,203.77,213.17Z"/><rect class="cls-2" x="715.13" y="813.77" width="32.87" height="115.06"/><rect class="cls-2" x="715.13" y="748.03" width="32.87" height="32.87"/><rect class="cls-2" x="863.06" y="156.31" width="32.87" height="32.87"/><rect class="cls-2" x="863.06" y="222.06" width="32.87" height="32.87"/><rect class="cls-2" x="863.06" y="287.8" width="32.87" height="32.87"/><rect class="cls-2" x="106.97" y="353.55" width="32.87" height="32.87"/><rect class="cls-2" x="106.97" y="419.3" width="32.87" height="32.87"/><rect class="cls-2" x="106.97" y="485.04" width="32.87" height="32.87"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 2.8 KiB |
|
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><defs><style>.cls-1{fill:none;stroke:#e32235;stroke-miterlimit:10;stroke-width:50px;}.cls-2{fill:#231f20;}</style></defs><title>Screenshot-icon</title><g id="ScreenShot-icon"><path d="M990.24,16.26V440.89H922.75V159.69H81.31V928.27h356.8v68H9.18v-980ZM109.58,49.51C91,50.27,79.07,60.81,79.14,82.13c.07,19.68,11.1,31.64,30.52,32.52,20.66.94,32.89-10.69,34.58-31.39C145.76,64.59,131.07,49.89,109.58,49.51ZM250.22,77.79c-2.38-17.12-13.5-28.88-34.5-28.21-19.91.64-30.42,12.2-30.94,32.05-.51,19.13,14,33.59,32.84,33.38S250.76,99.89,250.22,77.79Zm71.25-28.38c-18.9.82-30.83,11.46-30.72,32.79.1,19.69,11.15,31,30.66,32.67,18.63,1.59,34-13,34.72-31.67C356.81,64.35,342.73,49.73,321.47,49.41Z"/><circle class="cls-1" cx="718.46" cy="724.42" r="189.5"/><rect class="cls-2" x="887.81" y="659.88" width="40.3" height="152.59" transform="translate(1644.13 -171.78) rotate(90)"/><rect class="cls-2" x="505.81" y="659.88" width="40.3" height="152.59" transform="translate(1262.13 210.22) rotate(90)"/><rect class="cls-2" x="698.31" y="835.74" width="40.3" height="152.59" transform="translate(1436.92 1824.06) rotate(180)"/><rect class="cls-2" x="698.31" y="458.63" width="40.3" height="152.59" transform="translate(1436.92 1069.85) rotate(180)"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
|
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><defs><style>.cls-1,.cls-2{fill:none;stroke-miterlimit:10;stroke-width:35px;}.cls-1{stroke:#231f20;}.cls-2{stroke:#e32235;}</style></defs><title>Setup-icon</title><g id="Setup-icon"><path class="cls-1" d="M549.86,479.74A78.17,78.17,0,0,1,640.36,494l31.7-31.69A223.27,223.27,0,0,0,966.38,215.69a20.34,20.34,0,0,0-34.45-11.14l-47.06,47.07a98.15,98.15,0,0,1-138.8-138.8l47.07-47.06A20.33,20.33,0,0,0,782,31.31,222.88,222.88,0,0,0,588.22,93.77c-63.63,63.63-80.76,156.11-51.49,235.34L468,397.85Z"/><path class="cls-1" d="M424.6,604.3l-81.54-81.53L57.94,807.88A94.93,94.93,0,0,0,192.2,942.13L438,696.35A78.18,78.18,0,0,1,424.6,604.3Z"/><path class="cls-2" d="M606.45,528.18a29.88,29.88,0,0,0-42.23,0l-17,17L244,242l14.17-14.17a29.87,29.87,0,0,0-3.41-45.16l-123.7-91.1a29.86,29.86,0,0,0-38.82,2.93L39.72,147a29.86,29.86,0,0,0-2.93,38.82l91.1,123.7A29.87,29.87,0,0,0,173.05,313l14.18-14.18L490.41,602,472.2,620.2a29.85,29.85,0,0,0,0,42.23l279.69,279.7A94.93,94.93,0,0,0,886.15,807.88Z"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 1.0 KiB |
|
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><defs><style>.cls-1{fill:#e32235;}</style></defs><title>WorkFlow-icon</title><g id="Workflow-icon"><path class="cls-1" d="M185.58,835.55c-6.66-8-12.25-14.63-17.74-21.34-12.15-14.8-11.4-35.26,1.64-46.39,13.21-11.27,33.07-8.79,46,5.75,20.29,22.82,40.3,45.9,61,68.39,14.13,15.38,12.81,37.2.28,52.3-19.91,24-41.08,47-62.09,70C201,979.17,183.4,979.54,168,966.06c-12.48-10.91-13-29.17-1.23-43.71,5.87-7.23,11.84-14.35,19.2-23.26H47c-21.81,0-35.48-13.3-35.49-35q-.11-176.45,0-352.89c0-21.49,13.33-35,34.42-35q103.82-.07,207.64,0c15.14,0,27.71,9.17,31.82,22.63,3.86,12.64-1.28,27.82-13.4,34.64a43.43,43.43,0,0,1-20.25,5.12c-55.56.42-111.13.27-166.69.3H75.37V835.55Z"/><path class="cls-1" d="M815.41,538.92c7.52,9.13,13.56,16.27,19.38,23.59,11.43,14.39,9.9,33.81-3.45,45.49-13.56,11.87-31.31,10.87-44.27-3.35q-32.49-35.67-64.21-72c-10.9-12.44-10.36-34,.68-46.49q32.33-36.5,64.75-72.89c12-13.47,28.86-14.79,43.47-3.35,13.28,10.4,15.6,28.37,5,42.56-6.15,8.25-13,16-20.5,25.06H926.52V181.34H880.28c-44.2,0-88.41.1-132.61-.07-15.93-.06-29.06-10.59-32.06-24.89a31.25,31.25,0,0,1,18.4-35,37.4,37.4,0,0,1,14.16-2.72q103.85-.23,207.69,0C978.07,118.67,990,131,990,153.26q.06,174.54,0,349.09c0,23.7-12.28,36.34-35.73,36.45-42.57.18-85.15.1-127.73.12Z"/><path d="M502,372.45q68.73,0,137.44,0c22.86,0,34.36,11.11,34.41,33.93q.23,102.35,0,204.71c0,20.3-14.13,34.26-34.43,34.28q-137,.07-273.92,0c-25.6,0-37.91-12.88-37.88-38.66.06-65.64.44-131.28-.22-196.91-.21-20.47,13.09-38.19,37.12-37.64C410.32,373.2,456.16,372.45,502,372.45ZM609.86,581.61V435.8H391.69V581.61Z"/><path d="M499.79,285q-68.7,0-137.4,0c-21.42,0-34.65-13.09-34.69-34.49q-.15-101.36,0-202.7c0-22.39,13.43-35.62,35.91-35.63q137.42-.08,274.82,0c23,0,35.38,12.4,35.41,35.68q.12,100.86,0,201.72c0,22.8-12.81,35.41-35.67,35.43Q569,285,499.79,285ZM610.18,76H391.5V222H610.18Z"/><path d="M500.74,717.83q69.19,0,138.37,0c22.7,0,34.69,12,34.73,35q.13,101.34,0,202.69c0,21.83-13.5,35.15-35.37,35.16q-137.4.08-274.81,0c-22.49,0-36-13.35-36-35.59-.05-66.92.35-133.83-.24-200.74-.17-19.77,13.39-37.4,36.89-36.83C409.77,718.61,455.27,717.83,500.74,717.83ZM609.88,927.18V781H391.49V927.18Z"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
|
@ -0,0 +1 @@
|
||||||
|
<svg id="Description-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><defs><style>.cls-1{fill:#e32235;}</style></defs><title>Description-icon</title><path d="M196.89,977.58H590.38c5.28-3.59,11.29-6.46,15.73-10.9Q715.84,857.11,825.24,747.22a32.84,32.84,0,0,0,10.18-24.87c-.26-39.67-.07-79.35-.08-119q0-231.06-.19-462.12C835,89,798.44,42.56,748.3,29c-5.6-1.52-11.24-2.87-16.86-4.3H196.89c-12.28,3.92-25.37,6.24-36.69,12.05-47.1,24.16-67.82,63.68-67.62,116.48.6,158.15.24,316.3.26,474.45,0,78.45-.59,156.91.32,235.35.6,51.48,36.52,96.12,85.91,110.07C185,974.71,191,976.08,196.89,977.58Zm356.6-59.79c-2.75.21-4,.39-5.2.39q-168.37,0-336.76-.08C177.4,918,152,891.44,152,856.46q-.09-354.91,0-709.81c0-37.12,25.25-62.47,62.29-62.53q133.13-.2,266.25-.09,117.82,0,235.64.06c33.25.08,60,26.11,60,58.31q.09,272.12-.08,544.22c0,2.64-.35,5.28-.55,8.24h-12q-88.59,0-177.19,0c-21.34,0-32.93,12-32.92,33.65q.06,67.46,0,134.89ZM613.4,873V754.65H731.09Z"/><path class="cls-1" d="M464.14,523.59q-87.64,0-175.28,0c-14.58,0-25.2,8-29.29,21.2-3.68,11.86.11,25.33,10.82,31.94a40,40,0,0,0,19.87,5.8c97.69.36,195.38.25,293.07.25q26.43,0,52.86,0c20.57,0,33.93-11.8,33.81-29.81-.12-17.59-13.41-29.36-33.36-29.37q-86.25,0-172.5,0Z"/><path class="cls-1" d="M465.1,461.85H637.61c18.92,0,32.28-12.1,32.39-29.39.1-17.46-13-29.79-32-29.8q-174.36-.07-348.72,0c-17.95,0-31.08,12.77-31,29.89.11,16.72,13,29.26,30.56,29.29Q377,462,465.1,461.85Z"/><path class="cls-1" d="M465.14,324.12q56.57,0,113.12,0c19.06,0,32.37-12.19,32.35-29.4,0-17.45-13.05-29.77-32-29.79q-114.53-.14-229,0c-18.9,0-31.9,12.46-31.82,30,.08,17.29,13.26,29.22,32.44,29.23Q407.64,324.17,465.14,324.12Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 241 KiB |
|
After Width: | Height: | Size: 98 KiB |
|
|
@ -0,0 +1 @@
|
||||||
|
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 180"><defs><style>.cls-1{fill:#e92727;}.cls-2,.cls-5{fill:#fff;stroke-miterlimit:10;}.cls-2{stroke:#e8e8e8;}.cls-3{fill:#c82128;}.cls-4{fill:#e72728;}.cls-5{stroke:#e92727;stroke-width:1.5px;}.cls-6{fill:#444;}.cls-6,.cls-7{fill-rule:evenodd;}.cls-7{fill:#e32235;}</style></defs><title>Ads Layout2</title><path class="cls-1" d="M108.25,66.8h0a46.86,46.86,0,0,1,93.71,0h3a49.9,49.9,0,0,0-99.79,0h3Z"/><path class="cls-2" d="M283.34,180H16C7.37,180,.32,172.72.32,163.82V82.6C.32,73.7,7.37,66.41,16,66.41H283.34C292,66.41,299,73.7,299,82.6v81.22C299,172.72,292,180,283.34,180Z"/><path class="cls-3" d="M284,180H24.1C10.84,180,0,172.74,0,163.88V82.47C0,73,3,64,22.15,66.35Z"/><path class="cls-4" d="M299,78.86v86.26s-.76,12.11-14.41,14.88H13.07A17.4,17.4,0,0,1,0,166.3V154.78Z"/><circle class="cls-5" cx="155.11" cy="65.75" r="33.39"/><path class="cls-6" d="M155.59,50.89V80.58a1.63,1.63,0,0,1-2.5,1.4c-1-.57-18.13-13.84-19.83-14.82a1.61,1.61,0,0,1-.64-2.16,1.63,1.63,0,0,1,.64-.66c1.22-.71,18.44-14,19.88-14.84A1.62,1.62,0,0,1,155.59,50.89Z"/><path id="Shape_3_copy" data-name="Shape 3 copy" class="cls-6" d="M178,58.59V72.9a.88.88,0,0,1-.86.91.8.8,0,0,1-.49-.14c-.53-.31-9.79-6.6-10.7-7.14a.9.9,0,0,1-.34-1.21A.92.92,0,0,1,166,65c.66-.39,10-6.72,10.73-7.16a.87.87,0,0,1,1.2.31A.93.93,0,0,1,178,58.59Z"/><path id="Shape_3_copy_2" data-name="Shape 3 copy 2" class="cls-7" d="M161.47,44.31V58.63a.88.88,0,0,0,.85.91.91.91,0,0,0,.49-.14c.54-.31,9.79-6.61,10.71-7.15a.88.88,0,0,0,.33-1.2.86.86,0,0,0-.33-.35c-.66-.39-10-6.72-10.74-7.16a.86.86,0,0,0-1.19.31A.83.83,0,0,0,161.47,44.31Z"/><path id="Shape_3_copy_3" data-name="Shape 3 copy 3" class="cls-7" d="M161.47,72.86V87.18a.88.88,0,0,0,.86.91.9.9,0,0,0,.48-.14c.54-.31,9.79-6.6,10.71-7.14a.9.9,0,0,0,0-1.55c-.66-.4-10-6.72-10.74-7.16a.85.85,0,0,0-1.19.31A.78.78,0,0,0,161.47,72.86Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
|
@ -0,0 +1 @@
|
||||||
|
<svg height="512" viewBox="0 0 64 64" width="512" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="New_Gradient_Swatch_1" gradientUnits="userSpaceOnUse" x1="32" x2="32" y1="8.462" y2="55.216"><stop offset="0" stop-color="#fff33b"/><stop offset=".014" stop-color="#fee72e"/><stop offset=".042" stop-color="#fed51b"/><stop offset=".07" stop-color="#fdca10"/><stop offset=".1" stop-color="#fdc70c"/><stop offset=".4" stop-color="#f3903f"/><stop offset=".8" stop-color="#ed683c"/><stop offset="1" stop-color="#e93e3a"/></linearGradient><linearGradient id="New_Gradient_Swatch_1-2" x1="36" x2="36" xlink:href="#New_Gradient_Swatch_1" y1="8.462" y2="55.216"/><linearGradient id="New_Gradient_Swatch_1-3" x1="18" x2="18" xlink:href="#New_Gradient_Swatch_1" y1="8.462" y2="55.216"/><linearGradient id="New_Gradient_Swatch_1-5" x1="22" x2="22" xlink:href="#New_Gradient_Swatch_1" y1="8.462" y2="55.216"/><g id="Mail-6" data-name="Mail"><path d="m57 10h-50a5.006 5.006 0 0 0 -5 5v34a5.006 5.006 0 0 0 5 5h50a5.006 5.006 0 0 0 5-5v-34a5.006 5.006 0 0 0 -5-5zm-50 2h50a3 3 0 0 1 3 3v.46l-28 18.345-28-18.345v-.46a3 3 0 0 1 3-3zm53 5.851v27.383l-21.817-13.09zm-34.183 14.293-21.817 13.09v-27.383zm31.183 19.856h-50a3 3 0 0 1 -3-3v-1.434l23.675-14.2 3.777 2.474a1 1 0 0 0 1.1 0l3.777-2.474 23.671 14.2v1.434a3 3 0 0 1 -3 3z" fill="url(#New_Gradient_Swatch_1)"/><path d="m22 48h28v2h-28z" fill="url(#New_Gradient_Swatch_1-2)"/><path d="m16 48h4v2h-4z" fill="url(#New_Gradient_Swatch_1-3)"/><path d="m26 44h20v2h-20z" fill="url(#New_Gradient_Swatch_1-2)"/><path d="m20 44h4v2h-4z" fill="url(#New_Gradient_Swatch_1-5)"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 73 KiB |
|
|
@ -0,0 +1,91 @@
|
||||||
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 966.653 966.653" style="enable-background:new 0 0 966.653 966.653;" xml:space="preserve">
|
||||||
|
<g>
|
||||||
|
<g id="smartphone_1_">
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="483.3267" y1="995.5009" x2="483.3267" y2="-20.2906" gradientTransform="matrix(1 0 0 -1 0 949.7782)">
|
||||||
|
<stop offset="0" style="stop-color:#FFF33B"/>
|
||||||
|
<stop offset="0.014" style="stop-color:#FEE72E"/>
|
||||||
|
<stop offset="0.042" style="stop-color:#FED51B"/>
|
||||||
|
<stop offset="0.07" style="stop-color:#FDCA10"/>
|
||||||
|
<stop offset="0.1" style="stop-color:#FDC70C"/>
|
||||||
|
<stop offset="0.4" style="stop-color:#F3903F"/>
|
||||||
|
<stop offset="0.8" style="stop-color:#ED683C"/>
|
||||||
|
<stop offset="1" style="stop-color:#E93E3A"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path style="fill:url(#SVGID_1_);" d="M694.718,0H271.936c-25.606,0.027-46.357,20.778-46.383,46.383V920.27
|
||||||
|
c0.027,25.606,20.778,46.357,46.383,46.383h422.782c25.606-0.027,46.357-20.778,46.383-46.383V46.383
|
||||||
|
C741.074,20.778,720.323,0.027,694.718,0z M271.936,32.222h422.782c7.814,0.018,14.144,6.348,14.161,14.161v50.282H257.774V46.383
|
||||||
|
C257.792,38.569,264.122,32.24,271.936,32.222z M708.879,128.887v708.879H257.774V128.887H708.879z M694.718,934.432H271.936
|
||||||
|
c-7.814-0.018-14.144-6.348-14.161-14.161v-50.282h451.105v50.282C708.861,928.084,702.531,934.414,694.718,934.432z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="483.3267" y1="994.5021" x2="483.3267" y2="5.2613" gradientTransform="matrix(1 0 0 -1 0 949.7782)">
|
||||||
|
<stop offset="0" style="stop-color:#FFF33B"/>
|
||||||
|
<stop offset="0.014" style="stop-color:#FEE72E"/>
|
||||||
|
<stop offset="0.042" style="stop-color:#FED51B"/>
|
||||||
|
<stop offset="0.07" style="stop-color:#FDCA10"/>
|
||||||
|
<stop offset="0.1" style="stop-color:#FDC70C"/>
|
||||||
|
<stop offset="0.4" style="stop-color:#F3903F"/>
|
||||||
|
<stop offset="0.8" style="stop-color:#ED683C"/>
|
||||||
|
<stop offset="1" style="stop-color:#E93E3A"/>
|
||||||
|
</linearGradient>
|
||||||
|
<rect x="434.994" y="48.333" style="fill:url(#SVGID_2_);" width="96.665" height="32.222"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="676.6573" y1="998.7875" x2="676.6573" y2="-11.0591" gradientTransform="matrix(1 0 0 -1 0 949.7782)">
|
||||||
|
<stop offset="0" style="stop-color:#FFF33B"/>
|
||||||
|
<stop offset="0.014" style="stop-color:#FEE72E"/>
|
||||||
|
<stop offset="0.042" style="stop-color:#FED51B"/>
|
||||||
|
<stop offset="0.07" style="stop-color:#FDCA10"/>
|
||||||
|
<stop offset="0.1" style="stop-color:#FDC70C"/>
|
||||||
|
<stop offset="0.4" style="stop-color:#F3903F"/>
|
||||||
|
<stop offset="0.8" style="stop-color:#ED683C"/>
|
||||||
|
<stop offset="1" style="stop-color:#E93E3A"/>
|
||||||
|
</linearGradient>
|
||||||
|
<rect x="660.546" y="48.333" style="fill:url(#SVGID_3_);" width="32.222" height="32.222"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="483.3267" y1="978.3428" x2="483.3267" y2="-21.08" gradientTransform="matrix(1 0 0 -1 0 949.7782)">
|
||||||
|
<stop offset="0" style="stop-color:#FFF33B"/>
|
||||||
|
<stop offset="0.014" style="stop-color:#FEE72E"/>
|
||||||
|
<stop offset="0.042" style="stop-color:#FED51B"/>
|
||||||
|
<stop offset="0.07" style="stop-color:#FDCA10"/>
|
||||||
|
<stop offset="0.1" style="stop-color:#FDC70C"/>
|
||||||
|
<stop offset="0.4" style="stop-color:#F3903F"/>
|
||||||
|
<stop offset="0.8" style="stop-color:#ED683C"/>
|
||||||
|
<stop offset="1" style="stop-color:#E93E3A"/>
|
||||||
|
</linearGradient>
|
||||||
|
<rect x="451.105" y="886.099" style="fill:url(#SVGID_4_);" width="64.444" height="32.222"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
|
@ -0,0 +1,512 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8"/>
|
||||||
|
<meta content="IE=edge" http-equiv="X-UA-Compatible">
|
||||||
|
<title>Odoo</title>
|
||||||
|
<meta content="width=device-width, initial-scale=1" name="viewport">
|
||||||
|
<link href="https://apps.odoocdn.com/web/content/7297172-19e3d31/1/web.assets_frontend.css" rel="stylesheet"/>
|
||||||
|
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet">
|
||||||
|
<link crossorigin="anonymous" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
|
||||||
|
integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" rel="stylesheet">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6,
|
||||||
|
{
|
||||||
|
font-family: "Helvetica";
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 1.1;
|
||||||
|
color: #21272b;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
color: #222020!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-family: 'Helvetica';
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-hover:hover{
|
||||||
|
background-color:#d54c58!important;
|
||||||
|
color:white!important;
|
||||||
|
}
|
||||||
|
.al-hover:hover{
|
||||||
|
background-color:#7e2778!important;
|
||||||
|
color:white!important;
|
||||||
|
}
|
||||||
|
.list-group-item-action-custom{
|
||||||
|
width: 100%;
|
||||||
|
color: #495057;
|
||||||
|
text-align: inherit;
|
||||||
|
}
|
||||||
|
.remove:before {
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main class="container">
|
||||||
|
<header class="py-2">
|
||||||
|
<div class="row align-items-center">
|
||||||
|
<div class="col-12 col-md-4">
|
||||||
|
<span class="btn pr-2">
|
||||||
|
<img alt="tortecs-logo" src="images/tortecs_logo.jpg" style="height:40px">
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-6 col-md-8 text-md-right">
|
||||||
|
<span class="btn btn-sm py-2 px-md-3 mr-1"
|
||||||
|
style="font-size: 13px;font-size: 14px; font-weight: 500;background-color: #d54c58;color:#fff;">
|
||||||
|
<i class="fa fa-check mr-1"></i>
|
||||||
|
Community
|
||||||
|
</span>
|
||||||
|
<span class="btn btn-sm py-2 px-md-3 mr-1"
|
||||||
|
style="font-size: 13px;font-size: 14px; font-weight: 500;background-color: #d54c58;color:#fff;">
|
||||||
|
<i class="fa fa-check mr-1"></i>
|
||||||
|
Enterprise
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr/>
|
||||||
|
</header>
|
||||||
|
<div class="container py-5 oe_styling_v8" id="loempia_tabs"
|
||||||
|
style="color: #0b3b52;font-family: 'Open sans','sans-serif';">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 col-md-12 text-center text-md-left">
|
||||||
|
<h1 style="color: black;">
|
||||||
|
<center>
|
||||||
|
<i class="fa fa-github"></i>
|
||||||
|
<b><u>Login via GitHub</u></b>
|
||||||
|
</center>
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
<div class="p-3 mt-3 p-lg-5 w-100" style="background-color: #fff7f8; border-radius: 29px;">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12 col-lg-7 mt-5">
|
||||||
|
<h1 style="font-weight: bold;font-size: 28px;line-height: 42px;text-transform: capitalize;color: #173E85; font-family: 'Poppins', sans-serif;">
|
||||||
|
Brought to you by - Tortecs
|
||||||
|
</h1>
|
||||||
|
<p style="line-height: 148.5%;color: #414141; margin-bottom: 36px; font-family: 'Poppins', sans-serif;">
|
||||||
|
If you have any requirements or need any support just email us to get your
|
||||||
|
work done with our deep expertise on odoo.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6 col-lg-5 text-center" style="height:150px;">
|
||||||
|
<img alt="" class="position-relative img-fluid" src="images/support.png" style="height:100%;">
|
||||||
|
<div class="d-flex justify-content-center flex-wrap">
|
||||||
|
<a href="mailto:tortecs.in@gmail.com" class="btn btn-outline-secondary btn-lg active "
|
||||||
|
role="button" aria-pressed="true" style="background-color: transparent!important;">
|
||||||
|
<span style="color:#7e2778;">
|
||||||
|
<i class="fa fa-envelope"></i> Email Us
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="pb-4 position-relative">
|
||||||
|
<div class="py-3">
|
||||||
|
<div class="col-12 px-0">
|
||||||
|
<p class="pt-2" style="font-weight: 400;">
|
||||||
|
This application offers user to login to odoo via GitHub using user's GitHub credentials.
|
||||||
|
User can now log into odoo just by clicking <b>Log in with GitHub</b>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row no-gutters mb-4" style="background: #f1f0f0;">
|
||||||
|
<div class="col-sm-6 pr-sec p-3 border border-right-1">
|
||||||
|
<i class="fa fa-circle text-success" style="position: absolute; top:-8px; left: -5px;"></i>
|
||||||
|
<p style="font-size: 16px;">
|
||||||
|
User can not log into odoo via GitHub.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 p-3 border border-left-0" style="background: #f1f0f0;">
|
||||||
|
<i class="fa fa-circle text-success text-success"
|
||||||
|
style="position: absolute; top:-8px; left:-5px;"></i>
|
||||||
|
<p style="color: #212829;font-size: 16px;">
|
||||||
|
With a single click login to GitHub without using any credentials.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row no-gutters mb-4" style="background: #f1f0f0;">
|
||||||
|
<div class="col-sm-6 pr-sec p-3 border border-right-1">
|
||||||
|
<i class="fa fa-circle text-success" style="position: absolute; top:-8px; left: -5px;"></i>
|
||||||
|
<p style="font-size: 16px;">
|
||||||
|
App uses browser entry for GitHub to Login
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 p-3 border border-left-0" style="background: #f1f0f0;">
|
||||||
|
<i class="fa fa-circle text-success text-success"
|
||||||
|
style="position: absolute; top:-8px; left:-5px;"></i>
|
||||||
|
<p style="color: #212829;font-size: 16px;">
|
||||||
|
Seamless Login Process.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row no-gutters mb-4" style="background: #f1f0f0;">
|
||||||
|
<div class="col-sm-6 pr-sec p-3 border border-right-1">
|
||||||
|
<i class="fa fa-circle text-success" style="position: absolute; top:-8px; left: -5px;"></i>
|
||||||
|
<p style="font-size: 16px;">
|
||||||
|
Control GitHub User login, whether they will be internal or portal users.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 p-3 border border-left-0" style="background: #f1f0f0;">
|
||||||
|
<i class="fa fa-circle text-success text-success"
|
||||||
|
style="position: absolute; top:-8px; left:-5px;"></i>
|
||||||
|
<p style="color: #212829;font-size: 16px;">
|
||||||
|
Store GitHub users oauth token for future logins and repo access.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="text-center ">
|
||||||
|
<img alt="" class="img-fluid" src="./img/full-screen.jpg">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<div class="justify-content-center d-flex">
|
||||||
|
<ul class="nav o_tab_nav p-3" style="border-radius: 6px 6px;overflow:hidden;background-color:transparent">
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link active px-md-4 list-group-item-action-custom custom-hover"
|
||||||
|
data-toggle="pill"
|
||||||
|
href="#pills-choose"
|
||||||
|
style="border-radius:20px; border: 1px solid #d54c58;opacity: 1;padding:16px;">
|
||||||
|
<b>Installation</b>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link px-md-4 list-group-item-action-custom custom-hover"
|
||||||
|
data-toggle="pill"
|
||||||
|
href="#FAQ"
|
||||||
|
style="border-radius:20px; border: 1px solid #d54c58;opacity: 1;padding:16px; margin-left:10px;">
|
||||||
|
<b>FAQ's</b>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Tab panes -->
|
||||||
|
<div class="tab-content py-5">
|
||||||
|
<div class="tab-pane active" id="pills-choose">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 col-md-4">
|
||||||
|
<ul class="nav o_tab_nav"
|
||||||
|
style="text-transform: capitalize; font-size: 18px; border-radius: 6px 6px;background-color: transparent">
|
||||||
|
<li class="nav-item w-100 mb-3">
|
||||||
|
<a class="nav-link d-flex align-items-center px-3 py-2 list-group-item-action-custom active custom-hover"
|
||||||
|
data-toggle="pill" href="#click1"
|
||||||
|
style="border: 1px solid #d54c58;opacity:1;letter-spacing: inherit;text-transform: capitalize;transition: 0.3s ease-in-out;">
|
||||||
|
<i style="font-size: 20px;"></i>
|
||||||
|
Configuring GitHub
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item w-100 mb-3">
|
||||||
|
<a class="nav-link d-flex align-items-center px-3 py-2 list-group-item-action-custom custom-hover"
|
||||||
|
data-toggle="pill" href="#click2"
|
||||||
|
style="border: 1px solid #d54c58;opacity:1;letter-spacing: inherit;text-transform: capitalize;transition: 0.3s ease-in-out;">
|
||||||
|
<i style="font-size: 20px;"></i>
|
||||||
|
GitHub Login
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-md-8 pt-4 pt-md-0">
|
||||||
|
<div class="tab-content h-100">
|
||||||
|
<div class="tab-pane active" id="click1">
|
||||||
|
<div class="pb-4" style="font-size: 18px;">
|
||||||
|
<i class="fa fa-arrow-right"></i>
|
||||||
|
<span>
|
||||||
|
When you have installed our application,
|
||||||
|
you just need to configure Oauth Providers which comes under Odoo Settings.
|
||||||
|
<br>
|
||||||
|
Just Go to Settings > Oauth Providers (visible only in debug mode).
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="position-relative" style="padding: 0;">
|
||||||
|
<img alt="info-image" class="img img-fluid w-100" src="images/s1.png">
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<div class="pb-4" style="font-size: 18px;">
|
||||||
|
<i class="fa fa-arrow-right"></i>
|
||||||
|
<span>
|
||||||
|
Enter the Client ID and Client Secret which is genereated by creating
|
||||||
|
an Oauth App on GitHub.<br>
|
||||||
|
To Create an Oauth App on GitHub just click on below link :- <br>
|
||||||
|
<a class="p-3"
|
||||||
|
href="https://docs.github.com/en/developers/apps/building-oauth-apps/creating-an-oauth-app"
|
||||||
|
target="_blank">Creating Oauth Apps</a>
|
||||||
|
<br><br>
|
||||||
|
Also you can select the type of user you want, to be created when logging.
|
||||||
|
Here we have given two options :- <b>Portal</b> and <b>Internal</b> in the User Type field.
|
||||||
|
</span>
|
||||||
|
<div class="position-relative mt-4" style="padding: 0;">
|
||||||
|
<img alt="info-image" class="img img-fluid w-100" src="images/s3.png">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane" id="click2">
|
||||||
|
<div class="pb-4" style="font-size: 18px;">
|
||||||
|
<i class="fa fa-arrow-right"></i>
|
||||||
|
<span>
|
||||||
|
Now the Login with GitHub option will be visible on Odoo Login page.
|
||||||
|
<br>
|
||||||
|
Click on the button and Authorize the odoo, and now you will be
|
||||||
|
successfully logged into Odoo via your GitHub.
|
||||||
|
</span>
|
||||||
|
<div class="position-relative mt-4" style="padding: 0;">
|
||||||
|
<img alt="info-image" class="img img-fluid w-100" src="images/s2.png">
|
||||||
|
</div>
|
||||||
|
<div class="position-relative mt-4" style="padding: 0;">
|
||||||
|
<img alt="info-image" class="img img-fluid w-100" src="images/s4.png">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane fade" id="FAQ">
|
||||||
|
<div class="card-body p-0">
|
||||||
|
<div class="text-center pb-5">
|
||||||
|
<h2 style="color: #0b3b52; font-weight: 600; font-size: 2.5rem;">
|
||||||
|
Frequently Asked Questions
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div class="s_faq mx-2 mx-md-5 mb-5">
|
||||||
|
<div id="accordion">
|
||||||
|
<div class="card shadow mb-4"
|
||||||
|
style="border: none; border-left: 10px solid #d54c58;">
|
||||||
|
<div class="card-header py-4 pl-4 pr-5 bg-white position-relative"
|
||||||
|
style="border: none;">
|
||||||
|
<div class="d-flex">
|
||||||
|
<div class="pr-5"
|
||||||
|
style="font-size: 1.6rem; font-weight: 600; color: #0b3b52;">
|
||||||
|
If I want any customizations whom should I contact ?
|
||||||
|
</div>
|
||||||
|
<a class="card-link ml-auto remove" data-toggle="collapse" href="#faqTwo"
|
||||||
|
style="
|
||||||
|
width: 48px;
|
||||||
|
height: 40px;
|
||||||
|
line-height: 11px;
|
||||||
|
border-radius: 2px;
|
||||||
|
padding: 0;
|
||||||
|
font-size: 24px;">
|
||||||
|
<i class="fa fa-arrow-down" style="color:#d54c58;"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="collapse" data-parent="#accordion" id="faqTwo">
|
||||||
|
<div class="card-body pt-0 pl-4">
|
||||||
|
<div style="font-size: 1.4rem; color: #0b3b52;">
|
||||||
|
Please drop email at tortecs.in@gmail.com, our response time
|
||||||
|
are very less with optimal supports.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card shadow mb-4"
|
||||||
|
style="border: none; border-left: 10px solid #d54c58;">
|
||||||
|
<div class="card-header py-4 pl-4 pr-5 bg-white position-relative"
|
||||||
|
style="border: none;">
|
||||||
|
<div class="d-flex">
|
||||||
|
<div class="pr-5"
|
||||||
|
style="font-size: 1.6rem; font-weight: 600; color: #0b3b52;">
|
||||||
|
Can I run this app on Odoo Enterprise ?
|
||||||
|
</div>
|
||||||
|
<a class="card-link ml-auto remove" data-toggle="collapse" href="#faqOne"
|
||||||
|
style="
|
||||||
|
width: 48px;
|
||||||
|
height: 40px;
|
||||||
|
line-height: 11px;
|
||||||
|
border-radius: 2px;
|
||||||
|
padding: 0;
|
||||||
|
font-size: 24px;">
|
||||||
|
<i class="fa fa-arrow-down" style="color:#d54c58;"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="collapse show" data-parent="#accordion" id="faqOne">
|
||||||
|
<div class="card-body pt-0 pl-4">
|
||||||
|
<div style="font-size: 1.4rem; color: #0b3b52;">
|
||||||
|
Yes, our app works with Odoo Enterprise as well as Community
|
||||||
|
versions.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card shadow mb-4"
|
||||||
|
style="border: none; border-left: 10px solid #d54c58;">
|
||||||
|
<div class="card-header py-4 pl-4 pr-5 bg-white position-relative"
|
||||||
|
style="border: none;">
|
||||||
|
<div class="d-flex">
|
||||||
|
<div class="pr-5"
|
||||||
|
style="font-size: 1.6rem; font-weight: 600; color: #0b3b52;">
|
||||||
|
Do this app extendable ?
|
||||||
|
</div>
|
||||||
|
<a class="card-link ml-auto remove" data-toggle="collapse" href="#faqThree"
|
||||||
|
style="
|
||||||
|
width: 48px;
|
||||||
|
height: 40px;
|
||||||
|
line-height: 11px;
|
||||||
|
border-radius: 2px;
|
||||||
|
padding: 0;
|
||||||
|
font-size: 24px;">
|
||||||
|
<i class="fa fa-arrow-down" style="color:#d54c58;"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="collapse" data-parent="#accordion" id="faqThree">
|
||||||
|
<div class="card-body pt-0 pl-4">
|
||||||
|
<div style="font-size: 1.4rem; color: #0b3b52;">
|
||||||
|
We have designed this app in such a way that it can be easily
|
||||||
|
integrated with other odoo modules.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card shadow mb-4"
|
||||||
|
style="border: none; border-left: 10px solid #d54c58;">
|
||||||
|
<div class="card-header py-4 pl-4 pr-5 bg-white position-relative"
|
||||||
|
style="border: none;">
|
||||||
|
<div class="d-flex">
|
||||||
|
<div class="pr-5"
|
||||||
|
style="font-size: 1.6rem; font-weight: 600; color: #0b3b52;">
|
||||||
|
Do this app supports any GitHub accounts ?
|
||||||
|
</div>
|
||||||
|
<a class="card-link ml-auto remove" data-toggle="collapse" href="#faqfour"
|
||||||
|
style="
|
||||||
|
width: 48px;
|
||||||
|
height: 40px;
|
||||||
|
line-height: 11px;
|
||||||
|
border-radius: 2px;
|
||||||
|
padding: 0;
|
||||||
|
font-size: 24px;">
|
||||||
|
<i class="fa fa-arrow-down" style="color:#d54c58;"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="collapse" data-parent="#accordion" id="faqfour">
|
||||||
|
<div class="card-body pt-0 pl-4">
|
||||||
|
<div style="font-size: 1.4rem; color: #0b3b52;">
|
||||||
|
Yes you can use any GitHub account whether its business or normal
|
||||||
|
account for GitHub logging on odoo.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<section class="mb-5">
|
||||||
|
<div class="text-center p-2 d-flex justify-content-center align-items-center col-lg-9" style="background-color: #d54c58;
|
||||||
|
box-shadow: 1px 2px 11px rgba(0, 0, 0, 0), 1px 11px 12px rgba(0, 0, 0, 0.22);margin: auto;">
|
||||||
|
<h3 class="font-weight-bold mb-0 mr-3 text-light">
|
||||||
|
Note:
|
||||||
|
</h3>
|
||||||
|
<h5 class="mb-0 text-light" style="margin-top: 2px;">
|
||||||
|
Extensively Tested on Odoo Vanilla with Ubuntu OS
|
||||||
|
</h5>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="row pb-sm-5 px-1 pb-4">
|
||||||
|
<h2 class="w-100 text-center my-3" style="font-weight: 400;"><u>Tortecs Services</u></h2>
|
||||||
|
<div class="col-12 col-sm-6 col-md-4" style="margin-bottom: 20px;">
|
||||||
|
<div class="card text-center bg-info"
|
||||||
|
style="min-height: 90px;box-shadow: 1px 2px 11px rgba(0, 0, 0, 0), 1px 11px 12px rgba(0, 0, 0, 0.22);margin: auto;">
|
||||||
|
<div class="pt-4" style="background-color: #845EC2 !important;">
|
||||||
|
<img alt="support" src="images/migrating.png" style="height:50px;">
|
||||||
|
</div>
|
||||||
|
<div class="card-body" style="background-color: #845EC2 !important; ">
|
||||||
|
<h5 class="card-title text-white" style="font-size: 19px; font-weight: 400;">
|
||||||
|
Odoo Implementation
|
||||||
|
</h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-sm-6 col-md-4" style="margin-bottom: 20px;">
|
||||||
|
<div class="card text-center"
|
||||||
|
style="min-height: 90px; background-color: #0081CF; box-shadow: 1px 2px 11px rgba(0, 0, 0, 0), 1px 11px 12px rgba(0, 0, 0, 0.22);margin: auto;">
|
||||||
|
<div class="pt-4">
|
||||||
|
<img alt="apps" src="images/migration.png" style="height:50px;">
|
||||||
|
</div>
|
||||||
|
<div class="card-body" style="background-color: transparent !important;">
|
||||||
|
<h5 class="card-title text-white" style="font-size: 19px; font-weight: 400;">
|
||||||
|
Odoo Migrations</h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-sm-6 col-md-4" style="margin-bottom: 20px;">
|
||||||
|
<div class="card text-center"
|
||||||
|
style="min-height: 90px;background-color: #C34A36; box-shadow: 1px 2px 11px rgba(0, 0, 0, 0), 1px 11px 12px rgba(0, 0, 0, 0.22);margin: auto;">
|
||||||
|
<div class="pt-4">
|
||||||
|
<img alt="support2" src="images/customer-service.png" style="height:50px;">
|
||||||
|
</div>
|
||||||
|
<div class="card-body" style="background-color: transparent !important;">
|
||||||
|
<h5 class="card-title text-white" style="font-size: 19px; font-weight: 400;">
|
||||||
|
Odoo Support&Maintenance</h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-sm-6 col-md-4" style="margin-bottom: 20px;margin-left:16%">
|
||||||
|
<div class="card text-center"
|
||||||
|
style="min-height: 90px; background-color: #008F7A; box-shadow: 1px 2px 11px rgba(0, 0, 0, 0), 1px 11px 12px rgba(0, 0, 0, 0.22);margin: auto;">
|
||||||
|
<div class="pt-4">
|
||||||
|
<img alt="custom" src="images/customize.png" style="height:50px;">
|
||||||
|
</div>
|
||||||
|
<div class="card-body" style="background-color: transparent !important;">
|
||||||
|
<h5 class="card-title text-white" style="font-size: 19px; font-weight: 400;">
|
||||||
|
Odoo Customization</h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-sm-6 col-md-4" style="margin-bottom: 20px;">
|
||||||
|
<div class="card text-center"
|
||||||
|
style="min-height: 90px; background-color: #936C00; box-shadow: 1px 2px 11px rgba(0, 0, 0, 0), 1px 11px 12px rgba(0, 0, 0, 0.22);margin: auto;">
|
||||||
|
<div class="pt-4">
|
||||||
|
<img alt="integrated" src="images/integration.png" style="height:50px;">
|
||||||
|
</div>
|
||||||
|
<div class="card-body" style="background-color: transparent !important;">
|
||||||
|
<h5 class="card-title text-white" style="font-size: 19px; font-weight: 400;">
|
||||||
|
Odoo Integration Services</h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div class="row justify-content-center"
|
||||||
|
style="border-top: 1px solid black;">
|
||||||
|
<div class="mb-sm-0 mb-3">
|
||||||
|
<i class="fa fa-envelope fa-2x"
|
||||||
|
style=" margin-right: 10px; color: #333; transform: translateY(3px);"></i>
|
||||||
|
<span style="font-size: 18px;">tortecs.in@gmail.com</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- container End -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script crossorigin="anonymous"
|
||||||
|
integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
|
||||||
|
src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
|
||||||
|
<script crossorigin="anonymous"
|
||||||
|
integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
|
||||||
|
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
|
||||||
|
<script crossorigin="anonymous"
|
||||||
|
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
|
||||||
|
src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
After Width: | Height: | Size: 208 KiB |
|
After Width: | Height: | Size: 169 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<record id="tt_oauth_form_view_inherit" model="ir.ui.view">
|
||||||
|
<field name="name">tt.oauth.form.view.inherit</field>
|
||||||
|
<field name="model">auth.oauth.provider</field>
|
||||||
|
<field name="inherit_id" ref="auth_oauth.view_oauth_provider_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//field[@name = 'client_id']" position="after">
|
||||||
|
<field name="tt_client_secret" attrs="{'invisible': [('tt_is_github', '!=', True)], 'required': [('tt_is_github', '=', True)]}"/>
|
||||||
|
<field name="tt_user_type" widget="radio" options="{'horizontal':True}"/>
|
||||||
|
<field name="tt_is_github" invisible="1"/>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
||||||