Recent Updates RSS Toggle Comment Threads | Keyboard Shortcuts

  • sc0ttkclark 2:40 pm on January 2, 2012 Permalink | Log in to leave a Comment
    Tags: , ,   

    Pods 2.0 Alpha testing 

    Current Alpha Version: 11 (04/22/2012)

    How to Install

    First, Grab the ZIP on our GitHub, extract the contents of the “pods-framework-pods-XXXXX” folder inside and upload it into a new folder located at wp-content/plugins/pods-2.0/ (Use pods-2.0 as the folder name instead of just ‘pods’ in order to allow you to flip between Pods 1.x and 2.0 during testing)

    Stay Up-to-date

    As future fixes and features are added, we’ll commit them to the Pods GitHub 2.0 branch. As of Alpha 6, you can now upgrade from within WordPress directly to the latest Alpha/Beta release, which pulls from our GitHub account. You’ll see the update usually within a few hours of a commit. You can also keep an eye out for new releases by subscribing via https://github.com/pods-framework/pods/commits/2.0.atom

    Bugs / Feature Requests

    Testers please report bugs and suggest features in our GitHub Issues area

    Alpha Information

    It’s the first of many alphas, so there is still much to be done and tweaked. Please remember that Pods 2.0 Alpha is NOT production/live site ready, so do not attempt to upgrade your existing Pods installations.

    Here’s a list of what you can start checking out so far in the current Alpha. Everything else is still in the works and should begin appearing in future alphas as they are finished and tweaked, but be aware there’s a LOT on it’s way!

    • New UI!
    • Add New Pod wizard guides you through creating a new content type or extending one
    • Edit Pod screen lets you add / edit fields, and choose from many field options that are built-in (yay for not needing helpers for most common use-cases!)
    • Create Custom Post Types and Custom Taxonomies, plus manage their labels / settings in the Edit Pod area
    • 04/21 – Now update the plugin from within WP directly from GitHub during testing period
    • 04/22 – Meta fields for Pods you create/extend now appear in the Post Type, Taxonomy, Media, User, and Comment editors

    Some more things to note, which mainly covers things that you may expect to work based on the above but actually aren’t in the current alpha release:

    • You can install Pods 2.0 Alpha, but it will not upgrade your existing Pods data (if any)
    • Fields can be added and edited, but they will not show up in any forms in the manage content areas yet (that includes CPT/CT, etc..)
    • Fields should not be added to any content types besides custom pods, I have not finished with those yet
    • Documentation isn’t in there yet, there’s some scattered across, but we’re working on it! Expect a ton of inline documentation with links to guide you to get more information in the User Guide once we’re done
    • Due to the lacking UI for the remainder of the features, do not try to use any Pods PHP calls, we’re only focusing on testing and using the new UI so we can get usability feedback for the current Alpha release
    • Yes, we still have those ugly JS alerts, but those are getting replaced in one of the next alphas with an even better solution so don’t fret!

    Developers / Documentation Writers Wanted!

    Now that the bulk of the work for organization, structure, and UI has been done for Pods 2.0, we’re in need of developers/writers to contribute to the project. Please contact me at the following e-mail address if you’re interested in contributing, please only e-mail me if you are a seasoned developer who has used WordPress extensively and are very familiar with Pods: scott (@) podsframework dot org

    You can also contribute by “forking” our GitHub branch, making your changes / adjustments, and then submitting a “pull request” to have it reviewed for inclusion in a future Alpha release.

    Donations Are Always Welcome

    Don’t forget that if you’re not blessed with the ability to code, you can always donate to the Pods Framework project and help fund development and future features.

    Like it? Hate it? Oh no WTF?

    Reply with your comments on the UI so far! Try to keep bugs out of the discussion and on GitHub so they can actually be fixed :)

    Screenshots

     
    • kaiiser 5:13 pm on January 2, 2012 Permalink | Log in to Reply

      Haven’t had it out for a ride – just got your note on G+. Kool that alpha made it!

    • derekpunsalan 12:02 pm on January 3, 2012 Permalink | Log in to Reply

      Nice to see the Alpha available to play around with. Great job. As great as custom post types can be, the ability to customize a site with Pods was almost frictionless. In the kickstarter email you mentioned something about notifications / updates. Are the emails going to stop – meaning subscribe to the blog for updates?

      • sc0ttkclark 12:45 pm on January 3, 2012 Permalink | Log in to Reply

        It’s always a good idea to subscribe to the Blog posts and comments on this site, or even follow me us on Twitter. However, I’ll continue to be sending e-mail newsletters to everyone (including everyone who has donated in the future/past) as major updates are released so everyone who literally has a vested interest can know as things happen.

    • lancebutler 2:45 pm on January 3, 2012 Permalink | Log in to Reply

      On the new UI…… (My Mind == Blown)

    • vingogly 7:40 pm on January 13, 2012 Permalink | Log in to Reply

      The GUI seems to be organized in a much more logical and intuitive fashion … if I weren’t so busy I’d download the Alpha and give it a try. Looking forward to seeing what’s on those other tabs. :)

    • htlcnn 8:12 am on April 30, 2012 Permalink | Log in to Reply

      It seems to me that pods 2.0 processes longer than pods 1.12.4. Does pods 2.0 final behave the same?

      • sc0ttkclark 8:52 am on April 30, 2012 Permalink | Log in to Reply

        Which part are you referring to processing longer? We haven’t enabled the transient/caching layer in 2.0 yet so there is a lot that will speed up very fast.

        • htlcnn 10:11 am on April 30, 2012 Permalink | Log in to Reply

          the Pods Setup page is loaded slower in the 2.0 alpha than 1.12.4. Except that, ajax works as fast as the stable version.
          pods 2.0 is really a revolution. I’m looking forward to it. Keep on your excellent work. Thank you!

  • sc0ttkclark 11:50 am on May 9, 2012 Permalink | Log in to leave a Comment
    Tags: dfw, workshop   

    Details coming soon of a possible first official Pods workshop in the DFW area! Would you go to it or is it too far from you? Let us know!

     
  • sc0ttkclark 5:15 pm on April 22, 2012 Permalink | Log in to leave a Comment
    Tags: , ,   

    Pods 2.0 Alpha 11 is out, if you’re wondering where all the other alpha versions went, they were here and gone in a flash as I’ve been committing fixes and features like crazy this weekend!

    Latest big ticket item that @mpvanwinkle and I have been working on since this past Fall has been the Meta box integration for Post Types, Taxonomies, Media, Users, and Comments. In the latest alpha, we’ve now got integration into each one of those forms (both add and edit!). It’s dynamic, so any field you create for your pods that are integrated with those objects will appear in the corresponding object’s forms. Storage is meta only right now, working on getting further support for the Pods table-based storage for each of the objects.

    Form UI work will be progressing further this week as @mikedamage will be working on it heavily. We’ll be working on getting that done and pushed into an upcoming 2.0 alpha for both admin and front (theme-side) forms.

    Get in on the alpha today and check it all out, provide feedback, and of course test ;)

    http://dev.podscms.org/2012/01/02/pods-2-0-alpha-testing/

     
  • sc0ttkclark 8:02 am on April 17, 2012 Permalink | Log in to leave a Comment
    Tags: , ,   

    Pods 2.0 Alpha 6 is out, includes some bug fixes and a new updater that will allow you to upgrade from within WordPress to the latest alpha/beta versions as they come out via the 2.0 branch in GitHub.

    http://dev.podscms.org/2012/01/02/pods-2-0-alpha-testing/

     
  • sc0ttkclark 10:27 am on April 16, 2012 Permalink | Log in to leave a Comment
    Tags: , , , testers needed   

    Gravity Forms Integration – Need testers! 

    Beta testing of the new Gravity Forms integration with Pods is going on NOW!

    This code has evolved as it’s been used on a number of my projects since I started using Gravity Forms when it first came out back in 2009. I’ve refactored it a bit, and it’s now available for devs to geek out with their PHP out.

    It doesn’t have a UI yet, so it’s really meant to be tested on a manual PHP integration at the moment.

    This component will be baked into Pods 2.0 itself, but the code as it is right now was built to work with Pods 1.12+

    Mapping a GF entry to a new Pod item

    To map a GF entry, hook into the gform_post_submission action for the form you want to integrate with. I usually hook into the gform_post_submission action itself and handle all my forms within a few if/else statements. Once in the function that runs during that action, you just map your $entry array to the Pods_GravityForms::map function.

    Pods_GravityForms::map( $entry, $pod_name, $mapping );

    $mapping is a key=>value array of fields (key is the GF field ID, value is the pod column name).

    In $mapping, you can provide an array for the value, which can contain many other options. Some examples of these would be ‘field’ (the name of the Pod field to save into), ‘bool’ (see below for BOOLEAN fields), ‘default’ (the value to set if no value is given by the form), and ‘bypass_value_set’ (don’t get the value from the GF field value, always use the ‘default’ for value).

    For PICK fields, Pods will check to see if the value passed by GF is numeric, if not, it will look up your items by name and try to find the best match. I usually setup my corresponding fields in GF to send back the value as the Pod item ID I want to relate to. You can optionally create your own dynamic field options with the ‘gform_pre_render’ action in GF, hooking into the field’s ‘choices’ array, set the text and value as you need.

    For BOOLEAN fields, Gravity Forms sends back Yes / No, or other text depending on how you’ve labeled that field. In those cases, set your map field array value of ‘bool’ to the ‘Yes’ value you want to be triggered by.

    Creating a Faux $entry array during validation / pre-processing

    Since Gravity Forms doesn’t give you a standard data array both in pre AND post, with this code you can also build a faux $entry array in your GF validation / pre-processing. This also makes it possible to map a GF entry to a Pod before the entry has actually been created in GF.

    $entry = Pods_GravityForms::setup_entry( $gf_validation );

    That’s the simple version of it, there’s a lot more complexity built in that I’ll try to get some more examples posted here asap.

    A few extra methods for most common needs

    In most of my form integrations with GF, I’ve had a need for a few methods that I threw in here for your enjoyment as well!

    Auto delete the entry GF creates, which runs after post-processing:

    Pods_GravityForms::auto_delete( $form_id );

    Auto login a user from GF User Registration form:

    Pods_GravityForms::auto_login();

    Set a select field’s values to pull from a Pod instead of being static/hard coded:

    Pods_GravityForms::dynamic_select( $form_id, $field_id, $pod_name, $label_column_name, $params );

    Get the Pods + Gravity Forms integration code at GitHub

    https://github.com/pods-framework/pods/blob/2.0/components/GravityForms.php

     
    • magi182 1:36 am on April 17, 2012 Permalink | Log in to Reply

      Here is a basic example for the Gravity FormsPods connector class:

      For a basic contact form, with name, email, website, and comment fields numbered 1, 2, 3, 4.

      add_action("gform_post_submission_1", "push_to_pods_test", 10, 2);
      // the _1 limits this hook to run only on form id = 1

      function push_to_pods_test($entry, $form) {
      // the function accepts two parameters, but we're going to deal
      // exclusively with the $entry object (contains only the user-entered data)

      $pod_name = 'cf_submission';
      // the name of the destination pod

      $mapping = array(
      "1" => "name",
      "2" => "email",
      "3" => "website",
      "4" => "message"
      );
      // $mapping contains a key=>value array of fields
      // (the key is the GF field ID, the value is the pod column name).

      Pods_GravityForms::map( $entry, $pod_name, $mapping );
      // do it!

      }

    • magi182 1:57 am on April 17, 2012 Permalink | Log in to Reply

      Here’s a little more complicated example, including some pick fields. You can map any field that is part of the $entry object, and there are lots more than just the ones from your Gravity Forms fields. So it might be worth doing a little print_r($entry); investigation as part of your hooked function. Of course, both of these examples belong in the functions.php of your active theme.

      In the Gravity Form used below, date_created is the date/time recorded when the form was submitted, gender and t_shirt_size are both pick fields. The name and lastname fields are populated from specific fields inside a GF advanced “Name” input.


      add_action("gform_post_submission_2", "push_to_pods", 10, 2);

      function push_to_pods($entry, $form) {

      $num_entries = rgpost('input_1');
      // you can the fetch the value of a single entry if you need it for logic later in the import

      // print_r($entry); // if you want to look around a little

      $pod_name = 'participant';

      $mapping_1 = array(
      "date_created" => "date_registered",
      "3.3" => "name",
      "3.6" => "lastname",
      "4" => array ("field" => "gender"),
      "5" => array ("field" => "t_shirt_size"),
      // Extra parameters can be added by passing an array. Here,
      // field contains the column name the pick should map to
      "6" => "birthdate"
      // dates will come in as date objects
      );
      if ( $num_entries >= 1 )
      Pods_GravityForms::map( $entry, $pod_name, $mapping_1, '', true );
      }

      • magi182 2:01 am on April 17, 2012 Permalink | Log in to Reply

        posted too quick…


        add_action("gform_post_submission_2", "push_to_pods", 10, 2);

        function push_to_pods($entry, $form) {

        $num_entries = rgpost('input_1');
        // you can the fetch the value of a single entry if you need it for logic later in the import

        // print_r($entry);

        $pod_name = 'participants';
        $mapping_1 = array(
        "date_created" => "date_registered",
        "3.3" => "name",
        "3.6" => "lastname",
        "4" => array ("field" => "gender"),
        "5" => array ("field" => "t_shirt_size"),
        // Extra parameters can be added by passing an array. Here,
        // field contains the column name the pick should map to
        "6" => "birthdate"
        // dates will come in as date objects
        );
        if ( $num_entries >= 1 )
        Pods_GravityForms::map( $entry, $pod_name, $mapping_1 );
        }

    • cueman 4:39 am on April 17, 2012 Permalink | Log in to Reply

      This is all very well and good, but instead of adding more and more features to Pods 2.0, how about just getting it out the door? It’s already a year past the original target release date. The kickstarter thing seemed to suggest that by putting in money, the release would come soon. Keep on adding stuff and it might not even be out in 2012.

      • sc0ttkclark 8:40 am on April 17, 2012 Permalink | Log in to Reply

        Thanks for the feedback. I’m more aware than anyone of the timeline issues, and I’ve posted updates explaining everything here before so I don’t have to go too far into it. This was a crucial feature of 2.0′s release cycle that I haven’t spent more than a few hours of my Pods time on, this was the result of client work over the past few years, actually previous to 2.0 development itself.

        Keep a look out for more progress on 2.0 as I’ve recently hired Fifth Room Creative on to help get the remainder of 2.0 ready. Thanks for your patience and I’m looking forward to the upcoming 2.0 beta.

      • magi182 1:53 am on April 18, 2012 Permalink | Log in to Reply

        Not to white knight Scott here, but a few points:

        Contributing to a kickstarter for an open source, free project is not the same thing as paying for a fee-for-service project.
        During the time period, Pods has received regular updates — and many of the 2.0 features have been rolled out as a part of the updates process.
        Time is more valuable than money. Even if you were to kick in $1000, that would realistically fund 10-15 hours of development time.

        If you want it out sooner, pitch in answering help requests on the discussion board, volunteer to knock out some punchlist items, offer to test some completed code, write up documentation for an undocumented or poorly documented feature, hang out on the IRC channel and answer support requests… Open source only works when people treat it like a community, not a service.

    • cueman 10:26 am on April 19, 2012 Permalink | Log in to Reply

      I think that mentioning kickstarter obscured the message I wanted to convey somewhat, which was that I was worried that Pods 2.0 might be suffering from feature creep. Scott’s reply seems to suggest that’s not the case.

      • sc0ttkclark 12:15 pm on April 20, 2012 Permalink | Log in to Reply

        Thanks for the clarification :)

        Feature creep has been managed, I’ve organize an assault on the remaining 2.0 features and have pushed any fluff to 2.x

    • sc0ttkclark 10:09 am on April 27, 2012 Permalink | Log in to Reply

      This class is in Pods 2.0, I’ll continue updating it there. To get access to it, simply go to:

      https://github.com/pods-framework/pods/blob/2.0/components/GravityForms.php

  • sc0ttkclark 9:27 am on April 12, 2012 Permalink | Log in to leave a Comment
    Tags: , ,   

    Just signed on Fifth Room Creative to provide Development / Design support to the 2.0 release cycle! Thank you Mike Damage and Steve Guberman!

     
  • sc0ttkclark 7:25 pm on April 7, 2012 Permalink | Log in to leave a Comment
    Tags: , feedback needed, upgrade   

    Upgrade Path for 2.0 

    Just fishing for ideas here, I have a few of my own but wanted to see if anyone else had any feedback.

    In Pods 2.0, we have an entirely revamped set of tables for performance and simplicity benefits. The upgrade path I was looking at seems to mean that upgrading to 2.x from 1.x would stop any Pods-specific functionality from working on a site using Pods, until the 2.0 upgrader can run, which means there is a button an admin has to click.

    How do we communicate with users on how the upgrade process works, before they click upgrade in the WP update screen itself?

    Should we consider setting up a new plugin on wp.org that would be separate, so you could install 2.0, it would guide you through upgrading, then automatically deactivate the old Pods plugin.

    Or are there other options here? We have to think long term, because anything we do in 2.x has to have that same upgrade path available, for users or projects who have not yet been able to upgrade for whatever reason.

     
    • sc0ttkclark 1:38 pm on April 9, 2012 Permalink | Log in to Reply

      After discussing with @logikal16, I believe I was initially overthinking this!

      Here’s what I’m planning:

      1. The codebase you’re running for your 1.x *shouldn’t* break, so only the DB will have issues since there’ll be the new table structures, etc..

      2. The WP update and subsequent automatic upgrade within Pods for the DB will run the upgrade, sans content. So that means all the tables and everything will be setup – BUT the content will need to be manually upgraded.

      3. There will be a big notice up at the top of WP Admin to manually upgrade the content within Pods, which will run a script that should work for most sites. In the event the script fails, the script can continue where it left off before. So if there are server timeouts, etc.. content won’t get messed up.

      Sounds good, eh? Guess my brain took a vacation this weekend, should have thought of this before!

    • benfavre 2:12 pm on April 9, 2012 Permalink | Log in to Reply

      Having the actual content migrated manually after the tables are setup by the upgrade sounds pretty solid.

  • sc0ttkclark 9:52 am on April 6, 2012 Permalink | Log in to leave a Comment
    Tags: , ,   

    Working on an awesome announcement that means better funding for future development of Pods.. more soon!

     
  • sc0ttkclark 10:14 pm on April 5, 2012 Permalink | Log in to leave a Comment
    Tags: , ,   

    Pods 1.12.4: Tweaks and bug fixes 

    Release Notes

    • Added: ‘offset’ parameter to Pod::findRecords, allows you to offset what results to start with, which is added to the offset calculated based on current page number and limit
    • Added: ‘page_var’ parameter to Pod::findRecords, allows you to set a custom page_var (default is ‘pg’), setting it will reset the current page number, set during Pod::construct()
    • Added: New ‘pods_rel_lookup_data’ filter to filter the data array itself (not just the MySQL resource given in ‘pods_rel_lookup’ filter above), great for customizing drop-downs for PICK fields
    • Fixed: ‘page’ parameter in Pod::findRecords wasn’t being validated as a number greater than 0, now forces a minimum of 1; Anything less will also reset the current page number, set during Pod::construct()
    • Fixed: Pods UI ‘label_add’ wasn’t being used on button at top of manage table list
    • Fixed: Pagination bug with custom page_var set in Pod object, would add the custom page_var to the URL over and over
    • Fixed: Upgrade script updated to include all upgrades prior to 1.6, which had been left out in a previous release
    • Fixed: More strict matching in Pod::findRecords for field names, instead of just removing ‘(‘ and ‘)’, it now removes ‘function_name(‘ first, so that fields with the same name as function names won’t be pulled
     
  • sc0ttkclark 4:05 am on March 26, 2012 Permalink | Log in to leave a Comment
    Tags: , ,   

    Pods 2.0 Update 

    It’s been a crazy few months to say the least.

    Back in October, I started a full time PHP job that was supposed to give me more time with family and to code. It did, but there was a huge piece missing out of my day, WordPress. Since 2007, I’ve almost exclusively been working with WordPress, developing plugins and pushing it’s boundaries.

    In October, my new job didn’t involve WordPress, and at first I thought it would just strengthen my PHP skills. Unfortunately it didn’t really do much of either and I decided to move on.

    As of last week, I am now part of the RD2 team. My job is multi-faceted, but I was mainly brought on to be their WordPress “guru”, and I can already tell that it’s a great fit.

    The above is just the backdrop to this post though, I really want to get right to it. My new years resolution was to be more involved with WordPress day-to-day, spend more time with my family, and foster the next phase of Pods’ life: Pods 2.0.

    Many things have led to delays and I won’t stand here and list all of those excuses. The bottom line is that 2.0 is not yet finished. The website isn’t even finished. The ‘free contribution well’ has sort of dried out, I have been paying developers for their help with the project and it’s strained my personal finances. I’m considering some more options for funding but I know so many people have already contributed.

    Everything was in place for success, but time worked against me and others involved and I lost my work window I had set. If you can remember back to September, I set aside a few weeks of my work schedule to solely work on Pods 2.0. Then some who were involved to help were unable to contribute as much as they had planned, if at all. I went looking for help, but that became a huge time sink. I should have just gone at it on my own and dealt with the delays. I was impatient and didn’t want to fail, I looked for dev help that just wasn’t there at the time.

    Pods 2.0 isn’t stopping

    No, no. Far from it. While I’ve had spare time over the past few months, I’ve been planning bigger and better things for Pods, namely, funding. I’ll unveil the new funding idea soon, once I get the remaining details lined up. First, to answer what I can, yes Pods will remain free. I’m however looking at existing models and other funding options to keep development flowing more than just donations. There simply isn’t enough donation power coming in to sustain it. If you want to prove me wrong, please, by all means — you can impact the development of Pods greatly through your donation. If you have time and are experienced with Pods, you can jump in now to contribute.

    I will continue to work on getting the new site launched and finishing up Pods 2.0 Alpha, there’s so much I can’t wait to commit for you to test! I’m trying to limit the commits so everything doesn’t break at once ;)

    I want to thank everyone who has contributed to Pods 2.0 so far, either monetarily, or through development. Your contributions do not go unnoticed!

     
    • vingogly 7:27 pm on March 31, 2012 Permalink | Log in to Reply

      Personally, I wouldn’t have any problem paying a fair price for Pods CMS 2.x (assuming it’s as good as I think it’s going to be), either on a per site or bundle basis. I’m already paying for professional-quality plugins like WPTouch Pro, BackupBuddy, a number of others I consider essential for certain sites (and BackupBuddy is included with every site I build for clients).

      • sc0ttkclark 5:18 am on April 1, 2012 Permalink | Log in to Reply

        That’s great to hear, more than likely things are leaning towards freemium though, with the bulk of 2.0 remaining free while some more special features would be premium. And anyone who has donated or contributed to the kickstarter a certain amount or over will have access to that for free! Thanks for keeping with Pods and using it on your projects, the best has yet to come!

    • vingogly 4:09 pm on April 1, 2012 Permalink | Log in to Reply

      Actually, that’s how plugins like WPTouch and Ninja Announcements do it … a free version plus a “pro” or premium version with special features. I’ve installed the alpha on my sandbox and haven’t had a lot of time to play with it yet, but oh my, it’s a whole new world. :)

      • sc0ttkclark 7:16 pm on April 1, 2012 Permalink | Log in to Reply

        I always hate that word usage, “pro” lol

        Alpha is night and day in terms of UI, I put in a lot of time planning and making it usable, an paying fancy smart people to help! Glad you’re enjoying it already, much more to come.

    • jeremy 4:48 am on April 2, 2012 Permalink | Log in to Reply

      Glad to hear you are going to adopt a structure that will give everybody the pods they love free but allow you to get a little reward for the probably hundreds of hours you put into the pods framework by selling extras.

      Best of luck getting pods free versions going and for the addons thereafter!

      My main suggestions to you would be to look at the strengths of pods as a framework (for example, you could consider the most common applications of pods as an information system), and then develop a suite around this.

      When I’m buying extra’s on freemium products, my considerations before purchase are always a matrix like:

      The developer spent x hundred hours developing this extra ‘pro’ feature, and it has updates.
      The price is only x
      It would cost me WAY more to make my own, and the feature stands above competition.
      win/win for both of us, good value.
      The product standalone was great and free, I dont feel like im being ripped off/have any ill feelings towards wp plugin seller because the developer does something good for the community and seems like a good guy.

      Making everybody happy but getting paid just a little for your tireless work is a hard beast to master but i think you can do it!

      Good Luck!!

  • sc0ttkclark 11:52 am on March 9, 2012 Permalink | Log in to leave a Comment
    Tags:   

    I put Pods up on Ohloh this week, they analyzed all of our code from 1.x and 2.x and it’s pretty crazy to see the estimated cost of what it’s taken to make Pods what it is today.

    https://www.ohloh.net/p/pods-framework

     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
shift + esc
cancel