CINXE.COM

Technical Documentation - OJS|OMP|OPS

<!DOCTYPE html> <html lang="en-US"> <title>Technical Documentation - OJS|OMP|OPS</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta property="og:title" content="Technical Documentation - OJS|OMP|OPS" /> <meta property="og:site_name" content="PKP Docs"> <meta name="description" content="A technical guide to the coding conventions and application architecture for Open Journal Systems and Open Monograph Press."> <meta property="og:description" content="A technical guide to the coding conventions and application architecture for Open Journal Systems and Open Monograph Press."> <meta property="og:url" content="http://localhost:4000/dev/documentation/en/"> <link type="text/css" href="/css/book.css" rel="stylesheet" media="all"> <script defer src="/assets/js/smooth-scroll.polyfills.min.js"></script> <script defer src="/assets/js/fontawesome.min.js"></script> <body class="body--withSidebar"> <div class="bookHeader"> <button id="sidebarControl" class="bookHeader__sidebarControl"> <span class="fa fa-bars" aria-hidden="true"></span> <span class="fa fa-times" aria-hidden="true"></span> <span class="-screenReader">Toggle Menu</span> </button> <a class="bookHeader__logo" href="/"> <img src="/img/logo-on-white.png" alt="PKP Docs" class="bookHeader__logoImage"> </a> <div class="bookHeaderTools"> <div class="versions"> <span class="version version--current">3.4</span> <a href="/dev/documentation/3.3/en" class="version">3.3</a> </div> </div> </div> <div class="book"> <a href="#sidebar" class="-screenReader"> Jump to table of contents </a> <div class="book__page"> <div class="book__content"> <div class="book__improve"> <a href="https://github.com/pkp/pkp-docs/edit/main/dev/documentation/en/index.md"> Edit this page </a> or <a href="https://pkp.sfu.ca/documentation-feedback/"> make a suggestion </a> </div> <h1 id="introduction"> Introduction </h1> <p>This document describes the coding conventions and concepts that power PKP鈥檚 applications. It is written for software developers who want to fix bugs, add new features, and contribute code to OJS, OMP or OPS.</p> <p>If you want to adapt one of these applications to your publishing needs, you may prefer to consult the <a href="/pkp-theming-guide/en">Theming Guide</a>, <a href="/dev/plugin-guide/en/">Plugin Guide</a>, or other <a href="/dev">developer documentation</a>.</p> <p>If you are not a coder, please consult our <a href="/">user documentation</a>.</p> <h2 id="what-are-ojs-omp-and-ops"> What are OJS, OMP and OPS? <a href="#what-are-ojs-omp-and-ops" class="book_heading_anchor" title="Link to What are OJS, OMP and OPS? section">#</a> </h2> <p><a href="https://pkp.sfu.ca/software/ojs">Open Journal Systems</a> (OJS), <a href="https://pkp.sfu.ca/software/omp">Open Monograph Press</a> (OMP), and <a href="https://pkp.sfu.ca/software/ops">Open Preprint Systems</a> (OPS) are open-source platforms for open access scholarly publishing. They provide web-based tools to manage the submission, peer-review, copyediting and publishing of scholarly works. Or, in the case of OPS, the submission, moderation and posting of preprints by scholars.</p> <p>These platforms are used to run everything from small, independent presses or journals to large national infrastructures powering hundreds of journals or thousands of preprints.</p> <p>Learn more about our <a href="https://pkp.sfu.ca/software">software</a>.</p> <h2 id="using-this-guide"> Using this guide <a href="#using-this-guide" class="book_heading_anchor" title="Link to Using this guide section">#</a> </h2> <p>This guide will help you learn how to contribute code to the project. It is written as a high-level introduction to the application structure and the most common utilities you will need to begin working with the code.</p> <p>If you are looking for a more detailed specification, please consult the <a href="https://pkp.sfu.ca/ojs/doxygen/master/html/index.html">reference documentation (Doxygen)</a>, the <a href="/dev/api">REST API Usage Guide</a>, the <a href="../../database/">Database Schema</a> or the <a href="/dev/ui-library/dev">UI Library</a>.</p> <p>When you鈥檙e ready, learn how to <a href="./getting-started">get started</a> by installing the software and setting up your development environment.</p> <hr> <p>Copyright: Simon Fraser University holds the copyright for work produced by the Public Knowledge Project and has placed its documentation under a <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.</p> <p><a href="https://creativecommons.org/licenses/by/4.0/"><img src="https://licensebuttons.net/l/by/4.0/88x31.png" alt="Creative Commons Attribution 4.0 International" title="Creative Commons Attribution 4.0 International" /></a></p> <div class="book__footer"> <div class="book__improve"> <a href="https://github.com/pkp/pkp-docs/edit/main/dev/documentation/en/index.md"> Edit this page </a> or <a href="https://pkp.sfu.ca/documentation-feedback/"> make a suggestion </a> </div> </div> </div> </div> <div class="book__sidebarScreen"></div> <div id="sidebar" class="book__sidebar"> <div class="book__summary"> <h1 id="summary">Summary</h1> <ul> <li><a href=".">Introduction</a></li> <li><a href="./getting-started">Getting Started</a></li> <li><a href="./architecture">Architecture</a> <ul> <li><a href="./architecture-request">Request Lifecycle</a></li> <li><a href="./architecture-routes">Routes</a></li> <li><a href="./architecture-handlers">Handlers</a></li> <li><a href="./architecture-authentication">Authentication</a></li> <li><a href="./architecture-authorization">Authorization</a></li> <li><a href="./architecture-entities">Entities</a></li> <li><a href="./architecture-daos">DAOs</a></li> <li><a href="./architecture-repositories">Repositories</a></li> <li><a href="./architecture-maps">Maps</a></li> <li><a href="./architecture-database">Database</a></li> <li><a href="./architecture-plugins">Plugins</a></li> </ul> </li> <li><a href="./frontend">Frontend</a> <ul> <li><a href="./frontend-pages">Pages</a></li> <li><a href="./frontend-ui-library">UI Library</a></li> <li><a href="./frontend-forms">Forms</a></li> <li><a href="./frontend-list-panels">ListPanels</a></li> <li><a href="./frontend-controllers">Controllers</a></li> </ul> </li> <li>Utilities <ul> <li><a href="./utilities-application">Application</a></li> <li>Cache</li> <li><a href="./utilities-config">Config</a></li> <li><a href="./utilities-email">Email</a></li> <li><a href="./utilities-events">Events</a></li> <li><a href="./utilities-files">Files</a></li> <li><a href="./utilities-hooks">Hooks</a></li> <li><a href="./utilities-jobs">Jobs</a></li> <li><a href="./utilities-migrations">Migrations</a></li> <li>Notifications</li> <li><a href="./utilities-translation">Translation</a></li> <li><a href="./utilities-validation">Validation</a></li> </ul> </li> <li>Other <ul> <li><a href="./decisions">Decisions</a></li> <li><a href="./email-templates">Email Templates</a></li> <li><a href="./publication-versions">Publication Versions</a></li> <li><a href="./statistics">Statistics</a></li> <li><a href="./statistics-editorial">Statistics (Editorial)</a></li> <li><a href="./submission-files">Submission Files</a></li> </ul> </li> <li><a href="./exercises/">Learning Exercises</a></li> <li><a href="./codereviews">Code Reviews</a></li> <li><a href="./resources">Resources</a></li> </ul> </div> <div class="book__backToHub"> <span class="fa fa-long-arrow-alt-left" aria-hidden="true"></span> <p>Back to <a href="/">all documentation</a>.</p> </div> <div class="book__spacer"></div> </div> </div> <div class="book__footerWrapper"> <div class="siteFooter"> <nav class="siteFooter__container"> <div class="siteFooter__top"> <div class="siteFooter__nav"> <div class="siteFooter__navHeader"> Contact Us </div> <p>Have a question or suggestion about PKP鈥檚 documentation and user guides? <a href="https://pkp.sfu.ca/documentation-feedback/">Use our documentation contact form</a>.</p> <p>If your message is not about documentation, please use the general <a href="https://pkp.sfu.ca/contact-us/">contact form</a>.</p> </div> <div class="siteFooter__nav"> <div class="siteFooter__navHeader"> Community </div> <p><a href="https://pkp.sfu.ca/documentation-interest-group/">Documentation Interest Group</a></p> <p><a href="/contributing/en/">Contributing Documentation</a></p> <p><a href="/translating-guide/">Translating Guide</a></p> <p><a href="https://forum.pkp.sfu.ca">Community Forum</a></p> </div> <div class="siteFooter__nav"> <div class="siteFooter__navHeader"> About </div> <p><a href="https://pkp.sfu.ca">Public Knowledge Project</a></p> <p><a href="https://pkpservices.sfu.ca/">PKP|Publishing Services</a></p> </div> <div class="siteFooter__logo"> <a href="https://pkp.sfu.ca"> <img src="/img/logo-on-grey.png" alt="Public Knowledge Project"> </a> <p>The Public Knowledge Project is a Core Facility of Simon Fraser University</p> <p>888 University Drive, Burnaby, B.C., Canada V5A 1S6</p> <p>We respectfully acknowledge that SFU occupies the unceded traditional territories of the Coast Salish peoples of the Musqueam, Squamish, and Tsleil-Waututh Nations.</p> </div> </div> <div class="siteFooter__bottom"> <p class="footer-copyright"><span class="terms-text"><a href="https://www.sfu.ca/contact/terms-conditions.html" target="_blank">TERMS & CONDITIONS</a> &copy; SIMON FRASER UNIVERSITY.</span><span class="copyright-text"><img src="/img/creativecommons.svg" alt="Creative Commons logo" /><img src="/img/attribution.svg" alt="Attribution icon" /><a href="https://creativecommons.org/licenses/by/2.0/" target="_blank">CC-BY 2.0</a></span><span class="footer-copyright-separator"> | </span><span class="ab-link">Website by <a target="_blank" href="https://www.affinitybridge.com">Affinity Bridge</a></span></p> </div> </div> </div> </div> <script type="text/javascript">/** * Toggle the sidebar open/closed */ (function() { var sidebar = document.getElementById('sidebar'); var sidebarControl = document.getElementById('sidebarControl'); var isOpen = false; var sidebarOpenClass = ' -sidebarIsOpen'; if (!sidebar || !sidebarControl) { return; } // Toggle sidebar function toggle() { if (isOpen) { document.body.className = document.body.className.replace(new RegExp(sidebarOpenClass, 'g'), ''); } else { document.body.className = document.body.className + sidebarOpenClass; } isOpen = !isOpen; } sidebarControl.addEventListener('click', toggle); })(); </script> <script type="text/javascript">/** * Initialize smooth scrolling to anchor links * * See: https://github.com/cferdinandi/smooth-scroll */ (function() { function init() { if (typeof SmoothScroll === 'undefined') { setTimeout(init, 500); } else { var scroll = new SmoothScroll('a[href*="#"]', {easing: 'easeInOutCubic', offset:80}); } } init(); })(); </script> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-130558797-1"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-130558797-1'); </script> <!-- Hotjar Tracking Code for docs.pkp.sfu.ca --> <script> (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:2436159,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); </script> <!-- Piwik/Matomo --> <script type="text/javascript"> var _paq = _paq || []; _paq.push(["setDocumentTitle", document.domain + "/" + document.title]); _paq.push(["setCookieDomain", "*.docs.pkp.sfu.ca"]); _paq.push(["setDomains", ["*.docs.pkp.sfu.ca"]]); _paq.push(["trackPageView"]); _paq.push(["enableLinkTracking"]); (function() { var u = (("https:" == document.location.protocol) ? "https" : "http") + "://" + "matomo.publicknowledgeproject.org/pkp/"; _paq.push(["setTrackerUrl", u + "piwik.php"]); _paq.push(["setSiteId", "40"]); var d = document, g = d.createElement("script"), s = d.getElementsByTagName("script")[0]; g.type = "text/javascript"; g.defer = true; g.async = true; g.src = u + "piwik.js"; s.parentNode.insertBefore(g, s); })(); </script> <!-- End Piwik Code --> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10