cardstories part 15: invitations

When the invitations look like email addresses, the permalink to the game is sent to the corresponding address. The CardstoriesService class was re-architectured for consistency. The interaction and artwork issues were discussed extensively with Xavier Antoviaque and tartarugafeliz. Solutions and new graphics will be provided.

mail invitations

During the invitation phase the author of the game can type the names of the players (s)he would like to invite. The auth.py module was modified to detect the player names with a @ in them and send an invitation with the URL via mail.
The mail to be sent can be configured using the following options, as found in tap.py:

         ["mail-host", "", "localhost", "SMTP host", str],
         ["mail-from", "", "cardstories", "From: line in invitations", str],
         ["mail-subject", "", "Cardstories invitation", "Subject: line in invitations", str],
         ["mail-body", "", "http://localhost:4923/static/?player_id=%(player_id)s&game_id=%(game_id)s", "Body of invitations", str],

It is implemented using the email.mime.text standard python module as well was the twisted.mail module.
The default file of the init.d script was modified to provide a convenient way to specify the various parts of the invitation mail to be sent:

# sending mail invitations
CARDSTORIES_HOST=localhost
CARDSTORIES_BODY=$(cat <<EOF
Hi friend,

Come play with me at
http://localhost:4923/static/?player_id=%(player_id)s&game_id=%(game_id)s

Cheers
)
CARDSTORIES_FROM=noreply@localhost
CARDSTORIES_SUBJECT="Cardstories invitation"

It is minimalist and for demonstration purposes only. The game should be integrated in a framework that handles invitations and user databases, either a social network or a CMS.

game and service architecture

When the functions ( vote, pick, voting, complete etc. ) were moved to the CardstoriesGame class, the HTTP argument parsing safeguards were transported with them. However they don’t belong to a class that should only deal with the game logic. For each of them, the checking of the arguments was moved back to the
CardstoriesService class.

interaction and artwork chat

