Architecture Overview

Simplicity always, always, always comes at the price of a deep understanding of the subject matter.

–Raul Sanchez

We have put a lot of efforts to make sure that you can build websites an apps in very simple way. We have done our best to make sure that removed the complexity associated with building websites and apps, to help you focus on content and creating value for your customers.

buider-architecture

 

There are, however, a couple of things that you should know about the builder that will help take advantage of the software.

 

Core

The builder application and any website or app that is build with the builder, it is built on top of what we call a “Core”. At the time of this writing, the most recent version of the Core is 0.2.0. The first component of the architecture that get initialized is the Core. Any website that you create will inherit this version of the Core. As we continue improving the Core framework, new versions will be released. Websites built in previous versions will not be updated automatically. This allows to continue improving the product and to protect websites that might still require legacy functionality to continue to run. Manual Core updates are available and it is our best interest to maintain backward compatibility up to 3 prior releases.

 

 Wordpress

Every website, including the Builder Application, has a WordPress CMS attached to it. This allows to manage content (text, images, etc.), manage users, and url routes. Every WordPress instance comes with a “appcropolis” theme that carries website specific code. In the case of the Builder Application, its theme extended the functionality to provide not only the specific UI, but the necessary functionality. Similarly, each website uses the appcropolis theme to initialize standard website functionality.

 

View Types

A view type is one of the Core concepts that allows us to link a view type to a WordPress page type. The Core will automatically determine the view type depending on which WordPress page is loaded when users visit the the website. For example, if a website visitor goes to the home page, the view type is “front-page”, for a blog post the view type is “single”, and for a category page the view type is “category”.

NOTE: To learn more about the WordPress page architecture, please check http://wphierarchy.com/.

 

Special Pages

In other to link the work that you do to the WordPress instance that is linked to your website project, inside the Builder Application, you must name your pages in a way that will match the view type that you want to target. The name of your pages are also equivalent to the traditional theme pages. Below you can see the supported view types and the corresponding WordPress theme files *.

  • 404 → 404.php
  • front-page → front-page.php
  • blog → blog.php
  • cart → **
  • checkout → **
  • search → search.php
  • single → single.php
  • single-[blog_post_slug] → **
  • category → category.php
  • category-[blog_category_slug] → category-some_category.php
  • tags → tags.php
  • single-product → **
  • page → page.php
  • product → **
  • [any-page-name] → **

 

NOTE:
* The appcropolis theme does not make use of any traditional theme pages.
** No matching page is standard WordPress theme.

Builder Release Notes

0.2.7

  • {{page..}} binder now accept an @envolope parameter

0.2.6

  • Allow passing binders in a JSON string when create {{JSON.. }} binders.
  • Adding improvement to the {{required…}} binder.
  • Suppressed the output of WP-JSON URL in the header section.
  • Consolidated element update methods (internal).
  • Allow editing of dynamic content in a separate code editor popup.
  • Adding .BLUR event to allow popups and panels to hide when they are not needed.
  • Allow previewing edited blocks to detect possible broken binders before saving to the DB.
  • Removing “Buy Credits” window.
  • Adding pre-loader bar that can be used to block the UI when performing long operations.
  • Disabled content restrictions so users can create more apps, pages, and blocks.
  • Adding {{login…}} binder.
  • Adding {{goto…}} binder.
  • Adding {{gallery_block…}} binder.
  • Adding {{condition…}} binder.
  • Adding {{countdown…}} binder.
  • Adding {{upload…}} binder.
  • Stop page blocks from loading if a new page is requested (builder).
  • Adding popup effect to modals.
  • Allowed switching framework version of a project from the builder.
  • Improved {{twitter…}} binder.

0.2.5

  • Code refactoring to improve loading speed.

0.2.4

  • Global 404 page for missing websites.
  • Modal binder {{modal}}.
  • Bootswatch binder {{bootswatch}}.
  • New builder header with menu bar navigation added to the top.
  • Allow user’s custom brand (logo and site URL. e.g. builder.userswebsite.com).
  • Improving the {{header}} binder to simplify the head section of the page.
  • Improving the {{footer}} binder to simplify the footer code of the page (script tags).
  • Added the class APPCUtils to consolidate global utility functions.
  • Modified output of “woocommerce_recently_viewed_products” to return $response->$data.
  • Improving {{woocommerce_recently_viewed_products}} binder to show products in the right order.
  • Allowing setting the “Next” and “Previous” label in the {{paginate}} binder.
  • Improved design of the /admin redirect page (global page).

 

