Crave: A modern WordPress theme with appetizing aesthetic


Results 1 to 10 of 10

Thread: CMS Ideas (What would you like to see?)

  1. #1
    Join Date
    Apr 2008
    Location
    Cleveland/ Columbus, Ohio
    Posts
    143

    Default CMS Ideas (What would you like to see?)

    Hey there everyone!

    A few months ago I started a project for my masters program where I needed to construct a mini online 'content management system.' What started out as a simple assignment has kind of snowballed and become an obsession.

    When I first got started in web design/development, I was turned off by popular CMS's like Joomla! and Drupal, because they were just too darn confusing for a beginner. Knowing everything that I do now, I've studied them endlessly to get a feel for their workings, and I'm still not very impressed. Although they are both great and powerful pieces of software, I'm still convinced that they're entirely too cluttered, unintuitive, and obtrusive.

    Anyway, I've decided to write a new one utilizing their best features and scrapping the unimportant stuff. The last few months I've been spending a good majority of my free time writing it and I'm really starting to believe I've got something that a lot of people would enjoy.

    So far it features:
    - Search engine friendly URLs
    - Both a rich-text and HTML editor, with one click toggling between them
    - An integrated site search engine with keyword highlighting
    - A private messaging (e-mail) system
    - Configurable themes
    - A blogging platform with comments
    - Countless appearance/permission preferences
    - Plug-in/extension ready
    - Pre-made CSS and JavaScript "widgets"

    I'm sure it sounds like just another Joomla! knock-off, but I'm convinced that it's far from that...

    So I ask you, fellow Babblers, what would you like to see in an out-of-the-box content management system, and/or what are the CMS's you've used doing wrong (or right).

    I'd really appreciate any ideas/suggestions!

    Last edited by Johnny; 05-26-2009 at 07:11 PM.

  2. #2
    Join Date
    Apr 2007
    Posts
    15,185

    Default

    I know a lot of people love Joomla, but I tried it once and I absolutely HATED it. I agree that it just wasn't intuitive at all. I don't use anything but WordPress as far as CMS goes so my suggestions are based on what I like about WP.

    1) I really like the draft feature where you can go and review previous drafts of your posts/content.

    2) I don't know if you can do this already with Joomla, Drupal, etc. but I really think it's helpful to have a way to preview and test your new design/theme before going live. Perhaps you can already do that but just thought I'd throw that in.

    That's all I can think of now. I'll post more if something jumps out. Good luck with your masters program.

  3. #3
    Join Date
    May 2009
    Location
    Chennai, India
    Posts
    15

    Smile

    Post scheduling would be much wanted feature if I am not wrong. Its there in WP as well as Joomla. Post scheduling gives content authors to have more control over when there content is published and also they don't have to manually logon to the site to publish the post. All the best with your CMS tool

    Another nice feature would be to know how many times an article / post has been viewed in the article manager itself.

    Is it going to be paid or Opensource ?
    Last edited by vikramjb; 05-27-2009 at 12:30 AM.

  4. #4
    Join Date
    Jan 2009
    Location
    Kent UK
    Posts
    590

    Default

    Quote Originally Posted by vikramjb View Post
    Post scheduling would be much wanted feature if I am not wrong. Its there in WP as well as Joomla. Post scheduling gives content authors to have more control over when there content is published and also they don't have to manually logon to the site to publish the post.
    An expiry date would also be useful for voucher code etc sites where the content has a known "shelf-life".
    Quote Originally Posted by vikramjb View Post
    Another nice feature would be to know how many times an article / post has been viewed in the article manager itself.
    This could be extended to give similar information to that which is available with G analytics.

    Jquery (or similar) built in so that the jquery addons could be easily integrated.

    Multidomain facilities so that one admin area could be used for many websites.

    And finally the html editor to allow simple php statements and php includes.

    I'm sure I will think of more but that is all for now.

    Bob
    PHP Snippets PHP Captcha Code Resizable Html
    "A website with a thousand resources starts with a single page".
    "Don't fight the gator - clear the swamp"

  5. #5
    Join Date
    Apr 2008
    Location
    Cleveland/ Columbus, Ohio
    Posts
    143

    Default

    Wow guys! That's some really good stuff... I appreciate it.

    @Lisa:
    I think you'll be pleasantly surprised then. In my system, there is no separate 'admin area.' The admin section is actually built right into the user-facing portion of your website (when you log in, an 'admin toolbar' drops from the top of the page)! Everything you do is in real time and it appears just as your visitors will see it.

    As far as implementing a drafts feature... that's something I've totally overlooked, and it certainly wouldn't be that difficult to do. My only concern would be how to define a limit. Maybe something like saving up to ten drafts and deleting the oldest one each time the page is updated?

    @vikramjb:
    Post scheduling is something that I still can't decide on. It is no doubt a very useful feature, but it comes with it's problems too. The main goal of my CMS is speed. In order to implement post scheduling, I'd imagine that some sort of semi-constant AJAX system would need to be implemented, which would in turn slow the site down a bit.

    The only 'practical' method I've devised (for my purposes at least) is to do a quick check for posts that need to be published when a user performs some arbitrary action (i.e. logging in). This wouldn't be elegant or precise, but it would work.

    And finally, I'm an open source junkie (heck, I'm typing this message on a Linux system )... so it will definitely be open source. The source code is heavily commented and I'm going to push for community participation and sharing. It's going to be released under the (L)GPL.

    @donk
    An expiry system would entail the same double-edged sword as post scheduling. I know you're pretty good with this stuff, so how would you recommend implementing it without sacrificing performance?

    In order to keep my program fast and simple, I'm making a few assumptions and setting some requirements that I'm well aware will limit my potential userbase. Let me explain.

    I know this probably sounds like I'm some kind of maniac, but I'm requiring Apache2 (with .htaccess[or similar] and mod_rewrite enabled), PHP 5, and MySQL 5. I'm aware that this will drive people away, but looking over Joomla, Drupal, and Wordpress, a HUGE majority of their source code (at least 25%... probably way more...especially Joomla) is spent preparing URLs, allowing for PHP 4 compatibility, and catering to other types of databases. Although I really do appreciate the effort, I feel that it's a waste of code and valuable script resources and time.

    My requirements may be a little much, but those tools are quickly becoming the hosting industry standard, and I don't see it being too much of an issue.

    Likewise, I'm forcing jQuery. Like you said, I just couldn't pass over the plug-in potential, extendability, huge community, and simplicity jQuery offers.

    Finally, allowing PHP statements in the pages would be both tricky and dangerous. In order to implement this in my system, I would have to utilize the 'eval()' command, which I REALLY don't want to use anywhere. Ever. It's just too risky.

    But, what you will be able to do is create a 'module', which is actually a PHP page that the user interprets as a regular, MySQL-generated page... so this capability will exist, just in a different manifestation.


    Phew.

    Like I said, I really appreciate it guys. Let me know if you come up with anything else!

    If anyone else here has anything to add I'd love to hear your ideas too!
    Last edited by Johnny; 05-27-2009 at 11:23 AM.

  6. #6
    Join Date
    Dec 2007
    Location
    Alexandria, MN USA
    Posts
    6,532

    Default Good work, Johnny!

    I'm not educated well enough in this area to offer any help relative to the programming side, but I would like to give you my word of encouragement. Your posts have always stood out as top level thinking and it is good to see what you are up to.

    If what you are developing is anywhere near what you describe, and I have no reason to think otherwise, I think you may have a real winner. And if open source it could only get better over time.

    Good work, and congratulations on your educational achievements as well.
    Good Success!

    Website: Success With Money
    "People will forget what you said, people will forget what you did, but people will never forget how you made them feel." —Maya Angelou

  7. #7
    Join Date
    May 2009
    Location
    Chennai, India
    Posts
    15

    Smile

    Johnny

    Rather than an Ajax system, I would suggest using Cron in Php. Here are some interesting articles on it.

    Article 1
    Article 2

    Wordpress uses Cron to do automatic posting based scheduling which words on Linux as well as windows. You can probably look at that script and make your mods to the script to suit your CMS.

    The same concept can used to expire posts also. There is one other simple way to but I am not sure if its elegant.

    A post is obviously scheduled in the future date. So when we are doing the querying for posts to be displayed in the UI the select query can be like this

    SELECT * FROM POSTS_TABLE WHERE PUBLISH_DATE <= CURRENT_DATE

    What this query will do is, return all the posts in the table whose publish date is less or equal to the current date on the server. For instance, if you have the following

    Post 1 - 03/03/2009
    Post 2 - 03/04/2009
    Post 3 - 03/05/2009
    Post 4 - 03/06/2009

    Assuming the current date is 03/05/2009 then the select query will return only the first three posts. Now when the date changes and If the user is any random page, and either goes to the home page or does even a refresh on the home page the query will change to give you the results of all 4 posts. I am giving this logic on the top of my head so I am not really sure if it has any loop holes .

    Let me know if you need any help on this, would be glad to help you out.

  8. #8
    Join Date
    Apr 2008
    Location
    Cleveland/ Columbus, Ohio
    Posts
    143

    Default

    @vikramjb

    Thank you. I think I've figured out how to slay this beast, and it hit me because of your reply.

    First of all, regarding Cron:
    Cron is amazing. I use it daily on my own system (Ubuntu Linux 9.04). The problem with Cron however, is it is only available on *nix systems (Linux, Solaris, BSD, Mac OS X, etc...). Windows does have a similar tool (called Scheduled Tasks or something), but it isn't exactly Cron.

    In my perfect world, I'd wake up tomorrow and everyone would be running Linux or Mac and Windows would cease to exist. Sadly, this is not reality.

    Now what Wordpress does is attempts to use Cron. First, it looks to see if Cron is available. Next it tries executing the Cron job and then waits for a response. If it worked, great. If not, then it starts from the top and tries a new strategy.

    The thing is, even if Cron is installed on a server, and if the server's PHP settings allow execution of command-line scripts, it's still very possible that the hosting provider has disabled user-level command execution (often the case on shared hosting accounts).

    As I mentioned in my previous post, this is my problem with other CMS's. They allow for too many 'ifs.' When time could have been spent just doing the job directly, it was wasted trying to do it a certain obscure (albeit very efficient) way.

    Now on to your second method...

    Replying to you in my last post I said:

    The only 'practical' method I've devised (for my purposes at least) is to do a quick check for posts that need to be published when a user performs some arbitrary action (i.e. logging in). This wouldn't be elegant or precise, but it would work.
    I probably wasn't very clear about what I meant, but it's EXACTLY what you suggested. I'm just happy you could make what I was thinking clearer in my own head. Kudos.

    WARNING: The rest of what I'm about to write is probably really, really boring, but I can see the solution clearly right now and I think typing it out would solidify it for me.

    Your example query is pretty much exactly what I'll be doing. The issue I was having was that since HTML is a 'stateless/static' medium, something needs to happen in order for the query to be executed.

    When I was reading your suggestion, that 'something' hit me.

    Here it goes:

    In my system, there are 4 distinct kinds of pages - mainPages, subPages, entries, and modules. Each of them serves a different purpose (or more accurately, purposes), but they are all displayed to the screen in the same way. Template designers simply echo out a method(function) called 'displayContent()' from an object called '$content' ($content->displayContent()).

    What that jargon means is that EVERY time a viewable page is displayed, this function is executed. What I'm going to do is sneak a 'pseudo-Cron' command inside this function. Take this code snippet:

    PHP Code:
    function oddsAre($odds) {
        
    $num intval($odds);
        if ((!
    is_int($num)) || ($num <= 0) || ($num 100)) {
            
    trigger_error("Function 'oddsAre()' only accepts whole numbers between 1 and 100."E_USER_ERROR);
            return 
    false;
        }
        
    $spin mt_rand(1,100);
        if (
    $spin <= $odds) {
            return 
    true;
        } else {
            return 
    false;
        }

    What this does is takes the number(odds/probability) you give and returns either true or false based on your number. The closer your number to 100, the better the odds of returning true. What does this have to do with what I was talking about?

    Well, since $content->displayContent() is called on every page, I can simply stick this inside the displayContent() function:
    PHP Code:
    if (oddsAre(33)) {
        
    $this->doScheduledTasks() // <-- another function that 'does things'

    What this means is that roughly 1/3 of the time any 'content' is displayed, the system will do things like check for posts that need published, ones that have expired, and user sessions that have expired and handle them accordingly.

    It won't happen every time, so performance won't be hurt too bad, but it will happen enough to be efficient. Likewise, webmasters will be able to tweak this number to their own liking.

    Alright... I'm done now. If you read that all, well you have a greater attention span than I.

    I'm not exactly sure how you did it, but your post got my brain firing!

    Cheers.

    Last edited by Johnny; 05-29-2009 at 05:11 PM.

  9. #9
    Join Date
    May 2009
    Location
    Chennai, India
    Posts
    15

    Smile

    Glad to be of help Johnny

    So what you are basically saying is, if the number is 33 and "IF" at any given point in time the mt_rand returns a number less than or equal to 33 then the scheduled tasks will be executed, correct ?

    If that is the case, do we have a high probability that at any given point in time say we have some scheduled posts but then the random number constraint is not satisfied. For instance if the number is 33 and what will be the chances that this number does not match the one that is generated by mt_rand ?, wouldn't it reduce the chances of a post being published even though the publish date has gone by ?.

    For a CMS, if we say a post is going to be published on 12th May 2009 06:00 AM then it means it has to be published at exactly the sametime, right ?. Can the above implementation guarantee the publish date will be exactly what it is scheduled for ?

    There is one other way we can do this which is Using back-end. Before you takeout your baseball bat to smash me, hear me out and let me know the flaws if any.

    We can have a stored procedure running on a specific time interval which can be dictated by the admin of the CMS. Now this SP will pick inputs from a table where we will store the publishing job details. Now I am sure you will have flags to differentiate Published posts and Draft Posts. Now this SP can update the concerned table's publish flag which will in turn "ensure" that the very next time a user does a refresh of a page or goes to a new page in the CMS the new post would bee published at the date scheduled.

    I am not sure if this increases your dependency on the db site but then it does increase the chances of a post being published at exactly the time it was scheduled for. Let me know what you think

  10. #10
    Join Date
    Apr 2009
    Posts
    38

    Default

    I'm glad to here about real time editing, it is quite new
    I'm planning project where opensource maniacs (like me) could have news and articles, open source variuos software downloads, so you are invited

    About your cms:

    I'd like to see menu editing, but my offer while I not saw it would be - to do that menu link in editing mode would be opened in new window.

    Other offer: posibility to use wide and centered themes

    I will think more later Good Luck

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •