Our blog contains the activity stream of Orchard Dojo: general news, new resources or tutorials are announced here.

Featured tags

IIS
API
SMS
SEO
All tags >

Cors, user account activation - This week in Orchard (31/01/2020)

This week we would like to show you two new Orchard Core demos: the user account activation and the new CORS module. But before that let's take a quick look at the newest features and improvements of Orchard Core! Finally, let's see what about the next Harvest? Orchard Core updates Add more Resources documentation The Resources page of the Orchard Core documentation has been improved a lot. Now on this page, you can find examples about how to register a named resource by implementing the IResourceManifestProvider interface, how to render your registered resources in the different sections of the page using Liquid or Razor and many more! Update the OpenID YesSql stores to execute a concurrency check on updates We have a new feature in YesSql when saving a session. Check out the following line: _session.Save(application, checkConcurrency: true); In the code snippet above, we would like to save the Open ID application and check that nothing has changed the application between it was loaded in this process and saved with the current changes. And if there is an issue, it will throw an exception when we call await _session.CommitAsync(). Then it will catch the ConcurrencyException saying something else changed the application while you were saving it so, please try it again. Fix issue with layers that can be drag and dropped to zones The targets for the zone dragging were too loose and then you could drag a widget to a layer or a layer to a widget. Now it's fixed. Fix regression for Tag Helpers not working There was an issue that some things were working in development mode and not in release mode. In development, Orchard Core finds the Tag Helpers because views are compiled at run time in the context of the application, while published .Views.dll files have been precompiled in the context of their related module or theme. In production, it will not work, because for example if you would like to use the ContentItemTagHelper, the reference was missing from one module to the OrchardCore.Contents module. Dean Marcussen created a new OrchardCore.Contents.TagHelpers project, that contains the Tag Helpers of the OrchardCore.Contents module. And now whenever we have Tag Helpers, we put them in their *.TagHelpers library. So, when our themes and other modules will need those Tag Helper, we can just reference this library and not the full module. In the _ViewImports.cshtml files where we are using the OrchardCore.Contents assembly to find Tag Helpers we need to look for the assembly named OrchardCore.Contents.TagHelpers. It should not break any websites if you are using Liquid, but if you are not using Liquid, it's possible that the site will be broke after this change, meaning the Tag Helpers won't be found and as we said, you need to change your _ViewImports.cshtml. In the future, we have to do the same for all of the Tag Helpers. Standard display option for each field If you want to add a Display option for a field that does not have a standard one, when you re-edit the settings and save, the new one will be selected as the default even if you don't want it. To solve this issue we added a Standard option for all the fields. Let's see the HtmlField.DisplayOption.cshtml file as an example. Sort Workflow instances Your Workflow could have several Workflow instances and if you have many of them, it could be hard to find the one you want. In the past, you had the option to filter the instances by their status (all, faulted, finished), and now there is a new option to sort these instances. You can sort them by the recently created or the least recently created. Simplify part settings retrieval for ContentPartDisplayDrivers In the ContentPartDisplayDrivers, we need to resolve the ContentDefinitionManager, query the type definition and then find the part that is named the same that we are using, take the first one and get the settings. But in the BuildPartEditorContext and UpdatePartEditorContext we already have the TypePartDefinition of the part that we are currently editing, so we can just get the settings from there. This change made the code simpler and technically faster. Just take a look at the changes in the AutoroutePartDisplay! Demos User Account Activation Currently, Orchard Core supports registration and approval or manual entry. What about having a way to have the option to invite users onto the platform and let them choose their password and then activate their account? Let's see a possible future release for this feature! Install your site and then enable the Users Registration feature. Now head to Security -> Settings -> Registration, where you will find a new option: Administrators can send an activation email to a user. Put a tick in this box and select the AllowRegistration from the select list. Now go to Security -> Users and hit the Add User button. Here you could see a new switch called Send Activation Email?. If you create this user with this switch enabled and hit Save, this user will get an email that email will contain an activation link. If the user clicks on this link, they can choose a password for the account. After they set the password their account is activated and they can log in to the site using the newly created password. To do that, you should disable the account of the user when creating it. But what's behind this feature? Create two new Workflows to send emails. Let's call the first one to UserAccountActivation and add the Account Activation event as the startup event for this Workflow. Then add a Send Email task that will send the email to the user. This email will contain the activation URL of the user. Create another Workflow that will send another email that tells the user that their account is activated. Let's call this Workflow UserAccountActivated. Here you could use the Account Activated event as the startup event and again, add a Send Email task. The feature will be improved in the future because as you can see, the Send Activation Email switch is not really about sending an email, it's just about rising an event, that you can use in your Workflows. Instead of this, we could have for example a user state (Needs Activation) similar to the IsDisabled switch. And that's not all! If you would like to know more about this feature, head to YouTube, where you can find the full demo about the user account activation! Cross-Origin Resource Sharing (CORS) module If you head to Configuration -> Features and enable the Cors Configuration module, you will find a new option under Configuration -> Settings, called Cors. If you navigate here you can add as many policies as you want using the Add a policy button. On this page, you can add the name of the policy, set that as the default policy and configure everything that you will need to enable CORS. If you are interested in the full demo, don't forget to check out the recording on YouTube! News from the community The possible date of the next Harvest We had two possible dates for the next Harvest: one in February and one in April. Now it looks like it won't happen in February, so the only option left is to do a Harvest in April. The possible days could be between 13 and 17 in April. We also have two possible locations, which are Nice and Miami. Stay tuned for more information about the next Harvest! Tell us about your .NET performance challenges! - Hastlayer developer survey Help us build the nerdiest .NET thing, Hastlayer: It turns performance-critical sections of .NET programs into computer chips! If you fill out our short questionnaire you can win a cool compute accelerator board worth $265! Check it out here: https://forms.office.com/Pages/ResponsePage.aspx?id=Wt6elek45kStyIVVO-uCIMkFNjqW2E1Pm4v3YMcflMNUOVlDNUE3MlpDS044VDI1OEFSMUgxUkxSTC4u The reason we're asking this is that we're building a .NET hardware accelerator, Hastlayer (https://github.com/Lombiq/Hastlayer-SDK it turns your program into a chip!) and want to better understand what other developers do. Thank you in advance! Orchard Dojo Newsletter Now we have 114 subscribers of the Lombiq's Orchard Dojo Newsletter! We have started this newsletter to inform the community around Orchard with the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who you think would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news around Orchard and the details of the topics above, don't forget to check out the recording of this week's Orchard meeting!