0.2.3

  • BUG: APPC_PRODUCT_HOST will only work on simplifysites.com.
  • BUG: when adding a promo code, the ENTER key submits form and refresh.
  • BUG: realtime preview not rendering processed data.
  • BUG: block height does not refresh when page is loaded –consider loading blocks sequentially.
  • BUG: Edit Details panel does not allow empty values in class and ID fields.
  • BUG: if block has dynamic content, always refresh after editing.
  • BUG: if viewport size is not set the “preview” page doe not set any default (set default).
  • BUG: need to reset images in WP Image Choose.
  • BUG: builder project pages get indexed creating SEO duplicate content (add nofollow).
  • BUG: refresh browser does not recover the last project and page that were opened.
  • BUG: source code page editor still jumps when mouse click after maximize code view.
  • BUG: unable to load media in builder if there are files that are not images.
  • BUG: unable to see the desktop block library when switching from a mobile project.
  • BUG: When creating default project the Core version is not updated.
  • BUG: ‘powered by: appcropolis’ not properly aligned.
  • BUG: “${” breaks smarty template.
  • BUG: {{resources}} not returning the right builder host name unless block is refreshed.
  • PRELOAD iframe content when editing code and showing preview.

 

0.2.2

  • BUG: when switching from a desktop to a mobile project, or vice versa, the block collection does not update.
  • ALLOW using (hardcoded) promo codes.
  • PREVENT hosted projects from being deleted –email order id for future use.
  • EXPORT project (.zip + JSON), so in can be imported later.
  • BUG: data not in sync. On project delete.
  • BUG: when a project is renamed, its data is not updated.
  • BUG: unable to publish imported projects.
  • BUG: wrong provision URL when restoring archive.
  • BUG: rename project failed (find out why).
  • BUG: Unable to create new project due to missing PID.
  • BUG: unable to delete projects (PHP memory too low… change PHP ini).
  • BUG: Unable to duplicate mobile template due to PHP memory exhausted.
  • ADD view type “internal” in APPC; if 404 but an HTML view is found set as “internal”.
  • ALLOW browsing WordPress Media Images.
  • RESTORE project archive (.zip + JSON).
  • ADD coming soon templates.
  • CREATE a helper.css file.
  • ENABLE mobile templates.
  • MOVE appcropolis logo, tos, privacy links to the lower right corner.
  • REDIRECT homepage to signin.
  • REMOVE Javascript alerts from checkout page.
  • USE API::set_header to set headers in API class.

 

0.2.1

  • BUG: Double Welcome.
  • ALLOW publishing all pages (UI).
  • BUG: clear resources panel if not project is opened (on project changed).
  • BUG: in builder edit buttons do not have icons (edit, text) if there is a custom CSS.
  • BUG: when renaming a project the “host” link gets broken.
  • DUPLICATE site.
  • BUG: when project is deleted the host files and aliases are left behind.
  • BUG: reset resources panel if no project is opened.
  • RENAME page and republish DB and files.
  • ADD developer’s credentials to newly created sites so developers can login with the same password .
  • REMOVE credit widget from sidebar.
  • ADD GA to the builder to track interactions (e.g. appc.composer.track.action(‘some action’, ‘some value’) ).
  • PREVENT adding new projects if there is an un-published/un-paid website.
  • PREVENT publishing projects if it is not paid.
  • RESTORE last project, last page, and last viewport size on browser page refresh.
  • RENAME projects.
  • CONFIRM project delete action by typing the word “DELETE”.
  • API to list desktop and mobile templates.
  • ALLLOW user to select a website template from the UI.
  • LOAD external JSON files to use as dummy data.
  • RESET appc-ui cookie on PROJECT_DELETED.
  • BUG: default project failed to re-install WordPress (see if DB files were uploaded).
  • BUG: edit block button jumps on rollover texts.
  • ALLOW renaming projects and preview URL in real time.
  • REMOVE “…/front-page” from preview popup.
  • BUG: dragging blocks not working.
  • DETECT if user has reached his/her maximum project, page, block allowance.
  • ADD cart class to allow managing shopping cart.
  • ALLOW admins to create content without paying.
  • CREATE project after user paid for hosting.
  • CREATE project using payment information.
  • BUG: admin user not created in live site (username already existed).
  • REPLACE selected images in the builder with images from the WP Media Library.
  • BROWSE WordPress Media Gallery.
  • TOGGLE block ID in screen to allow selecting blocks if height is zero.
  • PREVENT fast clicker (users clicking like crazy).
  • DISABLE top navigation buttons is no projects is open or if something is being loaded (consider using states).
  • PROMPT user to login if session expired (see: http://codex.wordpress.org/Function_Reference/get_currentuserinfo#Parameters).

 

0.2.0

  • ALLOW download code only if user has enough credits.
  • ALLOW renaming site URL (e.g. project-sanraul.appcropolis.com -> mysite.appcropolis.com).
  • DUPLICATE page.
  • SET default builder page (e.g. “my-account” page) using the “checkout” page as a reference.
  • SWITCH “Download” button with “Publish” and move publish button to the “Preview” popup window. Also allow publishing from dropdown (page options).
  • ENABLE payment using Paypal/Mastercard.
  • CREATE Wallet APIs.
  • DISPLAY credits in sidebar.
  • INSTALL and setup User Wallet plugin.
  • DESIGN and BUILD checkout page with link back to the builder.
  • DOWNLOAD HTML code only (unminified).
  • ENABLE blog post in builder.
  • ENABLE single post in builder.
  • PROCESS shortcodes.
  • REDIRECT “single” page to “latets_post”.
  • ALLOW publishing all pages at once.
  • ALLOW uploading a zip files with project static assets (resources.zip).
  • BUG: max size for uploaded files is set to 2M by default (increase to 20M).

 

0.1.9

  • SEPARATE builder DB from user generated sites (UGS) DB.
  • ADD a pageReady event (fire when the page is ready for the user to interact).
  • RENAME projects.
  • ALLOW copy/paste blocks.
  • ACQUIRE site URL from provision, not from concatenating username and project name.
  • RELEASE: Separate UGC Database.
  • ALLOW undo the last paste action.
  • ALLOW duplicating pages (and respective blocks).
  • ALLOW copy and paste blocks from one page to another or one project to another.
  • BUG: when dropping block outside the helper does not have style.
  • BUG: fonts are not allowed between domains.
  • BUG: Issues getting the height of mobile block (verify if margins are taken into consideration).
  • BUG: Unable to save internal page links (e.g. #about).
  • BUG: drag handler not visible on mouse out while dragging.
  • BUG: draggable content can be rolled over while dragging.
  • BUG: API calls not working if the user is not logged in.
  • BUG: Unable to connect to API site from the builder.
  • BUG: prevent deleting projects/pages from different user emails.
  • BUG: missing port in provision URL.
  • BUG: Style/Links/PageDropDown nor sidebar updated on new_page, rename_page, delete_page.
  • BUG: unable to write view files due to broken path (sites/not-clear-project-name).
  • BUG: duplicated pages do not carry the proper block sequence.
  • MINIFY core javascript code automatically via Grunt or similar tool.
  • MOVE simplifysites.com to DigitalOcean, enable CNAME.
  • REMEMBER and restore last user selected tab.
  • VERIFY that all appc.composer.model requeste can be handled by API.
  • RENAME data-appcropolis site as UGC.
  • AUTOMATE minification of JS code.
  • PATCH duplicate color picker. When style is opened color picker is never removed but duplicated.

 

0.1.8

  • ADDING AERIAL_MODE event
  • ALLOW choosing pages from dropdown when assigning a link
  • ALLOW flagging elements as ‘not editable (e.g. <h1 class-“not-editable”>Don’t touch me</h1>)
  • CREATE a random number generator binder (e.g. {{raondom before=”?rand=” count=”6″ after=”&”}}
  • LINK to remote site admin
  • ALLOW the support of Fixed Top navigation
  • ALLOW the use of credits per users
  • BUG: adding CSS code in the Block JS editor breaks page and prevent builder from saving block/page
  • BUG: Aerial Mode still leaves clickable buttons (invisible) (consider moving panels and header outside of the screen)
  • BUG: block categories not wrapped inside “Add Block” popup
  • BUG: broken relationships in composer.project and UI due to links to #project-controller” (see $el)
  • BUG: CSS not always updates when editng block (consider adding rand=xxx)
  • BUG: deleting site attempts to create a new project
  • BUG: Element options (A, Pencil) stay open after rollout (e.g. consider hiding when “deselect” is called)
  • BUG: if a button does not have an HREF attribute, the Style Panel is not invoked
  • BUG: if Smarty code breaks, there is no easy way to edit block code
  • BUG: missing jQuery lib in mobile sites (/resources/vendors/jquery/…)
  • BUG: mobile blocks not showing HTML code in the code/preview
  • BUG: refresh icon from selection (on snapOn)
  • BUG: Restrict period in the site names
  • BUG: selectable elements are assigned ca “data-selector” attribute
  • BUG: styler panel not hiding when entering Aerial mode
  • BUG: Unable to click on options menu (…) when the Styler is opened
  • BUG: when a page is published and previewed, the CSS in the preview does not update (Refresh is needed)
  • BUG: when editing icon, the old class is not removed (e.g. fa-times)
  • BUG: when editing icons, ad ui-id-## class is added (e.g. ui-id-23)
  • BUG: when switching pages, previous page remains open while new page is being rendered
  • BUG: white area in blocks content is less than 400px (min-height: 400px)
  • BUG: WordPress logs out do to wrong Apache configuration
  • BUG: Broken CSS in WordPress Billy
  • BUG: missing a page loading message
  • BUG: when a error (e.g. unknown tag) is introduce, the builder does not notify it.
  • BUG: while a second page is being loaded, clicking on a page mess up the page block visibility
  • BUG: appc.composer.main() is called twice
  • ADD gravatar to profile dropdown menu
  • ADD nicer pre-loader
  • ALLOW deleting sites AND/OR files on server (in short, unlink and complete delete option)
  • FILTER projects and show only those that belong to the currently logged user (show all for admins)
  • SHOW add block popup if the page has no blocks
  • SHOW add page popup if the site has no pages (prevent deleting the last page)
  • SHOW add site popup if there are no sites
  • SHOW currently logged user name on drop-down (e.g. Not sanraul?)
  • ALLOW skipping block of code if loaded inside the builder. Add global variable (e.g. window.inbuilder = true)
  • CREATE a dynamic Style Panel that can make use of all CCS rules
  • CREATE pre-loader component and connect it to model, page, etc
  • SHOW appropriate message when: no app, no page, no block
  • ADD environment binder (e.g. {{environment is=”localhost:8888″ has=”appcropolis” lacks=”appcropolis”}}..do this{{/environment}}

 

0.1.7

  • Added Developer Configuration Page to WP admin (similar to the company settings).
  • Allow locale to take dynamic values as tokens (e.g. …locale.get(‘Hi %1, welcome to %2’, ‘Raul’,’Appcropolis’).
  • Allow requesting mobile OR desktop blocks (families).
  • Enable import sites (projects).
  • Allow logging out from the builder interface.
  • Change template engine delimiter from single curly brackets to double (e.g. {date…} -> {{date…}}).
  • BUG: assign framework version number dynamically when building new sites.
  • BUG: improve block connect functionality.
  • BUG: block order does not update within session.
  • BUG: Delete block should delete the site block template (e.g. block-1234.html)
  • BUG: Remove extra line in HTML code inside the code editor popup.
  • BUG: fsockopen is not able to resolve localhost IP (127.0.0.1).
  • Enable export of blocks, pages, and projects.
  • Notify when requests are made (pre-loaders), and when actions are completed (Growl).
  • Refresh block content when code is edited.
  • Refresh page after page source code is edited.
  • Show project name in the title bar.

 

0.1.6

  • Allow creating cookies from a binder {{cookie}}.
  • Allow creating cookies from a route (…/appc.cookies/:cookie_name/:cookie_value/:cookie_expiration ).
  • Allow archiving projects (admin only)
  • Added WordPress body_class binder {{wp_body_class}}.
  • Edit page HTML, CSS, JS code.
  • Allow including combined JS and CSS code.
  • Publish a WordPress site when new project is created.
  • Redirect to login page if user are no longer logged in.