úÎ2]-ê6      !"#$%&'()*+,-./012345 unportableunstablepbrisbin@gmail.comNone 8How to store and load comments from persistent storage. If Nothing6 is returned, the user cannot add a comment. This can D be used to blacklist users. Note that comments left by them will ( still appear until manually deleted. A thread'8s route. Currently, only used for linking back from the  admin subsite. A route to the admin subsite's EditCommentR action. If Nothing, $ the Edit link will not be shown. A route to the admin subsite's DeleteCommentR action. If  Nothing%, the Delete link will not be shown. >How to save and restore comments from persistent storage. All A necessary actions are accomplished through these 5 functions.  Currently, only persistStorage is available. Pass Nothing to get all comments site-wide. 5Information about the User needed to store comments. Text version of a user id,  toPathPiece  userId% is recommended. Comments are stored / using this value so users can freely change " names without losing comments.  The name that's actually displayed Not shown but stored The core data type, a Comment !compatability field, always true  6     6 unportableunstablepbrisbin@gmail.comNoneMap the commenter')s id to user details or return defaults. Returns Nothing if user is not authenticated  Halts with permissionDenied if user is not authenticated !BFor a comment that was not authenticated or cannot be mapped, the H default details are the id and email stored directly on the comment. "4Given pixel size and email, return the gravatar url  !"# !"# !#" !"# unportableunstablepbrisbin@gmail.comNone+=Run the form and stores the comment on successful submission ,6Both handle form submission and present form HTML. On  FormSuccess, 2 run the given function on the submitted value. $%&'(7)*+,8 $%&'()*+, $%&'(*)+,$%&'(7)*+,8 unportableunstablepbrisbin@gmail.comNone9$Edit and Delete links if configured -.9 Edit route  Delete route -.-.-.9 unportableunstablepbrisbin@gmail.comNone0@Store comments in an instance of YesodPersit with a SQL backend :;<=>?@ABCDE/FG0H/00/:; <=>?@ABCDE/FG0H unportableunstable!Patrick Brisbin <me@pbrisbin.com>None123I12JKL3123123I unportableunstable!Patrick Brisbin <me@pbrisbin.com>NoneMBReturn tuples of thread id and associated comments sorted by most ! recently commented on thread. NAIf the comment belongs to the currently logged in user, runs the ' action on it. Otherwise, halts with permissionDenied. O4PQRSTMNUV12JKL344 O4PQRSTMNUV unportableunstablepbrisbin@gmail.comNone5 555W      !"#$%&'()**+,-./01234566789:;<=>?@ABCDEFGH@IJKLMNOPQRSTUVWXYZyesod-comments-0.9.1Yesod.Comments.CoreYesod.Comments.UtilsYesod.Comments.FormYesod.Comments.ViewYesod.Comments.Storage Yesod.Comments.Management.RoutesYesod.Comments.ManagementYesod.Comments YesodCommentscommentStorage userDetails threadRoute editRoute deleteRouteCommentStoragecsGetcsStorecsUpdatecsDeletecsLoad UserDetails textUserId friendlyName emailAddressComment commentId cThreadId cTimeStamp cIpAddress cUserName cUserEmailcContentcIsAuth CommentIdThreadIdcommentUserDetailscurrentUserDetailsrequireUserDetailsdefaultUserDetailsgravatarisCommentingUser CommentFormformUser formThread formCommentcommentFromForm commentFormrunForm runFormWith showComments showCommentmigrateCommentspersistStorage CommentsAdminresourcesCommentsAdmingetCommentsAdmin addComments $fEqCommentFormlogincommentControls SqlCommentIdSqlCommentGeneric SqlCommentsqlCommentThreadIdsqlCommentCommentIdsqlCommentTimeStampsqlCommentIpAddresssqlCommentUserNamesqlCommentUserEmailsqlCommentContentsqlCommentIsAuth toSqlCommentfromSqlComment$fPersistFieldSqlCommentGeneric$fParseRouteCommentsAdminDeleteCommentR EditCommentR CommentsRgetThreadedCommentswithUserCommentHandler getCommentsRgetEditCommentRpostEditCommentRgetDeleteCommentRpostDeleteCommentRlayout'$fYesodSubDispatchCommentsAdminHandlerT