Skip to content

dizonivan11/website-builder

Repository files navigation

BWB: Website Builder

Languages/Technologies/Plugins Used: PHP, MYSQL, jQuery, AJAX, Medoo, HTMLKelly Color Picker, jQuery Custom Context Menu (https://swisnl.github.io/jQuery-contextMenu/)

FIRST TIME SETUP

  1. Make sure PHP is installed on your device. (manually or automatically via XAMPP)
  2. If sqlite extension is not yet activated on "php.ini" file, uncomment sqlite extension to activate the extension.

RUNNING THE SERVER

To run the server, open up terminal or command prompt, type the command php -S localhost:8000

CREATING NEW SITE

To create new site, use this URL: localhost:8000/create.php?sid=<SITE ID>&template=<TEMPLATE NAME>

  1. Replace <SITE ID> with your desired site ID
  2. Replace <TEMPLATE NAME> with your desired template

Current Templates Available:

  1. blank

OPENING SITES

To open sites, use this URL: localhost:8000/?sid=<SITE ID>

  1. Replace <SITE ID> with your desired site ID

Current TODO:

  1. Revise how CSS is injected to the element. Avoid Inline CSS and make all the CSS append to some file that links to the web page (ex. DUDA's Dev Mode)

TODO List:

  1. Fix bug when the selected text becomes 'undefined' after using Add Link Dialog
  2. Add Row and Column Properties Window
  3. Convert all hard-coded input html and let the predefined html (widget-properties/inputs/) generate the html
  4. Add More Buttons in WYSIWYG Text Editor
  5. Bind Link and New Tab option when opening Add Link Dialog
  6. Save Changes upon value change in Widget Properties Window (no Apply Changes button anymore)
  7. [Realtime Saving] Save to webpage file upon value change in Widget Properties Window
  8. [Realtime Saving] Save to webpage file upon dropping new widget to column
  9. [Realtime Saving] Save to webpage file upon deleting widget
  10. Clean [document.getElementById] functions and use jQuery selectors instead for selector consistency
  11. Clean AJAX requests functions and use jQuery ajax instead for cleaner code and consistency
  12. Move content editing outside properties window and allow editing content of widget directly when clicked
  13. Color Pallete
  14. Widget/Row/Column Background Image property
  15. Inner Rows
  16. Site Map
  17. Adding Pages
  18. Sorting Pages
  19. Deleting Pages
  20. Uploading Images
  21. Publishing
  22. Capability of moving the widgets to either top or bottom of selected element, not always inserting at top
  23. Revise attribute [widget-name], remove "widget/" directory to display only the widget actual name in labels

Done TODO

  1. Revise request-current-eid.php, dont rely on one DB to get ID. Give sites their own meta data db to read to support multiple request across sites.
  2. Revise meta value column to hold string data
  3. Add site creator that duplicates selected template and adding engine files
  4. Add Row Move Feature
  5. Copy/Paste Feature for Rows, Columns, and Widgets
  6. Event Inject Only Once
  7. Fix Bug swapping columns (column resizers are also swapping)
  8. Allow dragging to resize columns
  9. Fix bug when breaking lines in text widget, this bug occurs because <p> tag cannot contain <div> tags
  10. Make all context menu options functional (Adding/Deleting Rows, Adding/Deleting Columns, Shift Widgets/Rows, etc.)
  11. Add Access to Columns
  12. Fix selected-element and auto generated context menu at the end of the html file being saved which causes duplicated content
  13. Add Context Menu
  14. Revise/Simplify Primary Properties input requests using predefined html with automatic assigning of its id
  15. Add selected widget/row labels
  16. Make buttons in WYSIWYG Text Editor check first if the selected range is inside its parent editor to continue the operation to prevent editing any element outside its parent editor
  17. Adding WYSIWYG Text Editors
  18. Deleting Widgets
  19. Saving website progress (Hard Save first, not Realtime yet) when clicking either publish or preview
  20. Previewing Site
  21. Site ID GET parameter
  22. Binding of CSS in widget property fields
  23. Load current widget property values on input fields before opening widget properties window
  24. Revise code for applying css and html changes
  25. Applying Widget Property changes
  26. Widget Background Color

Dropped TODO

  1. Create Modules for Widget Properties Window