This week in Orchard - 11/15/2019

This week we would like to show you two demos about the newest features of Orchard Core. First, you can take a look at the brand new content items UI, then we will dive a bit deeper and try out the new Trumbowyg editor for the Text Field and the HtmlBody Part. And of course, the discussion continues about the next Harvest! On Orchard Core Filter Features dependencies When you navigate to Configuration -> Features you have the ability to enable or disable the different features. To find the feature you want easier you can use a filter here and can type the name of the module. This filter only sort by the name of the feature. From now this filter checks for the different dependencies too! For example, if you type localization, you could see the Content Culture Picker in the list, because this module has dependencies with names like Content Localization or Localization. Harvest Core 2020 Sipke Schoorstra has connections in Nice and Miami, so that would be easier to organize the next Harvest one of these cities. Nice is in Europe, but Miami is warmer and easier to travel there from Europe because it's on the East Coast. The two possible dates are February and April, but the weather is not the same in these cities. If we do it in April, Nice would be the better option because of the weather. Miami is warmer in both months, so that wouldn't be an issue. Stay tuned for more information about the next Harvest! Demos New content items UI Now when you enter the admin site and go to Content -> Content Items, you will see a brand new UI. Under the Content Type dropdown, you can filter the items based on the selected or the typed type. You can filter the items by their status using the Show dropdown. And lastly the Sort dropdown is responsible to order the items by title, recently created, recently modified or published. If you select more than 1 item, you will see a new dropdown, called Actions, instead of the dropdowns we mentioned above. By using the Actions, you can publish, unpublish or delete the selected items. Lastly, we would like to mention the Filters dropdown near the textbox that has the Search all content items placeholder text. By using this you can filter the list by showing only the draft items, only the published items or the items owned by the logged-in user. Adding Trumbowyg editor for TextField and HtmlBody Let's set up a site using the Blog recipe. This recipe contains an Article content type. If you edit the definition of the Article under Content -> Content Definition -> Content Types you will see the attached HtmlBody Part. Hit Edit near it and select that you would like to use the Trumbowyg editor type. Under the editor options you can explicitly set the config you want to use, for example, which button you want to add to the toolbar. If you navigate to the OrchardCore.Resources module and check the content of the Assets folder, you will see the files that needed for the Trumbowyg plugins to work. Therefore you can use every existing plugin that is described on this page. Trumbowyg has a lot of plugins that you can use to customize your editor. Now let's add some new buttons to the editor! We will use the emoji, the giphy, and the font family plugin. All you need to do is to extend the btns section of the editor options like this: btns: [ ["viewHTML"], ['emoji', 'giphy', 'fontfamily'], ["undo", "redo"], ["formatting"], ["strong", "em", "del"], ["foreColor", "backColor"], ["superscript", "subscript"], ["link"], ["image"], ["align"], ["unorderedList", "orderedList"], ["horizontalRule"], ["removeformat"], ["fullscreen"]], plugins : { giphy: { apiKey: 'N5OwBrzBjP8nXXaFdv1TvVwZ82DWNUSz' }} Here you can see that the three new buttons will be placed after the View HTML button and will be near each other without a separator. The buttons you define in the same square brackets will be in one group. You could also see that we added a new section here, called plugins. Here you can define the options that needed for the different plugins. For example, to use giphy, you need to have an API key that will communicate with GIPHY. If you navigate to the Dashboard on the GIPHY Developers page you can create a new one by clicking on the Create an App button. Now you have successfully set up the editor options. It's time to create a new Article! Notice the three new dropdown buttons near the View HTML button and use them to create your awesome article! Another nice stuff is the template plugin, that manages a set of HTML templates to insert fast. In these options we only define the templates plugin with two options: { btns: [ ["template"] ], plugins: { templates: [ { name: 'Lorem ipsum', html: '<p>I am a Lorem ipsum template</p>' }, { name: 'Lorem ipsum 2', html: '<p>Another Lorem ipsum template</p>' } ] }} In this case, the editor will look like the following, where if we select the Lorem ipsum 2 option, the following HTML content will be injected to the editor. The same works for HTML Field too. If you add a new HTML Field to your content type and set the editor to Trumbowyg editor, you can define the editor options and you will get a customized Trumbowyg editor. On Lombiq Upload recordings of demos from the weekly meeting in separate videos We have an idea to upload recordings of demos from the weekly meeting in separate videos as well, so they can be found easier. To help us decide please visit our Tweet and choose from the following options: Good, I look for demos! Good, but don't need it. Bad, why more videos? Another idea, see reply! Searching for performance-intensive codes Do you write a performance-intensive code? Then help us build the nerdiest .NET thing! Drop us a line to [email protected] and we'll ask a few questions about the challenges you encounter, and in exchange, we'll show you how to make a chip out of your programs! Orchard Dojo Newsletter Now we have 102 subscribers of the Lombiq's Orchard Dojo Newsletter! We have started this newsletter to inform the community around Orchard with the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who you think would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news around Orchard and the details of the topics above, don't forget to check out the recording of this week's Orchard meeting!

