Workstation Ordering Application for the College of Liberal Arts

Overview

Workstation Ordering Application for WordPress

A GPL-2.0+ WordPress Plugin that provides a user-accessible interface for ordering workstations and accessories and a robust multi-role return / approve workflows and team-based settings. This application is developed, maintained, and operated by the Information Technology unit within the Dean's Office at the Texas A&M University College of Liberal Arts.

Features

  1. AJAX form submission using nonces which WordPress uses to authenticate the call, for security
  2. AJAX file uploads to the WordPress media library converted to attachment post types
  3. PDF rendering using the FPDF library
  4. A gated approval flow that renders an order’s “approval” template if the user viewing the order needs to perform an action at that point in time, and renders its “view” template if not
  5. Only allows users who submitted an order or who must approve an order to see it
  6. Has custom Dashboard widgets, which are nice to use sometimes to give users information
  7. Custom user roles and permissions
  8. Custom post types
  9. Uses Advanced Custom Fields for order fields and the Settings page
  10. Affiliated business staff can view orders, will be CC'd on emails sent to the business staff responsible for approving an order.

WordPress Requirements

  1. Single site install support only at this time.
  2. WordPress Genesis Framework
  3. WSOrder Genesis Child Theme
  4. Advanced Custom Fields Pro Plugin

WordPress Recommendations

  1. TAMU NetID Authentication Plugin of some kind
  2. Post SMTP Plugin - Send emails by SMTP with a logger and one-click resend button in case of failed delivery
  3. User Switching Plugin - For imitating user accounts in case that is desired functionality. The github.com repository is updated more frequently than the WordPress repository.
  4. Yoast Duplicate Post Plugin - Copy custom post types.
  5. Simple History Plugin - For debugging and user support.

To Do

  1. Implement Active Directory user authentication, onboarding, and offboarding using either the WordPress SAML SSO plugin from OneLogin, the TAMU directory REST API https://mqs.tamu.edu/rest/, or both and one or more WordPress Cron tasks or manual functions.
  2. Remove the following form fields from the edit-user.php administrative UI since they are not used: Visual Editor, Keyboard Shortcuts, Website, Biographical Info, Profile Picture, New Password, Password Reset.

Developer Notes

Features

This repository uses PHP CodeSniffer with WordPress Coding Standards checks, but is NOT fully compliant with that tool yet. A pre-commit hook file is included in this repository to enforce code commits to meet this standard. I have also configured Git and Visual Studio Code files in this repository to help improve compatibility between Mac (terminal) and Windows (powershell) environments.

It also uses the FPDF library https://packagist.org/packages/setasign/fpdf to provide secure and data-driven PDF documents on demand without storing them on the server.

It relies on Advanced Custom Fields Pro for ease of implementation, modification, and hooks for custom fields in custom post types.

It uses SASS for CSS preprocessing and Zurb Foundation 6 as a CSS framework.

Code Conventions

This repository applies code checks using the WordPress Coding Standards. Please refer to their documentation when you have questions about how to format your code to meet their guidelines.

Line endings are enforced as Linux-style LF "\n". This is what WordPress requires for its Subversion version control system, and Subversion is how developers submit WordPress plugins and themes to the official WordPress.org library.

Custom User Capability Slugs

  1. manage_acf_options: Determines who can see the Advanced Custom Fields options page.
  2. manage_wso_options: Determines who can see the Workstation Ordering App options page.
  3. All custom post types have each of their capabilities namespaced using their post type slug. Example: create_wsorders

Command Line Tasks

  1. $ npm start - Used to initialize the repository; should only be run after downloading the repository for the first time.
  2. $ npm run configphpcs - Configure the PHP Code Sniffer module to use WordPress Coding Standards.
  3. $ npm run checkwp - Checks the repository's WordPress files against the WordPress Coding Standards and outputs a report into your terminal.
  4. $ npm run fixwp - Automatically fixes syntax and whitespace issues with the repository's files according to WordPress Coding Standards.
  5. $ npm run windows-configphpcs - The same as $ npm run configphpcs but with Powershell-friendly syntax.
  6. $ npm run windows-start - The same as $ npm start but with Powershell-friendly syntax.
  7. $ npm run windows-checkwp - The same as $ npm run checkwp but with Powershell-friendly syntax.
  8. $ npm run windows-fixwp - The same as $ npm run fixwp but with Powershell-friendly syntax.
  9. $ grunt - Compile SASS files into compressed, production-ready CSS files.
  10. $ grunt develop - Compile SASS files into expanded, sourcemapped CSS files.
  11. $ grunt watch - Continuously watch SASS files for changes and compile them into expanded, sourcemapped CSS files every time they are saved.

