github.com/rpdict/ponzu@v0.10.1-0.20190226054626-477f29d6bf5e/docs/build/Interfaces/Item/index.html (about)

     1  
     2  <!DOCTYPE html>
     3  <html lang="en" class="no-js">
     4    <head>
     5      
     6        <meta charset="utf-8">
     7        <meta name="viewport" content="width=device-width,initial-scale=1">
     8        
     9        
    10        
    11        
    12          <link rel="shortcut icon" href="../../assets/images/favicon.png">
    13        
    14        <meta name="generator" content="mkdocs-0.16.3, mkdocs-material-1.6.1">
    15      
    16      
    17        
    18          <title>Item Package Interfaces</title>
    19        
    20      
    21      
    22        <script src="../../assets/javascripts/modernizr-56ade86843.js"></script>
    23      
    24      
    25        <link rel="stylesheet" href="../../assets/stylesheets/application-4d0d3f2fbf.css">
    26        
    27          <link rel="stylesheet" href="../../assets/stylesheets/application-f78e5cb881.palette.css">
    28        
    29      
    30      
    31        
    32          
    33          
    34          
    35          <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono">
    36          <style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
    37        
    38        <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
    39      
    40      
    41      
    42    </head>
    43    
    44    
    45    
    46    
    47      <body data-md-color-primary="grey" data-md-color-accent="light-blue">
    48    
    49      <svg class="md-svg">
    50        <defs>
    51          
    52          
    53            <svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg>
    54          
    55        </defs>
    56      </svg>
    57      <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer">
    58      <input class="md-toggle" data-md-toggle="search" type="checkbox" id="search">
    59      <label class="md-overlay" data-md-component="overlay" for="drawer"></label>
    60      
    61        <header class="md-header" data-md-component="header">
    62    <nav class="md-header-nav md-grid">
    63      <div class="md-flex">
    64        <div class="md-flex__cell md-flex__cell--shrink">
    65          
    66            <a href="../.." title="Ponzu" class="md-logo md-header-nav__button">
    67              <img src="../../images/logo.png" width="24" height="24">
    68            </a>
    69          
    70        </div>
    71        <div class="md-flex__cell md-flex__cell--shrink">
    72          <label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label>
    73        </div>
    74        <div class="md-flex__cell md-flex__cell--stretch">
    75          <span class="md-flex__ellipsis md-header-nav__title">
    76            
    77              
    78                
    79                  <span class="md-header-nav__parent">
    80                    Interfaces
    81                  </span>
    82                
    83              
    84              Item
    85            
    86          </span>
    87        </div>
    88        <div class="md-flex__cell md-flex__cell--shrink">
    89          
    90            <label class="md-icon md-icon--search md-header-nav__button" for="search"></label>
    91            
    92  <div class="md-search" data-md-component="search">
    93    <label class="md-search__overlay" for="search"></label>
    94    <div class="md-search__inner">
    95      <form class="md-search__form" name="search">
    96        <input type="text" class="md-search__input" name="query" required placeholder="Search" accesskey="s" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query">
    97        <label class="md-icon md-search__icon" for="search"></label>
    98        <button type="reset" class="md-icon md-search__icon" data-md-component="reset">close</button>
    99      </form>
   100      <div class="md-search__output">
   101        <div class="md-search__scrollwrap" data-md-scrollfix>
   102          <div class="md-search-result" data-md-component="result">
   103            <div class="md-search-result__meta" data-md-lang-result-none="No matching documents" data-md-lang-result-one="1 matching document" data-md-lang-result-other="# matching documents">
   104              Type to start searching
   105            </div>
   106            <ol class="md-search-result__list"></ol>
   107          </div>
   108        </div>
   109      </div>
   110    </div>
   111  </div>
   112          
   113        </div>
   114        <div class="md-flex__cell md-flex__cell--shrink">
   115          <div class="md-header-nav__source">
   116            
   117              
   118  
   119  
   120    
   121  
   122  
   123    <a href="https://github.com/rpdict/ponzu" title="Go to repository" class="md-source" data-md-source="github">
   124      
   125        <div class="md-source__icon">
   126          <svg viewBox="0 0 24 24" width="24" height="24">
   127            <use xlink:href="#github" width="24" height="24"></use>
   128          </svg>
   129        </div>
   130      
   131      <div class="md-source__repository">
   132        ponzu-cms/ponzu
   133      </div>
   134    </a>
   135  
   136            
   137          </div>
   138        </div>
   139      </div>
   140    </nav>
   141  </header>
   142      
   143      <div class="md-container">
   144        
   145        
   146        <main class="md-main">
   147          <div class="md-main__inner md-grid" data-md-component="container">
   148            
   149              
   150                <div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
   151                  <div class="md-sidebar__scrollwrap">
   152                    <div class="md-sidebar__inner">
   153                      <nav class="md-nav md-nav--primary" data-md-level="0">
   154    <label class="md-nav__title md-nav__title--site" for="drawer">
   155      
   156        <i class="md-logo md-nav__button">
   157          <img src="../../images/logo.png">
   158        </i>
   159      
   160      Ponzu
   161    </label>
   162    
   163      <div class="md-nav__source">
   164        
   165  
   166  
   167    
   168  
   169  
   170    <a href="https://github.com/rpdict/ponzu" title="Go to repository" class="md-source" data-md-source="github">
   171      
   172        <div class="md-source__icon">
   173          <svg viewBox="0 0 24 24" width="24" height="24">
   174            <use xlink:href="#github" width="24" height="24"></use>
   175          </svg>
   176        </div>
   177      
   178      <div class="md-source__repository">
   179        ponzu-cms/ponzu
   180      </div>
   181    </a>
   182  
   183      </div>
   184    
   185    <ul class="md-nav__list" data-md-scrollfix>
   186      
   187        
   188        
   189        
   190  
   191  
   192    <li class="md-nav__item">
   193      <a href="../.." title="Home" class="md-nav__link">
   194        Home
   195      </a>
   196    </li>
   197  
   198      
   199        
   200        
   201        
   202  
   203  
   204    <li class="md-nav__item md-nav__item--nested">
   205      
   206        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-2" type="checkbox" id="nav-2">
   207      
   208      <label class="md-nav__link" for="nav-2">
   209        CLI
   210      </label>
   211      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   212        <label class="md-nav__title" for="nav-2">
   213          CLI
   214        </label>
   215        <ul class="md-nav__list" data-md-scrollfix>
   216          
   217          
   218            
   219            
   220            
   221  
   222  
   223    <li class="md-nav__item">
   224      <a href="../../CLI/General-Usage/" title="General Usage" class="md-nav__link">
   225        General Usage
   226      </a>
   227    </li>
   228  
   229          
   230            
   231            
   232            
   233  
   234  
   235    <li class="md-nav__item">
   236      <a href="../../CLI/Generating-References/" title="Generating References" class="md-nav__link">
   237        Generating References
   238      </a>
   239    </li>
   240  
   241          
   242        </ul>
   243      </nav>
   244    </li>
   245  
   246      
   247        
   248        
   249        
   250  
   251  
   252    <li class="md-nav__item md-nav__item--nested">
   253      
   254        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3">
   255      
   256      <label class="md-nav__link" for="nav-3">
   257        Content
   258      </label>
   259      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   260        <label class="md-nav__title" for="nav-3">
   261          Content
   262        </label>
   263        <ul class="md-nav__list" data-md-scrollfix>
   264          
   265          
   266            
   267            
   268            
   269  
   270  
   271    <li class="md-nav__item">
   272      <a href="../../Content/An-Overview/" title="An Overview" class="md-nav__link">
   273        An Overview
   274      </a>
   275    </li>
   276  
   277          
   278            
   279            
   280            
   281  
   282  
   283    <li class="md-nav__item">
   284      <a href="../../Content/Extending-Content/" title="Extending Content" class="md-nav__link">
   285        Extending Content
   286      </a>
   287    </li>
   288  
   289          
   290        </ul>
   291      </nav>
   292    </li>
   293  
   294      
   295        
   296        
   297        
   298  
   299  
   300    <li class="md-nav__item md-nav__item--nested">
   301      
   302        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4">
   303      
   304      <label class="md-nav__link" for="nav-4">
   305        Form Fields
   306      </label>
   307      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   308        <label class="md-nav__title" for="nav-4">
   309          Form Fields
   310        </label>
   311        <ul class="md-nav__list" data-md-scrollfix>
   312          
   313          
   314            
   315            
   316            
   317  
   318  
   319    <li class="md-nav__item">
   320      <a href="../../Form-Fields/HTML-Inputs/" title="HTML Inputs" class="md-nav__link">
   321        HTML Inputs
   322      </a>
   323    </li>
   324  
   325          
   326        </ul>
   327      </nav>
   328    </li>
   329  
   330      
   331        
   332        
   333        
   334  
   335  
   336    <li class="md-nav__item md-nav__item--nested">
   337      
   338        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5">
   339      
   340      <label class="md-nav__link" for="nav-5">
   341        HTTP APIs
   342      </label>
   343      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   344        <label class="md-nav__title" for="nav-5">
   345          HTTP APIs
   346        </label>
   347        <ul class="md-nav__list" data-md-scrollfix>
   348          
   349          
   350            
   351            
   352            
   353  
   354  
   355    <li class="md-nav__item">
   356      <a href="../../HTTP-APIs/Content/" title="Content" class="md-nav__link">
   357        Content
   358      </a>
   359    </li>
   360  
   361          
   362            
   363            
   364            
   365  
   366  
   367    <li class="md-nav__item">
   368      <a href="../../HTTP-APIs/File-Metadata/" title="File Metadata" class="md-nav__link">
   369        File Metadata
   370      </a>
   371    </li>
   372  
   373          
   374            
   375            
   376            
   377  
   378  
   379    <li class="md-nav__item">
   380      <a href="../../HTTP-APIs/Search/" title="Search" class="md-nav__link">
   381        Search
   382      </a>
   383    </li>
   384  
   385          
   386        </ul>
   387      </nav>
   388    </li>
   389  
   390      
   391        
   392        
   393        
   394  
   395    
   396  
   397  
   398    <li class="md-nav__item md-nav__item--active md-nav__item--nested">
   399      
   400        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6" checked>
   401      
   402      <label class="md-nav__link" for="nav-6">
   403        Interfaces
   404      </label>
   405      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   406        <label class="md-nav__title" for="nav-6">
   407          Interfaces
   408        </label>
   409        <ul class="md-nav__list" data-md-scrollfix>
   410          
   411          
   412            
   413            
   414            
   415  
   416  
   417    <li class="md-nav__item">
   418      <a href="../API/" title="API" class="md-nav__link">
   419        API
   420      </a>
   421    </li>
   422  
   423          
   424            
   425            
   426            
   427  
   428  
   429    <li class="md-nav__item">
   430      <a href="../Editor/" title="Editor" class="md-nav__link">
   431        Editor
   432      </a>
   433    </li>
   434  
   435          
   436            
   437            
   438            
   439  
   440  
   441    <li class="md-nav__item">
   442      <a href="../Format/" title="Format" class="md-nav__link">
   443        Format
   444      </a>
   445    </li>
   446  
   447          
   448            
   449            
   450            
   451  
   452    
   453  
   454  
   455    <li class="md-nav__item md-nav__item--active">
   456      
   457      <input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc">
   458      
   459      
   460        <label class="md-nav__link md-nav__link--active" for="toc">
   461          Item
   462        </label>
   463      
   464      <a href="./" title="Item" class="md-nav__link md-nav__link--active">
   465        Item
   466      </a>
   467      
   468        
   469  <nav class="md-nav md-nav--secondary">
   470    
   471    
   472    
   473      <label class="md-nav__title" for="toc">Table of contents</label>
   474      <ul class="md-nav__list" data-md-scrollfix>
   475        
   476          <li class="md-nav__item">
   477    <a href="#interfaces" title="Interfaces" class="md-nav__link">
   478      Interfaces
   479    </a>
   480    
   481      <nav class="md-nav">
   482        <ul class="md-nav__list">
   483          
   484            <li class="md-nav__item">
   485    <a href="#itempushable" title="item.Pushable" class="md-nav__link">
   486      item.Pushable
   487    </a>
   488    
   489      <nav class="md-nav">
   490        <ul class="md-nav__list">
   491          
   492            <li class="md-nav__item">
   493    <a href="#method-set" title="Method Set" class="md-nav__link">
   494      Method Set
   495    </a>
   496    
   497  </li>
   498          
   499            <li class="md-nav__item">
   500    <a href="#implementation" title="Implementation" class="md-nav__link">
   501      Implementation
   502    </a>
   503    
   504  </li>
   505          
   506        </ul>
   507      </nav>
   508    
   509  </li>
   510          
   511            <li class="md-nav__item">
   512    <a href="#itemhideable" title="item.Hideable" class="md-nav__link">
   513      item.Hideable
   514    </a>
   515    
   516      <nav class="md-nav">
   517        <ul class="md-nav__list">
   518          
   519            <li class="md-nav__item">
   520    <a href="#method-set_1" title="Method Set" class="md-nav__link">
   521      Method Set
   522    </a>
   523    
   524  </li>
   525          
   526            <li class="md-nav__item">
   527    <a href="#implementation_1" title="Implementation" class="md-nav__link">
   528      Implementation
   529    </a>
   530    
   531  </li>
   532          
   533        </ul>
   534      </nav>
   535    
   536  </li>
   537          
   538            <li class="md-nav__item">
   539    <a href="#itemomittable" title="item.Omittable" class="md-nav__link">
   540      item.Omittable
   541    </a>
   542    
   543      <nav class="md-nav">
   544        <ul class="md-nav__list">
   545          
   546            <li class="md-nav__item">
   547    <a href="#method-set_2" title="Method Set" class="md-nav__link">
   548      Method Set
   549    </a>
   550    
   551  </li>
   552          
   553            <li class="md-nav__item">
   554    <a href="#implementation_2" title="Implementation" class="md-nav__link">
   555      Implementation
   556    </a>
   557    
   558  </li>
   559          
   560        </ul>
   561      </nav>
   562    
   563  </li>
   564          
   565            <li class="md-nav__item">
   566    <a href="#itemhookable" title="item.Hookable" class="md-nav__link">
   567      item.Hookable
   568    </a>
   569    
   570      <nav class="md-nav">
   571        <ul class="md-nav__list">
   572          
   573            <li class="md-nav__item">
   574    <a href="#method-set_3" title="Method Set" class="md-nav__link">
   575      Method Set
   576    </a>
   577    
   578  </li>
   579          
   580            <li class="md-nav__item">
   581    <a href="#implementations" title="Implementations" class="md-nav__link">
   582      Implementations
   583    </a>
   584    
   585  </li>
   586          
   587            <li class="md-nav__item">
   588    <a href="#beforeapicreate" title="BeforeAPICreate" class="md-nav__link">
   589      BeforeAPICreate
   590    </a>
   591    
   592  </li>
   593          
   594            <li class="md-nav__item">
   595    <a href="#afterapicreate" title="AfterAPICreate" class="md-nav__link">
   596      AfterAPICreate
   597    </a>
   598    
   599  </li>
   600          
   601            <li class="md-nav__item">
   602    <a href="#beforeapprove" title="BeforeApprove" class="md-nav__link">
   603      BeforeApprove
   604    </a>
   605    
   606  </li>
   607          
   608            <li class="md-nav__item">
   609    <a href="#afterapprove" title="AfterApprove" class="md-nav__link">
   610      AfterApprove
   611    </a>
   612    
   613  </li>
   614          
   615            <li class="md-nav__item">
   616    <a href="#beforereject" title="BeforeReject" class="md-nav__link">
   617      BeforeReject
   618    </a>
   619    
   620  </li>
   621          
   622            <li class="md-nav__item">
   623    <a href="#afterreject" title="AfterReject" class="md-nav__link">
   624      AfterReject
   625    </a>
   626    
   627  </li>
   628          
   629            <li class="md-nav__item">
   630    <a href="#beforesave" title="BeforeSave" class="md-nav__link">
   631      BeforeSave
   632    </a>
   633    
   634  </li>
   635          
   636            <li class="md-nav__item">
   637    <a href="#aftersave" title="AfterSave" class="md-nav__link">
   638      AfterSave
   639    </a>
   640    
   641  </li>
   642          
   643            <li class="md-nav__item">
   644    <a href="#beforedelete" title="BeforeDelete" class="md-nav__link">
   645      BeforeDelete
   646    </a>
   647    
   648  </li>
   649          
   650            <li class="md-nav__item">
   651    <a href="#afterdelete" title="AfterDelete" class="md-nav__link">
   652      AfterDelete
   653    </a>
   654    
   655  </li>
   656          
   657            <li class="md-nav__item">
   658    <a href="#beforeapidelete" title="BeforeAPIDelete" class="md-nav__link">
   659      BeforeAPIDelete
   660    </a>
   661    
   662  </li>
   663          
   664            <li class="md-nav__item">
   665    <a href="#afterapidelete" title="AfterAPIDelete" class="md-nav__link">
   666      AfterAPIDelete
   667    </a>
   668    
   669  </li>
   670          
   671            <li class="md-nav__item">
   672    <a href="#beforeapiupdate" title="BeforeAPIUpdate" class="md-nav__link">
   673      BeforeAPIUpdate
   674    </a>
   675    
   676  </li>
   677          
   678            <li class="md-nav__item">
   679    <a href="#afterapiupdate" title="AfterAPIUpdate" class="md-nav__link">
   680      AfterAPIUpdate
   681    </a>
   682    
   683  </li>
   684          
   685            <li class="md-nav__item">
   686    <a href="#beforeadmincreate" title="BeforeAdminCreate" class="md-nav__link">
   687      BeforeAdminCreate
   688    </a>
   689    
   690  </li>
   691          
   692            <li class="md-nav__item">
   693    <a href="#afteradmincreate" title="AfterAdminCreate" class="md-nav__link">
   694      AfterAdminCreate
   695    </a>
   696    
   697  </li>
   698          
   699            <li class="md-nav__item">
   700    <a href="#beforeadminupdate" title="BeforeAdminUpdate" class="md-nav__link">
   701      BeforeAdminUpdate
   702    </a>
   703    
   704  </li>
   705          
   706            <li class="md-nav__item">
   707    <a href="#afteradminupdate" title="AfterAdminUpdate" class="md-nav__link">
   708      AfterAdminUpdate
   709    </a>
   710    
   711  </li>
   712          
   713            <li class="md-nav__item">
   714    <a href="#beforeadmindelete" title="BeforeAdminDelete" class="md-nav__link">
   715      BeforeAdminDelete
   716    </a>
   717    
   718  </li>
   719          
   720            <li class="md-nav__item">
   721    <a href="#afteradmindelete" title="AfterAdminDelete" class="md-nav__link">
   722      AfterAdminDelete
   723    </a>
   724    
   725  </li>
   726          
   727            <li class="md-nav__item">
   728    <a href="#beforeenable" title="BeforeEnable" class="md-nav__link">
   729      BeforeEnable
   730    </a>
   731    
   732  </li>
   733          
   734            <li class="md-nav__item">
   735    <a href="#afterenable" title="AfterEnable" class="md-nav__link">
   736      AfterEnable
   737    </a>
   738    
   739  </li>
   740          
   741            <li class="md-nav__item">
   742    <a href="#beforedisable" title="BeforeDisable" class="md-nav__link">
   743      BeforeDisable
   744    </a>
   745    
   746  </li>
   747          
   748            <li class="md-nav__item">
   749    <a href="#afterdisable" title="AfterDisable" class="md-nav__link">
   750      AfterDisable
   751    </a>
   752    
   753  </li>
   754          
   755        </ul>
   756      </nav>
   757    
   758  </li>
   759          
   760            <li class="md-nav__item">
   761    <a href="#itemidentifiable" title="item.Identifiable" class="md-nav__link">
   762      item.Identifiable
   763    </a>
   764    
   765      <nav class="md-nav">
   766        <ul class="md-nav__list">
   767          
   768            <li class="md-nav__item">
   769    <a href="#method-set_4" title="Method Set" class="md-nav__link">
   770      Method Set
   771    </a>
   772    
   773  </li>
   774          
   775            <li class="md-nav__item">
   776    <a href="#implementation_3" title="Implementation" class="md-nav__link">
   777      Implementation
   778    </a>
   779    
   780  </li>
   781          
   782        </ul>
   783      </nav>
   784    
   785  </li>
   786          
   787            <li class="md-nav__item">
   788    <a href="#itemsluggable" title="item.Sluggable" class="md-nav__link">
   789      item.Sluggable
   790    </a>
   791    
   792      <nav class="md-nav">
   793        <ul class="md-nav__list">
   794          
   795            <li class="md-nav__item">
   796    <a href="#method-set_5" title="Method Set" class="md-nav__link">
   797      Method Set
   798    </a>
   799    
   800  </li>
   801          
   802            <li class="md-nav__item">
   803    <a href="#implementation_4" title="Implementation" class="md-nav__link">
   804      Implementation
   805    </a>
   806    
   807  </li>
   808          
   809        </ul>
   810      </nav>
   811    
   812  </li>
   813          
   814            <li class="md-nav__item">
   815    <a href="#itemsortable" title="item.Sortable" class="md-nav__link">
   816      item.Sortable
   817    </a>
   818    
   819      <nav class="md-nav">
   820        <ul class="md-nav__list">
   821          
   822            <li class="md-nav__item">
   823    <a href="#method-set_6" title="Method Set" class="md-nav__link">
   824      Method Set
   825    </a>
   826    
   827  </li>
   828          
   829            <li class="md-nav__item">
   830    <a href="#implementation_5" title="Implementation" class="md-nav__link">
   831      Implementation
   832    </a>
   833    
   834  </li>
   835          
   836        </ul>
   837      </nav>
   838    
   839  </li>
   840          
   841        </ul>
   842      </nav>
   843    
   844  </li>
   845        
   846        
   847        
   848      </ul>
   849    
   850  </nav>
   851      
   852    </li>
   853  
   854          
   855            
   856            
   857            
   858  
   859  
   860    <li class="md-nav__item">
   861      <a href="../Search/" title="Search" class="md-nav__link">
   862        Search
   863      </a>
   864    </li>
   865  
   866          
   867        </ul>
   868      </nav>
   869    </li>
   870  
   871      
   872        
   873        
   874        
   875  
   876  
   877    <li class="md-nav__item md-nav__item--nested">
   878      
   879        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7">
   880      
   881      <label class="md-nav__link" for="nav-7">
   882        Ponzu Addons
   883      </label>
   884      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   885        <label class="md-nav__title" for="nav-7">
   886          Ponzu Addons
   887        </label>
   888        <ul class="md-nav__list" data-md-scrollfix>
   889          
   890          
   891            
   892            
   893            
   894  
   895  
   896    <li class="md-nav__item">
   897      <a href="../../Ponzu-Addons/Creating-Addons/" title="Creating Addons" class="md-nav__link">
   898        Creating Addons
   899      </a>
   900    </li>
   901  
   902          
   903            
   904            
   905            
   906  
   907  
   908    <li class="md-nav__item">
   909      <a href="../../Ponzu-Addons/Using-Addons/" title="Using Addons" class="md-nav__link">
   910        Using Addons
   911      </a>
   912    </li>
   913  
   914          
   915        </ul>
   916      </nav>
   917    </li>
   918  
   919      
   920        
   921        
   922        
   923  
   924  
   925    <li class="md-nav__item md-nav__item--nested">
   926      
   927        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8">
   928      
   929      <label class="md-nav__link" for="nav-8">
   930        Quickstart
   931      </label>
   932      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   933        <label class="md-nav__title" for="nav-8">
   934          Quickstart
   935        </label>
   936        <ul class="md-nav__list" data-md-scrollfix>
   937          
   938          
   939            
   940            
   941            
   942  
   943  
   944    <li class="md-nav__item">
   945      <a href="../../Quickstart/Overview/" title="Overview" class="md-nav__link">
   946        Overview
   947      </a>
   948    </li>
   949  
   950          
   951        </ul>
   952      </nav>
   953    </li>
   954  
   955      
   956        
   957        
   958        
   959  
   960  
   961    <li class="md-nav__item md-nav__item--nested">
   962      
   963        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9">
   964      
   965      <label class="md-nav__link" for="nav-9">
   966        References
   967      </label>
   968      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
   969        <label class="md-nav__title" for="nav-9">
   970          References
   971        </label>
   972        <ul class="md-nav__list" data-md-scrollfix>
   973          
   974          
   975            
   976            
   977            
   978  
   979  
   980    <li class="md-nav__item">
   981      <a href="../../References/Overview/" title="Overview" class="md-nav__link">
   982        Overview
   983      </a>
   984    </li>
   985  
   986          
   987        </ul>
   988      </nav>
   989    </li>
   990  
   991      
   992        
   993        
   994        
   995  
   996  
   997    <li class="md-nav__item md-nav__item--nested">
   998      
   999        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-10" type="checkbox" id="nav-10">
  1000      
  1001      <label class="md-nav__link" for="nav-10">
  1002        Running Backups
  1003      </label>
  1004      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
  1005        <label class="md-nav__title" for="nav-10">
  1006          Running Backups
  1007        </label>
  1008        <ul class="md-nav__list" data-md-scrollfix>
  1009          
  1010          
  1011            
  1012            
  1013            
  1014  
  1015  
  1016    <li class="md-nav__item">
  1017      <a href="../../Running-Backups/Backups/" title="Backups" class="md-nav__link">
  1018        Backups
  1019      </a>
  1020    </li>
  1021  
  1022          
  1023        </ul>
  1024      </nav>
  1025    </li>
  1026  
  1027      
  1028        
  1029        
  1030        
  1031  
  1032  
  1033    <li class="md-nav__item md-nav__item--nested">
  1034      
  1035        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-11" type="checkbox" id="nav-11">
  1036      
  1037      <label class="md-nav__link" for="nav-11">
  1038        System Configuration
  1039      </label>
  1040      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
  1041        <label class="md-nav__title" for="nav-11">
  1042          System Configuration
  1043        </label>
  1044        <ul class="md-nav__list" data-md-scrollfix>
  1045          
  1046          
  1047            
  1048            
  1049            
  1050  
  1051  
  1052    <li class="md-nav__item">
  1053      <a href="../../System-Configuration/Settings/" title="Settings" class="md-nav__link">
  1054        Settings
  1055      </a>
  1056    </li>
  1057  
  1058          
  1059        </ul>
  1060      </nav>
  1061    </li>
  1062  
  1063      
  1064        
  1065        
  1066        
  1067  
  1068  
  1069    <li class="md-nav__item md-nav__item--nested">
  1070      
  1071        <input class="md-toggle md-nav__toggle" data-md-toggle="nav-12" type="checkbox" id="nav-12">
  1072      
  1073      <label class="md-nav__link" for="nav-12">
  1074        System Deployment
  1075      </label>
  1076      <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
  1077        <label class="md-nav__title" for="nav-12">
  1078          System Deployment
  1079        </label>
  1080        <ul class="md-nav__list" data-md-scrollfix>
  1081          
  1082          
  1083            
  1084            
  1085            
  1086  
  1087  
  1088    <li class="md-nav__item">
  1089      <a href="../../System-Deployment/Docker/" title="Docker" class="md-nav__link">
  1090        Docker
  1091      </a>
  1092    </li>
  1093  
  1094          
  1095            
  1096            
  1097            
  1098  
  1099  
  1100    <li class="md-nav__item">
  1101      <a href="../../System-Deployment/SysV-Style/" title="SysV Style" class="md-nav__link">
  1102        SysV Style
  1103      </a>
  1104    </li>
  1105  
  1106          
  1107        </ul>
  1108      </nav>
  1109    </li>
  1110  
  1111      
  1112    </ul>
  1113  </nav>
  1114                    </div>
  1115                  </div>
  1116                </div>
  1117              
  1118              
  1119                <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
  1120                  <div class="md-sidebar__scrollwrap">
  1121                    <div class="md-sidebar__inner">
  1122                      
  1123  <nav class="md-nav md-nav--secondary">
  1124    
  1125    
  1126    
  1127      <label class="md-nav__title" for="toc">Table of contents</label>
  1128      <ul class="md-nav__list" data-md-scrollfix>
  1129        
  1130          <li class="md-nav__item">
  1131    <a href="#interfaces" title="Interfaces" class="md-nav__link">
  1132      Interfaces
  1133    </a>
  1134    
  1135      <nav class="md-nav">
  1136        <ul class="md-nav__list">
  1137          
  1138            <li class="md-nav__item">
  1139    <a href="#itempushable" title="item.Pushable" class="md-nav__link">
  1140      item.Pushable
  1141    </a>
  1142    
  1143      <nav class="md-nav">
  1144        <ul class="md-nav__list">
  1145          
  1146            <li class="md-nav__item">
  1147    <a href="#method-set" title="Method Set" class="md-nav__link">
  1148      Method Set
  1149    </a>
  1150    
  1151  </li>
  1152          
  1153            <li class="md-nav__item">
  1154    <a href="#implementation" title="Implementation" class="md-nav__link">
  1155      Implementation
  1156    </a>
  1157    
  1158  </li>
  1159          
  1160        </ul>
  1161      </nav>
  1162    
  1163  </li>
  1164          
  1165            <li class="md-nav__item">
  1166    <a href="#itemhideable" title="item.Hideable" class="md-nav__link">
  1167      item.Hideable
  1168    </a>
  1169    
  1170      <nav class="md-nav">
  1171        <ul class="md-nav__list">
  1172          
  1173            <li class="md-nav__item">
  1174    <a href="#method-set_1" title="Method Set" class="md-nav__link">
  1175      Method Set
  1176    </a>
  1177    
  1178  </li>
  1179          
  1180            <li class="md-nav__item">
  1181    <a href="#implementation_1" title="Implementation" class="md-nav__link">
  1182      Implementation
  1183    </a>
  1184    
  1185  </li>
  1186          
  1187        </ul>
  1188      </nav>
  1189    
  1190  </li>
  1191          
  1192            <li class="md-nav__item">
  1193    <a href="#itemomittable" title="item.Omittable" class="md-nav__link">
  1194      item.Omittable
  1195    </a>
  1196    
  1197      <nav class="md-nav">
  1198        <ul class="md-nav__list">
  1199          
  1200            <li class="md-nav__item">
  1201    <a href="#method-set_2" title="Method Set" class="md-nav__link">
  1202      Method Set
  1203    </a>
  1204    
  1205  </li>
  1206          
  1207            <li class="md-nav__item">
  1208    <a href="#implementation_2" title="Implementation" class="md-nav__link">
  1209      Implementation
  1210    </a>
  1211    
  1212  </li>
  1213          
  1214        </ul>
  1215      </nav>
  1216    
  1217  </li>
  1218          
  1219            <li class="md-nav__item">
  1220    <a href="#itemhookable" title="item.Hookable" class="md-nav__link">
  1221      item.Hookable
  1222    </a>
  1223    
  1224      <nav class="md-nav">
  1225        <ul class="md-nav__list">
  1226          
  1227            <li class="md-nav__item">
  1228    <a href="#method-set_3" title="Method Set" class="md-nav__link">
  1229      Method Set
  1230    </a>
  1231    
  1232  </li>
  1233          
  1234            <li class="md-nav__item">
  1235    <a href="#implementations" title="Implementations" class="md-nav__link">
  1236      Implementations
  1237    </a>
  1238    
  1239  </li>
  1240          
  1241            <li class="md-nav__item">
  1242    <a href="#beforeapicreate" title="BeforeAPICreate" class="md-nav__link">
  1243      BeforeAPICreate
  1244    </a>
  1245    
  1246  </li>
  1247          
  1248            <li class="md-nav__item">
  1249    <a href="#afterapicreate" title="AfterAPICreate" class="md-nav__link">
  1250      AfterAPICreate
  1251    </a>
  1252    
  1253  </li>
  1254          
  1255            <li class="md-nav__item">
  1256    <a href="#beforeapprove" title="BeforeApprove" class="md-nav__link">
  1257      BeforeApprove
  1258    </a>
  1259    
  1260  </li>
  1261          
  1262            <li class="md-nav__item">
  1263    <a href="#afterapprove" title="AfterApprove" class="md-nav__link">
  1264      AfterApprove
  1265    </a>
  1266    
  1267  </li>
  1268          
  1269            <li class="md-nav__item">
  1270    <a href="#beforereject" title="BeforeReject" class="md-nav__link">
  1271      BeforeReject
  1272    </a>
  1273    
  1274  </li>
  1275          
  1276            <li class="md-nav__item">
  1277    <a href="#afterreject" title="AfterReject" class="md-nav__link">
  1278      AfterReject
  1279    </a>
  1280    
  1281  </li>
  1282          
  1283            <li class="md-nav__item">
  1284    <a href="#beforesave" title="BeforeSave" class="md-nav__link">
  1285      BeforeSave
  1286    </a>
  1287    
  1288  </li>
  1289          
  1290            <li class="md-nav__item">
  1291    <a href="#aftersave" title="AfterSave" class="md-nav__link">
  1292      AfterSave
  1293    </a>
  1294    
  1295  </li>
  1296          
  1297            <li class="md-nav__item">
  1298    <a href="#beforedelete" title="BeforeDelete" class="md-nav__link">
  1299      BeforeDelete
  1300    </a>
  1301    
  1302  </li>
  1303          
  1304            <li class="md-nav__item">
  1305    <a href="#afterdelete" title="AfterDelete" class="md-nav__link">
  1306      AfterDelete
  1307    </a>
  1308    
  1309  </li>
  1310          
  1311            <li class="md-nav__item">
  1312    <a href="#beforeapidelete" title="BeforeAPIDelete" class="md-nav__link">
  1313      BeforeAPIDelete
  1314    </a>
  1315    
  1316  </li>
  1317          
  1318            <li class="md-nav__item">
  1319    <a href="#afterapidelete" title="AfterAPIDelete" class="md-nav__link">
  1320      AfterAPIDelete
  1321    </a>
  1322    
  1323  </li>
  1324          
  1325            <li class="md-nav__item">
  1326    <a href="#beforeapiupdate" title="BeforeAPIUpdate" class="md-nav__link">
  1327      BeforeAPIUpdate
  1328    </a>
  1329    
  1330  </li>
  1331          
  1332            <li class="md-nav__item">
  1333    <a href="#afterapiupdate" title="AfterAPIUpdate" class="md-nav__link">
  1334      AfterAPIUpdate
  1335    </a>
  1336    
  1337  </li>
  1338          
  1339            <li class="md-nav__item">
  1340    <a href="#beforeadmincreate" title="BeforeAdminCreate" class="md-nav__link">
  1341      BeforeAdminCreate
  1342    </a>
  1343    
  1344  </li>
  1345          
  1346            <li class="md-nav__item">
  1347    <a href="#afteradmincreate" title="AfterAdminCreate" class="md-nav__link">
  1348      AfterAdminCreate
  1349    </a>
  1350    
  1351  </li>
  1352          
  1353            <li class="md-nav__item">
  1354    <a href="#beforeadminupdate" title="BeforeAdminUpdate" class="md-nav__link">
  1355      BeforeAdminUpdate
  1356    </a>
  1357    
  1358  </li>
  1359          
  1360            <li class="md-nav__item">
  1361    <a href="#afteradminupdate" title="AfterAdminUpdate" class="md-nav__link">
  1362      AfterAdminUpdate
  1363    </a>
  1364    
  1365  </li>
  1366          
  1367            <li class="md-nav__item">
  1368    <a href="#beforeadmindelete" title="BeforeAdminDelete" class="md-nav__link">
  1369      BeforeAdminDelete
  1370    </a>
  1371    
  1372  </li>
  1373          
  1374            <li class="md-nav__item">
  1375    <a href="#afteradmindelete" title="AfterAdminDelete" class="md-nav__link">
  1376      AfterAdminDelete
  1377    </a>
  1378    
  1379  </li>
  1380          
  1381            <li class="md-nav__item">
  1382    <a href="#beforeenable" title="BeforeEnable" class="md-nav__link">
  1383      BeforeEnable
  1384    </a>
  1385    
  1386  </li>
  1387          
  1388            <li class="md-nav__item">
  1389    <a href="#afterenable" title="AfterEnable" class="md-nav__link">
  1390      AfterEnable
  1391    </a>
  1392    
  1393  </li>
  1394          
  1395            <li class="md-nav__item">
  1396    <a href="#beforedisable" title="BeforeDisable" class="md-nav__link">
  1397      BeforeDisable
  1398    </a>
  1399    
  1400  </li>
  1401          
  1402            <li class="md-nav__item">
  1403    <a href="#afterdisable" title="AfterDisable" class="md-nav__link">
  1404      AfterDisable
  1405    </a>
  1406    
  1407  </li>
  1408          
  1409        </ul>
  1410      </nav>
  1411    
  1412  </li>
  1413          
  1414            <li class="md-nav__item">
  1415    <a href="#itemidentifiable" title="item.Identifiable" class="md-nav__link">
  1416      item.Identifiable
  1417    </a>
  1418    
  1419      <nav class="md-nav">
  1420        <ul class="md-nav__list">
  1421          
  1422            <li class="md-nav__item">
  1423    <a href="#method-set_4" title="Method Set" class="md-nav__link">
  1424      Method Set
  1425    </a>
  1426    
  1427  </li>
  1428          
  1429            <li class="md-nav__item">
  1430    <a href="#implementation_3" title="Implementation" class="md-nav__link">
  1431      Implementation
  1432    </a>
  1433    
  1434  </li>
  1435          
  1436        </ul>
  1437      </nav>
  1438    
  1439  </li>
  1440          
  1441            <li class="md-nav__item">
  1442    <a href="#itemsluggable" title="item.Sluggable" class="md-nav__link">
  1443      item.Sluggable
  1444    </a>
  1445    
  1446      <nav class="md-nav">
  1447        <ul class="md-nav__list">
  1448          
  1449            <li class="md-nav__item">
  1450    <a href="#method-set_5" title="Method Set" class="md-nav__link">
  1451      Method Set
  1452    </a>
  1453    
  1454  </li>
  1455          
  1456            <li class="md-nav__item">
  1457    <a href="#implementation_4" title="Implementation" class="md-nav__link">
  1458      Implementation
  1459    </a>
  1460    
  1461  </li>
  1462          
  1463        </ul>
  1464      </nav>
  1465    
  1466  </li>
  1467          
  1468            <li class="md-nav__item">
  1469    <a href="#itemsortable" title="item.Sortable" class="md-nav__link">
  1470      item.Sortable
  1471    </a>
  1472    
  1473      <nav class="md-nav">
  1474        <ul class="md-nav__list">
  1475          
  1476            <li class="md-nav__item">
  1477    <a href="#method-set_6" title="Method Set" class="md-nav__link">
  1478      Method Set
  1479    </a>
  1480    
  1481  </li>
  1482          
  1483            <li class="md-nav__item">
  1484    <a href="#implementation_5" title="Implementation" class="md-nav__link">
  1485      Implementation
  1486    </a>
  1487    
  1488  </li>
  1489          
  1490        </ul>
  1491      </nav>
  1492    
  1493  </li>
  1494          
  1495        </ul>
  1496      </nav>
  1497    
  1498  </li>
  1499        
  1500        
  1501        
  1502      </ul>
  1503    
  1504  </nav>
  1505                    </div>
  1506                  </div>
  1507                </div>
  1508              
  1509            
  1510            <div class="md-content">
  1511              <article class="md-content__inner md-typeset">
  1512                
  1513                  
  1514                  
  1515                    <h1>Item</h1>
  1516                  
  1517                  <p>Ponzu provides a set of interfaces from the <code>system/item</code> package which extend 
  1518  the functionality of the content in your system and how it interacts with other 
  1519  components inside and outside of Ponzu. </p>
  1520  <hr />
  1521  <h2 id="interfaces">Interfaces<a class="headerlink" href="#interfaces" title="Permanent link">&para;</a></h2>
  1522  <h3 id="itempushable"><a href="https://godoc.org/github.com/rpdict/ponzu/system/item#Pushable">item.Pushable</a><a class="headerlink" href="#itempushable" title="Permanent link">&para;</a></h3>
  1523  <p>Pushable, if <a href="https://http2.github.io/http2-spec/#PushResources">HTTP/2 Server Push</a> 
  1524  is supported by the client, can tell a handler which resources it would like to 
  1525  have "pushed" preemptively to the client. This saves follow-on roundtrip requests 
  1526  for other items which are referenced by the Pushable item. The <code>Push</code> method, the 
  1527  only method in Pushable, must return a <code>[]string</code> containing the <code>json</code> field tags 
  1528  of the referenced items within the type.</p>
  1529  <h5 id="method-set">Method Set<a class="headerlink" href="#method-set" title="Permanent link">&para;</a></h5>
  1530  <div class="codehilite"><pre><span></span><span class="kd">type</span> <span class="nx">Pushable</span> <span class="kd">interface</span> <span class="p">{</span>
  1531      <span class="c1">// the values contained in []string fields returned by Push must be URL paths</span>
  1532      <span class="nx">Push</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="p">([]</span><span class="kt">string</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span>
  1533  <span class="p">}</span>
  1534  </pre></div>
  1535  
  1536  
  1537  <h5 id="implementation">Implementation<a class="headerlink" href="#implementation" title="Permanent link">&para;</a></h5>
  1538  <p>The <code>Push</code> method returns a <code>[]string</code> containing the <code>json</code> tag field names for
  1539  which you want to have pushed to a supported client and an error value. The values 
  1540  for the field names <strong>must</strong> be URL paths, and cannot be from another origin.</p>
  1541  <div class="codehilite"><pre><span></span><span class="kd">type</span> <span class="nx">Post</span> <span class="kd">struct</span> <span class="p">{</span>
  1542      <span class="nx">item</span><span class="p">.</span><span class="nx">Item</span>
  1543  
  1544      <span class="nx">HeaderPhoto</span> <span class="kt">string</span> <span class="s">`json:&quot;header_photo&quot;`</span>
  1545      <span class="nx">Author</span>      <span class="kt">string</span> <span class="s">`json:&quot;author&quot;`</span> <span class="c1">// reference `/api/content/?type=Author&amp;id=2`</span>
  1546      <span class="c1">// ...</span>
  1547  <span class="p">}</span>
  1548  
  1549  <span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">Push</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="p">([]</span><span class="kt">string</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span>
  1550      <span class="k">return</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span>
  1551          <span class="s">&quot;header_photo&quot;</span><span class="p">,</span>
  1552          <span class="s">&quot;author&quot;</span><span class="p">,</span>
  1553      <span class="p">},</span> <span class="kc">nil</span>
  1554  <span class="p">}</span>
  1555  </pre></div>
  1556  
  1557  
  1558  <hr />
  1559  <h3 id="itemhideable"><a href="https://godoc.org/github.com/rpdict/ponzu/system/item#Hideable">item.Hideable</a><a class="headerlink" href="#itemhideable" title="Permanent link">&para;</a></h3>
  1560  <p>Hideable tells an API handler that data of this type shouldn’t be exposed outside 
  1561  the system. Hideable types cannot be used as references (relations in Content types).
  1562  The <code>Hide</code> method, the only method in Hideable, takes an <code>http.ResponseWriter, *http.Request</code> 
  1563  and returns an <code>error</code>. A special error in the <code>items</code> package, <code>ErrAllowHiddenItem</code> 
  1564  can be returned as the error from Hide to instruct handlers to show hidden 
  1565  content in specific cases.</p>
  1566  <h5 id="method-set_1">Method Set<a class="headerlink" href="#method-set_1" title="Permanent link">&para;</a></h5>
  1567  <div class="codehilite"><pre><span></span><span class="kd">type</span> <span class="nx">Hideable</span> <span class="kd">interface</span> <span class="p">{</span>
  1568      <span class="nx">Hide</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1569  <span class="p">}</span>
  1570  </pre></div>
  1571  
  1572  
  1573  <h5 id="implementation_1">Implementation<a class="headerlink" href="#implementation_1" title="Permanent link">&para;</a></h5>
  1574  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">Hide</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1575      <span class="k">return</span> <span class="kc">nil</span>
  1576  <span class="p">}</span>
  1577  </pre></div>
  1578  
  1579  
  1580  <hr />
  1581  <h3 id="itemomittable"><a href="https://godoc.org/github.com/rpdict/ponzu/system/item#Omittable">item.Omittable</a><a class="headerlink" href="#itemomittable" title="Permanent link">&para;</a></h3>
  1582  <p>Omittable tells a content API handler to keep certain fields from being exposed 
  1583  through the JSON response. It's single method, <code>Omit</code> takes no arguments and 
  1584  returns a <code>[]string</code> which must be made up of the JSON struct tags for the type 
  1585  containing fields to be omitted and an error value.</p>
  1586  <h5 id="method-set_2">Method Set<a class="headerlink" href="#method-set_2" title="Permanent link">&para;</a></h5>
  1587  <div class="codehilite"><pre><span></span><span class="kd">type</span> <span class="nx">Omittable</span> <span class="kd">interface</span> <span class="p">{</span>
  1588      <span class="nx">Omit</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="p">([]</span><span class="kt">string</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span>
  1589  <span class="p">}</span>
  1590  </pre></div>
  1591  
  1592  
  1593  <h5 id="implementation_2">Implementation<a class="headerlink" href="#implementation_2" title="Permanent link">&para;</a></h5>
  1594  <div class="codehilite"><pre><span></span><span class="kd">type</span> <span class="nx">Post</span> <span class="kd">struct</span> <span class="p">{</span>
  1595      <span class="nx">item</span><span class="p">.</span><span class="nx">Item</span>
  1596  
  1597      <span class="nx">HeaderPhoto</span> <span class="kt">string</span> <span class="s">`json:&quot;header_photo&quot;`</span>
  1598      <span class="nx">Author</span>      <span class="kt">string</span> <span class="s">`json:&quot;author&quot;`</span>
  1599      <span class="c1">// ...</span>
  1600  <span class="p">}</span>
  1601  
  1602  <span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">Omit</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="p">([]</span><span class="kt">string</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span>
  1603      <span class="k">return</span> <span class="p">[]</span><span class="kt">string</span><span class="p">{</span>
  1604          <span class="s">&quot;header_photo&quot;</span><span class="p">,</span>
  1605          <span class="s">&quot;author&quot;</span><span class="p">,</span>
  1606      <span class="p">},</span> <span class="kc">nil</span>
  1607  <span class="p">}</span>
  1608  </pre></div>
  1609  
  1610  
  1611  <hr />
  1612  <h3 id="itemhookable"><a href="https://godoc.org/github.com/rpdict/ponzu/system/item#Hookable">item.Hookable</a><a class="headerlink" href="#itemhookable" title="Permanent link">&para;</a></h3>
  1613  <p>Hookable provides lifecycle hooks into the http handlers which manage Save, Delete,
  1614  Approve, and Reject routines. All methods in its set take an 
  1615  <code>http.ResponseWriter, *http.Request</code> and return an <code>error</code>.</p>
  1616  <h5 id="method-set_3">Method Set<a class="headerlink" href="#method-set_3" title="Permanent link">&para;</a></h5>
  1617  <div class="codehilite"><pre><span></span><span class="kd">type</span> <span class="nx">Hookable</span> <span class="kd">interface</span> <span class="p">{</span>
  1618      <span class="nx">BeforeAPICreate</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1619      <span class="nx">AfterAPICreate</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1620  
  1621      <span class="nx">BeforeAPIUpdate</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1622      <span class="nx">AfterAPIUpdate</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1623  
  1624      <span class="nx">BeforeAPIDelete</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1625      <span class="nx">AfterAPIDelete</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1626  
  1627      <span class="nx">BeforeAdminCreate</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1628      <span class="nx">AfterAdminCreate</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1629  
  1630      <span class="nx">BeforeAdminUpdate</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1631      <span class="nx">AfterAdminUpdate</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1632  
  1633      <span class="nx">BeforeAdminDelete</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1634      <span class="nx">AfterAdminDelete</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1635  
  1636      <span class="nx">BeforeSave</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1637      <span class="nx">AfterSave</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1638  
  1639      <span class="nx">BeforeDelete</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1640      <span class="nx">AfterDelete</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1641  
  1642      <span class="nx">BeforeApprove</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1643      <span class="nx">AfterApprove</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1644  
  1645      <span class="nx">BeforeReject</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1646      <span class="nx">AfterReject</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1647  
  1648      <span class="c1">// Enable/Disable used exclusively for addons</span>
  1649      <span class="nx">BeforeEnable</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1650      <span class="nx">AfterEnable</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1651  
  1652      <span class="nx">BeforeDisable</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1653      <span class="nx">AfterDisable</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span>
  1654  <span class="p">}</span>
  1655  </pre></div>
  1656  
  1657  
  1658  <h5 id="implementations">Implementations<a class="headerlink" href="#implementations" title="Permanent link">&para;</a></h5>
  1659  <h4 id="beforeapicreate">BeforeAPICreate<a class="headerlink" href="#beforeapicreate" title="Permanent link">&para;</a></h4>
  1660  <p>BeforeAPICreate is called before an item is created via a 3rd-party client. If a 
  1661  non-nil <code>error</code> value is returned, the item will not be created/saved.</p>
  1662  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">BeforeAPICreate</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1663      <span class="k">return</span> <span class="kc">nil</span>
  1664  <span class="p">}</span>
  1665  </pre></div>
  1666  
  1667  
  1668  <h4 id="afterapicreate">AfterAPICreate<a class="headerlink" href="#afterapicreate" title="Permanent link">&para;</a></h4>
  1669  <p>AfterAPICreate is called after an item has been created via a 3rd-party client.
  1670  At this point, the item has been saved to the database. If a non-nil <code>error</code> is
  1671  returned, it will respond to the client with an empty response, so be sure to 
  1672  use the <code>http.ResponseWriter</code> from within your hook appropriately.</p>
  1673  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">AfterAPICreate</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1674      <span class="k">return</span> <span class="kc">nil</span>
  1675  <span class="p">}</span>
  1676  </pre></div>
  1677  
  1678  
  1679  <h4 id="beforeapprove">BeforeApprove<a class="headerlink" href="#beforeapprove" title="Permanent link">&para;</a></h4>
  1680  <p>BeforeApprove is called before an item is merged as "Public" from its prior 
  1681  status as "Pending". If a non-nil <code>error</code> value is returned, the item will not be
  1682  appproved, and an error message is displayed to the Admin. </p>
  1683  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">BeforeApprove</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1684      <span class="k">return</span> <span class="kc">nil</span>
  1685  <span class="p">}</span>
  1686  </pre></div>
  1687  
  1688  
  1689  <h4 id="afterapprove">AfterApprove<a class="headerlink" href="#afterapprove" title="Permanent link">&para;</a></h4>
  1690  <p>AfterApprove is called after an item has been merged as "Public" from its prior
  1691  status as "Pending". If a non-nil <code>error</code> is returned, an error message is 
  1692  displayed to the Admin, however the item will already be irreversibly merged.</p>
  1693  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">AfterApprove</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1694      <span class="k">return</span> <span class="kc">nil</span>
  1695  <span class="p">}</span>
  1696  </pre></div>
  1697  
  1698  
  1699  <h4 id="beforereject">BeforeReject<a class="headerlink" href="#beforereject" title="Permanent link">&para;</a></h4>
  1700  <p>BeforeReject is called before an item is rejected and deleted by default. To reject
  1701  an item, but not delete it, return a non-nil <code>error</code> from this hook - doing so 
  1702  will allow the hook to do what you want it to do prior to the return, but the item
  1703  will remain in the "Pending" section.</p>
  1704  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">BeforeReject</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1705      <span class="k">return</span> <span class="kc">nil</span>
  1706  <span class="p">}</span>
  1707  </pre></div>
  1708  
  1709  
  1710  <h4 id="afterreject">AfterReject<a class="headerlink" href="#afterreject" title="Permanent link">&para;</a></h4>
  1711  <p>AfterReject is called after an item is rejected and has been deleted.</p>
  1712  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">AfterReject</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1713      <span class="k">return</span> <span class="kc">nil</span>
  1714  <span class="p">}</span>
  1715  </pre></div>
  1716  
  1717  
  1718  <h4 id="beforesave">BeforeSave<a class="headerlink" href="#beforesave" title="Permanent link">&para;</a></h4>
  1719  <p>BeforeSave is called before any CMS Admin or 3rd-party client triggers a save to 
  1720  the database. This could be done by clicking the 'Save' button on a Content editor, 
  1721  or by a API call to Create or Update the Content item. By returning a non-nil 
  1722  <code>error</code> value, the item will not be saved.</p>
  1723  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">BeforeSave</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1724      <span class="k">return</span> <span class="kc">nil</span>
  1725  <span class="p">}</span>
  1726  </pre></div>
  1727  
  1728  
  1729  <h4 id="aftersave">AfterSave<a class="headerlink" href="#aftersave" title="Permanent link">&para;</a></h4>
  1730  <p>AfterSave is called after any CMS Admin or 3rd-party client triggers a save to 
  1731  the database. This could be done by clicking the 'Save' button on a Content editor, 
  1732  or by a API call to Create or Update the Content item.</p>
  1733  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">AfterSave</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1734      <span class="k">return</span> <span class="kc">nil</span>
  1735  <span class="p">}</span>
  1736  </pre></div>
  1737  
  1738  
  1739  <h4 id="beforedelete">BeforeDelete<a class="headerlink" href="#beforedelete" title="Permanent link">&para;</a></h4>
  1740  <p>BeforeDelete is called before any CMS Admin or 3rd-party client triggers a delete to 
  1741  the database. This could be done by clicking the 'Delete' button on a Content editor, 
  1742  or by a API call to Delete the Content item. By returning a non-nil <code>error</code> value,
  1743  the item will not be deleted.</p>
  1744  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">BeforeDelete</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1745      <span class="k">return</span> <span class="kc">nil</span>
  1746  <span class="p">}</span>
  1747  </pre></div>
  1748  
  1749  
  1750  <h4 id="afterdelete">AfterDelete<a class="headerlink" href="#afterdelete" title="Permanent link">&para;</a></h4>
  1751  <p>AfterSave is called after any CMS Admin or 3rd-party client triggers a delete to 
  1752  the database. This could be done by clicking the 'Delete' button on a Content editor, 
  1753  or by a API call to Delete the Content item.</p>
  1754  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">AfterDelete</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1755      <span class="k">return</span> <span class="kc">nil</span>
  1756  <span class="p">}</span>
  1757  </pre></div>
  1758  
  1759  
  1760  <h4 id="beforeapidelete">BeforeAPIDelete<a class="headerlink" href="#beforeapidelete" title="Permanent link">&para;</a></h4>
  1761  <p>BeforeDelete is only called before a 3rd-party client triggers a delete to the 
  1762  database. By returning a non-nil <code>error</code> value, the item will not be deleted.</p>
  1763  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">BeforeAPIDelete</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1764      <span class="k">return</span> <span class="kc">nil</span>
  1765  <span class="p">}</span>
  1766  </pre></div>
  1767  
  1768  
  1769  <h4 id="afterapidelete">AfterAPIDelete<a class="headerlink" href="#afterapidelete" title="Permanent link">&para;</a></h4>
  1770  <p>AfterAPIDelete is only called after a 3rd-party client triggers a delete to the 
  1771  database.</p>
  1772  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">AfterAPIDelete</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1773      <span class="k">return</span> <span class="kc">nil</span>
  1774  <span class="p">}</span>
  1775  </pre></div>
  1776  
  1777  
  1778  <h4 id="beforeapiupdate">BeforeAPIUpdate<a class="headerlink" href="#beforeapiupdate" title="Permanent link">&para;</a></h4>
  1779  <p>BeforeAPIUpdate is only called before a 3rd-party client triggers an update to 
  1780  the database. By returning a non-nil <code>error</code> value, the item will not be updated.</p>
  1781  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">BeforeAPIUpdate</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1782      <span class="k">return</span> <span class="kc">nil</span>
  1783  <span class="p">}</span>
  1784  </pre></div>
  1785  
  1786  
  1787  <h4 id="afterapiupdate">AfterAPIUpdate<a class="headerlink" href="#afterapiupdate" title="Permanent link">&para;</a></h4>
  1788  <p>AfterAPIUpdate is only called after a 3rd-party client triggers an update to 
  1789  the database.</p>
  1790  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">AfterAPIUpdate</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1791      <span class="k">return</span> <span class="kc">nil</span>
  1792  <span class="p">}</span>
  1793  </pre></div>
  1794  
  1795  
  1796  <h4 id="beforeadmincreate">BeforeAdminCreate<a class="headerlink" href="#beforeadmincreate" title="Permanent link">&para;</a></h4>
  1797  <p>BeforeAdminCreate is only called before a CMS Admin creates a new Content item.
  1798  It is not called for subsequent saves to the item once it has been created and 
  1799  assigned an ID. By returning a non-nil <code>error</code> value, the item will not be created.</p>
  1800  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">BeforeAdminCreate</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1801      <span class="k">return</span> <span class="kc">nil</span>
  1802  <span class="p">}</span>
  1803  </pre></div>
  1804  
  1805  
  1806  <h4 id="afteradmincreate">AfterAdminCreate<a class="headerlink" href="#afteradmincreate" title="Permanent link">&para;</a></h4>
  1807  <p>AfterAdminCreate is only called after a CMS Admin creates a new Content item.
  1808  It is not called for subsequent saves to the item once it has been created and 
  1809  assigned an ID.</p>
  1810  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">AfterAdminCreate</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1811      <span class="k">return</span> <span class="kc">nil</span>
  1812  <span class="p">}</span>
  1813  </pre></div>
  1814  
  1815  
  1816  <h4 id="beforeadminupdate">BeforeAdminUpdate<a class="headerlink" href="#beforeadminupdate" title="Permanent link">&para;</a></h4>
  1817  <p>BeforeAdminUpdate is only called before a CMS Admin updates a Content item. By 
  1818  returning a non-nil <code>error</code>, the item will not be updated.</p>
  1819  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">BeforeAdminUpdate</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1820      <span class="k">return</span> <span class="kc">nil</span>
  1821  <span class="p">}</span>
  1822  </pre></div>
  1823  
  1824  
  1825  <h4 id="afteradminupdate">AfterAdminUpdate<a class="headerlink" href="#afteradminupdate" title="Permanent link">&para;</a></h4>
  1826  <p>AfterAdminUpdate is only called after a CMS Admin updates a Content item.</p>
  1827  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">AfterAdminUpdate</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1828      <span class="k">return</span> <span class="kc">nil</span>
  1829  <span class="p">}</span>
  1830  </pre></div>
  1831  
  1832  
  1833  <h4 id="beforeadmindelete">BeforeAdminDelete<a class="headerlink" href="#beforeadmindelete" title="Permanent link">&para;</a></h4>
  1834  <p>BeforeAdminDelete is only called before a CMS Admin deletes a Content item. By
  1835  returning a non-nil <code>error</code> value, the item will not be deleted.</p>
  1836  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">BeforeAdminDelete</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1837      <span class="k">return</span> <span class="kc">nil</span>
  1838  <span class="p">}</span>
  1839  </pre></div>
  1840  
  1841  
  1842  <h4 id="afteradmindelete">AfterAdminDelete<a class="headerlink" href="#afteradmindelete" title="Permanent link">&para;</a></h4>
  1843  <p>AfterAdminDelete is only called after a CMS Admin deletes a Content item.</p>
  1844  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">AfterAdminDelete</span><span class="p">(</span><span class="nx">res</span> <span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="nx">req</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1845      <span class="k">return</span> <span class="kc">nil</span>
  1846  <span class="p">}</span>
  1847  </pre></div>
  1848  
  1849  
  1850  <h4 id="beforeenable">BeforeEnable<a class="headerlink" href="#beforeenable" title="Permanent link">&para;</a></h4>
  1851  <p>BeforeEnable is only applicable to Addon items, and is called before the addon
  1852  changes status to "Enabled". By returning a non-nil <code>error</code> value, the addon
  1853  will not become enabled.</p>
  1854  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">BeforeEnable</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1855      <span class="k">return</span> <span class="kc">nil</span>
  1856  <span class="p">}</span>
  1857  </pre></div>
  1858  
  1859  
  1860  <h4 id="afterenable">AfterEnable<a class="headerlink" href="#afterenable" title="Permanent link">&para;</a></h4>
  1861  <p>AfterEnable is only applicable to Addon items, and is called after the addon 
  1862  changes status to "Enabled".</p>
  1863  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">AfterEnable</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1864      <span class="k">return</span> <span class="kc">nil</span>
  1865  <span class="p">}</span>
  1866  </pre></div>
  1867  
  1868  
  1869  <h4 id="beforedisable">BeforeDisable<a class="headerlink" href="#beforedisable" title="Permanent link">&para;</a></h4>
  1870  <p>BeforeDisable is only applicable to Addon items, and is called before the addon
  1871  changes status to "Disabled". By returning a non-nil <code>error</code> value, the addon
  1872  will not become disabled.</p>
  1873  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">BeforeDisable</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1874      <span class="k">return</span> <span class="kc">nil</span>
  1875  <span class="p">}</span>
  1876  </pre></div>
  1877  
  1878  
  1879  <h4 id="afterdisable">AfterDisable<a class="headerlink" href="#afterdisable" title="Permanent link">&para;</a></h4>
  1880  <p>AfterDisable is only applicable to Addon items, and is called after the addon 
  1881  changes status to "Disabled".</p>
  1882  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">p</span> <span class="o">*</span><span class="nx">Post</span><span class="p">)</span> <span class="nx">AfterDisable</span><span class="p">(</span><span class="nx">http</span><span class="p">.</span><span class="nx">ResponseWriter</span><span class="p">,</span> <span class="o">*</span><span class="nx">http</span><span class="p">.</span><span class="nx">Request</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span>
  1883      <span class="k">return</span> <span class="kc">nil</span>
  1884  <span class="p">}</span>
  1885  </pre></div>
  1886  
  1887  
  1888  <p>Hookable is implemented by Item by default as no-ops which are expected to be overridden. </p>
  1889  <div class="admonition note">
  1890  <p class="admonition-title">Note</p>
  1891  <p>returning an error from any of these <code>Hookable</code> methods will end the request, 
  1892  causing it to halt immediately after the hook. For example, returning an <code>error</code> 
  1893  from <code>BeforeDelete</code> will result in the content being kept in the database. 
  1894  The same logic applies to all of these interface methods that return an error 
  1895  - <strong>the error defines the behavior</strong>.</p>
  1896  </div>
  1897  <hr />
  1898  <h3 id="itemidentifiable"><a href="https://godoc.org/github.com/rpdict/ponzu/system/item#Identifiable">item.Identifiable</a><a class="headerlink" href="#itemidentifiable" title="Permanent link">&para;</a></h3>
  1899  <p>Identifiable enables a struct to have its ID set/get. Typically this is done to set an ID to -1 indicating it is new for DB inserts, since by default a newly initialized struct would have an ID of 0, the int zero-value, and BoltDB's starting key per bucket is 0, thus overwriting the first record.
  1900  Most notable, Identifiable’s <code>String</code> method is used to set a meaningful display name for an Item. <code>String</code> is called by default in the Admin dashboard to show the Items of certain types, and in the default creation of an Item’s slug.
  1901  Identifiable is implemented by Item by default.</p>
  1902  <h5 id="method-set_4">Method Set<a class="headerlink" href="#method-set_4" title="Permanent link">&para;</a></h5>
  1903  <div class="codehilite"><pre><span></span><span class="kd">type</span> <span class="nx">Identifiable</span> <span class="kd">interface</span> <span class="p">{</span>
  1904      <span class="nx">ItemID</span><span class="p">()</span> <span class="kt">int</span>
  1905      <span class="nx">SetItemID</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span>
  1906      <span class="nx">UniqueID</span><span class="p">()</span> <span class="nx">uuid</span><span class="p">.</span><span class="nx">UUID</span>
  1907      <span class="nx">String</span><span class="p">()</span> <span class="kt">string</span>
  1908  <span class="p">}</span>
  1909  </pre></div>
  1910  
  1911  
  1912  <h5 id="implementation_3">Implementation<a class="headerlink" href="#implementation_3" title="Permanent link">&para;</a></h5>
  1913  <p><code>item.Identifiable</code> has a default implementation in the <code>system/item</code> package. 
  1914  It is not advised to override these methods, with the exception of <code>String()</code>, 
  1915  which is commonly used to set the display name of Content items when listed in 
  1916  the CMS, and to customize slugs.</p>
  1917  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">i</span> <span class="nx">Item</span><span class="p">)</span> <span class="nx">ItemID</span><span class="p">()</span> <span class="kt">int</span> <span class="p">{</span>
  1918      <span class="k">return</span> <span class="nx">i</span><span class="p">.</span><span class="nx">ID</span>
  1919  <span class="p">}</span>
  1920  
  1921  <span class="kd">func</span> <span class="p">(</span><span class="nx">i</span> <span class="o">*</span><span class="nx">Item</span><span class="p">)</span> <span class="nx">SetItemID</span><span class="p">(</span><span class="nx">id</span> <span class="kt">int</span><span class="p">)</span> <span class="p">{</span>
  1922      <span class="nx">i</span><span class="p">.</span><span class="nx">ID</span> <span class="p">=</span> <span class="nx">id</span>
  1923  <span class="p">}</span>
  1924  
  1925  <span class="kd">func</span> <span class="p">(</span><span class="nx">i</span> <span class="nx">Item</span><span class="p">)</span> <span class="nx">UniqueID</span><span class="p">()</span> <span class="nx">uuid</span><span class="p">.</span><span class="nx">UUID</span> <span class="p">{</span>
  1926      <span class="k">return</span> <span class="nx">i</span><span class="p">.</span><span class="nx">UUID</span>
  1927  <span class="p">}</span>
  1928  
  1929  <span class="kd">func</span> <span class="p">(</span><span class="nx">i</span> <span class="nx">Item</span><span class="p">)</span> <span class="nx">String</span><span class="p">()</span> <span class="kt">string</span> <span class="p">{</span>
  1930      <span class="k">return</span> <span class="nx">fmt</span><span class="p">.</span><span class="nx">Sprintf</span><span class="p">(</span><span class="s">&quot;Item ID: %s&quot;</span><span class="p">,</span> <span class="nx">i</span><span class="p">.</span><span class="nx">UniqueID</span><span class="p">())</span>
  1931  <span class="p">}</span>
  1932  </pre></div>
  1933  
  1934  
  1935  <hr />
  1936  <h3 id="itemsluggable"><a href="https://godoc.org/github.com/rpdict/ponzu/system/item#Sluggable">item.Sluggable</a><a class="headerlink" href="#itemsluggable" title="Permanent link">&para;</a></h3>
  1937  <p>Sluggable makes a struct locatable by URL with it's own path. As an Item implementing Sluggable, slugs may overlap. If this is an issue, make your content struct (or one which embeds Item) implement Sluggable and it will override the slug created by Item's <code>SetSlug</code> method with your own.
  1938  It is not recommended to override <code>SetSlug</code>, but rather the <code>String</code> method on your content struct, which will have a similar, more predictable effect.
  1939  Sluggable is implemented by Item by default.</p>
  1940  <h5 id="method-set_5">Method Set<a class="headerlink" href="#method-set_5" title="Permanent link">&para;</a></h5>
  1941  <div class="codehilite"><pre><span></span><span class="kd">type</span> <span class="nx">Sluggable</span> <span class="kd">interface</span> <span class="p">{</span>
  1942      <span class="nx">SetSlug</span><span class="p">(</span><span class="kt">string</span><span class="p">)</span>
  1943      <span class="nx">ItemSlug</span><span class="p">()</span> <span class="kt">string</span>
  1944  <span class="p">}</span>
  1945  </pre></div>
  1946  
  1947  
  1948  <h5 id="implementation_4">Implementation<a class="headerlink" href="#implementation_4" title="Permanent link">&para;</a></h5>
  1949  <p><code>item.Sluggable</code> has a default implementation in the <code>system/item</code> package. It is
  1950  possible to override these methods on your own Content types, but beware, behavior
  1951  is undefined. It is tempting to override the <code>SetSlug()</code> method to customize your
  1952  Content item slug, but try first to override the <code>String()</code> method found in the
  1953  <code>item.Identifiable</code> interface instead. If you don't get the desired results, try
  1954  <code>SetSlug()</code>.</p>
  1955  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">i</span> <span class="o">*</span><span class="nx">Item</span><span class="p">)</span> <span class="nx">SetSlug</span><span class="p">(</span><span class="nx">slug</span> <span class="kt">string</span><span class="p">)</span> <span class="p">{</span>
  1956      <span class="nx">i</span><span class="p">.</span><span class="nx">Slug</span> <span class="p">=</span> <span class="nx">slug</span>
  1957  <span class="p">}</span>
  1958  
  1959  <span class="kd">func</span> <span class="p">(</span><span class="nx">i</span> <span class="o">*</span><span class="nx">Item</span><span class="p">)</span> <span class="nx">ItemSlug</span><span class="p">()</span> <span class="kt">string</span> <span class="p">{</span>
  1960      <span class="k">return</span> <span class="nx">i</span><span class="p">.</span><span class="nx">Slug</span>
  1961  <span class="p">}</span>
  1962  </pre></div>
  1963  
  1964  
  1965  <hr />
  1966  <h3 id="itemsortable"><a href="https://godoc.org/github.com/rpdict/ponzu/system/item#Sortable">item.Sortable</a><a class="headerlink" href="#itemsortable" title="Permanent link">&para;</a></h3>
  1967  <p>Sortable enables items to be sorted by time, as per the sort.Interface interface. Sortable is implemented by Item by default.</p>
  1968  <h5 id="method-set_6">Method Set<a class="headerlink" href="#method-set_6" title="Permanent link">&para;</a></h5>
  1969  <div class="codehilite"><pre><span></span><span class="kd">type</span> <span class="nx">Sortable</span> <span class="kd">interface</span> <span class="p">{</span>
  1970      <span class="nx">Time</span><span class="p">()</span> <span class="kt">int64</span>
  1971      <span class="nx">Touch</span><span class="p">()</span> <span class="kt">int64</span>
  1972  <span class="p">}</span>
  1973  </pre></div>
  1974  
  1975  
  1976  <h5 id="implementation_5">Implementation<a class="headerlink" href="#implementation_5" title="Permanent link">&para;</a></h5>
  1977  <p><code>item.Sortable</code> has a default implementation in the <code>system/item</code> package. It is
  1978  possible to override these methods on your own Content type, but beware, behavior 
  1979  is undefined.</p>
  1980  <div class="codehilite"><pre><span></span><span class="kd">func</span> <span class="p">(</span><span class="nx">i</span> <span class="nx">Item</span><span class="p">)</span> <span class="nx">Time</span><span class="p">()</span> <span class="kt">int64</span> <span class="p">{</span>
  1981      <span class="k">return</span> <span class="nx">i</span><span class="p">.</span><span class="nx">Timestamp</span>
  1982  <span class="p">}</span>
  1983  
  1984  <span class="kd">func</span> <span class="p">(</span><span class="nx">i</span> <span class="nx">Item</span><span class="p">)</span> <span class="nx">Touch</span><span class="p">()</span> <span class="kt">int64</span> <span class="p">{</span>
  1985      <span class="k">return</span> <span class="nx">i</span><span class="p">.</span><span class="nx">Updated</span>
  1986  <span class="p">}</span>
  1987  </pre></div>
  1988                  
  1989                    
  1990                  
  1991                
  1992                
  1993                  
  1994                
  1995              </article>
  1996            </div>
  1997          </div>
  1998        </main>
  1999        
  2000          
  2001  <footer class="md-footer">
  2002    
  2003      <div class="md-footer-nav">
  2004        <nav class="md-footer-nav__inner md-grid">
  2005          
  2006            <a href="../Format/" title="Format" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
  2007              <div class="md-flex__cell md-flex__cell--shrink">
  2008                <i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
  2009              </div>
  2010              <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
  2011                <span class="md-flex__ellipsis">
  2012                  <span class="md-footer-nav__direction">
  2013                    Previous
  2014                  </span>
  2015                  Format
  2016                </span>
  2017              </div>
  2018            </a>
  2019          
  2020          
  2021            <a href="../Search/" title="Search" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
  2022              <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
  2023                <span class="md-flex__ellipsis">
  2024                  <span class="md-footer-nav__direction">
  2025                    Next
  2026                  </span>
  2027                  Search
  2028                </span>
  2029              </div>
  2030              <div class="md-flex__cell md-flex__cell--shrink">
  2031                <i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
  2032              </div>
  2033            </a>
  2034          
  2035        </nav>
  2036      </div>
  2037    
  2038    <div class="md-footer-meta md-typeset">
  2039      <div class="md-footer-meta__inner md-grid">
  2040        <div class="md-footer-copyright">
  2041          
  2042          powered by
  2043          <a href="http://www.mkdocs.org" title="MkDocs">MkDocs</a>
  2044          and
  2045          <a href="http://squidfunk.github.io/mkdocs-material/" title="Material for MkDocs">
  2046            Material for MkDocs</a>
  2047        </div>
  2048        
  2049          
  2050    <div class="md-footer-social">
  2051      
  2052      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
  2053      
  2054        <a href="https://github.com/rpdict" class="md-footer-social__link fa fa-github"></a>
  2055      
  2056        <a href="https://twitter.com/ponzu_cms" class="md-footer-social__link fa fa-twitter"></a>
  2057      
  2058    </div>
  2059  
  2060        
  2061      </div>
  2062    </div>
  2063  </footer>
  2064        
  2065      </div>
  2066      
  2067        <script src="../../assets/javascripts/application-6b599127bc.js"></script>
  2068        <script>app.initialize({url:{base:"../.."}})</script>
  2069        
  2070      
  2071      
  2072        
  2073        <script>!function(e,t,a,n,o,c,i){e.GoogleAnalyticsObject=o,e[o]=e[o]||function(){(e[o].q=e[o].q||[]).push(arguments)},e[o].l=1*new Date,c=t.createElement(a),i=t.getElementsByTagName(a)[0],c.async=1,c.src=n,i.parentNode.insertBefore(c,i)}(window,document,"script","https://www.google-analytics.com/analytics.js","ga"),ga("create","UA-98609560-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview");var links=document.getElementsByTagName("a");Array.prototype.map.call(links,function(e){e.host!=document.location.host&&e.addEventListener("click",function(){var t=e.getAttribute("data-md-action")||"follow";ga("send","event","outbound",t,e.href)})});var query=document.forms.search.query;query.addEventListener("blur",function(){if(this.value){var e=document.location.pathname;ga("send","pageview",e+"?q="+this.value)}})</script>
  2074        
  2075      
  2076    </body>
  2077  </html>