This week in Orchard - 05/24/2019

In our post, we would like to show you some improvement of the content items list and the Markdown editor of Orchard Core. We also mention the Command Line support for Orchard Core. Check out our post for more! On Orchard 1.x Lombiq has an Orchard issue bug fixing hackathon and the goal was to fix as many issues for Orchard 1.x as we can. We made good progress and fixed several bugs. Let's see some of them! NumericField default value merge error fix The Default value of the NumericField was removed by accident after a merge. Now thanks to this PR, the textbox for specifying the Default value to NumericField was readded. Merge DraftFieldIndexService.cs into FieldIndexService.cs In Orchard 1.x, you could use the DraftFieldIndexService to save the draft and the FieldIndexService to save the published FieldIndexRecords. Because of these services do the quite same thing (the only difference is to save the Published or the Draft version of the record), it could be a good idea to remove DraftFieldIndexSerivice and keep only the FieldIndexService and have an enum to set which version you would like to save. You can find the implementation in this PR. Removing IProjectionManagerExtension There was an IProjectionManagerExtension interface to provide additional methods to the IProjectionManager. For example, you can get the content items by providing the ContentPart and a number to skip, which could be a great way to have pagination. Now the methods inside the IProjectionManagerExtension moved to the IProjectionManager and the IProjectionManagerExtension interface has been deleted. See the changes in this PR. Updating Newtonsoft.Json everywhere Orchard 1.x uses an outdated version of the Newtonsoft.Json library. We updated this package everywhere in Orchard to use the latest version. Fixing that stylesheets are not found on Dashboard Resource URLs are not replaced with file virtual path in StylesheetBindingStrategy leaving the URL pointing to TheAdmin theme folder instead of the related module path. Now when you visit the admin page of Orchard and open the Developer Tools in your browser, you will notice the missing 404 errors for the CSS files thanks to this PR. Fixing that Orchard.Workflows requires styles that don't exist We had a quite similar issue here as in the previous one, except there were also some empty CSS files that are included in the csproj files. You can see the fixes here. On Orchard Core Build error if a module with views doesn't use the Razor SDK If you create a module and you have views inside and you didn't correctly use the Microsoft.NET.Sdk.Razor SDK you will get a build error. In the project files, there is an SDK tag at the top and you can define which SDK the project should be built with. When you have Razor views, you need this SDK to be able to get precompiled views and embed them in the assemblies. Now if you have views and you didn't do that, the build will automatically fail to prevent failing in runtime because it could not find specific assets or views. Or maybe you started to implement your module with a standard class library, which didn't have views, then you add a view and don't understand why it doesn't work anymore. Consider Command Line support for Orchard Core There was some Command Line support in Orchard Core, but it was removed because of performance concerns. The code that is currently in for Command Line support for Orchard Core is using the same concept as Orchard 1, where modules can provide custom commands with the Command Line extensibility. The idea would be to have a CLI that is not in process of the Orchard host, but out of a process like a very separate .NET CLI, that will talk using HTTP with the host and the tenants. Therefore we could even use a CLI to remote control some tenants or instances. We don't have to run the CLI on the machine that runs Orchard. Being able to run remotely the CLI would be nice, and to automatically discover the commands from the API. You can find more details about the Command Line support for Orchard Core in this issue. Admin CSS: wrong BS4 version If you create a new pull request and don't update to the dev branch, then you will also submit an old version of Bootstrap and assets and people will have to fix it again. The only way to prevent that is by having a CI task that will ensure that the version is committed and rebuilding the assets doesn't change anything. We can't automate it, but we can fail the build to detect it. That would be an improvement because at least we could show the issue before we commit the issue. Orchard Harvest Based on the progress on Orchard Core, we could totally have something in September or October, like we did last time in a warm location. It would be about Orchard Core of course and a little bit about Orchard 1.11. That would be also a very good way to work on a free public online workshop during the Harvest. Orchard Core will be new for most of the people and they could learn the basics of Orchard Core here. Demos Filter content items on content items list page If you navigate to the admin page of Orchard Core and head to the Content Items page, you can search content items by title. You can also filter them by content types and by version. There was an error when you filter content items and hit the back button in your browser. In this case, you got a Confirm Form Resubmission, now it's fixed by using a GET request. Bulk actions in content items list You can also realize a Select All option here to select all the content items in the page. When using the Bulk Actions button, you can publish, unpublish and delete all the selected content items without needing to do these actions one by one. Markdown editor CSS and toolbar improvements This week the community fixed a bunch of styling issues with the SimpleMDE markdown editor. It used to look like with a dark border around the top and some horrible hovers and now it looks like this. It also couldn't go full screen because the z-index was below the Orchard navbar but it now goes fullscreen. Of course, the side by side preview mode works. It does also work on mobile as well. On Lombiq Orchard Dojo Newsletter Now we have 63 subscribers of the Lombiq's Orchard Dojo Newsletter! We have started this newsletter to inform the community around Orchard with the latest news about the platform. By subscribing to this newsletter, you will get an e-mail every time when a new post published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who you think would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news around Orchard and the details of the topics above, don't forget to check out the recording of this week's Orchard meeting!