Git Tips

To add an executable file to git version control, do this: git add --chmod=+x hooks/pre-commit && git commit -m "Add pre-commit executable hook"

Legacy Support

Legacy support is and will continue to be an ever-present responsibility of Information Technology professionals and this subject should be discussed with respect and understanding. One approach to legacy support which I have attempted here is to have a dedicated PHP file for targeting code that is any combination of temporary, scheduled for deprecation, or external. Currently it only targets WordPress plugins that may be replaced with other solutions eventually. Temporary code will be removed at some known or unknown point in the future. Deprecated code is scheduled for removal in a future version by the party who maintains the code. External code is provided from a source outside of one's own organization. Such code may be other WordPress plugins or third party APIs. The legacy support file is located at src/class-legacy-support.php.

Potential Installation Issues

Windows 10 application issue: "Local" by Flywheel (local virtual server)

https://localwp.com/help-docs/advanced/router-mode/ On two different models of Dell Windows 10 machines (Inspiron and Latitude) a Windows service was occupying Port 80 on IP 0.0.0.0:80. This interferes with the "Local" application's router functionality which uses the same port and is not configurable. It is possible that this becomes an issue as a direct result of a change made by the NodeJS *.exe file's installation process since I did not have this issue with the application until after installing NodeJS this way. ON MY PERSONAL COMPUTER I installed NodeJS using Chocolatey CLI and did not experience these conflicts with Port 80 and "Local". NOTE: SEE YOUR SYSTEM ADMINISTRATOR FOR POLICY GUIDANCE REGARDING THE INSTALLATION OF SOFTWARE ON TAMU SYSTEM DEVICES.

Credits

  1. This WordPress plugin was programmed by Zachary Watkins [email protected].
  2. The business process workflow and a portion of the UI specifications were designed by Pamela Luckenbill [email protected].
  3. The original application used very different technology, was programmed by Joseph Rafferty [email protected], and was authored by Joseph Rafferty and Pamela Luckenbill: https://github.tamu.edu/liberalarts-web/workstation-order.
  4. The majority of the workflow requirements for this version were preserved from the original application. However, the product, bundle, program, and department data creation and management interface is superseded by this application as it is provided by WordPress Core.
  5. The visual design at the start of the project was copied from the original application, and then the icons were replaced.
You might also like...
Define application maintenance mode.

Lumen maintenance mode How to install composer require rdehnhardt/lumen-maintenance-mode How to configure In bootstrap/app.php, add this instruction

TinyFileManager is web based file manager and it is a simple, fast and small file manager with a single file, multi-language ready web application
TinyFileManager is web based file manager and it is a simple, fast and small file manager with a single file, multi-language ready web application

TinyFileManager is web based file manager and it is a simple, fast and small file manager with a single file, multi-language ready web application for storing, uploading, editing and managing files and folders online via web browser. The Application runs on PHP 5.5+, It allows the creation of multiple users and each user can have its own directory and a build-in support for managing text files with cloud9 IDE and it supports syntax highlighting for over 150+ languages and over 35+ themes.

DinoPHP is a web application framework with expressive.
DinoPHP is a web application framework with expressive.

DinoPHP is a web application framework with expressive. We believe development must be an enjoyable and creative experience. DinoPHP takes the pain out of development by easing common tasks used in many web projects

phpIPAM is an open-source web IP address management application.

phpIPAM is an open-source web IP address management application. Its goal is to provide light and simple IP address management application. It is ajax-based using jQuery libraries, it uses php scripts and javascript and some HTML5/CSS3 features, so some modern browser is preferred to be able to display javascript quickly and correctly.

