FoldingStory

EE Version

1.6.x

Add-ons used

http://foldingstory.com

FoldingStory is an online game in which players write a line of a story on a virtual piece of paper, “fold” the paper, and pass it to the next player. The next player repeats the process until the story is finished. Each player has to think fast, since a line must be entered within the time limit in order for it to be included in the story.

The concept is simple but the implementation was anything but. The ExpressionEngine side of things is relatively simple, two channels, Stories & Lines. Stories is just the list of first lines. Lines are then related to Stories using the native EE relationship field. We didn’t have a need for Playa functionality when we first started but we may upgrade in the future.

The real kicker was figuring out how to “lock” stories when someone was working on them so only one person could respond at a time and there wouldn’t be two responses to the same line. We ended up doing a lot of Javascript / cookie / MySQL trickery to change statuses of entries when someone was working on it and then reset when it they were done. All this had to work across tabs & different browsers.

The status also has to change when the story is finished (after 9 lines have been related to 1 story, equaling 10 lines) so it moves from the Add section to the Read section and people can read the finished story. When this happens, we trigger an email to be sent to the 10 writers with a link to the finished story. A custom profile field controls whether a writer receives this “notification.”

We also set up live refreshed “feeds” of stories on a logged in homepage and an author profile page, using jQuery to hit the EE database and present live updated lists of available & finished stories.

Some other features/highlights:

Signup / Login / Profile: Using Solspace’s User module for registration, profile updating. Use this, you should not do a site like this without it.

Following: We used Solspace’s Friends module to allow for people to follow other users on the site. At the moment what this does is allow you to keep track of the other author’s you are interested in by separate “feeds” by people you follow. You can easily see when someone you follow has written a line so you can respond next. Eventually we hope to add a “group” story function where you can specify a story to be “followers only” when you create it. We had to hack the Friends module a bit to enable HTML notification emails, and notifications from our main notification email instead of from individual users. You can view a list of Followers and people you are following, Unfollow them or Block them. You can follow/unfollow a user from their profile page or directly from any of their lines throughout the site.

Voting: We used Solspace’s Diggie module as a framework for this. We’re doing it with jQuery though which has been quite a headache. Once a story is finished, logged in users can “like” lines in a specific story. These likes get aggregated into user scores and overall story scores so you can browse by the top “folder,” and the top story. There is a leaderboard and top fold page to show these. You can also view the leaderboard / top folds by your followers or everyone.

Facebook: We used the Solspace Facebook Connect module to allow users to sign in using their FB credentials. This was a pretty big hurdle. The module isn’t really designed for what we wanted so it had to be modified for our uses. When users sign up, we wanted them to create a full EE account with a password so they could change their user account down the road. With this module, that isn’t really supported so we had to hack it. New users who use the Facebook signup form give us basic FB permissions which we use to get their FB id #. That ID # is entered into the database in their exp_members entry and then they can login using a single Facebook Connect button. People can see their Facebook friends in an FBML frame and invite them to the site. They can also see a list of their FB friends who are already signed up for FoldingStory.

MailChimp: We are using MailChimp for our newsletter and working on a perfect integration. It isn’t quite there but Experience Internet’s MailChimp Subscribe is a great start. It doesn’t work with the Facebook Connect Module registration form at the moment, but it works great with the Solspace User registration form. When a user signs up, they are automatically added to our newsletter list on MailChimp. There is also a custom member profile field which acts as a trigger to unsubscribe (or resubscribe). The final key to this is setting up an MC WebHook that will allow us to know when someone Unsubscribes through the MailChimp site (from an email), and update their EE member field accordingly, this is manual right now.

Login: We’re using a modified Twomile Login Redirect to skip the EE login/logout confirmation pages. We had to customize it with some URL paths to ensure everything worked, but it is a great simple addition to the site.

So that is the overview. Using ExpressionEngine made development time on this project fairly quick and the great add-ons tacked on desired functionality pretty easily. Our model is pretty complex so some things didn’t work right out of the box, but were much quicker than starting from scratch.

Other Add-ons

Solspace Friends
Solspace Diggie
Solspace Facebook Connect
MailChimp Subscribe
Twomile Login Redirect

Company: Pilotmade

Contact: .(JavaScript must be enabled to view this email address)