Orchard Harvest conference, day 2

Just as on the first day we're reporting in live from the 2017 Orchard Harvest conference! This blogpost will be updated as we go, so make sure to check back! Bertrand is doing the same thing again, so make sure to check out his blog for updates too. Antoine again as well, so also check out his blog. Theming in Orchard Core CMS by Steve Taylor Steve is from Avastec and works extensively with client-side technologies. He'll live code a new Orchard Core theme based on the Masonic Wordpress theme. A sneak peek into the new Orchard theming, also the casual use of Razor Tag Helpers for including resources, displaying a menu and a zone. The theme makes use of a Gulp pipeline for asset building. A sneak peek into the database storage format of Orchard Core and creating theme settings. Highway to the pager zone. (Sorry. Hate Salute Benedek for the joke.) Topic of the day: Statue of Liberty. We should have a Statue of Orchard. It could be a large monolith. (That, when you look closer, is built of beautifully crafted small, loosely coupled bricks.) Setting up indexing and adding a search box. Quite similar to Orchard 1.x. Taking a look at some of the familiar Orchard concepts from the admin to the extent needed for a theming demo: managing content types, adding menu items, widgets... If you use a lot of stuff the cool kids do like Angular and Knockout there's something for you. Present and future of Localization in Orchard by Benedek Farkas Benedek is from Lombiq, leading the development of Orchard client-projects and contributing bugfixes. He also asked us to take pictures. Lombiq does a lot of things with Orchard, so we'll refrain from listing those 96 things here, you can see for yourself. Benedek does a lot of things with Orchard too, including catering for the translation packages. How is "orchard" in various languages? Turns out probably we're best off with the English one. Word of the day: eltöredezettségmentesítőtlenítetthetetlenségtelenítőtlenkedhetnétek. You should only drink as long as you can pronounce this. When in doubt, use T-strings: Wrapping your user-facing labels into T() is the bare minimum. But it's easy to defeat the purpose, so here are some tips. Extracting T-strings from code with Vandelay Industries. Unfortunately the module is only compatible with Orchard 1.6, so please personally and repeatedly nudge Bertrand to update it. He'll appreciate the moral support. The module supports 1.10.x. Translating UI strings on Crowdin, for built-in and third-party modules. Klingons are really behind on translating Orchard. Head over to Crowdin and contribute some translation, Orchard needs you! Translating content items on the example of the Atlantis Programs & Pedalheads website. Also including some synchronization features to sync some data from the master item to the localized versions. Similar improvements are coming to Orchard itself too. Localizing Taxonomies and content fields, the new way. Design notes on improving localization. Building Client-side Apps and Components for Orchard by Daniel Stolt Daniel from IDeliverable returns. What's a client-side component? Shifting from the server-side to the client side. When do you want to use a client-side component? Mainly if you want a modern UX without page reloads. Various ways to create such components in Orchard, the simplest being a Layout Snippet. Demo of a component displaying stock market information. You wouldn't want that delay page load. Utilizing Orchard's Gulp pipeline for client-side assets. Do we put output files into source control? It depends, but preferably not. Configuring a client-side asset build pipeline with Gulp. If you don't know Browserify, check it out, it's good for you. Angular routing and how to combine it with Orchard's routing. Ways of runtime module loading. It will be awesome with HTTP 2. YesSql, what's that and why do I like it? by Sebastien Ros An ad-hoc, unplanned session by Sebastien about YesSql. It's a document database layer using SQL as the data store, so you get the best of both worlds: A trusted, tested storage with a fancy flexible data model. YesSql is also the data layer of Orchard Core. The plural of "index" is "indices". Learn this and you can look educated among your peers. Bonus: Do the same for "medium" and "matrix". Demo of the various use-cases you'd expect from such a data access layer by looking at the tests. Interesting clever querying and indexing concepts. What's next for .NET Core and C#? by Bertrand Le Roy Bertrand from Microsoft gives some insights into the future as we know it. It's multi-platform, which is a good thing. You'll need VS 2017 if you're using VS, which is bad thing. Project.json is dead and csproj is back, which is kind of a mixed thing. But this csproj is not the same csproj! One project system across all platforms: Now a bearded guy with a Linux laptop, a hipster with a MacBook and a cool engineer with an awesome Windows laptop can walk into a bar and be one .NET development team, not the start of a joke. We've seen some XML templates, but since it's XML no one will ever want to look at it, so whatevs. There's the One SDK running behind all IDEs, which is awesome. The .NET command line got even better, so you can feel like a Hollywood hacker. Even the Orchard command line could be part of the .NET CLI. The solution file format hasn't changed, which is sad. Introducing .NET Standard: one .NET API to use across all platforms, when writing .NET Framework, .NET Core or Xamarin apps. .NET Standard 2.0 will contain all the APIs .NET Framework has (minus the Windows-specific stuff). See for yourself on https://apisof.net/. What's up with C#? Everybody uses C# and everybody loves C#. No further questions. Bertrand just showed an array initialization that could be the prime exhibit in the Museum of Strange Brace Styles. And remember there's a thing called Pico. What's new in C# 7? Here's a recap. Pattern matching can be familiar from functional languages, but it has always long been a part of hardware description languages (and the wider concept in logic circuit design). And with Hastlayer you can create hardware from .NET! The holy trinity of C# language principles: expressiveness, convenience, performance, safety. Well, this was four. Some exotic things possibly coming up with C# 8. Orchard Core CMS by Sebastien Ros The goals of Orchard Core are like new year's resolutions you actually can keep: be worse at everything. Just kidding. Major changes: Built on ASP.NET Core, document-oriented storage (with YesSql, see above). The admin theme uses Bootstrap and there is no bug. The admin menu is now also a standard menu, so it's extensible in a better way. You can also configure the admin theme as easily as the frontend theme, neat! The basic content editing UI is in principle the same as in Orchard 1.x so you won't be confused. Content parts can be attached to a content type in multiple instances. Various things have changed a bit or a lot (even if not too apparent from the UI): Blogs use the Lists feature (so blogs are just a Lists configuration, not a feature written from scratch), widget layer rules can contain C# (and widgets can be dragged between zones from the UI)... New content type: Flows. These are basically widget pages, plus more. Recipes are now in JSON, not XML, and can use dynamic placeholders evaluated during cook time. The thing is fast, even without caching. >2000 request/s on a dev machine while debugging fast. And uses much less memory too. See the roadmap to get an idea of when Orchard Core will be ready. Panel with Daniel Stolt, Sipke Schoorstra and Zoltán Lehóczky Merging localization-related changes: Will mostly be done on dev, because breaking changes are allowed there. What about the new frontend theme? It's on Ryan Drew Bernett's branch (or maybe in a branch in the official repo). The design goals are mostly satisfied, but theme settings are not implemented. Are there any goals to make Orchard competitive against e.g. Wordpress? More themes and out-of-the-box site solutions would make content editors happy. That's true, but Wordpress is just a blog engine, even a lot of Orchard devs use Wordpress for their blogs. Orchard is mostly targeted at businesses.