(01:20:19 PM) tartarugafeliz: everything is static right?
(01:20:43 PM) tartarugafeliz: no re-dimensioning or adjusting to other people's monitors or this kind of stuff?
(01:21:38 PM) dachary: yes, at the moment I did it static
(01:21:50 PM) dachary: but if you want we can work on an elastic design
(01:22:23 PM) dachary: it is made to fit on a 1024x768, is it what you expected ?
(01:22:27 PM) dachary: tartarugafeliz: ^
(01:22:30 PM) tartarugafeliz: yes!
(01:22:34 PM) tartarugafeliz: static is good
(01:22:39 PM) tartarugafeliz: we just need to centralize! :)
(01:23:15 PM) tartarugafeliz: maybe cover the whole background with the blue lists and work with the content in the middle?
(01:23:52 PM) tartarugafeliz: or I can make a frame around the borders and leave as it is
(01:24:23 PM) dachary: I'm notoriously bad a designing pages. But I will diligently execute what you decide ;-)
(01:25:25 PM) tartarugafeliz: ok I'll have to send all the pngs to an email, because the server is down and we don't have the file repository working right now
(01:25:46 PM) tartarugafeliz: do you mind?
(01:27:00 PM) dachary: I don't mind
(01:38:13 PM) dachary: I'm done testing the mail invitations
(02:07:51 PM) tartarugafeliz: dachary: sent to your email!
(03:26:46 PM) dachary: antoviaque: would you like to discuss the interaction of the game ?
(03:58:45 PM) antoviaque: And yes we can discuss the interaction now if you want
(04:01:47 PM) antoviaque: Most of the things I have stuff to say about right now would be the skin, missing explanations, etc. but Deborah and you are already taking care of those
(04:01:55 PM) dachary: yes
(04:02:11 PM) antoviaque: And the other part is to play - probably I'll notice more issues there
(04:02:39 PM) dachary: What do you think about the issues I listed here http://dachary.org/?p=313 ? In the artwork and interaction questions part ?
(04:04:37 PM) antoviaque: When I went through the list, I was agreeing with the things you pointed out as missing - I'll recheck everything now to see if I don't see other things
(04:11:00 PM) dachary: antoviaque: I received your invitation, clicked and picked a card
(04:14:47 PM) antoviaque: I have just "             Hungry             COMPLETE           " on my screen
(04:15:49 PM) dachary: I don't have any mockup for this phase
(04:15:53 PM) dachary: click on complete
(04:16:19 PM) dachary: antoviaque: ^
(04:17:45 PM) tartarugafeliz: its true Loic! there's lots of details I didn't knew I would have to do!
(04:17:53 PM) tartarugafeliz: I'm going to do them too
(04:18:05 PM) dachary: tartarugafeliz: the devil is in the details ;-)
(04:18:23 PM) dachary: I did not mention it but there also are the "error messages"
(04:19:29 PM) antoviaque: But for this phase, it's simply this no? http://cardstories.dachary.org/cardstories/static/?skin=complete
(04:20:42 PM) dachary: do you think the same should be used to display the author view of the voting phase ?
(04:21:13 PM) antoviaque: yep, the author can view this (and the votes as they are being cast)
(04:21:39 PM) dachary: I see how it could be used but then there should be a button saying : declare the voting phase over or something
(04:21:43 PM) antoviaque: with a real set of cards, the author sometimes takes a peak at the votes during that phase ;p
(04:22:27 PM) antoviaque: ah it's true, this part is different
(04:23:17 PM) dachary: I agree the global layout could be the same but it cannot be *exactly* identical
(04:23:27 PM) antoviaque: yup
(04:23:59 PM) dachary: as it is, you can declare the vote phase over if there are at least 2 votes
(04:24:15 PM) dachary: it does not make sense to declare it's over with 1 vote
(04:33:37 PM) dachary: antoviaque: if you have solutions for the interactions problems you saw, I'm all ears ;-)
(04:35:01 PM) tartarugafeliz: dachary: should I send you all the cards with the over button or should I send only the frame around the cards and you adjust?
(04:36:10 PM) dachary: which page are we talking about ?
(04:36:12 PM) antoviaque: They are mostly linked to the lack of feedback for the user - so again something that Deborah and you are aware of
(04:36:25 PM) dachary: http://cardstories.dachary.org/cardstories/static/?skin=create_pick_card ?
(04:37:21 PM) dachary: antoviaque: I'm aware of the lack of feedback. Only I don't know how to provide feedback. What kind of feedback do you have in mind ?
(04:37:24 PM) antoviaque: The other thing I noticed is that Deborah checked for a new email asking her to move to the next phase after chosing her card
(04:38:22 PM) dachary: tartarugafeliz: are you refering to cards that show in http://cardstories.dachary.org/cardstories/static/?skin=create_pick_card ?
(04:38:40 PM) antoviaque: It's the ones you noticed and wrote in your blog post - about the selection of the cards and the confirmation that the player is done for now
(04:38:44 PM) tartarugafeliz: yes, all the screens that contains cards and you have to select them
(04:39:54 PM) dachary: tartarugafeliz: a separate frame will be ok.
(04:40:03 PM) tartarugafeliz: ok
(04:42:19 PM) dachary: antoviaque: I'm not sure what I should do regarding feedback. Highlighting the card that has been selected on the dock ?
(04:42:53 PM) antoviaque: dachary: yup, I think Deborah is preparing a "highlighted card" design
(04:43:21 PM) dachary: That's why I inferred you were thinking about this. It would help if you provide me with specific instructions.
(04:44:27 PM) antoviaque: I also think there should be a feedback once the "ok" button has been pressed - like a text message appearing saying "thanks! your card is recorded, you'll be warned by email for the next step"
(04:45:07 PM) dachary: antoviaque: an alert box ?
(04:45:21 PM) antoviaque: for the highlight it could be pretty simple: just put the last clicked card with the highlighted card design Deborah will do
(04:45:42 PM) antoviaque: A nicely designed message box from tartarugafeliz? :D
(04:45:53 PM) tartarugafeliz: np
(04:46:31 PM) antoviaque: dachary: sounds good?
(04:46:58 PM) dachary: I can do that.
(04:47:18 PM) dachary: What about the first pick of cards ?
(04:47:33 PM) dachary: reduce the range to 7 cards picked at random ?
(04:47:39 PM) antoviaque: Same thing I think - highlight + message on ok
(04:48:21 PM) dachary: antoviaque: i meant about the fact that there are too many cards
(04:49:44 PM) antoviaque: ahhh - for the author you mean?
(04:49:49 PM) antoviaque: yes, definitely
(04:50:00 PM) antoviaque: I can change it in the design, as promised if you want : )
(04:50:11 PM) dachary: there is no need
(04:50:38 PM) antoviaque: ok
(04:51:23 PM) dachary: from the author point of view, when the author can move to the vote phase, what kind of display do you have in mind ?
(04:51:28 PM) dachary: http://cardstories.dachary.org/cardstories/static/?skin=invitation_owner
(04:51:54 PM) dachary: should I not display the "Go to vote" when it's not possible ?
(04:52:10 PM) dachary: antoviaque: ^
(04:53:38 PM) antoviaque: Probably the most simple would be to not display it at all - the best would be to display it greyed, and display a message explaning the minimal requirement before this button can be used, but I don't think it's necessary to polish as much right now
(04:54:17 PM) dachary: ok
(04:54:57 PM) dachary: antoviaque: what is your opinion about the lack of navigation back to the list of games ?
(04:55:15 PM) antoviaque: its' definitely missing - one aspect of your list I agree on
(04:55:27 PM) dachary: how do you think it should be solved ?
(04:55:46 PM) dachary: another button ?
(04:56:13 PM) dachary: the menu-less quality of the design would suffer from it but maybe there is no way around it
(04:57:43 PM) tempuramerino left the room (quit: Remote host closed the connection).
(04:57:57 PM) dachary: tartarugafeliz: regarding the fact that the name of the players overflow the design of the bubbles, I can truncate them and have them show in full when hovering ( using title= ). But I'm concerned that the truncation will be so small that the nicks will be barely readable. How do you plan to solve this page design issue ?
(05:01:14 PM) tartarugafeliz: I'm going to put a maximum allowed character of 10 letters and redesign the bubbles :)
(05:02:22 PM) dachary: I was afraid you would have to do that. Won't that break the page design too much ?
(05:03:13 PM) antoviaque: back (some guy for the gas was at the door)
(05:03:44 PM) tartarugafeliz: a little, but nothing serious I think
(05:04:19 PM) antoviaque: dachary: lack of navigation = It's up to Deborah to solve : ) Probably adding a button would do it yup
(05:05:57 PM) dachary: tartarugafeliz: good :-)
(05:06:31 PM) tartarugafeliz: dachary: don't worry! I'm on it.
(05:07:20 PM) dachary: tartarugafeliz: antoviaque how do you plan to hint that one must click on the sentence in the http://cardstories.dachary.org/cardstories/static/?skin=finished table to get to the page displaying the game results ?
(05:07:37 PM) dachary: or to the current game state in http://cardstories.dachary.org/cardstories/static/?skin=in_progress ?
(05:08:23 PM) tartarugafeliz: in the layout, those status and stories are buttons, clickables
(05:08:29 PM) tartarugafeliz: they have an underline
(05:08:47 PM) tartarugafeliz: to indicate they're buttons
(05:08:53 PM) tartarugafeliz: do you think people won't understand?
(05:09:14 PM) dachary: tartarugafeliz: ok for the underline. I missed it.
(05:09:20 PM) tartarugafeliz: they're links, not buttons, sorry
(05:09:29 PM) dachary: got it ;-)
(05:09:30 PM) tartarugafeliz: :)
(05:10:23 PM) dachary: tartarugafeliz: did you notice the up / down arrows to the right of the header cell ?
(05:12:45 PM) tartarugafeliz: yes, what's that?
(05:12:57 PM) tartarugafeliz: ahhh its to organize
(05:12:59 PM) dachary: yes
(05:13:11 PM) tartarugafeliz: and there's a prev next last and numbers
(05:13:20 PM) dachary: and first
(05:13:26 PM) tartarugafeliz: and first. hahahahah
(05:13:29 PM) tartarugafeliz: I'll do it
(05:13:30 PM) dachary: :-D
(05:14:16 PM) dachary: there was no pagination in the original design and I was not sure how you wanted to handle it
(05:14:29 PM) dachary: is this appropriate ?
(05:15:02 PM) dachary: I chose to display the most recent games first
(05:15:44 PM) dachary: if there was no pagination, it would show the 5 most recent and not allow to access to the others.