Coder Social home page Coder Social logo

varilink / data-app Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 463 KB

The Derby Arts and Theatre Association web application, which is based on the Perl, CGI::Aplication framework.

Home Page: https://www.derbyartsandtheatre.org.uk

License: MIT License

Perl 98.37% HTML 1.63%
cgi-application perl perl5 webapp

data-app's Introduction

David Williamson @ Varilink Computing Ltd

In this GitHub account I share my work as a Linux and blockchain system administrator and full-stack web developer, where it can be made public. The repositories herein are predominantly not packaged applications but I share them in case they are useful to anybody who is tackling similar challenges and might benefit from seeing how somebody else did it. I also blog on selected topics related to this work for the same reason.

Latest Blog Posts

Projects

I organise these repositories by project but I don't use the project board functionality within GitHub. There follows a list of projects and the repositories associated with each of them.

Derby Arts and Theatre Association

The Derby Arts and Theatre Association (DATA) is the representative body for amateur performing arts in the Derby area.

Repositories:

The Friends of Bennerley Viaduct

The Friends of Bennerley Viaduct (FoBV) are "Dedicated to restoring, conserving and celebrating Bennerley Viaduct".

Repositories:

New Opera Company

New Opera Company, Derby, founded in 1959 was the only local company singing grand opera.

Repositories:

Telos UK

Telos UK is "a Founding Block Producer on the Telos Public Network".

Repositories:

Varilink Computing Ltd (Libraries)

Libraries that are used across multiple of my projects.

Repositories:

Varilink Computing Ltd (Services)

Services such as backup, mail, etc. deployed across the Varilink Computing Ltd server estate.

Repositories:

Varilink Computing Ltd (Tools)

Client side tools that I use across multiple projects.

Repositories:

Varilink Computing Ltd (Website)

The website for Varilink Computing Ltd.

Repositories:

data-app's People

Contributors

varilink avatar

Watchers

 avatar

data-app's Issues

Add a third member society membership status

We currently have membership statuses of ACTIVE and INACTIVE. An INACTIVE member society is not listed and user accounts associated with such a member society can no longer list events.

In discussion at committee, we think it would be a good idea to have a status whereby the member society is still listed but events can't be added for it. We would place member societies whose subscription renewal was overdue in this category.

Javascript for YouTube modals loaded on every page

The Javascript for YouTube modals is located towards the end of partials/layouts/footer.tt, which means that it is included on every page. We should use the mechanism whereby selected scripts are included only on the pages that they are required for by pulling in separate script blocks. This is also implemented in partials/layouts/footer.tt.

Add moderation capability

As more member users are adding their own events to the DATA Diary we could do with an admin moderation capability. Possibly set it so that a member user can only add an event in placeholder status and then submit a request to the admins to publish it.

No role set in session cookie

One user had an issue whereby after they had apparently successfully signed in the Admin menu did not become available to them. When I checked their session file on the back-end, for some reason their "role" was set to blank.

Poor name for "base URL" environment variable

The application uses an environment variable named root to hold the base URL for the website. This is a poor variable name for that purpose. It should be changed to something more descriptive, e.g. base_url.

Cookie set when not needed

We are setting a session cookie for every site visitor but this is only needed to support the authentication/authorization when a site visitor needs to access secure content. This is unnecessary and wasteful.

Format issue when odd number of events in email bulletin

Sort out problems with email bulletin containing an odd number of events. In a desktop email client, the footer then only occupies one of the columns. In the Mailchimp archive, the event on a row by itself is stretched but its image isn't.

Unspecific error message when image upload exceeds size limit

I inadvertently tried to upload an event image in live that exceeds the 2MByte threshold. This failed with a generic "error" message. I'm sure that the message used to be more specific than that. Whether that's the case or not it certainly needs to be. Investigate and fix.

Validate longest string in event box office or information field

Recently somebody created an event with a very long string in the box office or information field. This cause problems for the printed, programme listing flyer because it wasn't possible to put a line break in that unbroken string. That messed up the format of the flyer. Introduce some validation on data entry to stop this happening.

Preformated A4 and A5 programme listings not working

I'm sure that these worked at go-live but for some reason they're now not working. The A4 format fits all the event details in but has no left and right margins. The A5 format doesn't even get all the text in.

Integrate with Facebook events

The current integration with Facebook merely creates posts to advertise DATA events. Facebook has its own events functionality. Integrate with it.

Identical adjacent Facebook posts or Tweets

When the future events in the DATA Diary are relatively sparse, we can end up with a Facebook post or a Tweet that is identical to the previous one. Upgrade the integration scripts so that they can examine the current feed, determine when this is going to be the case and not post or Tweet when it is.

Special characters not uniformly handled across channels

If a special character, for example containing accent marks, is included in an event description then it is not uniformly handled across publicity channels. It may work on the website but not translate correctly to Twitter.

reCAPTCHA integration needs an overhaul

There is a reCAPTCHA secret key hard coded within the DATA::Plugin::Captcha module. Fortunately it's out of date, i.e. not the current secret key in use, which is good news from a security perspective but does imply that this plugin can't be working.

I set reCAPTCHA up for this domain on its own Google account. I should move it to my main Google account where I have all the other domains that I've setup reCAPTCHA integration for.

This domain is still using reCAPTCHA version two and needs to be upgraded to use reCAPTCHA version 3.

Allow a start date to be entered for one-page, programme event listing flyers

When people generate a one-page, programme event listing flyer from the home page, it lists events from the day that the flyer is created. However they may not be planning to use that flyer in programmes until some time later, when some of those events may have already finished. Allow the entry of a start date at the time that the flyer is generated with only events that are current or future at that start date then being included.

Possibility for non member society events to be listed via "Presented By"

"Presented by" defaults to the member society associated with a member user account adding an event. However it can be overridden. This option is given to allow member societies to augment "presented by" with, for example, the names of solo performers they have added for a performance. However, this makes it possible for member users to add an event that is actually not in any way associated with their member society by overriding "presented by".

Include reCAPTCHA script on every public page

Currently in tt/partials/layouts/head.tt we include a script tag for Google's reCAPTCHA API for every page on which there is a form submission. However, since we're using the invisible reCAPTCHA I think perhaps that it should be included on every public page, so that it can observe the behaviour of the user even before an attempt to submit a form. I think that the invisible reCAPTCHA makes its decisions on whether to challenge or not based on this observation.

Completely automate obtaining access tokens

I'm currently manually obtaining a new page access token every time the current token in use is about to expire - see this repository's README. This is because the process relies on a manual authentication.

I believe that it's possible to completely automate the process following the steps shown in the Facebook::OpenGraph synopsis.

Investigate further and if possible implement this automation.

If hyperlinks are stored in the database as true hyperlinks they won't work with the application

Various hyperlink attributes defined in the Django model. This causes the Django admin interface to insist on a full URL or if not it will convert the entered image to a full URL. However the application then interpolates a URL around the information given, which leads to a broken link. So, I'm having to store partial URLs (domain and path) only in the database, which then doesn't work with the Django admin interface.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.