Orchard Harvest conference, day 1

We're reporting in live from the 2017 Orchard Harvest conference! This blogpost will be updated as we go, so make sure to check back! Bertrand is doing the same thing, so make sure to check out his blog for updates too. Aaand, Antoine too, so also check out his blog. Keynote by Sebastien Ros Not everybody has badges because Sebastien failed Mail Merge, or Mail Merge failed Sebastien. Zoltán doesn't have a badge either :-(. Sebastien's always funny stand-up show starts, although he had a hard night after eating something bad. Let's see where all the attendees come from. It turns out, from a lot of countries and US states. Sebastien hands out some "choc-lates" to speakers. Now you're sorry you won't have a session! Public shaming of those who didn't want to be speakers! Public praise of those who're active in the community. Sebastien whining about organizing the conference. But we all know he just loves it. And he sounds like a parent with some little kids. Oh wait... Word of the day: "websiting". We all do Orchard websiting apparently. Apparently "Lombiq Technologies Ltd." is a long company name. So we'll just go with LMBQ from now on. There will be 4 ladies on the conference, which is maybe a record? Oh, and BTW we'll have some stuff about Orchard too. Outside In: Using external data with Orchard by Jorge Agraz Jorge is from Onestop, a full service ecommerce agency. They developed their platform on Orchard where they utilize Orchard's flexibility and content model. A CMS was needed to get engineers out of content management. But sometimes Orchard is hard to utilize or an overkill for their use-case. Product catalog information comes from an external system which is queried via API calls. They have "actor" and "carrier" shapes: platform-level business logic templates vs theme-level structural ones. See Jorge's session from last year. First the Onestop platform used widgets to provide pieces of functionaly for ecommerce sites, now mostly Layout Elements and content types for commerce pages. We now know what the address of the Onestop VPN is, but won't tell you here! One of the big points of the latest version of the platform is to reduce the number of shape templates needed for new sites: now just 6. A demo of how product pages are built with content parts. But as usual during demos, Visual Studio freezes :-). It seems Onestop discovered Dynamic Pages ;-). When Output Cache Just Isn't Enough by Chris Payne and Daniel Stolt Or "Make Output Cache Great Again" :-). They're from IDeliverable and developed IDeliverable.Donuts to handle various caching needs. A common scenario is personalized output, like having the user's name somewhere. This can be cached by keeping token-like placeholders and caching the output with that, evaluating for each request. A demo of how such placholders work. You can also see how the recent changes in the Output Cache module fit into this. Pro tip from Daniel: if you're presenting together with an English guy, use a Swedish keyboard layout. And Dvorak. In this talk we see images of cigars, in the last session there was a shoe with a cigar as the heel. Did we miss that the cigar is this conference's theme? Chris started a sentence with "Donut ships with..." and now I can't stop thinking of donut ships. A demo of the Item Level Cache part, which provides similar caching options but on the level of a single content item, not the whole page. This video apparently has something to do with caching. A demo of how cache entries can be reused across multiple pages. A demo of prerendering some items: even the first user gets a cached version, not first-time penalty. The drawback is that since the context is the request is not there, caching options are limited. What's new in ASP.NET MVC Core 2.0 by N. Taylor Mullen Hands up if you don't know ASP.NET MVC Core 1.0 either! Taylor is from Microsoft from the Razor team. The talk will be the better the more active the audience is. Remember, this is the first talk after lunch. So... Introducing Razor Pages: a bit like ASP.NET Web Pages, but better, i.e. "best of MVC with less ceremony". If you're a borderline PHP developer, do we have some transitional technology for you! Anatomy of a web application. Not many files. Demo of the basics of app configuration and stuff. VS 2017 can now edit csproj files without having to unload the project first. The future has arrived. Taylor is into League of Legends and Pokemon Go. Just sayin'. Demo of the difference between a standard MVC app and a Razor Pages app. The latter is just add cshtml file, run. No controller, action, Views folder. You can (or rather will be able to in the next version) embed logic otherwise contained in controllers. Looks very neat until you get PHP flashbacks. Just casually used C# 6 string interpolation. Well, since Roslyn the objectively best programming language in the known universe gets better even faster. Razor Pages is not obsolating MVC, it's another way to structure your app. Might help newcomers start with ASP.NET. Wonder if this could be used in an Orchard module? Razor tooling is being redesigned to decouple it from VS, allow extensibility and be able to provide an overall better developer experience like during refactoring. E.g. adding new Razor directives it's just a few lines of code. Scaling Orchard by Rob King Rob is a technical lead at Bede Gaming. They provide an online gaming platform for gambling brands in the UK and now internationally. They started their platform using PHP by writing a custom CMS, then migrated to using .NET and Orchard. "I'll talk about Mecca". Lombiq guys got Mecca flashbacks. (Because of this.) Their platform had a huge network of dependencies: disabling a feature can disable dozens of others. So they refactored and moved all common central service interface to a common module. Still not perfect, so the next step was to factor those out to smaller projects containing interfaces. To visualize the dependency hierarchy Rob created RJK.FeatureDependencies. Mecca Bingo needs a multi-node setup (12 servers by default) and extensive cashing to handle large loads (a recent peak was 5,4k requests per minute). Like layer rule caching with a custom Redis-using implementation. Output caching is handled with Redis too on top of a local in-memory cache. Scheduled task caused deadlocks in production due to tasks being wrongly rescheduled from multiple nodes. The ultimate solution was to move task execution out to Hangfire (after implementing a workaround of only letting tasks be executed on a single node). What is Orchard Core SaaS Framework? by Nick Mayne Nick has worked on Orchard Core, the new ASP.NET Core-compatible version of Orchard extensively. Demo of starting an Orchard application from scratch by creating and configuring a host project for it, then adding a module with MVC to it. Demo of configuring extension loading: Custom extension locations, custom manifest definitions. Demo of configuring multi-tenancy. Demo of using Nancy instead of MVC.

