Building “The CMS” – Part 1
Hey!
In the first part of the blogging series about my new project, I'll look over the most important features / modules "The CMS" should have - The name of the CMS haven't been decided yet, and is therefore referenced to as "The CMS".
There's a quite long list of features I want implemented, but most of them is backend stuff which is going to make "The CMS" unique, and some of it can therefore not be shared - or at least not yet!
1. System Logs
Logs... Which developer doesn't love a log to tell them what went wrong where and why, when the client says "The thing is broken, I didn't touch anything - I swear!".. yea right. I guess all people that works with computers have heard that line at least 10 times. System logs will help finding the source to the problem either for you as a developer or for the client if he's a bit techie. A fully featured system log monitor to view different levels of errors or messages is just a must - at least for me!
2. Modules
First of all, all modules needs to be able to turned on / off. I want my clients to be able to download modules from a website and easily install them, either by dropping the files into the modules folder or by interface in the control panel haven't quite decided on that yet
2.1 Blog
Every CMS should have a blog. It's just mandatory, not much to talk about here. I'm thinking something like Wordpress with comments for each blog entry with the ability to comment on comment. Depth can be discussed though.
2.2 Forum
I've wanted to make a forum for a long time, but it's going to have a low priority because my current client isn't in need of one. I think I'll get back to this later when it's relevant.
2.3 News
News is lovely. When having a website, you might want to update the users of the site with news about your company or just the site in general. I'm thinking RSS feeds (ATOM, RSS2), email to suibscribers, and a dedicated page for news. User should be able to choose which or all via CP options.
2.4 Gallery
Gallery should support unlimited categories, unlimited nested categories (who the heck needs that, but it should be easy to do so whatever), image into multiple categories and image & category descriptions. The use of effects (defined in gallery layouts?) when browing categories / showing images in large format.
2.5 Articles
Instead of old static HTML, this will be used. Almost all HTML tags should be allowed - pretty much up to the user how these pages should look besides the layouts that's being defined somewhere else in the CP.
2.6 Widgets
Create widget areas to put data from other modules in them. I'm thinking that each module has output functions that represent different widgets. Like the forum could have "newest topics", "latest replies", "newest members" - all which are different widgets and can be placed different places around the site. Instead of having to edit files and hardcode {widget.run('test')} - like I THINK I saw PyroCMS use - I think some clever widget hooking could be put in place, so that you can choose from a list of available places when creating the widget.
2.7 Profile
A module for profile information. This could be post count for forums, blog / news posts, account balance for eShop ect. Might just work as a user control panel for changing email, password ect.
2.8 Memberlist
A list of members on the site. That be feed / mail subscribers, eShop customers, forum users ect.
2.9 Private messaging
When having a decent amount of users, private messaging could come in handy right? This could be a forum-only feature instead of a standalone module - who knows...
2.10 eShop
This could be a seller. I've already been contacted by a friend whose friend might be interested in an eShop, and it's a pretty handy module - could even use it for the company I'm doing with THP44.
3. System Restore
Everyone is able to fuck up once in a while. Having system restore points could be handy when some critical unrecoverable error occurs - god forbid it ever happens. Udi Mosayev has an interesting approach to this. He's using a database table to record every update statement used on another table, holding the old and new field value with the field and table name so he can revert it if needed. This could be a good idea if you need an option to revert the last process e.g. when updating settings in the CP. An issue with this could be when mass updating settings, which could possibly create hundreds of rows within seconds. A cron taking snapshots of stuff like settings every x minute, hour or day could be neater.
A lot is on the drawing board and subject to change. Can't wait till I finish up the E/R diagram and start working on the core
Dynamic Stylesheet switching
I've recently been in need of a function that dynamically were able to switch stylesheets without reloading the page.
After a lot of searching, I found a post by Rob Glazebrook.
After modifying it a little to my needs, my theme switcher is working like a charm.
You'll need jQuery and jQuery Cookie plugin.
Maybe this post can save you some work and a lot of searching if you need such a feature too
TULM – A little progress
After a few weeks of almost no progress due to homework, a well earned holiday, unfortunately only a week - better than nothing though.
Last night I started on the library that's going to take care of the food ordering service (only available in Denmark in the beginning).
At it's current stage, it's able to query Just-Eat.dk for restaurants in a given zip code and return those.
When one is selected, the menu is retrieved - formatting of the returned menu is the next thing on the todo list.
Alot of things is planned for the upcoming week and we, me and THP44, estimate that in the beginning of the following week (week 8), we'll be at a 50%-ish completion rate - we're currently at 28%.
The planned modules and features planned for coding next week includes, but is not limited to:
- News
- Music player with YouTube intergration
- Food ordering
- Seat reservation
- Caffeine ranking
Our timeschedule for TULM can be found in the link below, please note that parts of the file is written in danish.
TULM Timeschedule
Some of the libraries made for TULM, may be released on this site at a later stage for people interested in the same features TULM is using.
TexoNovus – A new CMS
I'm currently working for a newly started gaming/software development community who's in need of a new website.
I'm therefore developing a new CMS for this purpose.
TexoNovus is, as mentioned in the category description, based on the CodeIgniter framework.
Unfortunately, CodeIgniter handles some things, in a way I don't like, and I've therefore decided to use a modified version of CI 1.7.2 as the base of TexoNovus.
The list of modification planned on the CI framework to fit TN needs is, but not limited to, and subject to change:
- Use templates for better profiling layout
- Settings for profiling; Choose layout, choose which elements to profile
- Log profiles, without displaying them to users
- Benchmark all classes loaded during system initialization
- Group benchmarks via IDs; For system, application, modules
- Move routings to DB for easier use with modules
- Add routings on the fly with control panel
- Enhance error reporting and logging
- Enhance error reporting templates
- Move logging from file to DB
- Log management via control panel
- Use native PHP session variables
- Use a few extra columns in session table for quick access across sessions for stats
- Replace CI template with PBB Template engine
- Support for more hooks
- Enable hook support across modules
- Easy implementation of modules
- Enable modules to use other modules functions
- Easy routing to enable 'seperate' modules like blogs and forums
As I progress in the development of TexoNovus, I'll post updates here on my blog, and you'll be more than welcome to comment, post suggestions or questions.
As mentioned before, TexoNovus is being made for Addicted 24/7 (Check out their site under 'Blogroll') and will be closed source. A beta test will take place, but is not yet decided wether it's going to be public or private, or being hosted on their server or mine.
Stay tuned for updates
TULM – Introduction
TULM is - as you've probably already read, a project for my IT exam. I'm co-working on it with THP44, a great designer and perfectionist (He spend over 4 hours on the header alone
)
Anyway.. TULM's mission is to relief the adminstrative work needed by the host, in order to host "the perfect LAN" (yeah yeah.. There's no such thing as 'perfect', but you know what I mean).
This includes features such as
- Attendance stats
- Gaming statistics (via intergrated Xfire)
- Food ordering (only available in Denmark, to start with)
- Seat reservation
A full feature list will be published as we progress.
TULM is currently at version 0.0.215 Alpha