added public
This commit is contained in:
1 parent
6f8f4338ea
commit
5b8f8929f9
234 files changed
+70072
No files matched your search
@@ -0,0 +1,727 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>ACADEMY: Use git with ODOO4projects</title>
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5">
|
||||
<meta name="description" content=" 🎓 Odoo 4 Projects Academy: Upgrade to Enterprise with Git & Docker (Advanced Tutorial)
|
||||
Welcome to another episode of Odoo 4 Projects Academy!
|
||||
In this advanced tutorial, we show you how to:
|
||||
Use Git to clone custom and enterprise modules
|
||||
Set up SSH keys (without accidentally uploading your private one 🙈)
|
||||
Upgrade from Odoo Community to Odoo Enterprise
|
||||
Use Docker Compose to run a local dev environment
|
||||
Set up a staging server just like your live instance
|
||||
We know startups move fast and don’t always have time to mess around with infrastructure. That’s why we built features like Quick Git Install — just upload your module and you're done. But for the curious (and the brave), this video shows how it works under the hood.
|
||||
">
|
||||
|
||||
<meta name="author" content="Oliver Arnold">
|
||||
|
||||
<meta name="theme-name" content="editor-hugo" />
|
||||
|
||||
|
||||
<link rel="shortcut icon" href="https://blog.ODOO4projects.com/images/4.svg" type="image/x-icon">
|
||||
<link rel="icon" href="https://blog.ODOO4projects.com/images/4.svg" type="image/x-icon">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta property="og:url" content="https://blog.ODOO4projects.com/blogs/academy_git/">
|
||||
<meta property="og:site_name" content="Founder of ODOO4projects. ODOO hosting like it should be. ">
|
||||
<meta property="og:title" content="ACADEMY: Use git with ODOO4projects">
|
||||
<meta property="og:description" content="🎓 Odoo 4 Projects Academy: Upgrade to Enterprise with Git & Docker (Advanced Tutorial)
|
||||
Welcome to another episode of Odoo 4 Projects Academy!
|
||||
In this advanced tutorial, we show you how to:
|
||||
Use Git to clone custom and enterprise modules
|
||||
Set up SSH keys (without accidentally uploading your private one 🙈)
|
||||
Upgrade from Odoo Community to Odoo Enterprise
|
||||
Use Docker Compose to run a local dev environment
|
||||
Set up a staging server just like your live instance
|
||||
We know startups move fast and don’t always have time to mess around with infrastructure. That’s why we built features like Quick Git Install — just upload your module and you're done. But for the curious (and the brave), this video shows how it works under the hood.">
|
||||
<meta property="og:locale" content="en">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="blogs">
|
||||
<meta property="article:published_time" content="2025-05-15T00:00:00-04:00">
|
||||
<meta property="article:modified_time" content="2025-05-15T00:00:00-04:00">
|
||||
<meta property="article:tag" content="Academy">
|
||||
<meta property="og:image" content="https://blog.ODOO4projects.com/images/blog/git.svg">
|
||||
|
||||
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-MEASUREMENT_ID"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if ( false ) {
|
||||
var dnt = (navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack);
|
||||
var doNotTrack = (dnt == "1" || dnt == "yes");
|
||||
}
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-MEASUREMENT_ID');
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="blog.odoo4projects.com" src="https://plausible.odoo4projects.com/js/script.js"></script>
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<style crossorigin="anonymous" media="all" type="text/css" integrity="sha512-XrwIQJluVcwMevCzmiGhhTQRuLvLu8sZALVTqNh7oGWjma+mr9ifNP0F7hfqlHL3Y3GEQ/PF5J1UiOq5blQuYQ==">/*!* Bootstrap v4.5.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2020 The Bootstrap Authors
|
||||
* Copyright 2011-2020 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)*/:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,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}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}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:.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-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}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8eLine truncated
|
||||
|
||||
<style>
|
||||
blockquote::before {
|
||||
display: none;
|
||||
font-family: " Font Awesome 5 Free ";
|
||||
}
|
||||
|
||||
.content ul li:not(.nav-item) {
|
||||
position: relative;
|
||||
margin-bottom: 5px;
|
||||
list-style-type: none;
|
||||
}
|
||||
.content ul li:not(.nav-item) svg {
|
||||
margin-right: 6px;
|
||||
transform: scale(0.8);
|
||||
color: #c98664 ;
|
||||
}
|
||||
.content ul li:not(.nav-item)::before {
|
||||
font-size: 14px;
|
||||
font-family: " Font Awesome 5 Free ";
|
||||
font-weight: 900;
|
||||
content: "\f069";
|
||||
display: none;
|
||||
}
|
||||
.notices p::before {
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
font-family: " Font Awesome 5 Free ";
|
||||
font-weight: 900;
|
||||
content: "\f05a";
|
||||
left: 10px;
|
||||
display: none;
|
||||
}
|
||||
.notices p svg {
|
||||
position: absolute;
|
||||
top: 7px;
|
||||
left: 10px;
|
||||
color: #ffffff ;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<header class="sidenav">
|
||||
<div class="is-top">
|
||||
<div>
|
||||
|
||||
|
||||
|
||||
|
||||
<button class="search-toggle d-inline-block d-md-none" data-toggle="search">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16"><path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z"/></svg>
|
||||
</button>
|
||||
|
||||
<button class="sidenav-toggler d-inline-block " data-toggle="sidenav-menu">
|
||||
<svg id="toggler-icon" class="toggler-icon" viewBox="0 0 100 100" width="60" onclick="this.classList.toggle('active')"><path class="line top" d="m 30,33 h 40 c 0,0 9.044436,-0.654587 9.044436,-8.508902 0,-7.854315 -8.024349,-11.958003 -14.89975,-10.85914 -6.875401,1.098863 -13.637059,4.171617 -13.637059,16.368042 v 40" /><path class="line middle" d="m 30,50 h 40" /><path class="line bottom" d="m 30,67 h 40 c 12.796276,0 15.357889,-11.717785 15.357889,-26.851538 0,-15.133752 -4.786586,-27.274118 -16.667516,-27.274118 -11.88093,0 -18.499247,6.994427 -18.435284,17.125656 l 0.252538,40" /></svg>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<a class="navbar-brand mr-0" href="https://ODOO4projects.com">
|
||||
|
||||
<img height="30px" src="https://blog.ODOO4projects.com/images/logo.svg"
|
||||
alt="ODOO4projects">
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="d-none d-md-block">
|
||||
<ul class="social-links list-unstyled">
|
||||
|
||||
<li class="mb-3">
|
||||
<button class="search-toggle" data-toggle="search">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16"><path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z"/></svg>
|
||||
</button>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="mailto:blog@odoo4projects.com">
|
||||
<svg width="1.15em" height="1.15em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2zm13 2.383l-4.758 2.855L15 11.114v-5.73zm-.034 6.878L9.271 8.82 8 9.583 6.728 8.82l-5.694 3.44A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.739zM1 11.114l4.758-2.876L1 5.383v5.73z"/></svg>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="sidenav-overlay" data-toggle="sidenav-menu" onclick="document.getElementById('toggler-icon').classList.remove('active')"></div>
|
||||
|
||||
<nav class="sidenav-menu flex-column justify-content-between">
|
||||
<ul class="w-100 accordion" id="accordionMenu">
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/">Home</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://ODOO4projects.com">ODOO4projects Hosting</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/contact/">Contact</a>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<ul class="social-links list-unstyled list-inline mt-5">
|
||||
|
||||
<li class="list-inline-item"><a href="https://www.linkedin.com/company/104665455" title="Linkedin">
|
||||
<i class="fab fa-linkedin"></i>
|
||||
</a></li>
|
||||
|
||||
<li class="list-inline-item"><a href="https://ODOO4projects.com" title="Website">
|
||||
<i class="fas fa-globe"></i>
|
||||
</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="search-block">
|
||||
<div data-toggle="search-close">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" fill="currentColor" class="text-primary" viewBox="0 0 16 16"><path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"/></svg>
|
||||
</div>
|
||||
<form action="/search" method="GET">
|
||||
<input id="search-field" name="s" type="search" placeholder="Type & Hit Enter..." class="text-center" aria-label="search-query">
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="page-content section" style="border-left:1px solid #eee">
|
||||
<div class="container px-3 px-lg-4">
|
||||
<div class="row justify-content-center">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="col-lg-8">
|
||||
<div class="mb-4 mt-4 mt-md-0">
|
||||
|
||||
<div class="post-slider">
|
||||
|
||||
<div><img loading="lazy" class="w-100" src="https://blog.ODOO4projects.com/images/blog/git.svg" alt=""></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<ul class="card-meta-tag list-inline mt-3">
|
||||
|
||||
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/academy/">academy</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<h2 class="h3 mt-2 mb-3 post-title">ACADEMY: Use git with ODOO4projects</h2>
|
||||
|
||||
<ul class="card-meta list-inline mb-0">
|
||||
|
||||
<li class="list-inline-item">
|
||||
<span class="text-light">by:</span>
|
||||
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver Arnold</a>
|
||||
</li>
|
||||
|
||||
<li class="list-inline-item">
|
||||
<span class="card-meta-date">May 15, 2025</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<p>
|
||||
<p><a href="https://www.youtube.com/watch?v=voXx79tpqgk">📺 Watch on Youtube click</a></p>
|
||||
<p>From Community to Enterprise: Upgrading Your Odoo Instance with Git and Docker (No Stress Required)</p>
|
||||
<p>Welcome to the Odoo 4 Projects Academy!
|
||||
Today, we’re diving into an advanced (but totally doable) process: upgrading your Odoo Community instance to Enterprise using Git, SSH keys, and Docker.</p>
|
||||
<p>Now before you panic and run for coffee—relax. We’ve made everything clear, startup-friendly, and explained all the technical terms, so even if you’re more business than backend, you’ll feel right at home.</p>
|
||||
<p>🚀 Why This Tutorial?</p>
|
||||
<p>Most Odoo users just want to install a module and move on. If that’s you — great news! You can use our Quick Git Install feature and upload your module with a few clicks. No terminal, no problem.</p>
|
||||
<p>nBut if you want to understand how things work behind the scenes, collaborate with developers, or create a proper local dev environment — this tutorial is your new best friend.
|
||||
🧰 What You’ll Learn</p>
|
||||
<ul>
|
||||
<li>How to log into your Odoo 4 Projects instance</li>
|
||||
<li>Where to find Git SSH settings in the dashboard</li>
|
||||
<li>What an SSH key is (and why you shouldn’t ever upload the private one 😅)</li>
|
||||
<li>How to clone your repo with Git</li>
|
||||
<li>Renaming the repo for better clarity</li>
|
||||
<li>Understanding the folder structure: /custom, /enterprise, and docker-compose.yml</li>
|
||||
<li>How to launch a local server with Docker Compose</li>
|
||||
<li>How to fix permission errors (because they happen)</li>
|
||||
<li>Creating a local staging server that mirrors your live one</li>
|
||||
</ul>
|
||||
<p>💡 Pro Tips from the Video</p>
|
||||
<ul>
|
||||
<li>Public key = .pub file → That’s the one you paste into Odoo</li>
|
||||
<li>You can add multiple SSH keys for team collaboration</li>
|
||||
<li>Rename cloned repos right away to avoid confusion later</li>
|
||||
<li>Use chmod -R 777 if Docker throws file permission errors</li>
|
||||
<li>With Docker, your staging server can perfectly reflect your live setup</li>
|
||||
<li>Oh, and don’t underestimate the folks in the last row — they’re always full of surprises</li>
|
||||
</ul>
|
||||
<p>👨💻 Too Busy? We Got You.</p>
|
||||
<p>If setting up SSH keys and Git makes your head spin, no worries. Use our Quick Git Install tool or let us handle the setup completely. Odoo 4 Projects was built so you can focus on your business, not your infrastructure.
|
||||
📺 Watch the Full Video</p>
|
||||
<p>👉 Watch the tutorial on YouTube <a href="https://www.youtube.com/watch?v=voXx79tpqgk">https://www.youtube.com/watch?v=voXx79tpqgk</a>
|
||||
🎓 Odoo 4 Projects Academy – “Upgrade to Enterprise with Git & Docker”
|
||||
📦 Ready to Launch?</p>
|
||||
<p>Looking for a simple, startup-friendly way to host Odoo?
|
||||
✅ Secure servers
|
||||
✅ Enterprise-ready
|
||||
✅ Team features
|
||||
✅ One-click module installs</p>
|
||||
<p>👉 Get your instance at odoo4projects.com</p>
|
||||
<p>Odoo 4 Projects
|
||||
Built for startups. Loved by last-row geniuses. 😎</p>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-lg-4 mt-5 mt-lg-0">
|
||||
<div class="pl-0 pl-lg-3">
|
||||
<!-- about me -->
|
||||
<div class="widget text-center">
|
||||
|
||||
<span class="widget-title">About Me</span>
|
||||
|
||||
<img loading="lazy" class="mb-4 rounded-circle w-100" style="max-width:150px" src="https://blog.ODOO4projects.com/images/author.webp" alt="Author">
|
||||
|
||||
<p class="text-uppercase small mb-2">My name is</p>
|
||||
<h1 class="h4 text-primary font-primary mb-3">Oliver Arnold</h1>
|
||||
<div class="mb-0 mx-auto" style="max-width:460px">Founder of ODOO4projects. ODOO hosting like it should be. <a href="https://blog.ODOO4projects.com/about/" aria-label="About me" class="text-underline d-inline-block">Read More</a></div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<!-- latest post -->
|
||||
<div class="widget">
|
||||
<span class="widget-title">Recent Post</span>
|
||||
|
||||
<ul class="sidebar-recent-post list-unstyled">
|
||||
|
||||
|
||||
<li class="recent-post-item">
|
||||
<div class="media">
|
||||
<div class="media-body mr-2">
|
||||
<h5><a href="https://blog.ODOO4projects.com/blogs/academy_chatbot/">ACADEMY: Use our ODOO AI integration</a></h5>
|
||||
<span class="card-meta">
|
||||
<span class="card-meta-date">May 14, 2025</span>
|
||||
</span>
|
||||
</div>
|
||||
<a href="https://blog.ODOO4projects.com/blogs/academy_chatbot/" class="recent-post-image">
|
||||
|
||||
<img loading="lazy" class="img-fluid rounded-circle" src="https://blog.ODOO4projects.com/images/blog/chatbot.svg">
|
||||
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="recent-post-item">
|
||||
<div class="media">
|
||||
<div class="media-body mr-2">
|
||||
<h5><a href="https://blog.ODOO4projects.com/blogs/new-colleague-mark-gutmann/">New Colleague: Mark Gutmann</a></h5>
|
||||
<span class="card-meta">
|
||||
<span class="card-meta-date">May 29, 2025</span>
|
||||
</span>
|
||||
</div>
|
||||
<a href="https://blog.ODOO4projects.com/blogs/new-colleague-mark-gutmann/" class="recent-post-image">
|
||||
|
||||
<img loading="lazy" class="img-fluid rounded-circle" src="https://blog.ODOO4projects.com/images/blog/mg.png">
|
||||
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="recent-post-item">
|
||||
<div class="media">
|
||||
<div class="media-body mr-2">
|
||||
<h5><a href="https://blog.ODOO4projects.com/blogs/brazil-online/">Brazil online!</a></h5>
|
||||
<span class="card-meta">
|
||||
<span class="card-meta-date">May 22, 2025</span>
|
||||
</span>
|
||||
</div>
|
||||
<a href="https://blog.ODOO4projects.com/blogs/brazil-online/" class="recent-post-image">
|
||||
|
||||
<img loading="lazy" class="img-fluid rounded-circle" src="https://blog.ODOO4projects.com/images/blog/news.png">
|
||||
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div><!-- categories -->
|
||||
<div class="widget">
|
||||
<span class="widget-title">Categories</span>
|
||||
|
||||
|
||||
|
||||
<ul class="sidebar-post-categories list-unstyled">
|
||||
|
||||
<li><a href="https://blog.ODOO4projects.com/categories/academy/">Academy <span>2</span></a></li>
|
||||
|
||||
<li><a href="https://blog.ODOO4projects.com/categories/corporate/">Corporate <span>5</span></a></li>
|
||||
|
||||
<li><a href="https://blog.ODOO4projects.com/categories/hugo/">Hugo <span>2</span></a></li>
|
||||
|
||||
<li><a href="https://blog.ODOO4projects.com/categories/knowledge/">Knowledge <span>2</span></a></li>
|
||||
|
||||
<li><a href="https://blog.ODOO4projects.com/categories/projects/">Projects <span>1</span></a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
</div><!-- tags -->
|
||||
<div class="widget">
|
||||
<span class="widget-title">Tags</span>
|
||||
|
||||
|
||||
<ul class="sidebar-post-tags list-unstyled list-inline">
|
||||
|
||||
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/academy/">Academy</a></li>
|
||||
|
||||
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">Corporate</a></li>
|
||||
|
||||
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/hugo/">Hugo</a></li>
|
||||
|
||||
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/knowledge/">Knowledge</a></li>
|
||||
|
||||
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">News</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
</div></div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="single-post-similer">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h3 class="text-dark font-weight-bold mb-4 pb-2">You May Also Like</h3>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-lg-4 col-md-4 col-sm-6">
|
||||
<article class="card post-card">
|
||||
|
||||
<div class="post-slider slider-sm">
|
||||
|
||||
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/chatbot.svg" alt=""></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card-body mb-3">
|
||||
|
||||
<ul class="card-meta-tag list-inline mb-1">
|
||||
|
||||
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/academy/">academy</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h3 class="h4 mb-2">
|
||||
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/academy_chatbot/" title="ACADEMY: Use our ODOO AI integration">ACADEMY: Use our ODOO AI integration</a>
|
||||
</h3>
|
||||
|
||||
<p class="mb-0"> 📺 Watch on Youtube click
|
||||
How to Add an AI Chatbot to Your Odoo …</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<ul class="card-meta list-inline mb-0">
|
||||
|
||||
<li class="list-inline-item">
|
||||
<span class="text-light">by:</span>
|
||||
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
|
||||
</li>
|
||||
|
||||
<li class="list-inline-item">
|
||||
<span class="card-meta-date">May 14, 2025</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 col-md-4 col-sm-6">
|
||||
<article class="card post-card">
|
||||
|
||||
<div class="post-slider slider-sm">
|
||||
|
||||
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/mg.png" alt=""></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card-body mb-3">
|
||||
|
||||
<ul class="card-meta-tag list-inline mb-1">
|
||||
|
||||
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/news/">news</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h3 class="h4 mb-2">
|
||||
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/new-colleague-mark-gutmann/" title="New Colleague: Mark Gutmann">New Colleague: Mark Gutmann</a>
|
||||
</h3>
|
||||
|
||||
<p class="mb-0">We have some fantastic news to share! 🎉
|
||||
Please join us in welcoming …</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<ul class="card-meta list-inline mb-0">
|
||||
|
||||
<li class="list-inline-item">
|
||||
<span class="text-light">by:</span>
|
||||
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
|
||||
</li>
|
||||
|
||||
<li class="list-inline-item">
|
||||
<span class="card-meta-date">May 29, 2025</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 col-md-4 col-sm-6">
|
||||
<article class="card post-card">
|
||||
|
||||
<div class="post-slider slider-sm">
|
||||
|
||||
<div><img loading="lazy" class="w-100 post" src="https://blog.ODOO4projects.com/images/blog/news.png" alt=""></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card-body mb-3">
|
||||
|
||||
<ul class="card-meta-tag list-inline mb-1">
|
||||
|
||||
<li class="list-inline-item"><a href="https://blog.ODOO4projects.com/tags/corporate/">corporate</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h3 class="h4 mb-2">
|
||||
<a class="post-title" href="https://blog.ODOO4projects.com/blogs/brazil-online/" title="Brazil online!">Brazil online!</a>
|
||||
</h3>
|
||||
|
||||
<p class="mb-0">🌍 Exciting news for the #ODOO4Projects community: our Brazil server is …</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<ul class="card-meta list-inline mb-0">
|
||||
|
||||
<li class="list-inline-item">
|
||||
<span class="text-light">by:</span>
|
||||
<a href="https://blog.ODOO4projects.com/about/" class="card-meta-author">Oliver</a>
|
||||
</li>
|
||||
|
||||
<li class="list-inline-item">
|
||||
<span class="card-meta-date">May 22, 2025</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid px-3 px-lg-4">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-12 mt-4 pt-2">
|
||||
<footer class="bg-primary-light py-5">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-12 text-center mb-5">
|
||||
<ul class="social-links is-circled list-unstyled list-inline font-weight-500">
|
||||
|
||||
<li class="list-inline-item"><a href="https://www.linkedin.com/company/104665455" title="Linkedin">
|
||||
<i class="icon fab fa-linkedin"></i> Linkedin
|
||||
</a></li>
|
||||
|
||||
<li class="list-inline-item"><a href="https://ODOO4projects.com" title="Website">
|
||||
<i class="icon fas fa-globe"></i> Website
|
||||
</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<p>Discover the best Odoo Community Hosting Tips, Tutorials & Best Practices to optimize your Odoo experience. Whether you're a beginner or an advanced user, our blog provides expert guidance on setting up and managing your Odoo instance. Learn essential tips for choosing the right hosting environment, improving system performance, and ensuring seamless updates.</p>
|
||||
|
||||
<p>Our tutorials cover everything from basic configurations to advanced customization, helping you make the most of Odoo’s powerful features. Stay up-to-date with the latest Odoo Community trends and implement best practices for security, scalability, and data integrity.</p>
|
||||
|
||||
<p>With our practical insights, you can enhance your Odoo hosting setup, troubleshoot common issues, and take your business to the next level. Whether you're hosting Odoo on-premise or in the cloud, our resources will guide you every step of the way. Dive into the world of Odoo and unlock its full potential today!</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="col-12 text-center">
|
||||
<p class="mb-0 font-weight-500"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/theprojectsomething/webfontloader@feature/google-fonts-v2/webfontloader.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
WebFont.load({
|
||||
google: {
|
||||
families: [
|
||||
'Fira Sans:ital,wght@0,400;0,500;0,600;1,500;1,600'
|
||||
]
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/js/all.min.js" type="application/javascript" crossorigin='anonymous' defer='defer' data-search-pseudo-elements></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script crossorigin="anonymous" defer="defer" data-turbolinks-suppress-warning integrity="sha512-Yz/YSPyKMckGEMMQ1yybtrsvcFiryJxYzQ+leCBVaB9zptlhmftcVDBVaYtwyFf1fIj0Tunj+Aqcg0eUp+ROsQ==" type="application/javascript">/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license *//*!
|
||||
* Bootstrap v4.5.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*//*!
|
||||
* Fuse.js v3.4.6 - Lightweight fuzzy-search (http://fusejs.io)
|
||||
*
|
||||
* Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)
|
||||
* All Rights Reserved. Apache Software License 2.0
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*//*!***************************************************
|
||||
* mark.js v8.11.1
|
||||
* https://markjs.io/
|
||||
* Copyright (c) 2014–2018, Julian Kühnel
|
||||
* Released under the MIT license https://git.io/vwTVl
|
||||
*****************************************************/!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var ge,n,b,_e,Ne,ke,Ee,dt,m,rt,te,k,V,ce,l,nt,O,C,K,ot,it,at,ht,F,ft,pt,jt,me,he,Be,R,ze,oe,ee,Se,Ae,Ce,p=[],Me=Object.getPrototypeOf,j=p.slice,Ie=p.flat?function(e){return p.flat.call(e)}:function(e){return p.concat.apply([],e)},ue=p.push,Q=p.indexOf,X={},vt=X.toString,G=X.hasOwnProperty,gt=G.toString,Kt=gt.call(Object),a={},o=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},A=function(e){return e!=null&&e===e.window},i=e.document,Ot={type:!0,src:!0,nonce:!0,noModule:!0};function lt(e,t,n){var s,a,o=(n=n||i).createElement("script");if(o.text=e,t)for(s in Ot)(a=t[s]||t.getAttribute&&t.getAttribute(s))&&o.setAttribute(s,a);n.head.appendChild(o).parentNode.removeChild(o)}function E(e){return e==null?e+"":"object"==typeof e||"function"==typeof e?X[vt.call(e)]||"object":typeof e}ge="3.5.1",n=function(e,t){return new n.fn.init(e,t)};function be(e){var t=!!e&&"length"in e&&e.length,n=E(e);return!o(e)&&!A(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}n.fn=n.prototype={jquery:ge,constructor:n,length:0,toArray:function(){return j.call(this)},get:function(e){return e==null?j.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=n.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return n.each(this,e)},map:function(e){return this.pushStack(n.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(j.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(n.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(n.grep(this,function(e,t){return t%2}))},eq:function(e){var n=this.length,t=+e+(e<0?n:0);return this.pushStack(0<=t&&t<n?[this[t]]:[])},end:function(){return this.prevObject||this.constructor()},push:ue,sort:p.sort,splice:p.splice},n.extend=n.fn.extend=function(){var t,i,a,r,c,d,e=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof e&&(l=e,e=arguments[s]||{},s++),"object"==typeof e||o(e)||(e={}),s===u&&(e=this,s--);s<u;s++)if(null!=(c=arguments[s]))for(i in c)t=c[i],"__proto__"!==i&&e!==t&&(l&&t&&(n.isPlainObject(t)||(r=Array.isArray(t)))?(a=e[i],d=r&&!Array.isArray(a)?[]:r||n.isPlainObject(a)?a:{},r=!1,e[i]=n.extend(l,d,t)):0[0]!==t&&(e[i]=t));return e},n.extend({expando:"jQuery"+(ge+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!!e&&"[object Object]"===vt.call(e)&&(!(t=Me(e))||"function"==typeof(n=G.call(t,"constructor")&&t.constructor)&>.call(n)===Kt)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){lt(e,{nonce:t&&t.nonce},n)},each:function(e,t){var s,n=0;if(be(e)){for(s=e.length;n<s;n++)if(!1===t.call(e[n],n,e[n]))break}else for(n in e)if(!1===t.call(e[n],n,e[n]))break;return e},makeArray:function(e,t){var s=t||[];return e!=null&&(be(Object(e))?n.merge(s,"string"==typeof e?[e]:e):ue.call(s,e)),s},inArray:function(e,t,n){return t==null?-1:Q.call(t,e,n)},merge:function(e,t){for(var o=+t.length,n=0,s=e.length;n<o;n++)e[s++]=t[n];return e.length=s,e},grep:function(e,t,n){for(var o=[],s=0,i=e.length,a=!n;s<i;s++)!t(e[s],s)!==a&&o.push(e[s]);return o},map:function(e,t,n){var o,a,s=0,i=[];if(be(e))for(a=e.length;s<a;s++)null!=(o=t(e[s],s,n))&&i.push(o);else for(s in e)null!=(o=t(e[s],s,n))&&i.push(o);return Ie(i)},guid:1,support:a}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=p[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){X["[object "+t+"]"]=t.toLowerCase()}),b=function(e){var t,s,i,r,c,l,g,v,O,x,C,k,A,D,R,P,q,G,X,a="sizzle"+1*new Date,h=e.document,p=0,ge=0,ae=F(),ne=F(),ce=F(),S=F(),W=function(e,t){return e===t&&(x=!0),0},ue={}.hasOwnProperty,j=[],he=j.pop,ve=j.push,b=j.push,ee=j.slice,_=function(e,t){for(var n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},V="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",n=`[\\x20\\t\\r\\n\\f]`,y="(?:\\\\[\\da-fA-F]{1,6}"+n+`?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+`,Z="\\["+n+"*("+y+")(?:"+n+"*([*^$|!~]?=)"+n+`*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(`+y+"))|)"+n+"*\\]",H=":("+y+`)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|`+Z+")*)|.*)\\)|)",xe=new RegExp(n+"+","g"),L=new RegExp("^"+n+"+|((?:^|[^\\\\])(?:\\\\.)*)"+n+"+$","g"),Oe=new RegExp("^"+n+"*,"+n+"*"),re=new RegExp("^"+n+"*([>+~]|"+n+")"+n+"*"),we=new RegExp(n+"|>"),_e=new RegExp(H),ye=new RegExp("^"+y+"$"),N={ID:new RegExLine truncated
|
||||
`)}}):{name:t.name,value:s.replace(_t,`\r
|
||||
`)}}).get()}});var Mt=/%20/g,Ft=/#.*$/,Tt=/([?&])_=[^&]*/,zt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Dt=/^(?:GET|HEAD)$/,Lt=/^\/\//,mt={},re={},Ge="*/".concat("*"),ae=i.createElement("a");function qe(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var s,i=0,a=t.toLowerCase().match(m)||[];if(o(n))for(;s=a[i++];)"+"===s[0]?(s=s.slice(1)||"*",(e[s]=e[s]||[]).unshift(n)):(e[s]=e[s]||[]).push(n)}}function Ke(e,t,s,o){var i={},r=e===re;function a(c){var l;return i[c]=!0,n.each(e[c]||[],function(e,n){var c=n(t,s,o);return"string"!=typeof c||r||i[c]?r?!(l=c):0[0]:(t.dataTypes.unshift(c),a(c),!1)}),l}return a(t.dataTypes[0])||!i["*"]&&a("*")}function ie(e,t){var s,o,i=n.ajaxSettings.flatOptions||{};for(s in t)0[0]!==t[s]&&((i[s]?e:o||(o={}))[s]=t[s]);return o&&n.extend(!0,e,o),e}return ae.href=B.href,n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:B.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(B.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ge,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?ie(ie(e,n.ajaxSettings),t):ie(n.ajaxSettings,e)},ajaxPrefilter:qe(mt),ajaxTransport:qe(re),ajax:function(t,s){"object"==typeof t&&(s=t,t=0[0]),s=s||{};var r,c,d,u,h,p,g,b,j,w,o=n.ajaxSetup({},s),l=o.context||o,y=o.context&&(l.nodeType||l.jquery)?n(l):n.event,_=n.Deferred(),O=n.Callbacks("once memory"),f=o.statusCode||{},x={},C={},E="canceled",a={readyState:0,getResponseHeader:function(e){if(c){if(!u){u={};for(var t;t=zt.exec(w);)u[t[1].toLowerCase()+" "]=(u[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=u[e.toLowerCase()+" "]}return t==null?null:t.join(", ")},getAllResponseHeaders:function(){return c?w:null},setRequestHeader:function(e,t){return c==null&&(e=C[e.toLowerCase()]=C[e.toLowerCase()]||e,x[e]=t),this},overrideMimeType:function(e){return c==null&&(o.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)a.always(e[a.status]);else for(t in e)f[t]=[f[t],e[t]];return this},abort:function(e){var t=e||E;return h&&h.abort(t),v(0,t),this}};if(_.promise(a),o.url=((t||o.url||B.href)+"").replace(Lt,B.protocol+"//"),o.type=s.method||s.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(m)||[""],null==o.crossDomain){d=i.createElement("a");try{d.href=o.url,d.href=d.href,o.crossDomain=ae.protocol+"//"+ae.host!=d.protocol+"//"+d.host}catch{o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=n.param(o.data,o.traditional)),Ke(mt,o,s,a),c)return a;for(j in(g=n.event&&o.global)&&0==n.active++&&n.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Dt.test(o.type),r=o.url.replace(Ft,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Mt,"+")):(p=o.url.slice(r.length),o.data&&(o.processData||"string"==typeof o.data)&&(r+=(de.test(r)?"&":"?")+o.data,delete o.data),!1===o.cache&&(r=r.replace(Tt,"$1"),p=(de.test(r)?"&":"?")+"_="+Oe.guid+++p),o.url=r+p),o.ifModified&&(n.lastModified[r]&&a.setRequestHeader("If-Modified-Since",n.lastModified[r]),n.etag[r]&&a.setRequestHeader("If-None-Match",n.etag[r])),(o.data&&o.hasContent&&!1!==o.contentType||s.contentType)&&a.setRequestHeader("Content-Type",o.contentType),a.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Ge+"; q=0.01":""):o.accepts["*"]),o.headers)a.setRequestHeader(j,o.headers[j]);if(o.beforeSend&&(!1===o.beforeSend.call(l,a,o)||c))return a.abort();if(E="abort",O.add(o.complete),a.done(o.success),a.fail(o.error),h=Ke(re,o,s,a)){if(a.readyState=1,g&&y.trigger("ajaxSend",[a,o]),c)return a;o.async&&0<o.timeout&&(b=e.setTimeout(function(){a.abort("timeout")},o.timeout));try{c=!1,h.send(x,v)}catch(e){if(c)throw e;v(-1,e)}}else v(-1,"No Transport");function v(t,s,i,d){var m,p,v,j,x,u=s;c||(c=!0,b&&e.clearTimeout(b),h=0[0],w=d||"",a.readyState=0<t?4:0,m=200<=t&&t<300||304===t,i&&(p=function(e,t,n){for(var o,i,a,r,c=e.contents,s=e.dataTypes;"*"===s[0];)s.shift(),0[0]===a&&(a=e.mimeType||t.getResponseHeader("Content-Type"));if(a)for(o in c)if(c[o]&&c[o].test(a)){s.unshift(o);break}if(s[0]in n)i=s[0];else{for(o in n){if(!s[0]||e.converters[o+" "+s[0]]){i=o;break}r||(r=o)}i=i||r}if(i)return i!==s[0]&&s.unshift(i),n[i]}(o,a,i)),!m&&-1<n.inArray("script",o.dataTypes)&&(o.converters["text script"]=function(){}),p=function(e,t,n,s){var o,i,a,c,l,r={},d=e.dataTypes.slice();if(d[1])for(i in e.converters)r[i.toLowerCase()]=e.converters[i];for(o=d.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!a&&s&&e.dataFilter&&(t=e.dLine truncated
|
||||
Search pattern: "`.concat(e,'"'));var n,s=this._prepareSearchers(e),i=s.tokenSearchers,a=s.fullSearcher,o=this._search(i,a),r=o.weights,t=o.results;return this._computeScore(r,t),this.options.shouldSort&&this._sort(t),n.limit&&"number"==typeof n.limit&&(t=t.slice(0,n.limit)),this._format(t)}},{key:"_prepareSearchers",value:function(){if(e=arguments.length>0&&0[0]!==arguments[0]?arguments[0]:"",t=[],this.options.tokenize)for(var e,t,s=e.split(this.options.tokenSeparator),n=0,o=s.length;n<o;n+=1)t.push(new i(s[n],this.options));return{tokenSearchers:t,fullSearcher:new i(e,this.options)}}},{key:"_search",value:function(){var e,t,r,c=arguments.length>0&&0[0]!==arguments[0]?arguments[0]:[],u=arguments.length>1?arguments[1]:0[0],n=this.list,d={},s=[];if("string"==typeof n[0]){for(t=0,r=n.length;t<r;t+=1)this._analyze({key:"",value:n[t],record:t,index:t},{resultMap:d,results:s,tokenSearchers:c,fullSearcher:u});return{weights:null,results:s}}for(var i={},o=0,h=n.length;o<h;o+=1)for(var l=n[o],a=0,m=this.options.keys.length;a<m;a+=1){if(e=this.options.keys[a],"string"!=typeof e){if(i[e.name]={weight:1-e.weight||1},e.weight<=0||e.weight>1)throw new Error("Key weight has to be > 0 and <= 1");e=e.name}else i[e]={weight:1};this._analyze({key:e,value:this.options.getFn(l,e),record:l,index:o},{resultMap:d,results:s,tokenSearchers:c,fullSearcher:u})}return{weights:i,results:s}}},{key:"_analyze",value:function(e,t){var s,i,c,h,p,g,j,y,_,w,L,a=e.key,N=e.arrayIndex,D=0[0]===N?-1:N,n=e.value,z=e.record,u=e.index,T=t.tokenSearchers,f=0[0]===T?[]:T,x=t.fullSearcher,F=0[0]===x?[]:x,M=t.resultMap,m=0[0]===M?{}:M,S=t.results,A=0[0]===S?[]:S;if(n!=null){var k=!1,o=-1,E=0;if("string"==typeof n){if(this._log(`
|
||||
Key: `.concat(""===a?"-":a)),s=F.search(n),this._log('Full text: "'.concat(n,'", score: ').concat(s.score)),this.options.tokenize){for(var C=n.split(this.options.tokenSeparator),l=[],O=0;O<f.length;O+=1){j=f[O],this._log(`
|
||||
Pattern: "`.concat(j.pattern,'"'));for(_=!1,p=0;p<C.length;p+=1){var d=C[p],b=j.search(d),v={};b.isMatch?(v[d]=b.score,k=!0,_=!0,l.push(b.score)):(v[d]=1,this.options.matchAllTokens||l.push(1)),this._log('Token: "'.concat(d,'", score: ').concat(v[d]))}_&&(E+=1)}o=l[0];for(g=l.length,h=1;h<g;h+=1)o+=l[h];o/=g,this._log("Token score average:",o)}i=s.score,o>-1&&(i=(i+o)/2),this._log("Score average:",i),y=!this.options.tokenize||!this.options.matchAllTokens||E>=f.length,(this._log(`
|
||||
Check Matches: `.concat(y)),(k||s.isMatch)&&y)&&(w=m[u],w?w.output.push({key:a,arrayIndex:D,value:n,score:i,matchedIndices:s.matchedIndices}):(m[u]={item:z,output:[{key:a,arrayIndex:D,value:n,score:i,matchedIndices:s.matchedIndices}]},A.push(m[u])))}else if(r(n))for(c=0,L=n.length;c<L;c+=1)this._analyze({key:a,arrayIndex:c,value:n[c],record:z,index:u},{resultMap:m,results:A,tokenSearchers:f,fullSearcher:F})}}},{key:"_computeScore",value:function(e,t){this._log(`
|
||||
|
||||
Computing score:
|
||||
`);for(n=0,c=t.length;n<c;n+=1){for(var n,a,r,c,o=t[n].output,d=o.length,l=1,i=1,s=0;s<d;s+=1)a=e?e[o[s].key].weight:1,r=(1===a?o[s].score:o[s].score||.001)*a,1!==a?i=Math.min(i,r):(o[s].nScore=r,l*=r);t[n].score=1===i?l:i,this._log(t[n])}}},{key:"_sort",value:function(e){this._log(`
|
||||
|
||||
Sorting....`),e.sort(this.options.sortFn)}},{key:"_format",value:function(e){o=[],this.options.verbose&&(i=[],this._log(`
|
||||
|
||||
Output:
|
||||
|
||||
`,JSON.stringify(e,function(e,t){if("object"===s(t)&&null!==t){if(-1!==i.indexOf(t))return;i.push(t)}return t})),i=null),t=[],this.options.includeMatches&&t.push(function(e,t){o=e.output,t.matches=[];for(var n,s,o,i=0,a=o.length;i<a;i+=1)n=o[i],0!==n.matchedIndices.length&&(s={indices:n.matchedIndices,value:n.value},n.key&&(s.key=n.key),n.hasOwnProperty("arrayIndex")&&n.arrayIndex>-1&&(s.arrayIndex=n.arrayIndex),t.matches.push(s))}),this.options.includeScore&&t.push(function(e,t){t.score=e.score});for(a=0,c=e.length;a<c;a+=1)if(n=e[a],this.options.id&&(n.item=this.options.getFn(n.item,this.options.id)[0]),t.length){for(var t,n,o,i,a,c,l={item:n.item},r=0,d=t.length;r<d;r+=1)t[r](n,l);o.push(l)}else o.push(n.item);return o}},{key:"_log",value:function(){var e;this.options.verbose&&(e=console).log.apply(e,arguments)}}])&&o(t.prototype,n),c&&o(t,c),e}();e.exports=c},function(e,t,n){function s(e,t){for(var n,s=0;s<t.length;s++)n=t[s],n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}var o=n(3),i=n(4),a=n(7),r=function(){function e(t,n){var h=n.location,f=0[0]===h?0:h,i=n.distance,b=0[0]===i?100:i,c=n.threshold,g=0[0]===c?.6:c,d=n.maxPatternLength,u=0[0]===d?32:d,s=n.isCaseSensitive,m=0[0]!==s&&s,o=n.tokenSeparator,p=0[0]===o?/ +/g:o,l=n.findAllMatches,v=0[0]!==l&&l,r=n.minMatchCharLength,j=0[0]===r?1:r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.options={location:f,distance:b,threshold:g,maxPatternLength:u,isCaseSensitive:m,tokenSeparator:p,findAllMatches:v,minMatchCharLength:j},this.pattern=this.options.isCaseSensitive?t:t.toLowerCase(),this.pattern.length<=u&&(this.patternAlphabet=a(this.pattern))}var t,n,r;return t=e,(n=[{key:"search",value:function(e){if(this.options.isCaseSensitive||(e=e.toLowerCase()),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};var n=this.options,s=n.maxPatternLength,a=n.tokenSeparator;if(this.pattern.length>s)return o(e,this.pattern,a);var t=this.options,r=t.location,c=t.distance,l=t.threshold,d=t.findAllMatches,u=t.minMatchCharLength;return i(e,this.pattern,this.patternAlphabet,{location:r,distance:c,threshold:l,findAllMatches:d,minMatchCharLength:u})}}])&&s(t.prototype,n),r&&s(t,r),e}();e.exports=r},function(e){var n=/[-[\]/{}()*+?.\\^$|]/g;e.exports=function(e,t){var s,a,c,l=arguments.length>2&&0[0]!==arguments[2]?arguments[2]:/ +/g,d=new RegExp(t.replace(n,"\\$&").replace(l,"|")),o=e.match(d),i=!!o,r=[];if(i)for(s=0,c=o.length;s<c;s+=1)a=o[s],r.push([e.indexOf(a),a.length-1]);return{score:i?.5:1,isMatch:i,matchedIndices:r}}},function(e,t,n){var s=n(5),o=n(6);e.exports=function(e,t,n,i){for(var r,c,f,g,O,S,T,M=i.location,R=0[0]===M?0:M,F=i.distance,p=0[0]===F?100:F,C=i.threshold,L=0[0]===C?.6:C,k=i.findAllMatches,N=0[0]!==k&&k,E=i.minMatchCharLength,z=0[0]===E?1:E,a=R,j=e.length,d=L,l=e.indexOf(t,a),h=t.length,w=[],_=0;_<j;_+=1)w[_]=0;-1!==l&&(T=s(t,{errors:0,currentLocation:l,expectedLocation:a,distance:p}),(d=Math.min(T,d),-1!==(l=e.lastIndexOf(t,a+h)))&&(S=s(t,{errors:0,currentLocation:l,expectedLocation:a,distance:p}),d=Math.min(S,d)));for(var l=-1,y=[],v=1,b=h+j,D=1<<(h<=31?h-1:30),u=0;u<h;u+=1){for(f=0,c=b;f<c;)s(t,{errors:u,currentLocation:a+c,expectedLocation:a,distance:p})<=d?f=c:b=c,c=Math.floor((b-f)/2+f);var b=c,A=Math.max(1,a-c+1),x=N?j:Math.min(a+c,j)+h,m=Array(x+2);m[x+1]=(1<<u)-1;for(r=x;r>=A;r-=1)if(g=r-1,O=n[e.charAt(g)],O&&(w[g]=1),m[r]=(m[r+1]<<1|1)&O,0!==u&&(m[r]|=(y[r+1]|y[r])<<1|1|y[r+1]),m[r]&D&&(v=s(t,{errors:u,currentLocation:g,expectedLocation:a,distance:p}))<=d){if(d=v,(l=g)<=a)break;A=Math.max(1,2*a-l)}if(s(t,{errors:u+1,currentLocation:a,expectedLocation:a,distance:p})>d)break;y=m}return{isMatch:l>=0,score:0===v?.001:v,matchedIndices:o(w,z)}}},function(e){e.exports=function(e,t){var n=t.errors,l=0[0]===n?0:n,s=t.currentLocation,d=0[0]===s?0:s,o=t.expectedLocation,u=0[0]===o?0:o,i=t.distance,a=0[0]===i?100:i,r=l/e.length,c=Math.abs(u-d);return a?r+c/a:c?1:r}},function(e){e.exports=function(){for(var o,n=arguments.length>0&&0[0]!==arguments[0]?arguments[0]:[],i=arguments.length>1&&0[0]!==arguments[1]?arguments[1]:1,s=[],e=-1,a=-1,t=0,r=n.length;t<r;t+=1)o=n[t],o&&-1===e?e=t:o||-1===e||((a=t-1)-e+1>=i&&s.push([e,a]),e=-1);return n[t-1]&&t-e>=i&&s.push([e,t-1]),s}},function(e){e.exports=function(e){for(var t,n={},s=e.length,o=0;o<s;o+=1)n[e.charAt(o)]=0;for(t=0;t<s;t+=1)n[e.charAt(t)]|=1<<s-t-1;return n}},function(e,t,n){var s=n(0);e.exports=function(e,t){return function e(t,n,o){if(n){{var i,r,d,c=n.indexOf("."),l=n,a=null;if(-1!==c&&(l=n.slice(0,c),a=n.slice(c+1)),i=t[l],i!=null)if(a||"string"!=typeof i&&"number"!=typeof i)if(s(i))for(r=0,d=i.length;r<d;r+=1)e(i[r],a,o);else a&&e(i,a,o);else o.push(i.toString())}}else o.push(t);return o}(e,t,[])}}])}),!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery")):"function"==typeof define&&define.amd?define(["jqueLine truncated
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user