To Do: ATS Template (Complete)

Priority Project #
3 ATS Template #: 7
2.63

Company Details 

  • Boolean flag to show/hide Contact Details in the Headers
  • Other flags to hide/show other functionality from the Dashboard 
    • Weather, Facebook groups, Business contacts, Instructions, Competitors.  
- Complete
3.02

Photos

  • Header Link should go to the Show By Location if sole location
Complete
3.03

Business Contacts

  • Index:  Need to sort by the ranking of the Business Types
  • In Business Contact form
    • Java-script to hide the First/Last Name if the BusinessOrPerson= “Business”.   if Person selected, show both
    • Add GPS location button that picks current location.   Activate from the view too. 
  • When deleting a business contact, cascade to the Referrals log
- Complete
3.04

Business Contacts

  • Counter fix.  Don't display Business Types if Counter =0
- Complete
3.05

Multi-lingual functionality:

  • Include in the CompanyDetails entity a field called ‘multilingual’ (booelan)
  • Create new entity called ‘Languages’ containing, language (English, French, German, Spanish) , flag icon file,  and abbreviation
  • Selection of flag switches language of text

Page count

  • Add field in the Products entity for pageCount and pageCountAdmin
  • When a page is loaded add to the pageCount (and if an Admin user add to pageCountAdmin only)
Complete
3.06

Users

  • Edit User fails because
    • Password is not visible
    • If the user has 2 or more than 3 names in the fullName 
- Complete
3.07

Translations

  • Create import/export buttons for the translations
  • Replace records with same English
- Complete
3.08

Product List

  • Button to make Active/Inactive from the Index
  • Buttons to Change the Ranking and Renumber
- Complete
3.09

CSS 

  • Should these files be copied from the ATS Template?
- Complete
3.10

Facebook Groups and Products

  • Not sorting
- Complete
3.10

Company Details

  • Boolean checkbox can't not be checked
Complete
3.11