Workout application with fully functional Frontend and Backend.
Workout application with fully functional Frontend and Backend.

Fit_Me_Application About Application: This FIT-ME management system is an easy way to use gym and health membership system. It can help to keep the re

PHP, MySQL and JS based web chat application
PHP, MySQL and JS based web chat application

About The Project Chat Application coded in PHP, CSS3 and JS. This is just a project to learn and improve understanding on certain topics. This is not

A web application for a school, facilitating the registration of students. Built using HTML/CSS, PHP and Oracle.

Student Registration System A web application for a school, facilitating the registration of students. Built using HTML/CSS, PHP and Oracle. Included

Cloudlog is a self-hosted PHP application that allows you to log your amateur radio contacts anywhere.

Web based amateur radio logging application built using PHP & MySQL supports general station logging tasks from HF to Microwave with supporting applications to support CAT control.

A simple, beautiful, mobile-first instant messaging web application backend build with ThinkPHP6 and Swoole.

OnChat A simple, beautiful, mobile-first instant messaging progressive web application build with ThinkPHP6 and Swoole. You can click here to view the

Owner
Texas A&M University, College of Liberal Arts
Texas A&M University, College of Liberal Arts
School/College management system in PHP

School-Management-System This is a system with all necessary features a school/college needes in their this digital era such as student,teacher,princi

Preeti Guin 1 Oct 30, 2021
Damn Vulnerable Web Application (DVWA) is a PHP/MySQL web application that is damn vulnerable.

Damn Vulnerable Web Application (DVWA) is a PHP/MySQL web application that is damn vulnerable. Its main goal is to be an aid for security professionals to test their skills and tools in a legal environment, help web developers better understand the processes of securing web applications and to aid both students & teachers to learn about web application security in a controlled class room environment.

Robin Wood 7k Jan 5, 2023
This application is a simple application to watch movies like Netflix or DisneyPlus.

Movie Streaming React Web Apps This application is a simple application to watch streaming movies like Netflix or DisneyPlus. The application is built

Adim 2 Sep 25, 2022
Centreon is a network, system and application monitoring tool. Centreon is the only AIOps Platform Providing Holistic Visibility to Complex IT Workflows from Cloud to Edge.

Centreon - IT and Application monitoring software Introduction Centreon is one of the most flexible and powerful monitoring softwares on the market;

Centreon 14 Dec 16, 2022
Emoncms is an open-source web application for processing, logging and visualising energy, temperature and other environmental data and is part of the OpenEnergyMonitor project.

Emoncms is an open-source web application for processing, logging and visualising energy, temperature and other environmental data and is part of the OpenEnergyMonitor project.

Emoncms 1.1k Dec 22, 2022
Mibew Messenger - open-source live support application written in PHP and MySQL

Mibew Messenger is an open-source live support application written in PHP and MySQL. It enables one-on-one chat assistance in real-time directly from your website.

Mibew Messenger 443 Dec 13, 2022
DinoPHP is a web application framework

DinoPHP is a web application framework with expressive. We believe development must be an enjoyable and creative experience. DinoPHP takes the pain out of development by easing common tasks used in many web projects

Ahmed Mohamed Ibrahim 24 Jan 1, 2023
Handle GitHub webhooks in a Laravel application

GitHub can notify your application of events using webhooks. This package can help you handle those webhooks.

Spatie 71 Nov 5, 2022
EspoCRM open source CRM application

EspoCRM is an Open Source CRM (Customer Relationship Management) software that allows you to see, enter and evaluate all your company relationships regardless of the type. People, companies or opportunities - all in an easy and intuitive interface.

EspoCRM - Open Source CRM 1k Dec 29, 2022
OroCRM is an open source Client Relationship Management (CRM) application

OroCRM is an open source Client Relationship Management (CRM) application that allows to create a 360° view of your customers across multiple channels, organize the sales pipeline, manage account and contact information, communicate with customers, run marketing campaigns and track campaign performance.

Oro, Inc. 611 Jan 3, 2023