Orchard Spring Harvest Challenge - Results

On the last (third) day of this year's Orchard Harvest we announced the results of the Orchard community's second module development competition, the Orchard Spring Harvest Challenge. The amount of submissions may be small ("only" 6), though in quality they certainly made up for it. The top 3 places are the following: MiniProfiler by Daniel Dabrowski Inline Editing by Matías Molleja Dynamic Forms by Cybage Software Pvt. Ltd. Congratulations to all participants! We also had the opportunity to bring in Daniel, the author of the winner module via Skype to the conference, where he did a live demonstration of the capabilities of the MiniProfiler module. For more information and the details about the event please visit its website and see the "Rules" page. If you'd like to know more about the last Orchard Harvest, you may want to read our reports written on-site about each day: Orchard Harvest - Day 1 Orchard Harvest - Day 2 Orchard Harvest - Day 3 Happy Orcharding until next time!

Live from Seattle - Orchard Harvest Day 3

This is the third day of Orchard Harvest! The downside is that it's the last day, though it's really great that this is the first Harvest with three days (instead of two). Sébastien is today's keynote speaker sharing his long-term vision regarding Orchard. Sébastien also enumerates the important aspects of Orchard and its community, most of them centered around openness. To make Orchard better, we need to learn from other systems and communities! Next on stage is Nicholas Taylor Mullen from Microsoft, talking about ASP.NET vNext as a continuation to yesterday's talk with Scott Hunter and Eilon Lipton. We've seen some of the newest features of Visual Studio too that were built to work together with ASP.NET vNext. Our third speaker today is Bing Huan Chio talking about how and why the backend system for the Halo Waypoint blog was migrated to Orchard. Since they were newcomers to Orchard at the beginning of their project at their setup required an API module, since the Orchard application served as a backend system. The REST API module that was created for this project is going be open-sourced soon and is a good candidate for adding it to the new modules of Orchard 1.9. After that a short presentation came to announce the results of the Orchard Spring Harvest Challenge. We made a live "interview" with the winner - Daniel Dabrowski - via Skype to present his great Orchard project, the MiniProfiler. And then finally, the last presentation is by us, Lombiq, on how the Orchard CMS SaaS, DotNest was created and how it is maintained. In the first half, Zoltán is talking about the requirements of such a software and what kind of tools we've built to fulfill them and then Benedek was on stage to describe the deployment process currently used by Lombiq (as well as some retrospective case-study about its development) that enables us to maintain all our websites (including DotNest, of course) and deploy them without any downtime. That's it for Orchard Harvest for this year, see you next time!

