I worked on this for about 5 days. In total it consists of 7 pages available to every signed-in user and 3 pages accessible only to me as the admin. So how does it actually work? There is, of course, no “something for something” principle here, meaning a user doesn’t have to create anything (such as a reading plan) in order to read something. Quite the opposite – anyone can create as many reading plans as they want and can have as many of them in progress or finished as they like.
However, every reading plan has to be reviewed by me as the admin before it is published, and if I don’t like anything about it, I will delete the whole reading plan, including its category if it is the only plan in that category. Most often I will have to do this when the wrong category is given. But I will probably be lenient; I just regret that I gave the ID column of the category table the type TinyInt(Byte), but I think it should be enough as long as users are reasonable.
I also have a graphical interface for when I want to make a plan unavailable – it works so that everyone who has already started the reading plan will be able to finish it without restriction, but any attempt to start the plan anew will be blocked. Once submitted, the verses can no longer be changed, not even if nobody has started the reading plan yet.
It’s not for nothing that I write on the verse assignment page that you should enter these verses honestly and carefully. I’m a bit sorry that on the verse assignment page you have to click on every verse you want to assign, and since there are almost 32000 verses, it will be somewhat slow on weaker PCs, because everything naturally happens in JS. After every click the selected verse has to be colored and the current day counts updated, and each such operation goes through all 32000 verses.
For me the latency was about 2s, but my PC is a beast. Only in IE11 I couldn’t even get the verse assignment page to load, but now I’m not sure whether IE didn’t get going in the end, just like Firefox, which reported that the script was not responding, but after I clicked “wait” the page came to life and worked normally, just as in Opera. The maximum number of days is 356; the number of verses per 1 day is not limited, they just have to be consecutive verses in the order they appear in the Bible – that’s how the database is structured.
Also, the same first verse cannot appear in more than one day of the same plan. You can create a plan now and assign the verses any time later – if a plan has no verses assigned, it naturally won’t be shown anywhere. When creating a new plan you have to enter 3 things – the plan name (80), its description (1024) and the category (200). Instead of a new category you can pick one of the existing ones. I won’t post links to the reading plans here yet, as I’m still testing whether the emails about new reading days are really being sent, so check back here tomorrow evening, when they should be here.
The most convenient way is to click the link in the email, but if you delete the email(s), you can find your plans in progress on the website and look at the days in the calendar that you have or haven’t read yet. The application will not send another email for the same day. If you have read all the days and open the last day of a reading plan, the plan will be moved to the finished ones.
I could write 3x as much about it, but my memory is failing me and I quickly forget what’s on the tip of my tongue. So I hope you’ll like it :).