úÎ2,-’5      !"#$%&'()*+,-./01234 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  5    5 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. %&'()6*+,-7 %&'()*+,- %&'()+*,-%&'()6*+,-7 unportableunstablepbrisbin@gmail.comNone8$Edit and Delete links if configured ./8 Edit route  Delete route ./././8 unportableunstablepbrisbin@gmail.comNone1@Store comments in an instance of YesodPersit with a SQL backend 9:;<=>?@ABCD0EF1G01109: ;<=>?@ABCD0EF1G unportableunstable!Patrick Brisbin <me@pbrisbin.com>NoneHBReturn tuples of thread id and associated comments sorted by most ! recently commented on thread. IAIf the comment belongs to the currently logged in user, runs the ' action on it. Otherwise, halts with permissionDenied. J1Runs the form and updates the comment on success 2K3LMNOPHIJQR STUV23WXY23 2K3LMNOPHIJQR unportableunstablepbrisbin@gmail.comNone4 444Z      !"#$%&'()*+,,-./0123456789:;<=>?@ABCDEFGHIAJKLMNO8PQRSTUVWXYWXZWX[WX\]^_`yesod-comments-0.8.3Yesod.Comments.ManagementYesod.Comments.CoreYesod.Comments.UtilsYesod.Comments.FormYesod.Comments.ViewYesod.Comments.StorageYesod.Commentsyesod-routes-1.1.2Yesod.Routes.ClassRoute YesodCommentscommentStorage userDetails threadRoute editRoute deleteRouteCommentStoragecsGetcsStorecsUpdatecsDeletecsLoad UserDetails textUserId friendlyName emailAddressComment commentId cThreadId cTimeStamp cIpAddress cUserName cUserEmailcContentcIsAuth CommentIdThreadIdcommentUserDetailscurrentUserDetailsrequireUserDetailsdefaultUserDetailsgravatarisCommentingUser CommentFormformUser formThread formCommentcommentFromForm commentFormrunForm runFormWith showComments showCommentmigrateCommentspersistStorage CommentsAdmingetCommentsAdmin addComments $fEqCommentFormlogincommentControls SqlCommentIdSqlCommentGeneric SqlCommentsqlCommentThreadIdsqlCommentCommentIdsqlCommentTimeStampsqlCommentIpAddresssqlCommentUserNamesqlCommentUserEmailsqlCommentContentsqlCommentIsAuth toSqlCommentfromSqlComment$fPersistFieldSqlCommentGenericgetThreadedCommentswithUserComment runFormEdit getCommentsRgetEditCommentRpostEditCommentRgetDeleteCommentRpostDeleteCommentRlayout$fRenderRouteCommentsAdminyesod-auth-1.1.6 Yesod.AuthCheckRLoginRLogoutRPluginRDeleteCommentR EditCommentR CommentsR