Live from Seattle - Orchard Harvest Day 2

The second day of Orchard Harvest is on! Our keynote speaker is Damien Edwards, Senior Program Manager in ASP.NET talking about how to use AngularJS in ASP.NET. He shares a lot of pieces of knowledge on how to build powerful single-page applications with a small amount of code. AngularJS is a client-side MVC framework with a ton of features that allow you to write input-heavy UI with highly reusable code, it's actually quite Orchard-y! On a sidenote, we at Lombiq also use AngularJS for most of our projects, including the ones we create for our clients and DotNest too! The next presentation is by Sébastien again, talking about adapting and using Bootstrap-based themes for Orchard websites. Sébastien walks us through the basic structure and usage of Bootstrap, what are the available solutions if you'd like to use a Bootstrap-based theme for your website and how and why he built a new theme called TheBootstrapMachine for the ASP.NET blogs. Next on stage is Sipke, giving us an in-depth session about the usage of the Workflows module through real-life examples. The last presentation before the luch break is the Orchard developers respresenting AMC Theatres: Travis Maddox and Adam Anderson. They are sharing with us their experiences about Orchard and how they built an extremely content-heavy website. They described in-depth their server architecture, performance-related experiences and results due to recent updates and site-load statistics. We also heard about how they upgraded the site with the major Orchard version and the new features and bits added to the site to enhance user experience. <LunchBreak /> After the break, Scott Hunter and Eilon Lipton talk about the future of .NET in reflection to the recently announced news regarding the .NET platform. Scott tells about some of the architectural aspects of the future generations of .NET and ASP.NET vNext. After that Eilon is taking preview version of Visual Studio 2014 for a ride to show us the basics of an ASP.NET vNext application. And then the Sébastien show is on once again! He mentions the current pressing matters of the Orchard ecosystem, like the bugs waiting to be fixed, the documentation that needs update and extensions, along with some other tasks for the near future: A very important feature currently under development by IDeliverable is the AuditTrail module. Besides, the Content Deployment module by Damien Clarke is also a good candidate for being added to the core. The localization capabilities in terms of content management definitely need some love. New admin theme (under development by Antoine), including better content organization (e.g. like the Tree by Bertrand). Adding/fixing new features to the gallery: generating the downloadable packages based on VCS changes (so module developers don't need to care about creating releases for the gallery too) and displaying information about the modules' compatibility with different Orchard versions. See you tomorrow with more Orchard Harvest news!

Live from Seattle - Orchard Harvest Day 1

The third Orchard Harvest conference, held in Seattle, just began! Orcharders from all around the world gathered together at the Microsoft campus to share their experiences about their favourite CMS. The keynote by Ylan and Bertrand got us up to speed with the current news about Orchard. Ylan gave us a warm welcome and introduced some of the well-known participants to the community. After that, Bertrand showed us historical and recent statistics (along with some funny pictures) about Orchard, the community and the contributors. In the second session, aka "the Sébastien show", the benevolant dictator of Orchard is walking us through the process and details of migrating the ASP.NET blogs to Orchard. 750 blogs hosted by 4 Azure Web Sites that run on only one Large Virtual Machine. Sébastien also talked about interesting technical details, how the migration from the old system was executed and then the conclusion came: "Orchard is fast and easy to use". Besides, the tool that was written to serve as a bridge between the old system's content and the new one (working with BlogML format and Orchard recipes) will be publicly available soon. The next session is by Jorge and Eric from Onestop: Jorge is walking us through the development and usage of the Onestop.Layout module that enables you to create custom, dynamically rearrangeable layouts, templates and slideshows. After that, Eric talked about master-child theming. The module is open-source and avaiable on BitBucket (along with other Onestop modules)! The last session before the lunch break is by Piotr from Proligence: Piotr is talking about how they adopted Orchard and the fact that they (and their clients) are more than happy with this decision. Proligence shares some of their modules with community as open source projects on BitBucket, like a unit testing framework, the Astoria framework and the PowerShell CLI. <LunchBreak /> After the break Samuel Goldenbaum from Hellocomputer (CTO) is talking about their digital agency based in Johannesburg and the some of the projects they delivered to big clients, like Toyota, the Jamaican Tourism Board and FCB South Africa. The latter project also involves the creation of an Orchard backend for serving content to mobile applications when attending conferences. Next up is the representatives of MS Open Tech, Ross Gardler and Roopali Kaujalgi. Ross is talking about the company and its relation to Microsoft, how they are working with open-source technologies and spreading the word. In the second half of the presentation Roopali is showing us how to use the Microsoft Azure Media Services module, that was recently integrated into the Orchard codebase - this module's purpose is to serve media (mostly videos) to users visiting Orchard websites. The last presentation today is Steve Taylor's session about the future of widgets in Orchard, Web Components and Polymer.js.

Orchard Spring Harvest Challenge has begun!

In case you haven't heard from the Lombiq content network and its neighbours, a module competition named Orchard Spring Harvest Challenge has begun yesterday! The aim of this contest is to give Orchard module developers some more motivation to upgrade their old modules to Orchard 1.8, or create new ones that are compatible with latest version of Orchard. You can find more information on the event's (DotNest-hosted) website.