orchardcms - Orchard Projection Page Default View -


i using orchard 1.8 , have created new content type (called pressrelease), query results , projection view query custom template (using url alternates in format list-projectionpage-url-pressrelease.cshtml) , of working fine.

the 1 part has me stumped is, if use theme machine theme (untouched), projection view show in unordered list corresponding autoroute links individual contentitem entities, metadata , on. i'm trying figure out how access things such autoroute url specific item, metadata (create/publish dates) , on use things facebook share button. i'm trying recreate default view, albeit customizations.

here code list-projectionpage-url-pressrelease.cshtml:

@using orchard.utility.extensions; @using system.linq  @functions { public class pressrelease {     public pressrelease()     {         this.attachments = new list<attachment>();     }      public string title { get; set; }     public string source { get; set; }     public datetime publishdate { get; set; }     public string body { get; set; }     public list<attachment> attachments { get; set; } }      public class attachment     {         public string filename { get; set; }         public string path { get; set; }     } }  @{     //add list of dynamic objects typed class     var releases = new list<pressrelease>();     foreach (var item in @model.items)     {      var release = new pressrelease     {         title = item.contentitem.titlepart.title,         source = item.contentitem.pressrelease.source.value,         publishdate = item.contentitem.pressrelease.date.datetime,         body = item.contentitem.bodypart.text     };      //load attachment(s) class     var attachments = (orchard.medialibrary.fields.medialibrarypickerfield)item.contentitem.pressrelease.attachment;     if (attachments.mediaparts.count() > 0)     {         foreach (var part in attachments.mediaparts)         {             release.attachments.add(new attachment { filename = part.filename, path = part.mediaurl });         }     }      releases.add(release);     } } @{ foreach (var item in releases) {     <div class="press-release">         <div class="press-release-title">@item.title</div>         <div class="press-release-meta">             <span class="press-release-source">source: @item.source</span>             @if (item.publishdate != datetime.minvalue)             {                 <span class="press-release-date">@item.publishdate.toshortdatestring()</span>             }         </div>         @if (item.attachments.count() > 0)         {             <div class="press-release-attachments">                 <span class="press-release-attachments-title">attached: </span>                 @foreach (var attachment in item.attachments)                 {                     var linktext = attachment.filename;                     var url = attachment.path;                     @html.link(linktext, url);                     if (attachment != item.attachments.last())                     {                         <span>, </span>                     }                 }             </div>         }         <div class="press-release-body">             <p>@html.raw(item.body.replace("\r\n", "<br />"))</p>         </div>     </div>     <div class="social">         <!-- ** need autoroute url can fb share link **-->         <div class="fb-share-button" data-href="" data-type="button_count"></div>     </div>     if (item != releases.last())     {         <hr />        } } } 

thoughts?

utilizing shape tracer (in conjunction @bertrand's assistance in comments above) helped me need. here final layout code went (which has super hacky stuff in it):

@using orchard.utility.extensions; @using system.linq  @functions {     public class pressrelease     {         public pressrelease()         {             this.attachments = new list<attachment>();         }          private string _navigateurl = string.empty;          public string title { get; set; }         public string source { get; set; }         public datetime publishdate { get; set; }         public string body { get; set; }         public list<attachment> attachments { get; set; }         public string navigateurl         {             { return string.format("{0}://{1}/{2}", httpcontext.current.request.url.scheme, httpcontext.current.request.url.authority, _navigateurl); }             set { this._navigateurl = value; }         }     }      public class attachment     {         public string filename { get; set; }         public string path { get; set; }     } }  @{     //add list of dynamic objects typed class     var releases = new list<pressrelease>();     foreach (var item in @model.items)     {          var release = new pressrelease         {             title = item.contentitem.titlepart.title,             source = item.contentitem.pressrelease.source.value,             publishdate = item.contentitem.pressrelease.date.datetime,             //this super hacky chopped version of html submitted summary             body = item.contentitem.bodypart.text,             navigateurl = item.contentitem.autoroutepart.path         };          //load attachment(s) class         var attachments = (orchard.medialibrary.fields.medialibrarypickerfield)item.contentitem.pressrelease.attachment;         if (attachments.mediaparts.count() > 0)         {             foreach (var part in attachments.mediaparts)             {                 release.attachments.add(new attachment { filename = part.filename, path = part.mediaurl });             }         }          releases.add(release);     } } @{     foreach (var item in releases)     {         <div class="press-release">             <div class="press-release-title"><a href="@item.navigateurl">@item.title</a></div>             <div class="press-release-meta">                 <span class="press-release-source">source: @item.source</span>                 @if (item.publishdate != datetime.minvalue)                 {                     <span class="press-release-date">@item.publishdate.toshortdatestring()</span>                 }             </div>             @if (item.attachments.count() > 0)             {                 <div class="press-release-attachments">                     <span class="press-release-attachments-title">attached: </span>                     @foreach (var attachment in item.attachments)                     {                         <a href="@attachment.path" target="_blank">@attachment.filename</a>                         if (attachment != item.attachments.last())                         {                             <span>, </span>                         }                     }                 </div>             }             <div class="press-release-body">                 @{                     var body = new htmlstring(html.excerpt(item.body, 200).tostring().replace(environment.newline, "</p>" + environment.newline + "<p>"));                     <p>@body <a href="@item.navigateurl">(read more)</a></p>                 }             </div>         </div>         <div class="social">             <div class="fb-share-button" data-href="@item.navigateurl" data-type="button_count"></div>         </div>         if (item != releases.last())         {             <hr />         }     } } 

Comments

Popular posts from this blog

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

php - render data via PDO::FETCH_FUNC vs loop -

The canvas has been tainted by cross-origin data in chrome only -