{"id":2101,"date":"2014-03-31T11:43:30","date_gmt":"2014-03-31T11:43:30","guid":{"rendered":"http:\/\/blog.efrontlearning.net\/?p=2101"},"modified":"2017-06-08T21:53:16","modified_gmt":"2017-06-08T21:53:16","slug":"a-sneak-peek-at-efrontpro-internals","status":"publish","type":"post","link":"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html","title":{"rendered":"A Sneak Peek at eFront: Internals"},"content":{"rendered":"<div class=\"wp-block-classic-wrap\">\n<p id=\"docs-internal-guid-8cd0b21f-03c4-c35c-25b7-5f2b1fa11d3d\" dir=\"ltr\" style=\"text-align: justify;\"><a href=\"http:\/\/blog.efrontlearning.net\/wp-content\/uploads\/2014\/03\/efrontPro_internals.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2112\" src=\"http:\/\/blog.efrontlearning.net\/wp-content\/uploads\/2014\/03\/efrontPro_internals.png\" alt=\"efrontPro_internals\" width=\"1407\" height=\"541\" \/><\/a>Efront has been around for quite some time (almost 12 years, actually!). During this time, we\u2019ve witnessed the rise (and, occasionally, fall) of many great technologies, libraries and trends, several of which we had embraced ourselves. Time has come for some change though.<\/p>\n<p dir=\"ltr\" style=\"text-align: justify;\"><!--more--><\/p>\n<h2 dir=\"ltr\" style=\"text-align: justify;\">Front-end<\/h2>\n<p id=\"docs-internal-guid-8cd0b21f-03c8-88bb-732e-810b74c50fae\" dir=\"ltr\" style=\"text-align: justify; padding-left: 30px;\"><strong>A.<\/strong> Up until now, efront was using the prototypeJS javascript framework. In efrontPRO we\u2019ve replaced it with jQuery, the defacto standard for web programming. Making this change meant that we had to rewrite every piece of javascript code in the system. Thanks to jQuery\u2019s robust architecture and its vast selection of libraries, efrontPRO comes with almost 80% less custom javascript code.<\/p>\n<p dir=\"ltr\" style=\"text-align: justify; padding-left: 30px;\"><strong>B.<\/strong> We\u2019ve embraced Bootstrap 3, the popular UI framework for the web. It has a sleak, lightweight and fresh design and includes an awesome collection of widgets and animations. Equally important though is its mobile-first approach, which ensures that efrontPRO runs smoothly on all mobile devices.<\/p>\n<p dir=\"ltr\" style=\"text-align: justify; padding-left: 30px;\"><strong>C.<\/strong> With the power of jQuery and Bootstrap, we were able to make use of the latest and greatest UI libraries available. The editor, the content\/courses\/branches tree, the uploader and the autocomplete box are some examples of redesigned widgets.<\/p>\n<p style=\"text-align: justify; padding-left: 30px;\"><strong>D.<\/strong> Finally, eFrontPRO comes with out-of-the-box support for delivering static assets (css, js) using a CDN, enhancing client-side performance and lowering network usage for the server.<\/p>\n<h2 style=\"text-align: justify;\">Back-end<\/h2>\n<p id=\"docs-internal-guid-8cd0b21f-03c9-caaf-00ad-8d4e6a5aa1de\" dir=\"ltr\" style=\"text-align: justify; padding-left: 30px;\"><strong>A.<\/strong> Up until now, internationalization was implemented using PHP\u2019s defines, a strategy that suited the project well in the early days but has revealed its shortcomings as the project grew bigger. eFrontPRO offers a new internationalization framework based on GNU gettext. What does this practically mean? Improved run-time performance, easier translations, ability to use all the tools available for translating in gettext, graceful fallback to english for untranslated literals. It also meant that we were able to ditch unused language tags and group similiar tags together, resulting in ~25% less terms.<\/p>\n<p dir=\"ltr\" style=\"text-align: justify; padding-left: 30px;\"><strong>B.<\/strong> The implementation of efrontPRO follows a more mature and standards-based MVC approach, taking advantage of PHP namespaces. This allowsfor clean, easily tested and reusable code, while at the same time maintaining a considerably smaller footprint.<\/div>\n<\/p>\n<p dir=\"ltr\" style=\"text-align: justify; padding-left: 30px;\"><strong>C.<\/strong> efrontPRO leverages the use of caching, supporting various cache back-ends and caching a substantially larger amount of objects, resulting in both performance and scaling gains.<\/p>\n<p dir=\"ltr\" style=\"text-align: justify; padding-left: 30px;\"><strong>D.<\/strong> efrontPRO comes with a redesigned, smaller and more robust database schema. It takes advantage of innoDB tables\u2019 characteristics, uses transactions where needed and delivers fast performance for high loads.<\/p>\n<p style=\"text-align: justify; padding-left: 30px;\"><strong>E.<\/strong> Finally, efrontPRO comes with various new subsystems: A brand new notifications API, a new plugins API and a fully automated upgrade mechanism, along with a trove of smaller improvements and innovations.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Efront has been around for quite some time (almost 12 years, actually!). During this time, we\u2019ve witnessed the rise (and, occasionally, fall) of many great technologies, libraries and trends, several of which we had embraced ourselves. Time has come for some change though.<\/p>\n","protected":false},"author":33870,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[39,42],"tags":[],"class_list":["post-2101","post","type-post","status-publish","format-standard","hentry","category-news","category-resources-tools"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.2 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>A Sneak Peek at eFront: Internals - eFront Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Sneak Peek at eFront: Internals\" \/>\n<meta property=\"og:description\" content=\"Efront has been around for quite some time (almost 12 years, actually!). During this time, we\u2019ve witnessed the rise (and, occasionally, fall) of many great technologies, libraries and trends, several of which we had embraced ourselves. Time has come for some change though.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html\" \/>\n<meta property=\"og:site_name\" content=\"eFront Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-03-31T11:43:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-06-08T21:53:16+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/blog.efrontlearning.net\/wp-content\/uploads\/2014\/03\/efrontPro_internals.png\" \/>\n<meta name=\"author\" content=\"Periklis Venakis\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Periklis Venakis\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html\"},\"author\":{\"name\":\"Periklis Venakis\",\"@id\":\"https:\/\/www.efrontlearning.com\/blog\/#\/schema\/person\/dcd144f84730760058e38f054bd10bd2\"},\"headline\":\"A Sneak Peek at eFront: Internals\",\"datePublished\":\"2014-03-31T11:43:30+00:00\",\"dateModified\":\"2017-06-08T21:53:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html\"},\"wordCount\":441,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html#primaryimage\"},\"thumbnailUrl\":\"http:\/\/blog.efrontlearning.net\/wp-content\/uploads\/2014\/03\/efrontPro_internals.png\",\"articleSection\":[\"Product News\",\"Resources &amp; Tools\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html\",\"url\":\"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html\",\"name\":\"A Sneak Peek at eFront: Internals - eFront Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.efrontlearning.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html#primaryimage\"},\"thumbnailUrl\":\"http:\/\/blog.efrontlearning.net\/wp-content\/uploads\/2014\/03\/efrontPro_internals.png\",\"datePublished\":\"2014-03-31T11:43:30+00:00\",\"dateModified\":\"2017-06-08T21:53:16+00:00\",\"author\":{\"@id\":\"https:\/\/www.efrontlearning.com\/blog\/#\/schema\/person\/dcd144f84730760058e38f054bd10bd2\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html#primaryimage\",\"url\":\"http:\/\/blog.efrontlearning.net\/wp-content\/uploads\/2014\/03\/efrontPro_internals.png\",\"contentUrl\":\"http:\/\/blog.efrontlearning.net\/wp-content\/uploads\/2014\/03\/efrontPro_internals.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\/\/www.efrontlearning.com\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Product News\",\"item\":\"https:\/\/www.efrontlearning.com\/blog\/category\/news\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"A Sneak Peek at eFront: Internals\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.efrontlearning.com\/blog\/#website\",\"url\":\"https:\/\/www.efrontlearning.com\/blog\/\",\"name\":\"eFront Blog\",\"description\":\"eLearning tips, news and resources\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.efrontlearning.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.efrontlearning.com\/blog\/#\/schema\/person\/dcd144f84730760058e38f054bd10bd2\",\"name\":\"Periklis Venakis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.efrontlearning.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d0af4557a6afdb5df011947ac3891adb4da43411e9cfaae520389f7ebb4adde7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d0af4557a6afdb5df011947ac3891adb4da43411e9cfaae520389f7ebb4adde7?s=96&d=mm&r=g\",\"caption\":\"Periklis Venakis\"},\"url\":\"https:\/\/www.efrontlearning.com\/blog\/author\/pvenakis\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"A Sneak Peek at eFront: Internals - eFront Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html","og_locale":"en_US","og_type":"article","og_title":"A Sneak Peek at eFront: Internals","og_description":"Efront has been around for quite some time (almost 12 years, actually!). During this time, we\u2019ve witnessed the rise (and, occasionally, fall) of many great technologies, libraries and trends, several of which we had embraced ourselves. Time has come for some change though.","og_url":"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html","og_site_name":"eFront Blog","article_published_time":"2014-03-31T11:43:30+00:00","article_modified_time":"2017-06-08T21:53:16+00:00","og_image":[{"url":"http:\/\/blog.efrontlearning.net\/wp-content\/uploads\/2014\/03\/efrontPro_internals.png","type":"","width":"","height":""}],"author":"Periklis Venakis","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Periklis Venakis","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html#article","isPartOf":{"@id":"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html"},"author":{"name":"Periklis Venakis","@id":"https:\/\/www.efrontlearning.com\/blog\/#\/schema\/person\/dcd144f84730760058e38f054bd10bd2"},"headline":"A Sneak Peek at eFront: Internals","datePublished":"2014-03-31T11:43:30+00:00","dateModified":"2017-06-08T21:53:16+00:00","mainEntityOfPage":{"@id":"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html"},"wordCount":441,"commentCount":0,"image":{"@id":"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html#primaryimage"},"thumbnailUrl":"http:\/\/blog.efrontlearning.net\/wp-content\/uploads\/2014\/03\/efrontPro_internals.png","articleSection":["Product News","Resources &amp; Tools"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html","url":"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html","name":"A Sneak Peek at eFront: Internals - eFront Blog","isPartOf":{"@id":"https:\/\/www.efrontlearning.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html#primaryimage"},"image":{"@id":"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html#primaryimage"},"thumbnailUrl":"http:\/\/blog.efrontlearning.net\/wp-content\/uploads\/2014\/03\/efrontPro_internals.png","datePublished":"2014-03-31T11:43:30+00:00","dateModified":"2017-06-08T21:53:16+00:00","author":{"@id":"https:\/\/www.efrontlearning.com\/blog\/#\/schema\/person\/dcd144f84730760058e38f054bd10bd2"},"breadcrumb":{"@id":"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html#primaryimage","url":"http:\/\/blog.efrontlearning.net\/wp-content\/uploads\/2014\/03\/efrontPro_internals.png","contentUrl":"http:\/\/blog.efrontlearning.net\/wp-content\/uploads\/2014\/03\/efrontPro_internals.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.efrontlearning.com\/blog\/2014\/03\/a-sneak-peek-at-efrontpro-internals.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/www.efrontlearning.com\/blog"},{"@type":"ListItem","position":2,"name":"Product News","item":"https:\/\/www.efrontlearning.com\/blog\/category\/news"},{"@type":"ListItem","position":3,"name":"A Sneak Peek at eFront: Internals"}]},{"@type":"WebSite","@id":"https:\/\/www.efrontlearning.com\/blog\/#website","url":"https:\/\/www.efrontlearning.com\/blog\/","name":"eFront Blog","description":"eLearning tips, news and resources","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.efrontlearning.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.efrontlearning.com\/blog\/#\/schema\/person\/dcd144f84730760058e38f054bd10bd2","name":"Periklis Venakis","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.efrontlearning.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d0af4557a6afdb5df011947ac3891adb4da43411e9cfaae520389f7ebb4adde7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d0af4557a6afdb5df011947ac3891adb4da43411e9cfaae520389f7ebb4adde7?s=96&d=mm&r=g","caption":"Periklis Venakis"},"url":"https:\/\/www.efrontlearning.com\/blog\/author\/pvenakis"}]}},"_links":{"self":[{"href":"https:\/\/www.efrontlearning.com\/blog\/wp-json\/wp\/v2\/posts\/2101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.efrontlearning.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.efrontlearning.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.efrontlearning.com\/blog\/wp-json\/wp\/v2\/users\/33870"}],"replies":[{"embeddable":true,"href":"https:\/\/www.efrontlearning.com\/blog\/wp-json\/wp\/v2\/comments?post=2101"}],"version-history":[{"count":7,"href":"https:\/\/www.efrontlearning.com\/blog\/wp-json\/wp\/v2\/posts\/2101\/revisions"}],"predecessor-version":[{"id":5635,"href":"https:\/\/www.efrontlearning.com\/blog\/wp-json\/wp\/v2\/posts\/2101\/revisions\/5635"}],"wp:attachment":[{"href":"https:\/\/www.efrontlearning.com\/blog\/wp-json\/wp\/v2\/media?parent=2101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.efrontlearning.com\/blog\/wp-json\/wp\/v2\/categories?post=2101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.efrontlearning.com\/blog\/wp-json\/wp\/v2\/tags?post=2101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}