ATS Template

  • Multi-lingual functionality:
    • Include in the CompanyDetails entity a field called ‘multilingual’ (booelan)
    • Create new entity called ‘Languages’ containing, language (English, French, German, Spanish) , flag icon file,  and abbreviation
    • Selection of flag switches language of text
  • Page count
    • Add field in the Products entity for pageCount and pageCountAdmin
    • When a page is loaded add to the pageCount (and if an Admin user add to pageCountAdmin only
Complete
3.12

CMS Copy

  • When switching between Static Page and Product, deleting the field for Static page/Product respectively
  • New CMS: Product list to be ordered by ranking
- Complete
3.13

Backdoor

Doesn't work: Password Encoder error

Complete
3.14

Registration

  • Settings.   Have a flag for enable registrations
  • Email templates:
    • Registration - Thank you registering and has a verification link to confirm
    • Referral 
  • Display QR code on home page
- Complete
3.15

Create a Help entity

  • Ability to show video of implementing each function
Complete
3.16

Instructions

  • Import Media file
  • Display media file
  • And launch
- Complete
3.17

OfficeAddress

  • Why doesn't it occupy full page, especially on mobile?
- Complete
3.18
  • Add useful contacts – copy from Stephen-nurse or Immigration
  • Include a map that shows the location of each restaurant/hotel etc
  • Restaurant entity to include opening times (for on and off peak season)
  • Menu entity
    • Linked to restaurants
  • Add all to the copy batch file
Complete
3.19

Company Details

  • Index view - The i icon for Directions doesn't slice or raw
  • Weather -  Fails with GMT as time zone
  • Map link field - increase height
- Complete
3.20

Header & Footer

  • Product list should be sorted by Ranking number 
Complete
3.21

Company Details 

  • Button to add Longitude and Latitude into the Company Details record
  • Can't save changes (since adding Photos)
Complete
3.22

Weather

  • Index - Link to the live google weather page doesn't find the location specfied
  • Create a daily chron job
- Complete
3.23

Company Details

  • Include Contact Details or not in the headers
Complete
3.25

Products

  • Deleting a Product when the CMS is populated drives an error
- Complete
3.25

Languages

  • Add a link on the Active/Inactive to turn off/off instantly
  • Add a ranking number to control the order of the flags in the dropdown
  • Import feature to upload all the countries.  Delete all

 

- Complete
3.26

Helpful files 

  • View of Useful URLs on the mobile
  • Email fails with one file
  • Email fails when more than one file (different error)
- Complete
3.27

Languages

  • CompanyDetails page fails if no languages in database or no English
  • Doesn't seem to work in TennisClub.
- Complete
3.28

Logout time

  • How do I control the time til the systems logs you out?
- Complete
3.28

CMS Copy

  • Can't save Edits
  • Increase height of the content box
  • Define different page layout formats and have the CMS copy be applied to that format
- Complete
3.30

Company Details

  • Doesn't save the Driving Instructions. Can't save edits
  • Wrap google map link
Complete
3.31

Referrals log

  • Date Time function
Complete
3.31

Project specific roles maintain in settings

  • Create an entity to define the roles available in the project 
  • Also in the User form, be able to control which fields are active as a function of the role
- Complete
3.32

Registration

  • Email fails
  • Need to test the full process
Complete
3.32

CMS Photo

  • Default the rotate to zero
  • When editing, if it was a Product it reverts to Static upon opening
  • If photo.photo is blank, it should be ignored in the controller (displaying product.html.twig)
- Complete
3.33

User Log

  • Edit function error
- Complete
3.35

QR page

  • Look and feel on full and small screen
Complete
3.36

Business contacts

  • The File and Photo fields show when not empty.  Copy JS found in Company Details Edit form
Complete
3.36

HomePage (Photos) and Interests Page

  • If the hyperlink is blank it should do anything when clicked.
Complete
3.37

Facebook Reviews

  • List of users : FindByRole function should have up to 3 roles 
  • Include a setting for limit review history (eg 3 months), and show/hide the reviews according to that limit
  • Import Reviews needs to find the User and the Facebook Group from the entity
Complete
3.38

CMS Copy

  • Headlings and Titles in CMS_Copy should be be hidden unless Ranking ==1
  • Default Ranking =1 for first one and 2 thereafter
Complete
3.39

Home page (photos only)

  • Looks terrible on Ipad Pro 
    • Looks ok on iPad Mini
- Complete
3.41

User

  • Add photo, which should be part of personal details
  • Improve views
Complete
3.42

Useful files

  • E-mail functionality doesn't work
  • Edit issue
Complete
3.43

Photos

  • E-mail fails
  • Handling of favourites

 

- Complete
3.44

Bugs in live systems vs ATSTemplate

  • MapIcon, Business Types and Business Contacts imports don't work on stephen-nurse.com
  • Winter Cash Cup: Upgrade from ATS didn't work
- Complete
3.45

Services.yaml

  • The only directory that doesn't work is the favicons_directory and mapicons_directory
    • However it works in the CompanyDetailsController, it only fails to work in twig (company-details-index,  QR-homepage, base.html)   
    • In each of those twigs, they don't accept other directories from the service.yaml   and favicon_directory works in other twigs
- Complete
3.47

Business contacts

  • New contact: Sort categories alphabetically
  • FIle and photo field show in edit mode when not empty.  Copy JS in Edit for CompanyDetails
  • Index: Desktop class doesn’t work
  • Count contacts where maplocation is not empty service

 

Git fails

  • Copy to Whistles and Bells
- Complete
3.48

CMS Photos

  • Movie files in Interests/Products or Home page don't seem to size correctly
Complete
3.49

Business contacts

  • Test that the file attachment and photo get deleted if you delete a contact
- Complete
3.50

User

  • Work out a way to share some common features of the User entity but allowing for adaptions for each different project
  • ChatGPT:  I am building about 10 different websites that all work on Symfony/PHP.  They will all share the same foundations or basic architecture (basic USER handling, a CMS, and other standard features) and any changes in one are updated across all by copying the Entity, Controller, Form, Repository and Templates.  The each site will have some specific code unique to each site.   The problem I have is that the USER entity needs to be slightly different for each site, so I can't copy those across.  How can I maintain consistency and the uniqueness.  My thought was to split the user entity in two and embed the second (different) USER2 contents within the USER form.  Any suggestions
- Complete
3.51

Map Icons

  • New/Edit:  Selection of icons to be sorted alphabetically
Complete
3.52

Website contacts

  • How do I see what Product they are interested in?
Complete
3.54

Email server

  • Emails failing in many projects
- Complete
3.54

HomePage (Photos only)

  • Closer together
- Complete
3.55

Users

  • Link the list of fields viewable to the CompanyDetails settings
    • Home Address
    • Business Address
    • Personal Details
    • Job Details
Complete
3.55

Mobile view needs to be improved

  • Dashboard
  • Company Details
    • Change from a table to a single record to display across whole page (Show)
      • Show function doesn't work as is
  • CMS_Copy - restrict content 
  • CMS_Photo - restrict content 
- Complete
3.56

Map Icons

  • Button to delete icons and hide/show the form field as appropriate
Complete
3.57

Maps

To calculate the optimal zoom level for a Google Map that just fits all of your venues without scrolling, you need to determine the bounding box that encompasses all the venue locations. Based on the bounding box, you can compute the zoom level that ensures all the venues are visible. Here’s how you can approach this:

Steps to Calculate Optimal Zoom Level

Find the bounding box:
For all your venues, compute the min and max latitudes and min and max longitudes:

  • minLat = minimum latitude of all venues
  • maxLat = maximum latitude of all venues
  • minLng = minimum longitude of all venues
  • maxLng = maximum longitude of all venues

Calculate the geographical range:

  • The latitude range is:
    latRange = maxLat - minLat
  • The longitude range is:
    lngRange = maxLng - minLng

Calculate the center of the map:
The center of the map is simply the average of the latitudes and longitudes:

  • centerLat = (maxLat + minLat) / 2
  • centerLng = (maxLng + minLng) / 2

Calculate the diagonal distance: The diagonal distance between the top-left and bottom-right corners of the bounding box is critical for determining the zoom level. You can use the Haversine formula or a simplified approximation to compute the distance.

The Haversine formula is:

  1. a = sin²(Δφ/2) + cos(φ1) ⋅ cos(φ2) ⋅ sin²(Δλ/2) c = 2 ⋅ atan2(√a, √(1−a)) d = R ⋅ c

Where:

  • Δφ = difference in latitude (in radians)
  • Δλ = difference in longitude (in radians)
  • φ1, φ2 = latitude values in radians
  • R = radius of the Earth (mean radius = 6,371 km)
  • d = the distance between the two points (diagonal distance)

Estimate zoom level:
Based on the diagonal distance, Google Maps provides a rough way to estimate the zoom level, which is typically from 0 (world) to 21 (street level). A common approach is to map the diagonal distance to zoom levels using a logarithmic scale, but this depends on the map's current bounds and the projection used. Generally, a simplified formula is:

  1. zoomLevel = maxZoom - log(d / maxDistance) * scaleFactor
    • maxZoom = the maximum zoom level allowed (usually 21)
    • maxDistance = the maximum diagonal distance you want to show (e.g., distance across your entire map's viewable range)
    • scaleFactor adjusts for the desired map fit

Using Google Maps API to Simplify:

You can simplify this calculation by using the Google Maps API, which has a method to fit markers within a viewport using fitBounds():

// Assuming you have an array of venue locations in {lat, lng} format: const locations = [  {lat: 40.748817, lng: -73.985428},  {lat: 40.748217, lng: -73.985128},  // Add other venues here ]; // Create a bounds object const bounds = new google.maps.LatLngBounds(); // Extend bounds to include each venue locations.forEach(location => {  bounds.extend(new google.maps.LatLng(location.lat, location.lng)); }); // Create a map with the bounds set const map = new google.maps.Map(document.getElementById("map"), {  center: bounds.getCenter(),  // Center map at the average of the venues  zoom: 15  // You can let Google automatically choose the zoom or set a default }); // Fit map to the bounds map.fitBounds(bounds);

This method will automatically adjust the zoom level and center based on your venues, ensuring all the locations are visible without scrolling. You don't need to manually calculate the zoom level if you're using this approach.

Complete
3.58

Doctrine update - Entities not working

  • Instructions
  • Weather
  • Facebook Groups
  • Competitor
  • Competitor Service
Complete
3.59

Business contacts map

  • Map not displaying
Complete
3.60

ATS Company Details Show

  • Fix slider
  • hide facebook months and registration email if deselected 
Complete
3.61

HomePage

  • Allow multi-selections in the Contact Us form
  • Add Product-include in Contact form field

 

Complete
3.62

User

  • Reset password doesn't work
Complete
3.63

Interests/Products

  • In the hyperlink in the Products/Interests entity - in the index correct for https or www to launch even if lazily entered.   Same for business contacts
Complete
3.65

CMS Photo

  • When editing, if the file is loaded, don't show the input box
  • Make the unique identifier just three letters
  • Increase the size of the photo in the Edit field much larger
  • Make the Hyperlink adaptable to include rhe https// and www 
  • Improve the title on the Edit page
- Complete
3.66

User

  • Reset passwords etc
- Complete
3.66

HomePage - All photos

  • The photos don't have the hyerlink or the title pop-up working

 

- Complete
3.67

Products

  • Notes field should be better positioned (on the right, col-8) and be editable with CKEditor.
  • As you hover over the Links for the Products in the menu it should show you the Notes
Complete
3.68

Products

  • CkEditor in Products
Complete
3.69

Check backdoor functionality

  • Doesn't work in ComfyCats (live)
Complete
3.70

Website contacts

  • Ordering of products according to ranking
  • Similarly in email
- Complete
3.71

SQL download

  • Learn how to import into local
Complete
3.72

Instructions page

  • Nesting problem
Complete
3.73

Server clean-up

  • Button to clean up the attachments for all directories
  • Button to import the mapicon files 
Complete
3.74

Workflow from Website Contact to User

  • The objective here is to automate the process of converting a Website Inquiry into a User
  • Form received from client (in Website contacts).  
  • To do
    • Allow multiple entries on the checklist
    • Add field in Products for “Include in Contact Form” and references in the Contact Us form
    • Add input in CompanyDetails as to whether to receive an alert with a new Inquiry
    • And ‘Email’ text in Product form
  • Office_Staff decides to accept a Website Inquiry or not (perhaps automate this). 
    • Converting to User creates a New User with the credentials provided in the Website Inquiry. 
    • Sends a generic email
  •  
Complete
3.76

User

  • Default language - order by ranking
- Complete
3.77

Photos

  • Individual photo doesn't resize well when viewed by a mobile
- Complete
3.77

Photo Locations

  • New Photo Location creates an error
- Complete
3.79

Contact Us

  • Don't show the Interested in… and list of Products if there is only 1 product on offer
Complete
3.80

Edit the bat file to add the new project specific inflation 

- Complete
3.81

Competitors

  • Improve field names
Complete
- Complete
3.83

Company Details

  • Need to make email and Default password mandatory, if using the contact form. 
Complete
3.85

CMS Photos

  • It is possible to select Video for a JPG
  • When switching between Product and Static Page it keeps the Static Page name and therefore impacts the Save
- Complete
3.85

Multi-lingual

  • Make the titles in Indexes language-specific
- Complete
3.86

Photo Gallery

  • Email button doesn't work
  • Favoured/unfavoured button don't work
- Complete
3.87

Mobile view - needs work.

  • CompanyDetails Show/Edit
  • Products
  • CMS- Edit/New is good
  • SubPage
  • CMSPhoto- index only
  • UsefulLinks - ok
  • Instructions -New
  • Weather -ok
  • Business contacts - New and Edit
  • Map Icons - edit
  • Facebook Groups - Index and Edit
  • Competitors - New

 

Complete
3.88

Clear all attachments

  • Button to clear public directory - assume that the directories will be made as files are saved for the first time?
- Complete
3.89

Photos

  • In the CountService, for the CountPrivateLocations, don't just count those Private locations, but those where the user has access to
- Complete
3.90

New functionality: Import from Outlook

  • I am building a system to manage client bookings and although i would prefer that clients book online directly, some do email me.  I would like to build the ability to import the content, subject line and sender and date from my email system (eg Outlook) email into a record in the database
  • My plans is that emails that need to be brought into the booking system would be moved to a specific directory (eg “Upload to system”) and these are the emails that the booking system would see and extract the data from.  The booking system would need access to the email 
  • I am using Symfony/PHP - how can i build this?
Complete
3.91

Users

  • VCF export not built
  • Show each user's log count, counting the number of times the number has logged in. 
    • Hover to show the date/time of the last [5] view
Complete
3.92

Header

  • Useful links show/hide doesn't seem to be in all projects
Complete
3.92

Have in the Settings a flag for if site is still in testing mode.

  • If in Testing mode, then:
    • Login screen contains the test login buttons
- Complete
3.92

User log

  • Build out a more comprehensive user tracking log.  Not just logins .  Google analytics
Complete
3.93

Photo gallery

  • Don't open the photo-locations page unless an Admin and there are at least [15] different locations
  • Instead show the name (and date and # photos) of each location in the dropdown.  Listed either alphabetically or by date (make that a control in the Settings)
  • Then have the private groups listed, in red
- Complete
3.94

Photos

  • Handling HEIC photos
- Complete
3.96

Project specific landing page post login for different access rights

- Complete
3.96

Header

  • Photo Gallery and Photos appear twice in the Header if logged in as ADMIN
Complete
3.97

WhatsApp number

  • Develop a service that checks if a number is a valid WhatsApp number or not

 

- Complete
3.98

Products

  • Re-numbering/re-ordering button
Complete
3.99

Product list (header)

  • If there is only one product in the ProductList, then it should become the Header
  • Same for SubProducts

HomePage Contact Form

  • Still shows the DateTime sent.
  • Phone number should be optional

Workflow

  • Auto registration

 

Complete
4.01

User Indexes

  • Dynamic control of sorting in Index 
Complete
4.05

ROLES

  • Doesn't seem to work

User

  • Photo field showing when populated.   
- Complete
4.06

Users

  • I introduced sorting for all the columns (ie post pagination functionality) for the Users index.   Curiously, some work but not all.  

 

Business contacts

  • Tried to insert the PhoneAnalyzer into Business Contacts, but it fails
Complete
4.27

Instructions

  • Control in Company Details to include a link to instructions functionality.   
  • Show in dashboard if selected. 
  • Include in Header display selections

 

Contacts details (Company Details settings)

  • Flag to include business card or not 
    • Business card to include only the information permissioned 
  • Perhaps include email as  

 

Complete
Loading…
Loading the web debug toolbar…
Attempt #